From 599de8d3f35cb0fe56c7e27591862d61944b456b Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Mon, 23 Oct 2017 14:06:12 +0900 Subject: Add a new OnScreenReply api to agl-service-homescreen Add a new event named OnScreenReply. Applications can use this event to reply to the homescreen. Also update the documentation for this event. [Patch Sets 8,9] Update ApplicationGuide.md. For details: Use master source build agl-service-homescreen-2017. Change agl version to EE. Add libhomescreen sample code path. [Patch Sets 10] Delete tailing space. BUG-AGL: SPEC-985 Change-Id: Iea0c321731fa62cd94fc08fc5e303c20847fd525 Signed-off-by: zheng_wenlong --- src/homescreen.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- src/hs-helper.h | 1 + 2 files changed, 48 insertions(+), 3 deletions(-) (limited to 'src') 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) ********** @@ -136,6 +138,43 @@ static void on_screen_message (struct afb_req request) afb_req_success(request, res, "afb_event_push event [on_screen_message]"); } +/** + * 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 * @@ -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; } diff --git a/src/hs-helper.h b/src/hs-helper.h index f6337d8..5ce9eb5 100644 --- a/src/hs-helper.h +++ b/src/hs-helper.h @@ -33,6 +33,7 @@ typedef enum REQ_ERROR static const char* evlist[] = { "tap_shortcut", "on_screen_message", + "on_screen_reply", "reserved" }; -- cgit 1.2.3-korg