aboutsummaryrefslogtreecommitdiffstats
path: root/src/homescreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/homescreen.c')
-rw-r--r--src/homescreen.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/src/homescreen.c b/src/homescreen.c
index 7f5f067..f1a8fcd 100644
--- a/src/homescreen.c
+++ b/src/homescreen.c
@@ -29,7 +29,7 @@
#include "hs-helper.h"
#include "hmi-debug.h"
-#define COMMAND_EVENT_NUM 3
+#define COMMAND_EVENT_NUM 4
#define EVENT_SUBSCRIBE_ERROR_CODE 100
/* To Do hash table is better */
@@ -42,12 +42,14 @@ static struct event event_list[COMMAND_EVENT_NUM];
static struct afb_event ev_tap_shortcut;
static struct afb_event ev_on_screen_message;
+static struct afb_event ev_on_screen_reply;
static struct afb_event ev_reserved;
static const char _error[] = "error";
static const char _application_name[] = "application_name";
static const char _display_message[] = "display_message";
+static const char _reply_message[] = "reply_message";
/*
********** Method of HomeScreen Service (API) **********
@@ -137,6 +139,43 @@ static void on_screen_message (struct afb_req request)
}
/**
+ * HomeScreen OnScreen Reply
+ *
+ * #### Parameters
+ * Request key
+ * - reply_message : message for reply
+ *
+ * #### Return
+ * Nothing
+ *
+ */
+static void on_screen_reply (struct afb_req request)
+{
+ HMI_NOTICE("homescreen-service","called.");
+
+ int ret = 0;
+ const char* value = afb_req_value(request, _reply_message);
+ if (value) {
+
+ HMI_NOTICE("homescreen-service","request params = %s.", value);
+
+ struct json_object* push_obj = json_object_new_object();
+ hs_add_object_to_json_object_str( push_obj, 2,
+ _reply_message, value);
+ afb_event_push(ev_on_screen_reply, push_obj);
+ } else {
+ afb_req_fail_f(request, "failed", "called %s, Unknown palameter", __FUNCTION__);
+ return;
+ }
+
+ // response to HomeScreen
+ struct json_object *res = json_object_new_object();
+ hs_add_object_to_json_object_func(res, __FUNCTION__, 2,
+ _error, ret);
+ afb_req_success(request, res, "afb_event_push event [on_screen_reply]");
+}
+
+/**
* Subscribe event
*
* #### Parameters
@@ -224,6 +263,7 @@ static const struct afb_verb_v2 verbs[]= {
{ .verb = "ping", .session = AFB_SESSION_NONE, .callback = pingSample, .auth = NULL },
{ .verb = "tap_shortcut", .session = AFB_SESSION_NONE, .callback = tap_shortcut, .auth = NULL },
{ .verb = "on_screen_message", .session = AFB_SESSION_NONE, .callback = on_screen_message, .auth = NULL },
+ { .verb = "on_screen_reply", .session = AFB_SESSION_NONE, .callback = on_screen_reply, .auth = NULL },
{ .verb = "subscribe", .session = AFB_SESSION_NONE, .callback = subscribe, .auth = NULL },
{ .verb = "unsubscribe", .session = AFB_SESSION_NONE, .callback = unsubscribe, .auth = NULL },
{NULL } /* marker for end of the array */
@@ -241,7 +281,8 @@ static int init()
ev_tap_shortcut = afb_daemon_make_event(evlist[0]);
ev_on_screen_message = afb_daemon_make_event(evlist[1]);
- ev_reserved = afb_daemon_make_event(evlist[2]);
+ ev_on_screen_reply = afb_daemon_make_event(evlist[2]);
+ ev_reserved = afb_daemon_make_event(evlist[3]);
event_list[0].name = evlist[0];
event_list[0].event = &ev_tap_shortcut;
@@ -250,7 +291,10 @@ static int init()
event_list[1].event = &ev_on_screen_message;
event_list[2].name = evlist[2];
- event_list[2].event = &ev_reserved;
+ event_list[2].event = &ev_on_screen_reply;
+
+ event_list[3].name = evlist[3];
+ event_list[3].event = &ev_reserved;
return 0;
}