mmi-api-handler: implement register/deregister callbacks 25/264025/1
authorSung-Jin Park <sj76.park@samsung.com>
Sun, 18 Jul 2021 15:48:30 +0000 (00:48 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 13 Sep 2021 11:24:07 +0000 (20:24 +0900)
Change-Id: I7bd72100faf4bc5a0745220b1d51ec29ed37eba8
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/mmi-api-handler.c

index 86db05d..3171b77 100644 (file)
@@ -87,14 +87,155 @@ static void _on_terminate(rpc_port_stub_mmifw_context_h context, void *user_data
 
 static int _register_cb(rpc_port_stub_mmifw_context_h context, rpc_port_mmifw_focus_event_cb_h focus_cb, rpc_port_mmifw_state_change_event_cb_h state_cb, rpc_port_mmifw_wakeup_event_cb_h wakeup_cb, rpc_port_mmifw_key_event_cb_h key_cb, rpc_port_mmifw_gesture_event_cb_h gesture_cb, rpc_port_mmifw_voice_event_cb_h voice_cb, rpc_port_mmifw_action_event_cb_h action_cb, rpc_port_mmifw_feedback_event_cb_h feedback_cb, void *user_data)
 {
-       LOGI("...");
+       int r;
+       char *sender = NULL;
+       mmi_client *mc = NULL;
+
+       r = rpc_port_stub_mmifw_context_get_sender(context, &sender);
+       if (r || !sender)
+       {
+               LOGE("Failed to get sender from context ! (error:%d)\n", r);
+               return -1;
+       }
+
+       mc = client_manager_get_client(sender);
+       if (!mc)
+       {
+               LOGE("Failed to get client information from sender !\n");
+               goto err;
+       }
 
+       if (focus_cb != client_manager_set_client_focus_cb_handle(mc, (void *)focus_cb))
+       {
+               LOGE("Failed to set focus event handler to client info !\n");
+               goto err;
+       }
+
+       if (state_cb != client_manager_set_client_state_change_cb_handle(mc, (void *)state_cb))
+       {
+               LOGE("Failed to set state_change event handler to client info !\n");
+               goto err;
+       }
+
+       if (wakeup_cb != client_manager_set_client_wakeup_cb_handle(mc, (void *)wakeup_cb))
+       {
+               LOGE("Failed to set wakeup event handler to client info !\n");
+               goto err;
+       }
+
+       if (key_cb != client_manager_set_client_key_cb_handle(mc, (void *)key_cb))
+       {
+               LOGE("Failed to set key event handler to client info !\n");
+               goto err;
+       }
+
+       if (gesture_cb != client_manager_set_client_gesture_cb_handle(mc, (void *)gesture_cb))
+       {
+               LOGE("Failed to set gesture event handler to client info !\n");
+               goto err;
+       }
+
+       if (voice_cb != client_manager_set_client_voice_cb_handle(mc, (void *)voice_cb))
+       {
+               LOGE("Failed to set voice event handler to client info !\n");
+               goto err;
+       }
+
+       if (action_cb != client_manager_set_client_action_cb_handle(mc, (void *)action_cb))
+       {
+               LOGE("Failed to set action event handler to client info !\n");
+               goto err;
+       }
+
+       if (feedback_cb != client_manager_set_client_feedback_cb_handle(mc, (void *)feedback_cb))
+       {
+               LOGE("Failed to set feedback event handler to client info !\n");
+               goto err;
+       }
+
+       free(sender);
        return 0;
+err:
+       if (sender)
+               free(sender);
+       return -1;
 }
 
 static void _deregister_cb(rpc_port_stub_mmifw_context_h context, void *user_data)
 {
-       LOGI("...");
+       int r;
+       char *sender = NULL;
+       mmi_client *mc = NULL;
+
+       r = rpc_port_stub_mmifw_context_get_sender(context, &sender);
+       if (r || !sender)
+       {
+               LOGE("Failed to get sender from context ! (error:%d)\n", r);
+               return;
+       }
+
+       mc = client_manager_get_client(sender);
+       if (!mc)
+       {
+               LOGE("Failed to get client information from sender !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_focus_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset focus event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_state_change_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset state_change event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_wakeup_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset wakeup event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_key_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset key event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_gesture_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset gesture event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_voice_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset voice event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_action_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset action event handler of client !\n");
+               goto err;
+       }
+
+       if (NULL != client_manager_set_client_feedback_cb_handle(mc, NULL))
+       {
+               LOGE("Failed to unset feedback event handler of client !\n");
+               goto err;
+       }
+
+
+       free(sender);
+       return;
+err:
+       if (sender)
+               free(sender);
+       return;
 }
 
 static void _get_focus_cb(rpc_port_stub_mmifw_context_h context, const char *sender, void *user_data)