Receive signal when deviced-vibrator initiated
[platform/core/system/libsvi.git] / src / feedback.c
index 6b08557..f0ebded 100644 (file)
@@ -25,6 +25,7 @@
 #include "profiles.h"
 #include "devices.h"
 #include "log.h"
+#include "dbus.h"
 
 #ifndef API
 #define API __attribute__ ((visibility("default")))
 static unsigned int init_cnt;
 static pthread_mutex_t fmutex = PTHREAD_MUTEX_INITIALIZER;
 
+static int restart_callback()
+{
+       const struct device_ops *dev;
+
+       dev = find_device(FEEDBACK_TYPE_VIBRATION);
+       if (dev->init)
+               dev->init();
+       return 0;
+}
+
 API int feedback_initialize(void)
 {
+       int ret;
+
        pthread_mutex_lock(&fmutex);
        if (!profile) {
                _E("there is no valid profile module."); //LCOV_EXCL_LINE
@@ -47,6 +60,10 @@ API int feedback_initialize(void)
                return FEEDBACK_ERROR_NONE;
        }
 
+       ret = register_signal_handler(restart_callback);
+       if (ret < 0)
+               _E("Fail to register signal handler: %d", ret);
+
        /* initialize device */
        devices_init();
 
@@ -60,6 +77,8 @@ API int feedback_initialize(void)
 
 API int feedback_deinitialize(void)
 {
+       int ret;
+
        pthread_mutex_lock(&fmutex);
        if (!init_cnt) {
                pthread_mutex_unlock(&fmutex);
@@ -71,6 +90,10 @@ API int feedback_deinitialize(void)
                return FEEDBACK_ERROR_NONE;
        }
 
+       ret = unregister_signal_handler(restart_callback);
+       if (ret < 0)
+               _E("Fail to unregister signal handler: %d", ret);
+
        /* deinitialize device */
        devices_exit();