mmi-client: add apis for sending each event to given mmi client 60/264060/1
authorSung-Jin Park <sj76.park@samsung.com>
Fri, 27 Aug 2021 10:47:32 +0000 (19:47 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 13 Sep 2021 11:25:17 +0000 (20:25 +0900)
Change-Id: I1b1925684b2d32fc6ea158ff2bff93df62df7456
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/mmi-client.c
src/mmi-client.h

index 1e58640..02e4068 100644 (file)
@@ -496,25 +496,359 @@ client_manager_get_client_feedback_cb_handle(mmi_client *client)
 int
 client_manager_send_focus_event(mmi_client *client, focus_event_arg *args)
 {
+       int r;
+       rpc_port_focus_event_h focus_event_h = NULL;
+       focus_event_arg *ev = (focus_event_arg *)args;
+
        if (!client || !args)
+       {
+               LOGE("Invalid client or args was given !\n");
+               return -1;
+       }
+
+       if (!client->focus_cb_h)
+       {
+               LOGE("Given client doesn't have focus_cb handle !\n");
                return -1;
+       }
 
-       focus_event_arg *ev = (focus_event_arg *)args;
-       //TODO: set args for focus event and invoke focus_event_cb
-       (void) ev;
+       r = rpc_port_focus_event_create(&focus_event_h);
+       if (r)
+       {
+               LOGE("Failed to create focus_event_h ! (error:%d)\n", r);
+               return -1;
+       }
+
+       rpc_port_focus_event_set_type(focus_event_h, ev->type);
+       rpc_port_focus_event_set_timestamp(focus_event_h, ev->timestamp);
+       rpc_port_focus_event_set_focus_in(focus_event_h, ev->focus_in);
+
+       r = rpc_port_mmifw_focus_event_cb_invoke(client->focus_cb_h, focus_event_h);
+       if (r)
+       {
+               LOGE("Failed to invoke focus_event_cb ! (error:%d)\n", r);
+               goto err;
+       }
 
        return 0;
+err:
+       if (focus_event_h)
+               rpc_port_focus_event_destroy(focus_event_h);
+
+       return -1;
 }
 
 int
 client_manager_send_state_change_event(mmi_client *client, state_change_event_arg *args)
 {
+       int r;
+       rpc_port_state_change_event_h state_change_event_h = NULL;
+       state_change_event_arg *ev = (state_change_event_arg *)args;
+
        if (!client || !args)
+       {
+               LOGE("Invalid client or args was given !\n");
                return -1;
+       }
 
-       state_change_event_arg *ev = (state_change_event_arg *)args;
-       //TODO: set args for state change event and invoke state_change_event_cb
-       (void) ev;
+       if (!client->state_change_cb_h)
+       {
+               LOGE("Given client doesn't have state_change_cb handle !\n");
+               return -1;
+       }
+
+       r = rpc_port_state_change_event_create(&state_change_event_h);
+       if (r)
+       {
+               LOGE("Failed to create state_change_event_h ! (error:%d)\n", r);
+               return -1;
+       }
+
+       //TODO: fill out event
+       rpc_port_state_change_event_set_type(state_change_event_h, ev->type);
+       rpc_port_state_change_event_set_timestamp(state_change_event_h, ev->timestamp);
+
+       r = rpc_port_mmifw_state_change_event_cb_invoke(client->state_change_cb_h, state_change_event_h);
+       if (r)
+       {
+               LOGE("Failed to invoke state_change_event_cb ! (error:%d)\n", r);
+               goto err;
+       }
 
        return 0;
+err:
+       if (state_change_event_h)
+               rpc_port_state_change_event_destroy(state_change_event_h);
+
+       return -1;
+}
+
+int
+client_manager_send_wakeup_event(mmi_client *client, wakeup_event_arg *args)
+{
+        int r;
+        rpc_port_wakeup_event_h wakeup_event_h = NULL;
+        wakeup_event_arg *ev = (wakeup_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->wakeup_cb_h)
+        {
+                LOGE("Given client doesn't have wakeup_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_wakeup_event_create(&wakeup_event_h);
+        if (r)
+        {
+                LOGE("Failed to create wakeup_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_wakeup_event_set_type(wakeup_event_h, ev->type);
+        rpc_port_wakeup_event_set_timestamp(wakeup_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_wakeup_event_cb_invoke(client->wakeup_cb_h, wakeup_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke wakeup_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (wakeup_event_h)
+                rpc_port_wakeup_event_destroy(wakeup_event_h);
+
+        return -1;
+}
+
+int
+client_manager_send_key_event(mmi_client *client, key_event_arg *args)
+{
+        int r;
+        rpc_port_key_event_h key_event_h = NULL;
+        key_event_arg *ev = (key_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->key_cb_h)
+        {
+                LOGE("Given client doesn't have key_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_key_event_create(&key_event_h);
+        if (r)
+        {
+                LOGE("Failed to create key_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_key_event_set_type(key_event_h, ev->type);
+        rpc_port_key_event_set_timestamp(key_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_key_event_cb_invoke(client->key_cb_h, key_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke key_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (key_event_h)
+                rpc_port_key_event_destroy(key_event_h);
+
+        return -1;
+}
+
+int
+client_manager_send_gesture_event(mmi_client *client, gesture_event_arg *args)
+{
+        int r;
+        rpc_port_gesture_event_h gesture_event_h = NULL;
+        gesture_event_arg *ev = (gesture_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->gesture_cb_h)
+        {
+                LOGE("Given client doesn't have gesture_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_gesture_event_create(&gesture_event_h);
+        if (r)
+        {
+                LOGE("Failed to create gesture_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_gesture_event_set_type(gesture_event_h, ev->type);
+        rpc_port_gesture_event_set_timestamp(gesture_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_gesture_event_cb_invoke(client->gesture_cb_h, gesture_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke gesture_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (gesture_event_h)
+                rpc_port_gesture_event_destroy(gesture_event_h);
+
+        return -1;
+}
+
+int
+client_manager_send_voice_event(mmi_client *client, voice_event_arg *args)
+{
+        int r;
+        rpc_port_voice_event_h voice_event_h = NULL;
+        voice_event_arg *ev = (voice_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->voice_cb_h)
+        {
+                LOGE("Given client doesn't have voice_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_voice_event_create(&voice_event_h);
+        if (r)
+        {
+                LOGE("Failed to create voice_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_voice_event_set_type(voice_event_h, ev->type);
+        rpc_port_voice_event_set_timestamp(voice_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_voice_event_cb_invoke(client->voice_cb_h, voice_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke voice_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (voice_event_h)
+                rpc_port_voice_event_destroy(voice_event_h);
+
+        return -1;
+}
+
+int
+client_manager_send_action_event(mmi_client *client, action_event_arg *args)
+{
+        int r;
+        rpc_port_action_event_h action_event_h = NULL;
+        action_event_arg *ev = (action_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->action_cb_h)
+        {
+                LOGE("Given client doesn't have action_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_action_event_create(&action_event_h);
+        if (r)
+        {
+                LOGE("Failed to create action_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_action_event_set_type(action_event_h, ev->type);
+        rpc_port_action_event_set_timestamp(action_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_action_event_cb_invoke(client->action_cb_h, action_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke action_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (action_event_h)
+                rpc_port_action_event_destroy(action_event_h);
+
+        return -1;
+}
+
+int
+client_manager_send_feedback_event(mmi_client *client, feedback_event_arg *args)
+{
+        int r;
+        rpc_port_feedback_event_h feedback_event_h = NULL;
+        feedback_event_arg *ev = (feedback_event_arg *)args;
+
+        if (!client || !args)
+        {
+                LOGE("Invalid client or args was given !\n");
+                return -1;
+        }
+
+        if (!client->feedback_cb_h)
+        {
+                LOGE("Given client doesn't have feedback_cb handle !\n");
+                return -1;
+        }
+
+        r = rpc_port_feedback_event_create(&feedback_event_h);
+        if (r)
+        {
+                LOGE("Failed to create feedback_event_h ! (error:%d)\n", r);
+                return -1;
+        }
+
+        //TODO: fill out event
+        rpc_port_feedback_event_set_type(feedback_event_h, ev->type);
+        rpc_port_feedback_event_set_timestamp(feedback_event_h, ev->timestamp);
+
+        r = rpc_port_mmifw_feedback_event_cb_invoke(client->feedback_cb_h, feedback_event_h);
+        if (r)
+        {
+                LOGE("Failed to invoke feedback_event_cb ! (error:%d)\n", r);
+                goto err;
+        }
+
+        return 0;
+err:
+        if (feedback_event_h)
+                rpc_port_feedback_event_destroy(feedback_event_h);
+
+        return -1;
 }
index c801d04..a70044d 100644 (file)
@@ -65,6 +65,12 @@ void *client_manager_get_client_feedback_cb_handle(mmi_client *client);
 
 int client_manager_send_focus_event(mmi_client *client, focus_event_arg *args);
 int client_manager_send_state_change_event(mmi_client *client, state_change_event_arg *args);
+int client_manager_send_wakeup_event(mmi_client *client, wakeup_event_arg *args);
+int client_manager_send_key_event(mmi_client *client, key_event_arg *args);
+int client_manager_send_gesture_event(mmi_client *client, gesture_event_arg *args);
+int client_manager_send_voice_event(mmi_client *client, voice_event_arg *args);
+int client_manager_send_action_event(mmi_client *client, action_event_arg *args);
+int client_manager_send_feedback_event(mmi_client *client, feedback_event_arg *args);
 
 void client_manager_init(void);
 void client_manager_shutdown(void);