2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
17 #define LOG_TAG "DALI_FEEDBACK"
20 #include "dali-feedback.h"
27 #include <mm_sound_private.h>
31 #define DEBUG_PRINTF(fmt, arg...) LOGD(" "fmt, ##arg)
36 // The plugin factories
37 extern "C" DALI_EXPORT_API Dali::FeedbackPlugin* CreateFeedbackPlugin(void)
39 return new Dali::Plugin::DaliFeedback;
48 DaliFeedback::DaliFeedback()
49 : mHapticInitialized( false )
51 feedback_initialize();
53 if( 0 == haptic_open( HAPTIC_DEVICE_0, &mDeviceHandle ) )
55 mHapticInitialized = true;
59 DEBUG_PRINTF( "Haptic feedback controller failed to initialize\n" );
63 DaliFeedback::~DaliFeedback()
65 if( mHapticInitialized )
67 int errorCode = haptic_close( mDeviceHandle );
70 DEBUG_PRINTF( "device_haptic_close() failed with error code: %d\n", errorCode );
74 feedback_deinitialize();
77 void DaliFeedback::PlayHaptic( const std::string& filePath )
79 if( mHapticInitialized )
81 if ( filePath.size() == 0 )
83 DEBUG_PRINTF( "File Path can't be NULL!\n" );
87 int errorCode = haptic_vibrate_file_with_detail( mDeviceHandle, filePath.c_str(), HAPTIC_ITERATION_ONCE, HAPTIC_FEEDBACK_AUTO, HAPTIC_PRIORITY_MIN, NULL );
90 DEBUG_PRINTF( "PlayHaptic() failed with error code: %d\n", errorCode );
95 DEBUG_PRINTF( "HapticPlayer is not Initialized\n" );
99 void DaliFeedback::PlayHapticMonotone( unsigned int duration )
101 if( mHapticInitialized )
103 int errorCode = haptic_vibrate_monotone_with_detail( mDeviceHandle, duration, HAPTIC_FEEDBACK_AUTO, HAPTIC_PRIORITY_MIN, NULL );
106 DEBUG_PRINTF( "PlayHapticMonotone() failed with error code: %d\n", errorCode );
111 DEBUG_PRINTF( "HapticPlayer is not Initialized\n" );
115 void DaliFeedback::StopHaptic()
117 if( mHapticInitialized )
119 int errorCode = haptic_stop_all_effects( mDeviceHandle );
122 DEBUG_PRINTF( "StopHaptic() failed with error code: %d\n", errorCode );
127 DEBUG_PRINTF( "HapticPlayer is not Initialized\n" );
131 int DaliFeedback::PlaySound( const std::string& fileName )
134 int errorCode = mm_sound_play_keysound( fileName.c_str(), VOLUME_TYPE_SYSTEM & VOLUME_GAIN_TOUCH );
137 DEBUG_PRINTF( "PlaySound() %s failed with error code = %d\n", fileName.c_str(), errorCode );
143 void DaliFeedback::StopSound( int handle )
145 int errorCode = mm_sound_stop_sound( handle );
148 DEBUG_PRINTF( "StopSound() handle = %d failed with error code = %d\n", handle, errorCode);
152 DEBUG_PRINTF( "stop handle %d success\n", handle );
156 void DaliFeedback::PlayFeedbackPattern( int type, int pattern )
158 int errorCode = feedback_play_type( static_cast<feedback_type_e>(type), static_cast<feedback_pattern_e>(pattern) );
161 DEBUG_PRINTF( "DaliFeedback::PlayFeedbackPattern() with type = %d, pattern = %d returned with error = %d\n", (int)type, (int)pattern, errorCode );
165 } // namespace Plugin