aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ApplicationGuide.md567
-rw-r--r--doc/api-ref/html/d0/d1e/homescreen_8c.html195
-rw-r--r--doc/api-ref/html/d0/d1e/homescreen_8c_source.html40
-rw-r--r--doc/api-ref/html/d0/d8a/libhomescreen_8cpp.html204
-rw-r--r--doc/api-ref/html/d0/d8a/libhomescreen_8cpp_source.html59
-rw-r--r--doc/api-ref/html/d3/d3d/hs-helper_8h.html47
-rw-r--r--doc/api-ref/html/d3/d3d/hs-helper_8h_source.html19
-rw-r--r--doc/api-ref/html/d7/df4/class_lib_home_screen-members.html35
-rw-r--r--doc/api-ref/html/dd/d1d/hs-helper_8c.html30
-rw-r--r--doc/api-ref/html/dd/d1d/hs-helper_8c_source.html16
-rw-r--r--doc/api-ref/html/de/dd0/class_lib_home_screen.html211
-rw-r--r--doc/api-ref/html/df/d43/libhomescreen_8hpp.html2
-rw-r--r--doc/api-ref/html/df/d43/libhomescreen_8hpp_source.html43
-rw-r--r--doc/api-ref/html/df/d76/hmi-debug_8h.html435
-rw-r--r--doc/api-ref/html/df/d76/hmi-debug_8h_source.html87
-rw-r--r--doc/api-ref/html/df/d7d/structevent.html2
-rw-r--r--doc/api-ref/html/df/dac/test_8cpp.html14
-rw-r--r--doc/api-ref/html/df/dac/test_8cpp_source.html14
-rw-r--r--doc/api-ref/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html87
-rw-r--r--doc/api-ref/html/dir_d44c64559bbebec7f509842c48db8b23.html8
-rw-r--r--doc/api-ref/html/files.html22
-rw-r--r--doc/api-ref/html/functions.html11
-rw-r--r--doc/api-ref/html/functions_eval.html3
-rw-r--r--doc/api-ref/html/functions_func.html6
-rw-r--r--doc/api-ref/html/functions_type.html2
-rw-r--r--doc/api-ref/html/globals.html84
-rw-r--r--doc/api-ref/html/globals_defs.html21
-rw-r--r--doc/api-ref/html/globals_enum.html3
-rw-r--r--doc/api-ref/html/globals_eval.html21
-rw-r--r--doc/api-ref/html/globals_func.html10
-rw-r--r--doc/api-ref/html/globals_vars.html9
-rw-r--r--doc/api-ref/html/menudata.js2
-rw-r--r--doc/api-ref/html/search/all_0.js6
-rw-r--r--doc/api-ref/html/search/all_10.js3
-rw-r--r--doc/api-ref/html/search/all_11.js2
-rw-r--r--doc/api-ref/html/search/all_3.js15
-rw-r--r--doc/api-ref/html/search/all_4.js15
-rw-r--r--doc/api-ref/html/search/all_5.js19
-rw-r--r--doc/api-ref/html/search/all_6.js11
-rw-r--r--doc/api-ref/html/search/all_7.js12
-rw-r--r--doc/api-ref/html/search/all_8.js4
-rw-r--r--doc/api-ref/html/search/all_9.js3
-rw-r--r--doc/api-ref/html/search/all_a.js15
-rw-r--r--doc/api-ref/html/search/all_b.js13
-rw-r--r--doc/api-ref/html/search/all_c.js6
-rw-r--r--doc/api-ref/html/search/all_d.js8
-rw-r--r--doc/api-ref/html/search/all_e.js6
-rw-r--r--doc/api-ref/html/search/all_f.js5
-rw-r--r--doc/api-ref/html/search/defines_3.js2
-rw-r--r--doc/api-ref/html/search/defines_4.js7
-rw-r--r--doc/api-ref/html/search/enums_1.js2
-rw-r--r--doc/api-ref/html/search/enums_2.html26
-rw-r--r--doc/api-ref/html/search/enums_2.js4
-rw-r--r--doc/api-ref/html/search/enumvalues_0.js1
-rw-r--r--doc/api-ref/html/search/enumvalues_1.js8
-rw-r--r--doc/api-ref/html/search/enumvalues_2.js2
-rw-r--r--doc/api-ref/html/search/enumvalues_3.js3
-rw-r--r--doc/api-ref/html/search/enumvalues_4.html26
-rw-r--r--doc/api-ref/html/search/enumvalues_4.js5
-rw-r--r--doc/api-ref/html/search/files_0.js1
-rw-r--r--doc/api-ref/html/search/functions_0.js3
-rw-r--r--doc/api-ref/html/search/functions_8.js2
-rw-r--r--doc/api-ref/html/search/functions_a.js3
-rw-r--r--doc/api-ref/html/search/searchdata.js8
-rw-r--r--doc/api-ref/html/search/typedefs_0.js2
-rw-r--r--doc/api-ref/html/search/variables_0.js3
-rw-r--r--doc/api-ref/html/search/variables_2.js2
-rw-r--r--doc/api-ref/latex/d0/d1e/homescreen_8c.tex387
-rw-r--r--doc/api-ref/latex/d0/d8a/libhomescreen_8cpp.tex147
-rw-r--r--doc/api-ref/latex/d3/d3d/hs-helper_8h.tex22
-rw-r--r--doc/api-ref/latex/dd/d1d/hs-helper_8c.tex4
-rw-r--r--doc/api-ref/latex/de/dd0/class_lib_home_screen.tex539
-rw-r--r--doc/api-ref/latex/df/d43/libhomescreen_8hpp.tex2
-rw-r--r--doc/api-ref/latex/df/d76/hmi-debug_8h.tex202
-rw-r--r--doc/api-ref/latex/df/d7d/structevent.tex2
-rw-r--r--doc/api-ref/latex/df/dac/test_8cpp.tex51
-rw-r--r--doc/api-ref/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex11
-rw-r--r--doc/api-ref/latex/dir_d44c64559bbebec7f509842c48db8b23.tex6
-rw-r--r--doc/api-ref/latex/files.tex9
-rw-r--r--doc/api-ref/latex/refman.tex7
-rw-r--r--doc/parts/initialize-registercallback.svg29
-rw-r--r--doc/parts/initialize-set-event-handler.svg27
-rw-r--r--doc/parts/initialize.svg22
-rw-r--r--doc/parts/on_screen_message.svg24
-rw-r--r--doc/parts/tap_shortcut.svg12
-rw-r--r--src/homescreen.c50
-rw-r--r--src/hs-helper.h1
87 files changed, 2639 insertions, 1477 deletions
diff --git a/doc/ApplicationGuide.md b/doc/ApplicationGuide.md
index 85216df..5bbf234 100644
--- a/doc/ApplicationGuide.md
+++ b/doc/ApplicationGuide.md
@@ -1,248 +1,319 @@
-**HomeScreen GUI Application / HomeScreen Service Guide**
-====
-<div align="right">Revision: 0.1</div>
-<div align="right">TOYOTA MOTOR CORPORATION</div>
-<div align="right">Advanced Driver Information Technology</div>
-<div align="right">26th/Sep/2017</div>
-
-* * *
-
-## **<div id="Table\ of\ content">Table of content</div>**
-- [Target reader of this document](#Target\ reader\ of\ this\ document)
-- [Overview](#Overview)
-- [Getting Start](#Getting\ Start)
- - [Supported environment](#Supported\ environment)
- - [Build](#Build)
- - [Configuring](#Configuring)
- - [How to call HomeScreen APIs from your Application?](#How\ to\ call\ HomeScreen\ APIs\ from\ your\ Application?)
-- [Supported usecase](#Supported\ usecase)
-- [Software Architecture](#Software\ Architecture)
-- [API reference](#API\ reference)
-- [Sequence](#Sequence)
- - [Initialize](#InitializeSequence)
- - [Tap Shortcut](#TapShortcutSequence)
- - [On Screen Message](#OnScreenMessageSequence)
-- [Sample code](#Sample\ code)
-- [Limitation](#Limitation)
-- [Next Plan](#Next\ Plan)
-
-* * *
-
-## **<div id="Target\ reader\ of\ this\ document">Target reader of this document</div>**
-Application developer whose software uses HomeScreen.
-
-* * *
-
-## **<div id="Overview">Overview</div>**
-HomeScreenはQtで作成されたGUIアプリケーション(以下、HomeScreenGUI)と、afb-daemonで動作するサービス(以下HomeScreenBinder)で構築されます。HomeScreeはAGLにて動作するアプリケーションの起動、切り替え、およびオンスクリーンメッセージなどの情報表示を行います。
-
-HomeScreenGUIはWindowManagerが提供するAPIを使用しています。
-
-## **<div id="Getting\ Start">Getting Start</div>**
-
-### **<div id="Supported\ environment">Supported environment</div>**
-| Item | Description |
-|:------------|:----------------------------------|
-| AGL version | Daring Dab |
-| Hardware | Renesas R-Car Starter Kit Pro(M3) |
-
-
-### **<div id="Build">Build</div>**
-
-You can make HomeScreen object files by the following two stage operations.
-
-**Download recipe**
-
-If repo is already done, please start with git clone
-
-```
-$ mkdir WORK
-$ cd WORK
-$ repo init -b dab -m dab_4.0.0_xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
-$ repo sync
-$ git clone git clone https://gerrit.automotivelinux.org/gerrit/staging/meta-hmi-framework
-
-```
-
-Then you can get the following recipe.
-
-* `meta-hmi-framework/homescreen-2017`
-
-
-**Bitbake**
-
-```
-$ source meta-agl/scripts/aglsetup.sh -m m3ulcb agl-demo agl-devel agl-appfw-smack
-$ bitbake homescreen-2017
-```
-
-
-* * *
-
-### **<div id="Configuring">Configuring</div>**
-To use HomeScreen API, an application shall paste the following configuration definition into "config.xml" of application.
-
-```
-<feature name="urn:AGL:widget:required-api">
- <param name="homescreen" value="ws" />
-</feature>
-```
-
-*) HomeScreenBindingはWindowManagerと同じport、tokenでのアクセスとなります。
-
-* * *
-
-### **<div id="How\ to\ call\ HomeScreen\ APIs\ from\ your\ Application?">How to call HomeScreen APIs from your Application?</div>**
-HomeScreen provides a library which is called "libhomescreen".
-This library treats "json format" as API calling.
-For example, if an application wants to call "tap_shortcut()" API, the you should implement as below.
-
-At first the application should create the instance of libhomescreen.
-
-```
-LibHomeScreen* libhs;
-libhs = new LibHomeScreen();
-libhs->init(port, token);
-```
-
-The port and token is provided by Application Framework
-
-Then assign the argument to JSON object
-
-```
-struct json_object* jobj = json_object_new_object();
-
-json_object_object_add(jobj, "application_name", json_object_new_string("MediaPlayer"));
-
-```
-
-
-And finally execute the "cal()" function.
-
-```
-libhs->call("tap_shortcut", jobj);
-```
-
-Regarding the detail of tap_shortcut() API, please refer [this](#HomeScreen\ API) section.
-The first parameter is the name of API, so in this case "tap_shortcut" is proper string.
-And the second parameter corresponds to arguments of "connect()" API.
-
-
-See also our [Sample code](#Sample\ code).
-
-
-<br />
-
-* * *
-
-## **<div id="Supported\ usecase">Supported usecase</div>**
-1. HomeScreenGUIでショートカットアイコンがタップされたときに発行されるイベントを取得する
- - 各アプリケーションは自身がアイコンタップにより起動(または表示)されたことを知るために、HomeScreenBinderに対してイベント登録を行い、そのイベントを取得することができます。
-2. オンスクリーンにメッセージを表示する
- - T.B.D
-
-* * *
-
-## **<div id="Software\ Architecture">Software Architecture</div>**
-The architecture of HomeScreen is shown below.
-HomeScreen is the service designed to be used by multiple applications.
-Therefore HomeScreen framework consists on two binder layers. Please refer the following figure.
-The upper binder is for application side security context for applications. The lower binder is for servide side security context.
-Usually application side binder has some business logic for each application, so the number of binders depend on the number of applications which use HomeScreen.
-On the other hand, regarding lower binder there is only one module in the system. This binder receives all messages from multiple applications (in detail, it comes from upper layer binder).
-
-The communication protocols between libhomescreen and upper binder, upper binder and lower binder, lower binder (homescreen-binding) are WebSocket.
-
-![software-stack.png](parts/software-stack.png)
-
-* * *
-
-## **<div id="API%20reference">API reference</div>**
-"libhomescreen" and "HomeScreenBinding" provides several kinds of APIs.
-
-### **<div id="Home\ Screen\ Specific\ API">HomeScreen Specific API</div>**
-
-- [LibHomeScreen ()](api-ref/html/de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc)
-- [init (const int port, const std::string &token)](api-ref/html/de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220)
-- [tapShortcut(const char *application_name)](api-ref/html/de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903)
-- [onScreenMessage(const char *display_message)](api-ref/html/de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c)
-- [set\_event\_handler(enum EventType et, handler_func f)](api-ref/html/de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85)
-- [call (const string& verb, struct json_object* arg)](api-ref/html/de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f)
-- [call (const char* verb, struct json_object* arg)](api-ref/html/de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643)
-- [subscribe (const string& event_name)](api-ref/html/de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738)
-- [unsubscribe (const string& event_name)](api-ref/html/de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6)
-
-* * *
-
-## **<div id="Sequence">Sequence</div>**
-
-### **<div id="InitializeSequence">Initialize</div>**
-![initialize.svg](parts/initialize.svg)
-
-### **<div id="TapShortcutSequence">Tap Shortcut</div>**
-![tap_shortcut.svg](parts/tap_shortcut.svg)
-
-### **<div id="OnScreenMessageSequence">On Screen Message</div>**
-![on_screen_message.svg](parts/on_screen_message.svg)
-
-
-# **<div id="Sample\ code">Sample code</div>**
-You can find sample implementation of HomeScreen as below.
-
-* `HomeScreenBinding/libhomescreen/test.cpp`
-
-### Appendix
-
-```
-@startuml
-title Application initialization phase
-entity App
-entity HomeScreenBinder
-entity HomeScreenGUI
-App->HomeScreenBinder: init(port, token)
-App->HomeScreenBinder: subscribe()
-
-note over HomeScreenBinder
- Appが受信したいイベントを登録する
- ・tap_shortcut
-end note
-
-App->HomeScreenBinder: registerCallback()
-App->HomeScreenBinder: set_event_handler()
-
-note over HomeScreenBinder
- イベント受信のコールバック登録
- registerCallbackによる登録または
- set_event_handlerによる登録どちらかでOK
-end note
-
-@enduml
-```
-
-```
-@startuml
-title Application Callback Event TapShortcut phase
-entity App
-entity HomeScreenBinder
-entity HomeScreenGUI
-note over App
- Appは初期化時に
- TapShortcutのイベントを受け取る設定をしていること
-end note
-HomeScreenGUI->HomeScreenBinder: tapShortcut(application_name)
-HomeScreenBinder->App: eventCallback(application_name)
-@enduml
-
-```
-
-```
-@startuml
-title Application Callback Event TapShortcut phase
-entity App
-entity HomeScreenBinder
-entity HomeScreenGUI
-App->HomeScreenBinder: onScreenMessage(display_message)
-HomeScreenBinder->HomeScreenGUI: eventCallback(display_message)
-@enduml
-
-``` \ No newline at end of file
+**HomeScreen GUI Application / HomeScreen Service Guide**
+====
+<div align="right">Revision: 0.1</div>
+<div align="right">TOYOTA MOTOR CORPORATION</div>
+<div align="right">Advanced Driver Information Technology</div>
+<div align="right">26th/Sep/2017</div>
+
+* * *
+
+<div id="Table\ of\ content"></div>
+
+## Table of content
+- [Target reader of this document](#Target\ reader\ of\ this\ document)
+- [Overview](#Overview)
+- [Getting Start](#Getting\ Start)
+ - [Supported environment](#Supported\ environment)
+ - [Build](#Build)
+ - [Configuring](#Configuring)
+ - [How to call HomeScreen APIs from your Application?](#How\ to\ call\ HomeScreen\ APIs\ from\ your\ Application?)
+- [Supported usecase](#Supported\ usecase)
+- [Software Architecture](#Software\ Architecture)
+- [API reference](#API\ reference)
+- [Sequence](#Sequence)
+ - [Initialize](#InitializeSequence)
+ - [Tap Shortcut](#TapShortcutSequence)
+ - [On Screen Message / Reply Sequence](#OnScreenMessageSequence)
+- [Sample code](#Sample\ code)
+- [Limitation](#Limitation)
+- [Next Plan](#Next\ Plan)
+
+* * *
+
+<div id="Target\ reader\ of\ this\ document"></div>
+
+## Target reader of this document
+Application developer whose software uses HomeScreen.
+
+* * *
+
+<div id="Overview"></div>
+
+## Overview
+HomeScreen is built with a GUI application created with Qt(referred as HomeScreenGUI), and a service running on afb-daemon (referred as HomeScreenBinder).
+HomeScreen can start/switch applications run in AGL, also displays information such as onscreen messages.
+
+You can find these projects in AGL gerrit.
+
+homescreen-2017(HomeScreenGUI):
+ https://gerrit.automotivelinux.org/gerrit/#/admin/projects/staging/homescreen-2017
+agl-service-homescreen-2017(HomeScreenBinder's binding library):
+ https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-homescreen-2017
+libhomescreen(library for application to communication with HomeScreenBinder):
+ https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/libhomescreen
+
+Also HomeScreenGUI is using libwindowmanager.
+
+<div id="Getting\ Start"></div>
+
+## Getting Start
+
+<div id="Supported\ environment"></div>
+
+### Supported environment
+
+| Item | Description |
+|:------------|:----------------------------------|
+| AGL version | Electric Eel |
+| Hardware | Renesas R-Car Starter Kit Pro(M3) |
+
+
+<div id="Build"></div>
+
+### Build
+
+**Download recipe**
+
+```
+$ mkdir WORK
+$ cd WORK
+$ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo
+$ repo sync
+
+```
+
+Then you can find the following recipes.
+
+* `meta-agl-devel/meta-hmi-framework/homescreen-2017`
+
+* `meta-agl-devel/meta-hmi-framework/agl-service-homescreen-2017`
+
+* `meta-agl-demo/recipes-demo-hmi/libhomescreen`
+
+
+**Bitbake**
+
+```
+$ source meta-agl/scripts/aglsetup.sh -m m3ulcb agl-demo agl-devel agl-appfw-smack agl-hmi-framework
+$ bitbake agl-demo-platform
+```
+
+
+* * *
+
+<div id="Configuring"></div>
+
+### Configuring
+To use HomeScreen API, an application shall paste the following configuration definition into "config.xml" of application.
+
+```
+<feature name="urn:AGL:widget:required-api">
+ <param name="homescreen" value="ws" />
+</feature>
+```
+
+* * *
+
+<div id="How\ to\ call\ HomeScreen\ APIs\ from\ your\ Application?"></div>
+
+### How to call HomeScreen APIs from your Application?
+HomeScreen provides a library which is called "libhomescreen".
+This library treats "json format" as API calling.
+For example, if an application wants to call "tap_shortcut()" API, the you should implement as below.
+
+At first the application should create the instance of libhomescreen.
+
+```
+LibHomeScreen* libhs;
+libhs = new LibHomeScreen();
+libhs->init(port, token);
+```
+
+The port and token is provided by Application Framework
+
+Execute the "tapShortcut()" function.
+
+```
+libhs->tapShortcut("application_name");
+```
+
+Regarding the detail of tap_shortcut() API, please refer [this](#HomeScreen\ API) section.
+The first parameter is the name of API, so in this case "tap_shortcut" is proper string.
+And the second parameter corresponds to arguments of "connect()" API.
+
+
+See also our [Sample code](#Sample\ code).
+
+
+<br />
+
+* * *
+
+<div id="Supported\ usecase"></div>
+
+## Supported usecase
+1. HomeScreenGUI sending ShortCut Icon tapped event to applications
+ - Applications using libhomescreen to subscribe the tapShortcut event,
+ HomeScreenGUI will send ShortCut Icon tapped event to applications.
+2. Display OnScreen messages
+ - Applications sending OnScreen messages to homescreen-service, and OnScreenAPP
+ will get these message and display.
+3. Get OnSreen Reply event
+ - When OnScreen messages is displaying, OnScreenAPP will send a reply event to applications.
+
+* * *
+
+<div id="Software\ Architecture"></div>
+
+## Software Architecture
+The architecture of HomeScreen is shown below.
+HomeScreen is the service designed to be used by multiple applications.
+Therefore HomeScreen framework consists on two binder layers. Please refer the following figure.
+The upper binder is for application side security context for applications. The lower binder is for servide side security context.
+Usually application side binder has some business logic for each application, so the number of binders depend on the number of applications which use HomeScreen.
+On the other hand, regarding lower binder there is only one module in the system. This binder receives all messages from multiple applications (in detail, it comes from upper layer binder).
+
+The communication protocols between libhomescreen and upper binder, upper binder and lower binder, lower binder (homescreen-binding) are WebSocket.
+
+![software-stack.png](parts/software-stack.png)
+
+* * *
+
+<div id="API%20reference"></div>
+
+## API reference
+"libhomescreen" and "agl-service-homescreen-2017" provides several kinds of APIs.
+
+<div id="Home\ Screen\ Specific\ API"></div>
+
+### HomeScreen Specific API
+
+- [LibHomeScreen ()](api-ref/html/de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc)
+- [init (const int port, const std::string &token)](api-ref/html/de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220)
+- [tapShortcut(const char *application_name)](api-ref/html/de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903)
+- [onScreenMessage(const char *display_message)](api-ref/html/de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c)
+- [onScreenReply(const char *reply_message)](api-ref/html/de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37)
+- [registerCallback (void(*event_cb)(const std::string &event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)](api-ref/html/de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf)
+- [set\_event\_handler(enum EventType et, handler_func f)](api-ref/html/de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85)
+- [call (const string& verb, struct json_object* arg)](api-ref/html/de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f)
+- [call (const char* verb, struct json_object* arg)](api-ref/html/de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643)
+- [subscribe (const string& event_name)](api-ref/html/de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738)
+- [unsubscribe (const string& event_name)](api-ref/html/de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6)
+
+* * *
+
+<div id="Sequence"></div>
+
+## Sequence
+
+<div id="InitializeSequence"></div>
+
+### Initialize Sequence
+![initialize-registercallback.svg](parts/initialize-registercallback.svg) * deprecated
+![initialize-set-event-handler](parts/initialize-set-event-handler.svg)
+
+<div id="TapShortcutSequence"></div>
+
+### Tap Shortcut Sequence
+![tap_shortcut.svg](parts/tap_shortcut.svg)
+
+<div id="OnScreenMessageSequence"></div>
+
+### On Screen Message / Reply Sequence
+![on_screen_message.svg](parts/on_screen_message.svg)
+
+
+<div id="Sample\ code"></div>
+
+# Sample code
+You can find sample implementation of HomeScreen as below.
+
+* `libhomescreen/sample/simple-egl`
+
+* `libhomescreen/sample/template`
+
+### Appendix
+
+```
+@startuml
+title Application initialization phase (ex. registerCallback)
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: init(port, token)
+App->HomeScreenBinder: subscribe()
+
+note over HomeScreenBinder
+ Register the event the App wishes to receive
+ ・tap_shortcut
+ ・on_screen_message
+ ・on_screen_reply
+end note
+
+App->HomeScreenBinder: registerCallback()
+
+@enduml
+```
+
+```
+@startuml
+title Application initialization phase (ex. set_event_handler)
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: init(port, token)
+App->HomeScreenBinder: set_event_handler()
+
+note over HomeScreenBinder
+ setup event handler the App wishes to receive
+ ・LibHomeScreen::Event_TapShortcut
+ ・LibHomeScreen::Event_OnScreenMessage
+ ・LibHomeScreen::Event_OnScreenReply
+end note
+
+@enduml
+```
+
+```
+@startuml
+title Application Callback Event TapShortcut phase
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: set_event_handler()
+
+note over App
+ LibHomeScreen::Event_TapShortcut
+end note
+
+HomeScreenGUI->HomeScreenBinder: tapShortcut(application_name)
+HomeScreenBinder->App: event_handler(application_name)
+@enduml
+```
+
+```
+@startuml
+title Application Callback Event On Screen Message / Reply phase
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+
+HomeScreenGUI->HomeScreenBinder: set_event_handler()
+
+note over HomeScreenGUI
+ LibHomeScreen::Event_OnScreenMessage
+end note
+
+
+App->HomeScreenBinder: set_event_handler()
+
+note over App
+ LibHomeScreen::Event_OnScreenReply
+end note
+
+App->HomeScreenBinder: onScreenMessage(display_message)
+HomeScreenBinder->HomeScreenGUI: event_handler(display_message)
+HomeScreenGUI->HomeScreenBinder: onScreenReply(reply_message)
+HomeScreenBinder->App: event_handler(reply_message)
+@enduml
+```
diff --git a/doc/api-ref/html/d0/d1e/homescreen_8c.html b/doc/api-ref/html/d0/d1e/homescreen_8c.html
index 8907a06..2ea52e3 100644
--- a/doc/api-ref/html/d0/d1e/homescreen_8c.html
+++ b/doc/api-ref/html/d0/d1e/homescreen_8c.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/homescreen.c File Reference</title>
+<title>HomeScreenBinding: src/homescreen.c File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -95,7 +95,7 @@ Macros</h2></td></tr>
<tr class="separator:a369266c24eacffb87046522897a570d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2c1fbc92ba364fcf83f15e6d0af66f0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#ad2c1fbc92ba364fcf83f15e6d0af66f0">AFB_BINDING_VERSION</a>&#160;&#160;&#160;2</td></tr>
<tr class="separator:ad2c1fbc92ba364fcf83f15e6d0af66f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09f43d9e7e1c5d2198c0d66024b4500e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a>&#160;&#160;&#160;3</td></tr>
+<tr class="memitem:a09f43d9e7e1c5d2198c0d66024b4500e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a>&#160;&#160;&#160;4</td></tr>
<tr class="separator:a09f43d9e7e1c5d2198c0d66024b4500e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a68ed04201d9390bb85b2c6ab1d7250"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>&#160;&#160;&#160;100</td></tr>
<tr class="separator:a9a68ed04201d9390bb85b2c6ab1d7250"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -108,6 +108,8 @@ Functions</h2></td></tr>
<tr class="separator:a096eae5c8f297f9df142a406eea56227"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a640cf8ed97d804c5ed1c09a349056338"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a> (struct afb_req request)</td></tr>
<tr class="separator:a640cf8ed97d804c5ed1c09a349056338"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2f380055d7d69828115d2a8951634933"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a> (struct afb_req request)</td></tr>
+<tr class="separator:a2f380055d7d69828115d2a8951634933"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ff0c8b506669e5622a6ee168134d8f1"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a> (struct afb_req request)</td></tr>
<tr class="separator:a4ff0c8b506669e5622a6ee168134d8f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab92621255d7370c6dd8a0f1a8e376ad3"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a> (struct afb_req request)</td></tr>
@@ -127,6 +129,8 @@ Variables</h2></td></tr>
<tr class="separator:a2af1ff5a4cbf03125e61e903832035f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7cfc4f688bb898c09291252c4cb832c"><td class="memItemLeft" align="right" valign="top">static struct afb_event&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a></td></tr>
<tr class="separator:af7cfc4f688bb898c09291252c4cb832c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c225341e0ecbae0585302ef754a55ec"><td class="memItemLeft" align="right" valign="top">static struct afb_event&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a></td></tr>
+<tr class="separator:a5c225341e0ecbae0585302ef754a55ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25fbdcc4e5787e3f41d99f4a71e86611"><td class="memItemLeft" align="right" valign="top">static struct afb_event&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a></td></tr>
<tr class="separator:a25fbdcc4e5787e3f41d99f4a71e86611"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed1c5296a2e6d34945507a0fca17a376"><td class="memItemLeft" align="right" valign="top">static const char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a> [] = &quot;error&quot;</td></tr>
@@ -135,6 +139,8 @@ Variables</h2></td></tr>
<tr class="separator:a1f2c79fa6801b63751e270d67994fe81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfd6c1d6f316fa952b11553f8f275e92"><td class="memItemLeft" align="right" valign="top">static const char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a> [] = &quot;display_message&quot;</td></tr>
<tr class="separator:abfd6c1d6f316fa952b11553f8f275e92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a79b0f0b481161527ccb80e83da143219"><td class="memItemLeft" align="right" valign="top">static const char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a> [] = &quot;reply_message&quot;</td></tr>
+<tr class="separator:a79b0f0b481161527ccb80e83da143219"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad6dadf60fac3d701e488e4fcd11c89"><td class="memItemLeft" align="right" valign="top">static const struct afb_verb_v2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a> []</td></tr>
<tr class="separator:acad6dadf60fac3d701e488e4fcd11c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2a62ab481a2922cbfc788193857a12e"><td class="memItemLeft" align="right" valign="top">const struct afb_binding_v2&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a></td></tr>
@@ -180,7 +186,7 @@ Variables</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define COMMAND_EVENT_NUM&#160;&#160;&#160;3</td>
+ <td class="memname">#define COMMAND_EVENT_NUM&#160;&#160;&#160;4</td>
</tr>
</table>
</div><div class="memdoc">
@@ -229,11 +235,13 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00238">238</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;binding init&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0]);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1]);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2]);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0];</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="ttc" id="structevent_html_a58726ebc551d36562ac3f9e1fe293214"><div class="ttname"><a href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event::event</a></div><div class="ttdeci">struct afb_event * event</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00037">homescreen.c:37</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a25fbdcc4e5787e3f41d99f4a71e86611"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a></div><div class="ttdeci">static struct afb_event ev_reserved</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00044">homescreen.c:44</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00277">277</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;binding init&quot;</span>);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0]);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1]);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2]);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[3]);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0];</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1];</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2];</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[3].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[3];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[3].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div><div class="ttc" id="structevent_html_a58726ebc551d36562ac3f9e1fe293214"><div class="ttname"><a href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event::event</a></div><div class="ttdeci">struct afb_event * event</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00037">homescreen.c:37</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a25fbdcc4e5787e3f41d99f4a71e86611"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a></div><div class="ttdeci">static struct afb_event ev_reserved</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00045">homescreen.c:45</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
<div class="ttc" id="structevent_html_a45c6cfb7961a21a3366db067e4cc59ab"><div class="ttname"><a href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">event::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00036">homescreen.c:36</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a5c225341e0ecbae0585302ef754a55ec"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a></div><div class="ttdeci">static struct afb_event ev_on_screen_reply</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00044">homescreen.c:44</a></div></div>
<div class="ttc" id="homescreen_8c_html_af7cfc4f688bb898c09291252c4cb832c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a></div><div class="ttdeci">static struct afb_event ev_on_screen_message</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00043">homescreen.c:43</a></div></div>
<div class="ttc" id="homescreen_8c_html_a1c3c5bfa861dcb58d9e9d216d893864c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a></div><div class="ttdeci">static struct event event_list[COMMAND_EVENT_NUM]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00040">homescreen.c:40</a></div></div>
<div class="ttc" id="homescreen_8c_html_a2af1ff5a4cbf03125e61e903832035f5"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a></div><div class="ttdeci">static struct afb_event ev_tap_shortcut</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00042">homescreen.c:42</a></div></div>
@@ -263,19 +271,61 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>HomeScreenのOnScreenを表示する</p>
+<p>HomeScreen OnScreen message</p>
<h4>Parameters</h4>
<p>Request key</p><ul>
-<li>display_message : 表示したい文字列</li>
+<li>display_message : message for display</li>
</ul>
<h4>Return</h4>
<p>Nothing </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00113">113</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;%s is called.&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>, value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>, push_obj);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// HomeScreenに返すレスポンス</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_message]&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
-<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00046">homescreen.c:46</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00114">114</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>, value);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>, push_obj);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_message]&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
<div class="ttc" id="homescreen_8c_html_af7cfc4f688bb898c09291252c4cb832c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a></div><div class="ttdeci">static struct afb_event ev_on_screen_message</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00043">homescreen.c:43</a></div></div>
-<div class="ttc" id="homescreen_8c_html_abfd6c1d6f316fa952b11553f8f275e92"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a></div><div class="ttdeci">static const char _display_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00049">homescreen.c:49</a></div></div>
+<div class="ttc" id="homescreen_8c_html_abfd6c1d6f316fa952b11553f8f275e92"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a></div><div class="ttdeci">static const char _display_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00050">homescreen.c:50</a></div></div>
+<div class="ttc" id="hs-helper_8c_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a2f380055d7d69828115d2a8951634933"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2f380055d7d69828115d2a8951634933">&#9670;&nbsp;</a></span>on_screen_reply()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void on_screen_reply </td>
+ <td>(</td>
+ <td class="paramtype">struct afb_req&#160;</td>
+ <td class="paramname"><em>request</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>HomeScreen OnScreen Reply</p>
+<h4>Parameters</h4>
+<p>Request key</p><ul>
+<li>reply_message : message for reply</li>
+</ul>
+<h4>Return</h4>
+<p>Nothing </p>
+
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00151">151</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a>);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a>, value);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a>, push_obj);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_reply]&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a5c225341e0ecbae0585302ef754a55ec"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a></div><div class="ttdeci">static struct afb_event ev_on_screen_reply</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00044">homescreen.c:44</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a79b0f0b481161527ccb80e83da143219"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a></div><div class="ttdeci">static const char _reply_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00051">homescreen.c:51</a></div></div>
<div class="ttc" id="hs-helper_8c_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
</div><!-- fragment -->
</div>
@@ -314,8 +364,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00258">258</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;on_event %s&quot;</span>, <a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;}</div><div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00301">301</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;on_event %s&quot;</span>, <a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -343,8 +394,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00055">55</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> pingcount = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; afb_req_success_f(request, json_object_new_int(pingcount), <span class="stringliteral">&quot;Ping count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Verbosity macro at level notice invoked at ping invocation count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; pingcount++;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00057">57</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> pingcount = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; afb_req_success_f(request, json_object_new_int(pingcount), <span class="stringliteral">&quot;Ping count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Verbosity macro at level notice invoked at ping invocation count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; pingcount++;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+</div><!-- fragment -->
</div>
</div>
<a id="a83d646edf54a6a082f69121bc89a08de"></a>
@@ -370,8 +422,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00232">232</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;binding preinit (was register)&quot;</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00271">271</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;binding preinit (was register)&quot;</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+</div><!-- fragment -->
</div>
</div>
<a id="a4ff0c8b506669e5622a6ee168134d8f1"></a>
@@ -406,8 +459,9 @@ Variables</h2></td></tr>
<p>Nothing</p>
<h4>Note</h4>
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00151">151</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; afb_req_subscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder subscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div><div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00046">homescreen.c:46</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00189">189</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; afb_req_subscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder subscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a2ff1b894941c3b461ca8119079c4146a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a></div><div class="ttdeci">int hs_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00142">hs-helper.c:142</a></div></div>
<div class="ttc" id="homescreen_8c_html_a1c3c5bfa861dcb58d9e9d216d893864c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a></div><div class="ttdeci">static struct event event_list[COMMAND_EVENT_NUM]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00040">homescreen.c:40</a></div></div>
@@ -439,18 +493,19 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>HomeScreenから呼ばれる ショートカットがタップされたことをアプリケーションに通知するために使用する アプリケーションからは使用されない</p>
+<p>tap_shortcut notify for homescreen When Shortcut area is tapped, notify these applciations</p>
<h4>Parameters</h4>
<p>Request key</p><ul>
-<li>application_name : アプリケーション名</li>
+<li>application_name : application name</li>
</ul>
<h4>Return</h4>
<p>Nothing </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00076">76</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;%s is called.&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>, value);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>, push_obj);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// HomeScreenに返すレスポンス</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [tap_shortcut]&quot;</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a1f2c79fa6801b63751e270d67994fe81"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a></div><div class="ttdeci">static const char _application_name[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00048">homescreen.c:48</a></div></div>
-<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00046">homescreen.c:46</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00077">77</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>, value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>, push_obj);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [tap_shortcut]&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a1f2c79fa6801b63751e270d67994fe81"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a></div><div class="ttdeci">static const char _application_name[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00049">homescreen.c:49</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
<div class="ttc" id="homescreen_8c_html_a2af1ff5a4cbf03125e61e903832035f5"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a></div><div class="ttdeci">static struct afb_event ev_tap_shortcut</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00042">homescreen.c:42</a></div></div>
<div class="ttc" id="hs-helper_8c_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
</div><!-- fragment -->
@@ -488,8 +543,9 @@ Variables</h2></td></tr>
<p>Nothing</p>
<h4>Note</h4>
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00191">191</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; afb_req_unsubscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder unsubscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00046">homescreen.c:46</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00229">229</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<div class="fragment"><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; afb_req_unsubscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder unsubscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a2ff1b894941c3b461ca8119079c4146a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a></div><div class="ttdeci">int hs_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00142">hs-helper.c:142</a></div></div>
<div class="ttc" id="homescreen_8c_html_a1c3c5bfa861dcb58d9e9d216d893864c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a></div><div class="ttdeci">static struct event event_list[COMMAND_EVENT_NUM]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00040">homescreen.c:40</a></div></div>
@@ -519,7 +575,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00048">48</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00049">49</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
@@ -543,7 +599,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00049">49</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00050">50</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
@@ -567,7 +623,31 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00046">46</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00047">47</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+
+</div>
+</div>
+<a id="a79b0f0b481161527ccb80e83da143219"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a79b0f0b481161527ccb80e83da143219">&#9670;&nbsp;</a></span>_reply_message</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char _reply_message[] = &quot;reply_message&quot;</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00051">51</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
@@ -582,12 +662,12 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> .api = <span class="stringliteral">&quot;homescreen&quot;</span>,</div><div class="line"> .specification = NULL,</div><div class="line"> .verbs = <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>,</div><div class="line"> .preinit = <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>,</div><div class="line"> .init = <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>,</div><div class="line"> .onevent = <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="line">}</div><div class="ttc" id="homescreen_8c_html_a83d646edf54a6a082f69121bc89a08de"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a></div><div class="ttdeci">static int preinit()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00232">homescreen.c:232</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a1279893c0fe937311a81e0a98fb4cf1c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="ttdeci">static void onevent(const char *event, struct json_object *object)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00258">homescreen.c:258</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a00cbbc0f3f4452db078ae511684a6adc"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a></div><div class="ttdeci">static int init()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00238">homescreen.c:238</a></div></div>
-<div class="ttc" id="homescreen_8c_html_acad6dadf60fac3d701e488e4fcd11c89"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a></div><div class="ttdeci">static const struct afb_verb_v2 verbs[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00222">homescreen.c:222</a></div></div>
+<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> .api = <span class="stringliteral">&quot;homescreen&quot;</span>,</div><div class="line"> .specification = NULL,</div><div class="line"> .verbs = <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>,</div><div class="line"> .preinit = <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>,</div><div class="line"> .init = <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>,</div><div class="line"> .onevent = <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="line">}</div><div class="ttc" id="homescreen_8c_html_a83d646edf54a6a082f69121bc89a08de"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a></div><div class="ttdeci">static int preinit()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00271">homescreen.c:271</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a1279893c0fe937311a81e0a98fb4cf1c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="ttdeci">static void onevent(const char *event, struct json_object *object)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00301">homescreen.c:301</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a00cbbc0f3f4452db078ae511684a6adc"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a></div><div class="ttdeci">static int init()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00277">homescreen.c:277</a></div></div>
+<div class="ttc" id="homescreen_8c_html_acad6dadf60fac3d701e488e4fcd11c89"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a></div><div class="ttdeci">static const struct afb_verb_v2 verbs[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00260">homescreen.c:260</a></div></div>
</div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00263">263</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00306">306</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
@@ -615,6 +695,30 @@ Variables</h2></td></tr>
</div>
</div>
+<a id="a5c225341e0ecbae0585302ef754a55ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c225341e0ecbae0585302ef754a55ec">&#9670;&nbsp;</a></span>ev_on_screen_reply</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct afb_event ev_on_screen_reply</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00044">44</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+
+</div>
+</div>
<a id="a25fbdcc4e5787e3f41d99f4a71e86611"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25fbdcc4e5787e3f41d99f4a71e86611">&#9670;&nbsp;</a></span>ev_reserved</h2>
@@ -635,7 +739,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00044">44</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00045">45</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
@@ -706,13 +810,14 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> </div><div class="line"> { .verb = <span class="stringliteral">&quot;ping&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;tap_shortcut&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;on_screen_message&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;subscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;unsubscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>, .auth = NULL },</div><div class="line"> {NULL } </div><div class="line">}</div><div class="ttc" id="homescreen_8c_html_a096eae5c8f297f9df142a406eea56227"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a></div><div class="ttdeci">static void tap_shortcut(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00076">homescreen.c:76</a></div></div>
-<div class="ttc" id="homescreen_8c_html_af48cab759d4ae0ddbfcdd60f4051ba05"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a></div><div class="ttdeci">static void pingSample(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00055">homescreen.c:55</a></div></div>
-<div class="ttc" id="homescreen_8c_html_ab92621255d7370c6dd8a0f1a8e376ad3"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a></div><div class="ttdeci">static void unsubscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00191">homescreen.c:191</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a640cf8ed97d804c5ed1c09a349056338"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a></div><div class="ttdeci">static void on_screen_message(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00113">homescreen.c:113</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00151">homescreen.c:151</a></div></div>
+<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> </div><div class="line"> { .verb = <span class="stringliteral">&quot;ping&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;tap_shortcut&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;on_screen_message&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;on_screen_reply&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;subscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>, .auth = NULL },</div><div class="line"> { .verb = <span class="stringliteral">&quot;unsubscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>, .auth = NULL },</div><div class="line"> {NULL } </div><div class="line">}</div><div class="ttc" id="homescreen_8c_html_a096eae5c8f297f9df142a406eea56227"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a></div><div class="ttdeci">static void tap_shortcut(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00077">homescreen.c:77</a></div></div>
+<div class="ttc" id="homescreen_8c_html_af48cab759d4ae0ddbfcdd60f4051ba05"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a></div><div class="ttdeci">static void pingSample(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00057">homescreen.c:57</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a2f380055d7d69828115d2a8951634933"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a></div><div class="ttdeci">static void on_screen_reply(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00151">homescreen.c:151</a></div></div>
+<div class="ttc" id="homescreen_8c_html_ab92621255d7370c6dd8a0f1a8e376ad3"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a></div><div class="ttdeci">static void unsubscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00229">homescreen.c:229</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a640cf8ed97d804c5ed1c09a349056338"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a></div><div class="ttdeci">static void on_screen_message(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00114">homescreen.c:114</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00189">homescreen.c:189</a></div></div>
</div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00222">222</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d1e/homescreen_8c_source.html#l00260">260</a> of file <a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a>.</p>
</div>
</div>
diff --git a/doc/api-ref/html/d0/d1e/homescreen_8c_source.html b/doc/api-ref/html/d0/d1e/homescreen_8c_source.html
index ad66469..6a4f516 100644
--- a/doc/api-ref/html/d0/d1e/homescreen_8c_source.html
+++ b/doc/api-ref/html/d0/d1e/homescreen_8c_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/homescreen.c Source File</title>
+<title>HomeScreenBinding: src/homescreen.c Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -66,32 +66,36 @@ $(function() {
<div class="title">homescreen.c</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../d0/d1e/homescreen_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a369266c24eacffb87046522897a570d5"> 17</a></span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ad2c1fbc92ba364fcf83f15e6d0af66f0"> 18</a></span>&#160;<span class="preprocessor">#define AFB_BINDING_VERSION 2</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d3/d3d/hs-helper_8h.html">hs-helper.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e"> 31</a></span>&#160;<span class="preprocessor">#define COMMAND_EVENT_NUM 3</span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250"> 32</a></span>&#160;<span class="preprocessor">#define EVENT_SUBSCRIBE_ERROR_CODE 100</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">/* To Do hash table is better */</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html"> 35</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../df/d7d/structevent.html">event</a>{</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab"> 36</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214"> 37</a></span>&#160; <span class="keyword">struct </span>afb_event* <a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c"> 40</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="../../df/d7d/structevent.html">event</a> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[<a class="code" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a>];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5"> 42</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c"> 43</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611"> 44</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376"> 46</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>[] = <span class="stringliteral">&quot;error&quot;</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81"> 48</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>[] = <span class="stringliteral">&quot;application_name&quot;</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92"> 49</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>[] = <span class="stringliteral">&quot;display_message&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">********** Method of HomeScreen Service (API) **********</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05"> 55</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> pingcount = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; afb_req_success_f(request, json_object_new_int(pingcount), <span class="stringliteral">&quot;Ping count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Verbosity macro at level notice invoked at ping invocation count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; pingcount++;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227"> 76</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a> (<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;%s is called.&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>, value);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>, push_obj);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// HomeScreenに返すレスポンス</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [tap_shortcut]&quot;</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338"> 113</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a> (<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;{</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;%s is called.&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>, value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>, push_obj);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="comment">// HomeScreenに返すレスポンス</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_message]&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1"> 151</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; afb_req_subscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder subscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3"> 191</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;{</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; afb_req_unsubscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder unsubscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;}</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * array of the verbs exported to afb-daemon</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89"> 222</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span>afb_verb_v2 <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>[]= {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">/* VERB&#39;S NAME SESSION MANAGEMENT FUNCTION TO CALL */</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; { .verb = <span class="stringliteral">&quot;ping&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>, .auth = NULL },</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; { .verb = <span class="stringliteral">&quot;tap_shortcut&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a>, .auth = NULL },</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; { .verb = <span class="stringliteral">&quot;on_screen_message&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a>, .auth = NULL },</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; { .verb = <span class="stringliteral">&quot;subscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>, .auth = NULL },</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; { .verb = <span class="stringliteral">&quot;unsubscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>, .auth = NULL },</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {NULL } <span class="comment">/* marker for end of the array */</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;};</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de"> 232</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>()</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;binding preinit (was register)&quot;</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc"> 238</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>()</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;{</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;binding init&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0]);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1]);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2]);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0];</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1];</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;}</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c"> 258</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object *<span class="keywordtype">object</span>)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; AFB_NOTICE(<span class="stringliteral">&quot;on_event %s&quot;</span>, event);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;}</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e"> 263</a></span>&#160;<span class="keyword">const</span> <span class="keyword">struct </span>afb_binding_v2 <a class="code" href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a> = {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; .api = <span class="stringliteral">&quot;homescreen&quot;</span>,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; .specification = NULL,</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; .verbs = <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>,</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; .preinit = <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>,</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; .init = <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; .onevent = <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;};</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
+<a href="../../d0/d1e/homescreen_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a369266c24eacffb87046522897a570d5"> 17</a></span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ad2c1fbc92ba364fcf83f15e6d0af66f0"> 18</a></span>&#160;<span class="preprocessor">#define AFB_BINDING_VERSION 2</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d3/d3d/hs-helper_8h.html">hs-helper.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e"> 31</a></span>&#160;<span class="preprocessor">#define COMMAND_EVENT_NUM 4</span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250"> 32</a></span>&#160;<span class="preprocessor">#define EVENT_SUBSCRIBE_ERROR_CODE 100</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">/* To Do hash table is better */</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html"> 35</a></span>&#160;<span class="keyword">struct </span><a class="code" href="../../df/d7d/structevent.html">event</a>{</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab"> 36</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214"> 37</a></span>&#160; <span class="keyword">struct </span>afb_event* <a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c"> 40</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="../../df/d7d/structevent.html">event</a> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[<a class="code" href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a>];</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5"> 42</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c"> 43</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec"> 44</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611"> 45</a></span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376"> 47</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>[] = <span class="stringliteral">&quot;error&quot;</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81"> 49</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>[] = <span class="stringliteral">&quot;application_name&quot;</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92"> 50</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>[] = <span class="stringliteral">&quot;display_message&quot;</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219"> 51</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a>[] = <span class="stringliteral">&quot;reply_message&quot;</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">********** Method of HomeScreen Service (API) **********</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05"> 57</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;{</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> pingcount = 0;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; afb_req_success_f(request, json_object_new_int(pingcount), <span class="stringliteral">&quot;Ping count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Verbosity macro at level notice invoked at ping invocation count = %d&quot;</span>, pingcount);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; pingcount++;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227"> 77</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a> (<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a>, value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>, push_obj);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [tap_shortcut]&quot;</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338"> 114</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a> (<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a>, value);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>, push_obj);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_message]&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933"> 151</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a> (<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;is called.&quot;</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* value = afb_req_value(request, <a class="code" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a>);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (value) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;request params = %s.&quot;</span>, value);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">struct </span>json_object* push_obj = json_object_new_object();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>( push_obj, 2,</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a>, value);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; afb_event_push(<a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a>, push_obj);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;called %s, Unknown palameter&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// response to HomeScreen</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; afb_req_success(request, res, <span class="stringliteral">&quot;afb_event_push event [on_screen_reply]&quot;</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1"> 189</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;{</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; afb_req_subscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder subscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;}</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3"> 229</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(value) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">int</span> index = <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(value);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; afb_req_unsubscribe(request, *<a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[index].<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; ret = <a class="code" href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a>, ret);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; afb_req_success_f(request, res, <span class="stringliteral">&quot;homescreen binder unsubscribe event name [%s]&quot;</span>, value);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> * array of the verbs exported to afb-daemon</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89"> 260</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span>afb_verb_v2 <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>[]= {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="comment">/* VERB&#39;S NAME SESSION MANAGEMENT FUNCTION TO CALL */</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; { .verb = <span class="stringliteral">&quot;ping&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a>, .auth = NULL },</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; { .verb = <span class="stringliteral">&quot;tap_shortcut&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a>, .auth = NULL },</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; { .verb = <span class="stringliteral">&quot;on_screen_message&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a>, .auth = NULL },</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; { .verb = <span class="stringliteral">&quot;on_screen_reply&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a>, .auth = NULL },</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; { .verb = <span class="stringliteral">&quot;subscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>, .auth = NULL },</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; { .verb = <span class="stringliteral">&quot;unsubscribe&quot;</span>, .session = AFB_SESSION_NONE, .callback = <a class="code" href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a>, .auth = NULL },</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {NULL } <span class="comment">/* marker for end of the array */</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;};</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de"> 271</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>()</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;{</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;binding preinit (was register)&quot;</span>);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;}</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc"> 277</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>()</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;binding init&quot;</span>);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0]);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1]);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2]);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a> = afb_daemon_make_event(<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[3]);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[0];</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[0].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[1];</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[1].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[2];</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[2].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[3].<a class="code" href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">name</a> = <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[3];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a>[3].<a class="code" href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;<a class="code" href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c"> 301</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object *<span class="keywordtype">object</span>)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(<span class="stringliteral">&quot;homescreen-service&quot;</span>,<span class="stringliteral">&quot;on_event %s&quot;</span>, event);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e"> 306</a></span>&#160;<span class="keyword">const</span> <span class="keyword">struct </span>afb_binding_v2 <a class="code" href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a> = {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; .api = <span class="stringliteral">&quot;homescreen&quot;</span>,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; .specification = NULL,</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; .verbs = <a class="code" href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a>,</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; .preinit = <a class="code" href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a>,</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; .init = <a class="code" href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a>,</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; .onevent = <a class="code" href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;};</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
<div class="ttc" id="structevent_html_a58726ebc551d36562ac3f9e1fe293214"><div class="ttname"><a href="../../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214">event::event</a></div><div class="ttdeci">struct afb_event * event</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00037">homescreen.c:37</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a83d646edf54a6a082f69121bc89a08de"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a></div><div class="ttdeci">static int preinit()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00232">homescreen.c:232</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a096eae5c8f297f9df142a406eea56227"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a></div><div class="ttdeci">static void tap_shortcut(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00076">homescreen.c:76</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a1f2c79fa6801b63751e270d67994fe81"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a></div><div class="ttdeci">static const char _application_name[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00048">homescreen.c:48</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a25fbdcc4e5787e3f41d99f4a71e86611"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a></div><div class="ttdeci">static struct afb_event ev_reserved</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00044">homescreen.c:44</a></div></div>
-<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00046">homescreen.c:46</a></div></div>
-<div class="ttc" id="homescreen_8c_html_af48cab759d4ae0ddbfcdd60f4051ba05"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a></div><div class="ttdeci">static void pingSample(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00055">homescreen.c:55</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a1279893c0fe937311a81e0a98fb4cf1c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="ttdeci">static void onevent(const char *event, struct json_object *object)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00258">homescreen.c:258</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_abc0d6e0760017d8ae48b836925b2ef15"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a></div><div class="ttdeci">#define HMI_NOTICE(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00020">hmi-debug.h:20</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a83d646edf54a6a082f69121bc89a08de"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de">preinit</a></div><div class="ttdeci">static int preinit()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00271">homescreen.c:271</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a096eae5c8f297f9df142a406eea56227"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227">tap_shortcut</a></div><div class="ttdeci">static void tap_shortcut(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00077">homescreen.c:77</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a1f2c79fa6801b63751e270d67994fe81"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81">_application_name</a></div><div class="ttdeci">static const char _application_name[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00049">homescreen.c:49</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a25fbdcc4e5787e3f41d99f4a71e86611"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">ev_reserved</a></div><div class="ttdeci">static struct afb_event ev_reserved</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00045">homescreen.c:45</a></div></div>
+<div class="ttc" id="homescreen_8c_html_aed1c5296a2e6d34945507a0fca17a376"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">_error</a></div><div class="ttdeci">static const char _error[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00047">homescreen.c:47</a></div></div>
+<div class="ttc" id="homescreen_8c_html_af48cab759d4ae0ddbfcdd60f4051ba05"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05">pingSample</a></div><div class="ttdeci">static void pingSample(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00057">homescreen.c:57</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a1279893c0fe937311a81e0a98fb4cf1c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c">onevent</a></div><div class="ttdeci">static void onevent(const char *event, struct json_object *object)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00301">homescreen.c:301</a></div></div>
<div class="ttc" id="hs-helper_8h_html"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html">hs-helper.h</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a00cbbc0f3f4452db078ae511684a6adc"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a></div><div class="ttdeci">static int init()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00238">homescreen.c:238</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a2f380055d7d69828115d2a8951634933"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">on_screen_reply</a></div><div class="ttdeci">static void on_screen_reply(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00151">homescreen.c:151</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a00cbbc0f3f4452db078ae511684a6adc"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc">init</a></div><div class="ttdeci">static int init()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00277">homescreen.c:277</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
<div class="ttc" id="structevent_html_a45c6cfb7961a21a3366db067e4cc59ab"><div class="ttname"><a href="../../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab">event::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00036">homescreen.c:36</a></div></div>
-<div class="ttc" id="homescreen_8c_html_ab92621255d7370c6dd8a0f1a8e376ad3"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a></div><div class="ttdeci">static void unsubscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00191">homescreen.c:191</a></div></div>
+<div class="ttc" id="homescreen_8c_html_ab92621255d7370c6dd8a0f1a8e376ad3"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3">unsubscribe</a></div><div class="ttdeci">static void unsubscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00229">homescreen.c:229</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a2ff1b894941c3b461ca8119079c4146a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a></div><div class="ttdeci">int hs_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00142">hs-helper.c:142</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a5c225341e0ecbae0585302ef754a55ec"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">ev_on_screen_reply</a></div><div class="ttdeci">static struct afb_event ev_on_screen_reply</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00044">homescreen.c:44</a></div></div>
<div class="ttc" id="homescreen_8c_html_af7cfc4f688bb898c09291252c4cb832c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">ev_on_screen_message</a></div><div class="ttdeci">static struct afb_event ev_on_screen_message</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00043">homescreen.c:43</a></div></div>
<div class="ttc" id="homescreen_8c_html_a09f43d9e7e1c5d2198c0d66024b4500e"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a></div><div class="ttdeci">#define COMMAND_EVENT_NUM</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00031">homescreen.c:31</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a640cf8ed97d804c5ed1c09a349056338"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a></div><div class="ttdeci">static void on_screen_message(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00113">homescreen.c:113</a></div></div>
-<div class="ttc" id="homescreen_8c_html_acad6dadf60fac3d701e488e4fcd11c89"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a></div><div class="ttdeci">static const struct afb_verb_v2 verbs[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00222">homescreen.c:222</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a640cf8ed97d804c5ed1c09a349056338"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">on_screen_message</a></div><div class="ttdeci">static void on_screen_message(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00114">homescreen.c:114</a></div></div>
+<div class="ttc" id="homescreen_8c_html_acad6dadf60fac3d701e488e4fcd11c89"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89">verbs</a></div><div class="ttdeci">static const struct afb_verb_v2 verbs[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00260">homescreen.c:260</a></div></div>
<div class="ttc" id="homescreen_8c_html_a1c3c5bfa861dcb58d9e9d216d893864c"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c">event_list</a></div><div class="ttdeci">static struct event event_list[COMMAND_EVENT_NUM]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00040">homescreen.c:40</a></div></div>
-<div class="ttc" id="homescreen_8c_html_abfd6c1d6f316fa952b11553f8f275e92"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a></div><div class="ttdeci">static const char _display_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00049">homescreen.c:49</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00151">homescreen.c:151</a></div></div>
+<div class="ttc" id="homescreen_8c_html_abfd6c1d6f316fa952b11553f8f275e92"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">_display_message</a></div><div class="ttdeci">static const char _display_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00050">homescreen.c:50</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00189">homescreen.c:189</a></div></div>
<div class="ttc" id="homescreen_8c_html_a9a68ed04201d9390bb85b2c6ab1d7250"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a></div><div class="ttdeci">#define EVENT_SUBSCRIBE_ERROR_CODE</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00032">homescreen.c:32</a></div></div>
<div class="ttc" id="homescreen_8c_html_a2af1ff5a4cbf03125e61e903832035f5"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5">ev_tap_shortcut</a></div><div class="ttdeci">static struct afb_event ev_tap_shortcut</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00042">homescreen.c:42</a></div></div>
-<div class="ttc" id="homescreen_8c_html_ae2a62ab481a2922cbfc788193857a12e"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a></div><div class="ttdeci">const struct afb_binding_v2 afbBindingV2</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00263">homescreen.c:263</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a79b0f0b481161527ccb80e83da143219"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">_reply_message</a></div><div class="ttdeci">static const char _reply_message[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00051">homescreen.c:51</a></div></div>
+<div class="ttc" id="homescreen_8c_html_ae2a62ab481a2922cbfc788193857a12e"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a></div><div class="ttdeci">const struct afb_binding_v2 afbBindingV2</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00306">homescreen.c:306</a></div></div>
<div class="ttc" id="hs-helper_8c_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
diff --git a/doc/api-ref/html/d0/d8a/libhomescreen_8cpp.html b/doc/api-ref/html/d0/d8a/libhomescreen_8cpp.html
index 0c33842..1aec416 100644
--- a/doc/api-ref/html/d0/d8a/libhomescreen_8cpp.html
+++ b/doc/api-ref/html/d0/d8a/libhomescreen_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: libhomescreen.cpp File Reference</title>
+<title>HomeScreenBinding: libhomescreen/libhomescreen.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -63,7 +63,6 @@ $(function() {
</div><!-- top -->
<div class="header">
<div class="summary">
-<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
@@ -83,22 +82,12 @@ $(function() {
<code>#include &lt;cstdlib&gt;</code><br />
<code>#include &lt;cstring&gt;</code><br />
<code>#include &lt;<a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>&gt;</code><br />
+<code>#include &quot;<a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>&quot;</code><br />
</div>
<p><a href="../../d0/d8a/libhomescreen_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
-Macros</h2></td></tr>
-<tr class="memitem:a797aa3053bd6a29819d44f8fad8a5eca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(args, ...)&#160;&#160;&#160;<a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a>(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</td></tr>
-<tr class="separator:a797aa3053bd6a29819d44f8fad8a5eca"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e42b2f5af2174dd24f958351becf63d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(args, ...)&#160;&#160;&#160;<a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a>(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</td></tr>
-<tr class="separator:a4e42b2f5af2174dd24f958351becf63d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a7639744c63851d916fb673963e234124"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a> (const char *func, const int line, const char *log,...)</td></tr>
-<tr class="separator:a7639744c63851d916fb673963e234124"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af583e7770fe13e35089388a45eaf9d9d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a> (const char *func, const int line, const char *log,...)</td></tr>
-<tr class="separator:af583e7770fe13e35089388a45eaf9d9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a2176c3d71fec0f09dcb2aa0866b17e"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a> (const string &amp;verb)</td></tr>
<tr class="separator:a7a2176c3d71fec0f09dcb2aa0866b17e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73c05b96c151e5e46c28585ccb143c1c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a> (void *closure, struct afb_wsj1 *wsj)</td></tr>
@@ -117,168 +106,7 @@ Variables</h2></td></tr>
<tr class="memitem:a1e2d6e77dd8f0162f830058579eab42f"><td class="memItemLeft" align="right" valign="top">static const char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a> [] = &quot;homescreen&quot;</td></tr>
<tr class="separator:a1e2d6e77dd8f0162f830058579eab42f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
-<h2 class="groupheader">Macro Definition Documentation</h2>
-<a id="a4e42b2f5af2174dd24f958351becf63d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a4e42b2f5af2174dd24f958351becf63d">&#9670;&nbsp;</a></span>DLOG</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define DLOG</td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">args, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>...</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td>&#160;&#160;&#160;<a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a>(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">33</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-
-</div>
-</div>
-<a id="a797aa3053bd6a29819d44f8fad8a5eca"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a797aa3053bd6a29819d44f8fad8a5eca">&#9670;&nbsp;</a></span>ELOG</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define ELOG</td>
- <td>(</td>
- <td class="paramtype">&#160;</td>
- <td class="paramname">args, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>...</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td>&#160;&#160;&#160;<a class="el" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a>(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">32</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-
-</div>
-</div>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a7639744c63851d916fb673963e234124"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a7639744c63851d916fb673963e234124">&#9670;&nbsp;</a></span>_DLOG()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">static void _DLOG </td>
- <td>(</td>
- <td class="paramtype">const char *&#160;</td>
- <td class="paramname"><em>func</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int&#160;</td>
- <td class="paramname"><em>line</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&#160;</td>
- <td class="paramname"><em>log</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>...</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00545">545</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; va_list args;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; va_start(args, log);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; message = NULL;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen DEBUG]&quot;</span> &lt;&lt; func &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; line &lt;&lt; <span class="stringliteral">&quot;):&quot;</span> &lt;&lt; message &lt;&lt; endl;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; va_end(args);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; free(message);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;}</div></div><!-- fragment -->
-</div>
-</div>
-<a id="af583e7770fe13e35089388a45eaf9d9d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#af583e7770fe13e35089388a45eaf9d9d">&#9670;&nbsp;</a></span>_ELOG()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">static void _ELOG </td>
- <td>(</td>
- <td class="paramtype">const char *&#160;</td>
- <td class="paramname"><em>func</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const int&#160;</td>
- <td class="paramname"><em>line</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char *&#160;</td>
- <td class="paramname"><em>log</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">&#160;</td>
- <td class="paramname"><em>...</em>&#160;</td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">static</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00533">533</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;{</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; va_list args;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; va_start(args, log);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; message = NULL;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen ERROR]&quot;</span> &lt;&lt; func &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; line &lt;&lt; <span class="stringliteral">&quot;):&quot;</span> &lt;&lt; message &lt;&lt; endl;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; va_end(args);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; free(message);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div></div><!-- fragment -->
-</div>
-</div>
<a id="a782a05fde0f1c17e0c4c8f972a3f53c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a782a05fde0f1c17e0c4c8f972a3f53c8">&#9670;&nbsp;</a></span>_on_call_static()</h2>
@@ -325,8 +153,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00066">66</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">/* LibHomeScreen is not called from other process */</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00064">64</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">/* LibHomeScreen is not called from other process */</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a3df86185aa9453726556da201d95a6f9"></a>
@@ -369,8 +197,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00071">71</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_event(NULL,<a class="code" href="../../df/d7d/structevent.html">event</a>,msg);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00069">69</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_event(NULL,<a class="code" href="../../df/d7d/structevent.html">event</a>,msg);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div><div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
<div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
@@ -410,8 +238,8 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p>websocket </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00061">61</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_hangup(NULL,wsj);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00059">59</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_hangup(NULL,wsj);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -449,8 +277,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00076">76</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_reply(NULL,msg);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00074">74</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_reply(NULL,msg);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -478,8 +306,8 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00204">204</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">struct </span>sd_event* loop = (<span class="keyword">struct </span>sd_event*)(args);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;start eventloop&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; sd_event_run(loop, 30000000);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a4e42b2f5af2174dd24f958351becf63d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a></div><div class="ttdeci">#define DLOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">libhomescreen.cpp:33</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00201">201</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">struct </span>sd_event* loop = (<span class="keyword">struct </span>sd_event*)(args);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;start eventloop&quot;</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; sd_event_run(loop, 30000000);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -507,9 +335,9 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00557">557</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;verb is %s&quot;</span>, verb.c_str());</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span>(find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(), <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(), verb) != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end())</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a4e42b2f5af2174dd24f958351becf63d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a></div><div class="ttdeci">#define DLOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">libhomescreen.cpp:33</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00048">libhomescreen.hpp:48</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00518">518</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;{</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;verb is %s&quot;</span>, verb.c_str());</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span>(find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(), <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(), verb) != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end())</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00050">libhomescreen.hpp:50</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -534,7 +362,7 @@ Variables</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">40</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">36</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
</div>
</div>
diff --git a/doc/api-ref/html/d0/d8a/libhomescreen_8cpp_source.html b/doc/api-ref/html/d0/d8a/libhomescreen_8cpp_source.html
index 9e93d6f..621f8d4 100644
--- a/doc/api-ref/html/d0/d8a/libhomescreen_8cpp_source.html
+++ b/doc/api-ref/html/d0/d8a/libhomescreen_8cpp_source.html
@@ -66,41 +66,40 @@ $(function() {
<div class="title">libhomescreen.cpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../d0/d8a/libhomescreen_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;cctype&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;cerrno&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca"> 32</a></span>&#160;<span class="preprocessor">#define ELOG(args,...) _ELOG(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d"> 33</a></span>&#160;<span class="preprocessor">#define DLOG(args,...) _DLOG(__FUNCTION__,__LINE__,args,##__VA_ARGS__)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="../../d8/dcc/namespacestd.html">std</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* func, <span class="keyword">const</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* log, ...);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* func, <span class="keyword">const</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* log, ...);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb);</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f"> 40</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>[] = <span class="stringliteral">&quot;homescreen&quot;</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a> {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::string(<span class="stringliteral">&quot;ping&quot;</span>), <span class="comment">// debug do not use</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>), <span class="comment">// HomeScreen Application only</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; std::string(<span class="stringliteral">&quot;subscribe&quot;</span>),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::string(<span class="stringliteral">&quot;unsubscribe&quot;</span>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;};</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>),</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; std::string(<span class="stringliteral">&quot;none&quot;</span>)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;};</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c"> 61</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_hangup(NULL,wsj);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8"> 66</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">/* LibHomeScreen is not called from other process */</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9"> 71</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a>(<span class="keywordtype">void</span>* closure, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_event(NULL,event,msg);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b"> 76</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;{</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_reply(NULL,msg);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc"> 85</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a>()</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095"> 93</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(sp_websock != NULL)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; free(sp_websock);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220"> 119</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> port, <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; token)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span>(port &gt; 0 &amp;&amp; token.size() &gt; 0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; mport = port;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; mtoken = token;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;port and token should be &gt; 0, Initial port and token uses.&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ret = initialize_websocket();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(ret != 0 )</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to initialize websocket&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;Initialized&quot;</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf"> 158</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a>(</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">void</span> (*event_cb)(<span class="keyword">const</span> std::string&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents),</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordtype">void</span> (*reply_cb)(<span class="keyword">struct</span> json_object* reply_contents),</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> (*hangup_cb)(<span class="keywordtype">void</span>))</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; onEvent = event_cb;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; onReply = reply_cb;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; onHangup = hangup_cb;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="keywordtype">int</span> LibHomeScreen::initialize_websocket()</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; mploop = NULL;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; onEvent = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; onReply = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">int</span> ret = sd_event_default(&amp;mploop);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span>(ret &lt; 0)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to create event loop&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">/* Initialize interface from websocket */</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; minterface.on_hangup = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; minterface.on_call = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a>; <span class="comment">/* Is this necessary? */</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; minterface.on_event = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; muri += <span class="stringliteral">&quot;ws://localhost:&quot;</span> + to_string(mport) + <span class="stringliteral">&quot;/api?token=&quot;</span> + mtoken; <span class="comment">/*To be modified*/</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; sp_websock = afb_ws_client_connect_wsj1(mploop, muri.c_str(), &amp;minterface, <span class="keyword">this</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span>(sp_websock == NULL)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to create websocket connection&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">/* creates the evsrc */</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">//ret = sd_event_add_io(mploop,&amp;mevent_src, sp_websock-&gt;fd, EPOLLIN, event_callback, NULL);</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;END:</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;}</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e"> 204</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a>(<span class="keywordtype">void</span> *args)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">struct </span>sd_event* loop = (<span class="keyword">struct </span>sd_event*)(args);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;start eventloop&quot;</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; sd_event_run(loop, 30000000);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00"> 224</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen::runEventloop</a>()</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span>(mploop &amp;&amp; sp_websock)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; pthread_t thread_id;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">int</span> ret = pthread_create(&amp;thread_id, NULL, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a>, mploop);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(ret != 0)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Cannot run eventloop due to error:%d&quot;</span>, errno);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> thread_id;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Connecting is not established yet&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903"> 256</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(application_name);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;application_name&quot;</span>, val);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> this-&gt;call(<span class="stringliteral">&quot;tap_shortcut&quot;</span>, j_obj);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c"> 280</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(display_message);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;display_message&quot;</span>, val);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> this-&gt;call(<span class="stringliteral">&quot;on_screen_message&quot;</span>, j_obj);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;}</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85"> 305</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a>(<span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="code" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> f)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (et &gt;= 1 &amp;&amp; et &lt;= 2) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">switch</span> (et) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">case</span> Event_TapShortcut:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; this-&gt;<a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0]);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">case</span> Event_OnScreenMessage:</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; this-&gt;<a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1]);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; this-&gt;handlers[et] = std::move(f);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;}</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb, <span class="keyword">struct</span> json_object* arg)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(verb))</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb.c_str(), arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb.c_str());</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;}</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643"> 369</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* verb, <span class="keyword">struct</span> json_object* arg)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keywordtype">string</span>(verb)))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb, arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738"> 401</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; event_name)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;subscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;}</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6"> 430</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; event_name)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;unsubscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;}</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="comment">/************* Callback Function *************/</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74"> 448</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span>(onHangup != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; onHangup();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596"> 457</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment">* event is like &quot;homescreen/tap_shortcut&quot;</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment">* msg is like {&quot;event&quot;:&quot;homescreen\/tap_shortcut&quot;,&quot;data&quot;:{&quot;application_name&quot;:&quot;hoge&quot;},&quot;jtype&quot;:&quot;afb-event&quot;}</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment">* so you can get</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> event name : struct json_object obj = json_object_object_get(msg,&quot;event&quot;)</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3"> 467</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *event, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen on_event]: &quot;</span> &lt;&lt; <span class="keyword">event</span> &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; afb_wsj1_msg_object_s(msg) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (strstr(event, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>) == NULL) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">struct </span>json_object* ev_contents = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">struct </span>json_object *json_data = json_object_object_get(ev_contents, <span class="stringliteral">&quot;data&quot;</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span>(onEvent != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span> ev(event);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; onEvent(ev, ev_contents);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* event_only = strchr(event, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (event_only != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; event_only = event_only + 1;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0].c_str()) == 0) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(Event_TapShortcut);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keyword">struct </span>json_object *json_application_name = json_object_object_get(json_data, <span class="stringliteral">&quot;application_name&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* application_name = json_object_get_string(json_application_name);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; i-&gt;second(application_name);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1].c_str()) == 0) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(Event_OnScreenMessage);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">struct </span>json_object *json_display_message = json_object_object_get(json_data, <span class="stringliteral">&quot;display_message&quot;</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* display_message = json_object_get_string(json_display_message);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; i-&gt;second(display_message);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; json_object_put(ev_contents);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5"> 519</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen on_reply]: &quot;</span> &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; afb_wsj1_msg_object_s(msg) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span>(onReply != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">struct </span>json_object* reply = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; onReply(reply);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; json_object_put(reply);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;}</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment">/* Internal Function in libhomescreen */</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d"> 533</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* func, <span class="keyword">const</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* log, ...)</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;{</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; va_list args;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; va_start(args, log);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; message = NULL;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen ERROR]&quot;</span> &lt;&lt; func &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; line &lt;&lt; <span class="stringliteral">&quot;):&quot;</span> &lt;&lt; message &lt;&lt; endl;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; va_end(args);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; free(message);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;}</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124"> 545</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* func, <span class="keyword">const</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* log, ...)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; va_list args;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; va_start(args, log);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; message = NULL;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen DEBUG]&quot;</span> &lt;&lt; func &lt;&lt; <span class="stringliteral">&quot;(&quot;</span> &lt;&lt; line &lt;&lt; <span class="stringliteral">&quot;):&quot;</span> &lt;&lt; message &lt;&lt; endl;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; va_end(args);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; free(message);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;}</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e"> 557</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;{</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;verb is %s&quot;</span>, verb.c_str());</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">if</span>(find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(), <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(), verb) != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end())</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a9c4885b51b43ab24a548d49fb3ab2de3"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a></div><div class="ttdeci">void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00467">libhomescreen.cpp:467</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a73c05b96c151e5e46c28585ccb143c1c"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a></div><div class="ttdeci">static void _on_hangup_static(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00061">libhomescreen.cpp:61</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a248d9648c6186287a7632ec1c75fc9c5"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a></div><div class="ttdeci">void on_reply(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00519">libhomescreen.cpp:519</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a608638eb87b2772a3dcc92d8ca8f3596"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a></div><div class="ttdeci">void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00457">libhomescreen.cpp:457</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a4e42b2f5af2174dd24f958351becf63d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a></div><div class="ttdeci">#define DLOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">libhomescreen.cpp:33</a></div></div>
+<a href="../../d0/d8a/libhomescreen_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;cctype&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;cerrno&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a>&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/d76/hmi-debug_8h.html">hmi-debug.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">using namespace </span><a class="code" href="../../d8/dcc/namespacestd.html">std</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb);</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f"> 36</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>[] = <span class="stringliteral">&quot;homescreen&quot;</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; std::string(<span class="stringliteral">&quot;ping&quot;</span>), <span class="comment">// debug do not use</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>), <span class="comment">// HomeScreen Application only</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_reply&quot;</span>),</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; std::string(<span class="stringliteral">&quot;subscribe&quot;</span>),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; std::string(<span class="stringliteral">&quot;unsubscribe&quot;</span>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;};</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::string(<span class="stringliteral">&quot;on_screen_reply&quot;</span>),</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; std::string(<span class="stringliteral">&quot;none&quot;</span>)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;};</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c"> 59</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_hangup(NULL,wsj);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8"> 64</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;{</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="comment">/* LibHomeScreen is not called from other process */</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9"> 69</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a>(<span class="keywordtype">void</span>* closure, <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_event(NULL,event,msg);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b"> 74</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">static_cast&lt;</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">&gt;</span>(closure)-&gt;on_reply(NULL,msg);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc"> 83</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a>()</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095"> 90</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span>(sp_websock != NULL)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; afb_wsj1_unref(sp_websock);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220"> 116</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> port, <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; token)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(port &gt; 0 &amp;&amp; token.size() &gt; 0)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; mport = port;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; mtoken = token;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;port and token should be &gt; 0, Initial port and token uses.&quot;</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ret = initialize_websocket();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(ret != 0 )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to initialize websocket&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Initialized&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf"> 155</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a>(</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">void</span> (*event_cb)(<span class="keyword">const</span> std::string&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents),</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">void</span> (*reply_cb)(<span class="keyword">struct</span> json_object* reply_contents),</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">void</span> (*hangup_cb)(<span class="keywordtype">void</span>))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; onEvent = event_cb;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; onReply = reply_cb;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; onHangup = hangup_cb;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">int</span> LibHomeScreen::initialize_websocket()</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;{</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; mploop = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; onEvent = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; onReply = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">int</span> ret = sd_event_default(&amp;mploop);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span>(ret &lt; 0)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to create event loop&quot;</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">/* Initialize interface from websocket */</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; minterface.on_hangup = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; minterface.on_call = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a>; <span class="comment">/* Is this necessary? */</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; minterface.on_event = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; muri += <span class="stringliteral">&quot;ws://localhost:&quot;</span> + to_string(mport) + <span class="stringliteral">&quot;/api?token=&quot;</span> + mtoken; <span class="comment">/*To be modified*/</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; sp_websock = afb_ws_client_connect_wsj1(mploop, muri.c_str(), &amp;minterface, <span class="keyword">this</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(sp_websock == NULL)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to create websocket connection&quot;</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">/* creates the evsrc */</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">//ret = sd_event_add_io(mploop,&amp;mevent_src, sp_websock-&gt;fd, EPOLLIN, event_callback, NULL);</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;END:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e"> 201</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a>(<span class="keywordtype">void</span> *args)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">struct </span>sd_event* loop = (<span class="keyword">struct </span>sd_event*)(args);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;start eventloop&quot;</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">for</span>(;;)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; sd_event_run(loop, 30000000);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903"> 220</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(application_name);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;application_name&quot;</span>, val);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> this-&gt;call(<span class="stringliteral">&quot;tap_shortcut&quot;</span>, j_obj);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c"> 244</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(display_message);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;display_message&quot;</span>, val);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> this-&gt;call(<span class="stringliteral">&quot;on_screen_message&quot;</span>, j_obj);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37"> 268</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">LibHomeScreen::onScreenReply</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* reply_message)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(reply_message);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;reply_message&quot;</span>, val);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> this-&gt;call(<span class="stringliteral">&quot;on_screen_reply&quot;</span>, j_obj);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85"> 293</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a>(<span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> f)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;{</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (et &gt;= 1 &amp;&amp; et &lt;= 3) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">switch</span> (et) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">case</span> Event_TapShortcut:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; this-&gt;<a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">case</span> Event_OnScreenMessage:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; this-&gt;<a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1]);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">case</span> Event_OnScreenReply:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; this-&gt;<a class="code" href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[2]);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; this-&gt;handlers[et] = std::move(f);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb, <span class="keyword">struct</span> json_object* arg)</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;{</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(verb))</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb.c_str(), arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb.c_str());</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;}</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643"> 360</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* verb, <span class="keyword">struct</span> json_object* arg)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keywordtype">string</span>(verb)))</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb, arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738"> 392</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; event_name)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;subscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6"> 421</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; event_name)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;unsubscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="comment">/************* Callback Function *************/</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74"> 439</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span>(onHangup != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; onHangup();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596"> 448</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment">* event is like &quot;homescreen/tap_shortcut&quot;</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment">* msg is like {&quot;event&quot;:&quot;homescreen\/tap_shortcut&quot;,&quot;data&quot;:{&quot;application_name&quot;:&quot;hoge&quot;},&quot;jtype&quot;:&quot;afb-event&quot;}</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment">* so you can get</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"> event name : struct json_object obj = json_object_object_get(msg,&quot;event&quot;)</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00458"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3"> 458</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *event, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;event: (%s) msg: (%s).&quot;</span>, event, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (strstr(event, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>) == NULL) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">struct </span>json_object* ev_contents = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">struct </span>json_object *json_data = json_object_object_get(ev_contents, <span class="stringliteral">&quot;data&quot;</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span>(onEvent != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span> ev(event);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; onEvent(ev, ev_contents);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* event_only = strchr(event, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (event_only != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; event_only = event_only + 1;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0].c_str()) == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(Event_TapShortcut);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1].c_str()) == 0) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(Event_OnScreenMessage);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[2].c_str()) == 0) {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(Event_OnScreenReply);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; json_object_put(ev_contents);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;}</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5"> 506</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;msg: (%s)&quot;</span>, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(onReply != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">struct </span>json_object* reply = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; onReply(reply);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; json_object_put(reply);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e"> 518</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; verb)</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;{</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;verb is %s&quot;</span>, verb.c_str());</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span>(find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(), <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(), verb) != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end())</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a9c4885b51b43ab24a548d49fb3ab2de3"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a></div><div class="ttdeci">void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00458">libhomescreen.cpp:458</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a></div><div class="ttdeci">#define HMI_ERROR(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00018">hmi-debug.h:18</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a73c05b96c151e5e46c28585ccb143c1c"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a></div><div class="ttdeci">static void _on_hangup_static(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00059">libhomescreen.cpp:59</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a248d9648c6186287a7632ec1c75fc9c5"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a></div><div class="ttdeci">void on_reply(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00506">libhomescreen.cpp:506</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6c065f41f2c5d1f58d2763bfb4da9c37"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">LibHomeScreen::onScreenReply</a></div><div class="ttdeci">int onScreenReply(const char *reply_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00268">libhomescreen.cpp:268</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a334f11f81c84c98d18284215dcaada3a"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">LibHomeScreen::handler_func</a></div><div class="ttdeci">std::function&lt; void(json_object *)&gt; handler_func</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00042">libhomescreen.hpp:42</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a608638eb87b2772a3dcc92d8ca8f3596"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a></div><div class="ttdeci">void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">libhomescreen.cpp:448</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="../../d8/dcc/namespacestd.html">std</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a782a05fde0f1c17e0c4c8f972a3f53c8"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a></div><div class="ttdeci">static void _on_call_static(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00066">libhomescreen.cpp:66</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">libhomescreen.cpp:40</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a782a05fde0f1c17e0c4c8f972a3f53c8"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a></div><div class="ttdeci">static void _on_call_static(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00064">libhomescreen.cpp:64</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">libhomescreen.cpp:36</a></div></div>
<div class="ttc" id="libhomescreen_8hpp_html"><div class="ttname"><a href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_aa73353e1bf62c68b6b0aba7a1e4e275e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a></div><div class="ttdeci">static void * event_loop_run(void *args)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00204">libhomescreen.cpp:204</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1c1fa69f24b981e824dd9fb810c4b74"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a></div><div class="ttdeci">void on_hangup(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">libhomescreen.cpp:448</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_afb571c9577087b47065eb23e7fdbc903"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a></div><div class="ttdeci">int tapShortcut(const char *application_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00256">libhomescreen.cpp:256</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_af583e7770fe13e35089388a45eaf9d9d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">_ELOG</a></div><div class="ttdeci">static void _ELOG(const char *func, const int line, const char *log,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00533">libhomescreen.cpp:533</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00401">libhomescreen.cpp:401</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">LibHomeScreen::EventType</a></div><div class="ttdeci">EventType</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00043">libhomescreen.hpp:43</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a32d3282898d0f04151c24b4103511e00"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen::runEventloop</a></div><div class="ttdeci">int runEventloop()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00224">libhomescreen.cpp:224</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a724bd949c4154fad041f96a15ef0f5dc"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a></div><div class="ttdeci">LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00085">libhomescreen.cpp:85</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00049">libhomescreen.hpp:49</a></div></div>
-<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00151">homescreen.c:151</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ae99dee1e03d494d59d26c9f17078e01f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">LibHomeScreen::handler_func</a></div><div class="ttdeci">std::function&lt; void(const char *)&gt; handler_func</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00041">libhomescreen.hpp:41</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00119">libhomescreen.cpp:119</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7a2176c3d71fec0f09dcb2aa0866b17e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a></div><div class="ttdeci">static bool has_verb(const string &amp;verb)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00557">libhomescreen.cpp:557</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a3df86185aa9453726556da201d95a6f9"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a></div><div class="ttdeci">static void _on_event_static(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00071">libhomescreen.cpp:71</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ac336482036a72b51a822725f1929523c"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a></div><div class="ttdeci">int onScreenMessage(const char *display_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00280">libhomescreen.cpp:280</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_aa73353e1bf62c68b6b0aba7a1e4e275e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a></div><div class="ttdeci">static void * event_loop_run(void *args)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00201">libhomescreen.cpp:201</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1c1fa69f24b981e824dd9fb810c4b74"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a></div><div class="ttdeci">void on_hangup(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00439">libhomescreen.cpp:439</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_afb571c9577087b47065eb23e7fdbc903"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a></div><div class="ttdeci">int tapShortcut(const char *application_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00220">libhomescreen.cpp:220</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00392">libhomescreen.cpp:392</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">LibHomeScreen::EventType</a></div><div class="ttdeci">EventType</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a724bd949c4154fad041f96a15ef0f5dc"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a></div><div class="ttdeci">LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00083">libhomescreen.cpp:83</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00051">libhomescreen.hpp:51</a></div></div>
+<div class="ttc" id="homescreen_8c_html_a4ff0c8b506669e5622a6ee168134d8f1"><div class="ttname"><a href="../../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1">subscribe</a></div><div class="ttdeci">static void subscribe(struct afb_req request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00189">homescreen.c:189</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html">hmi-debug.h</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00116">libhomescreen.cpp:116</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7a2176c3d71fec0f09dcb2aa0866b17e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a></div><div class="ttdeci">static bool has_verb(const string &amp;verb)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00518">libhomescreen.cpp:518</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a3df86185aa9453726556da201d95a6f9"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a></div><div class="ttdeci">static void _on_event_static(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00069">libhomescreen.cpp:69</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ac336482036a72b51a822725f1929523c"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a></div><div class="ttdeci">int onScreenMessage(const char *display_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00244">libhomescreen.cpp:244</a></div></div>
<div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a249902aebf71a5383ca8ec6ae558d095"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a></div><div class="ttdeci">~LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00093">libhomescreen.cpp:93</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00048">libhomescreen.hpp:48</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_aac03a45cbd453ba69ddb00c1016930a6"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a></div><div class="ttdeci">int unsubscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00430">libhomescreen.cpp:430</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7639744c63851d916fb673963e234124"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">_DLOG</a></div><div class="ttdeci">static void _DLOG(const char *func, const int line, const char *log,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00545">libhomescreen.cpp:545</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00305">libhomescreen.cpp:305</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a2789e8a5372202cc36f48e71dbb9b7cf"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a></div><div class="ttdeci">void registerCallback(void(*event_cb)(const std::string &amp;event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00158">libhomescreen.cpp:158</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00076">libhomescreen.cpp:76</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a249902aebf71a5383ca8ec6ae558d095"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a></div><div class="ttdeci">~LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00090">libhomescreen.cpp:90</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00050">libhomescreen.hpp:50</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_aac03a45cbd453ba69ddb00c1016930a6"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a></div><div class="ttdeci">int unsubscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00421">libhomescreen.cpp:421</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00293">libhomescreen.cpp:293</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a2789e8a5372202cc36f48e71dbb9b7cf"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a></div><div class="ttdeci">void registerCallback(void(*event_cb)(const std::string &amp;event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00155">libhomescreen.cpp:155</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00074">libhomescreen.cpp:74</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/doc/api-ref/html/d3/d3d/hs-helper_8h.html b/doc/api-ref/html/d3/d3d/hs-helper_8h.html
index 4937489..5ee78fe 100644
--- a/doc/api-ref/html/d3/d3d/hs-helper_8h.html
+++ b/doc/api-ref/html/d3/d3d/hs-helper_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/hs-helper.h File Reference</title>
+<title>HomeScreenBinding: src/hs-helper.h File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -76,6 +76,7 @@ $(function() {
<code>#include &lt;stdint.h&gt;</code><br />
<code>#include &lt;glib.h&gt;</code><br />
<code>#include &lt;errno.h&gt;</code><br />
+<code>#include &quot;<a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>&quot;</code><br />
</div>
<p><a href="../../d3/d3d/hs-helper_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
@@ -171,12 +172,12 @@ Variables</h2></td></tr>
<tr><td class="fieldname"><a id="aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"></a>OUT_RANGE&#160;</td><td class="fielddoc"></td></tr>
</table>
-<p class="definition">Definition at line <a class="el" href="../../d3/d3d/hs-helper_8h_source.html#l00025">25</a> of file <a class="el" href="../../d3/d3d/hs-helper_8h_source.html">hs-helper.h</a>.</p>
-<div class="fragment"><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a> = -1,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>=0,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a>;</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00025">hs-helper.h:25</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d3/d3d/hs-helper_8h_source.html#l00026">26</a> of file <a class="el" href="../../d3/d3d/hs-helper_8h_source.html">hs-helper.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a> = -1,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>=0,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a>;</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00026">hs-helper.h:26</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -214,10 +215,10 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00048">48</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT16_MAX) || (tmp_id &lt; INT16_MIN) )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_id = (int16_t)tmp_id;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT16_MAX) || (tmp_id &lt; INT16_MIN) )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_id = (int16_t)tmp_id;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -254,10 +255,10 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00072">72</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT32_MAX) || (tmp_id &lt; INT32_MIN) )</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *out_id = (int32_t)tmp_id;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT32_MAX) || (tmp_id &lt; INT32_MIN) )</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *out_id = (int32_t)tmp_id;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -294,10 +295,10 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00024">24</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; UINT16_MAX) || (tmp_id &lt; 0) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *out_id = (uint16_t)tmp_id;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; UINT16_MAX) || (tmp_id &lt; 0) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *out_id = (uint16_t)tmp_id;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -432,7 +433,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00142">142</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> buf_size = 50;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a> / <span class="keyword">sizeof</span> *<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0 ; i &lt; size ; ++i)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!strncmp(value, <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[i], buf_size))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ret = i;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
+<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> buf_size = 50;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a> / <span class="keyword">sizeof</span> *<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0 ; i &lt; size ; ++i)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!strncmp(value, <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[i], buf_size))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ret = i;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -456,8 +457,8 @@ Variables</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> <span class="stringliteral">&quot;tap_shortcut&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;on_screen_message&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;reserved&quot;</span></div><div class="line"> }</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="../../d3/d3d/hs-helper_8h_source.html#l00033">33</a> of file <a class="el" href="../../d3/d3d/hs-helper_8h_source.html">hs-helper.h</a>.</p>
+<b>Initial value:</b><div class="fragment"><div class="line">= {</div><div class="line"> <span class="stringliteral">&quot;tap_shortcut&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;on_screen_message&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;on_screen_reply&quot;</span>,</div><div class="line"> <span class="stringliteral">&quot;reserved&quot;</span></div><div class="line"> }</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d3/d3d/hs-helper_8h_source.html#l00034">34</a> of file <a class="el" href="../../d3/d3d/hs-helper_8h_source.html">hs-helper.h</a>.</p>
</div>
</div>
diff --git a/doc/api-ref/html/d3/d3d/hs-helper_8h_source.html b/doc/api-ref/html/d3/d3d/hs-helper_8h_source.html
index 84f32cf..f0a581a 100644
--- a/doc/api-ref/html/d3/d3d/hs-helper_8h_source.html
+++ b/doc/api-ref/html/d3/d3d/hs-helper_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/hs-helper.h Source File</title>
+<title>HomeScreenBinding: src/hs-helper.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -66,18 +66,19 @@ $(function() {
<div class="title">hs-helper.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../d3/d3d/hs-helper_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef HOMESCREEN_HELPER_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define HOMESCREEN_HELPER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#ad2c1fbc92ba364fcf83f15e6d0af66f0"> 19</a></span>&#160;<span class="preprocessor">#define AFB_BINDING_VERSION 2</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899"> 25</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"> 27</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a> = -1,</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"> 28</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>=0,</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"> 29</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>,</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"> 30</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e"> 33</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[] = {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="stringliteral">&quot;tap_shortcut&quot;</span>,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="stringliteral">&quot;on_screen_message&quot;</span>,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="stringliteral">&quot;reserved&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; };</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, uint16_t *out_id);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int16_t *out_id);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int32_t *out_id);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e">hs_add_object_to_json_object</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keyword">const</span> <span class="keywordtype">char</span>* verb_name, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*HOMESCREEN_HELPER_H*/</span><span class="preprocessor"></span></div><div class="ttc" id="hs-helper_8h_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
+<a href="../../d3/d3d/hs-helper_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef HOMESCREEN_HELPER_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define HOMESCREEN_HELPER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#ad2c1fbc92ba364fcf83f15e6d0af66f0"> 19</a></span>&#160;<span class="preprocessor">#define AFB_BINDING_VERSION 2</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;errno.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../df/d76/hmi-debug_8h.html">hmi-debug.h</a>&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899"> 26</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"> 28</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a> = -1,</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"> 29</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>=0,</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"> 30</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>,</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"> 31</a></span>&#160; <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e"> 34</a></span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[] = {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="stringliteral">&quot;tap_shortcut&quot;</span>,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="stringliteral">&quot;on_screen_message&quot;</span>,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="stringliteral">&quot;on_screen_reply&quot;</span>,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="stringliteral">&quot;reserved&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, uint16_t *out_id);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int16_t *out_id);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int32_t *out_id);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e">hs_add_object_to_json_object</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keyword">const</span> <span class="keywordtype">char</span>* verb_name, <span class="keywordtype">int</span> count, ...);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/*HOMESCREEN_HELPER_H*/</span><span class="preprocessor"></span></div><div class="ttc" id="hs-helper_8h_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
<div class="ttc" id="hs-helper_8h_html_a649900645417f2df3a70b9ad67529f53"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a></div><div class="ttdeci">REQ_ERROR get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00024">hs-helper.c:24</a></div></div>
<div class="ttc" id="hs-helper_8h_html_a1ba31a6a94515ff1730ba0043a67d59e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e">hs_add_object_to_json_object</a></div><div class="ttdeci">void hs_add_object_to_json_object(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00096">hs-helper.c:96</a></div></div>
<div class="ttc" id="hs-helper_8h_html_ac5b0370643c520377afd3fd4891918d2"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a></div><div class="ttdeci">REQ_ERROR get_value_int32(const struct afb_req request, const char *source, int32_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00072">hs-helper.c:72</a></div></div>
<div class="ttc" id="hs-helper_8h_html_a2e62366684e39ea94436bf017e416827"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a></div><div class="ttdeci">REQ_ERROR get_value_int16(const struct afb_req request, const char *source, int16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00048">hs-helper.c:48</a></div></div>
<div class="ttc" id="hs-helper_8h_html_a2ff1b894941c3b461ca8119079c4146a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a></div><div class="ttdeci">int hs_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00142">hs-helper.c:142</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00025">hs-helper.h:25</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00026">hs-helper.h:26</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html">hmi-debug.h</a></div></div>
<div class="ttc" id="hs-helper_8h_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
diff --git a/doc/api-ref/html/d7/df4/class_lib_home_screen-members.html b/doc/api-ref/html/d7/df4/class_lib_home_screen-members.html
index 01e073d..6171ad9 100644
--- a/doc/api-ref/html/d7/df4/class_lib_home_screen-members.html
+++ b/doc/api-ref/html/d7/df4/class_lib_home_screen-members.html
@@ -70,25 +70,26 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643">call</a>(const char *verb, struct json_object *arg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">event_list</a></td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a> enum value</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> enum value</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> enum name</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> typedef</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(const int port, const std::string &amp;token)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>()</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a0fff2f703c8ce184eb9edd133e0f4137">LibHomeScreen</a>(const LibHomeScreen &amp;)=delete</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">on_call</a>(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">on_event</a>(void *closure, const char *event, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">on_hangup</a>(void *closure, struct afb_wsj1 *wsj)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">on_reply</a>(void *closure, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">onScreenMessage</a>(const char *display_message)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a> enum value</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> enum value</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> enum name</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> typedef</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(const int port, const std::string &amp;token)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>()</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a0fff2f703c8ce184eb9edd133e0f4137">LibHomeScreen</a>(const LibHomeScreen &amp;)=delete</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">on_call</a>(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">on_event</a>(void *closure, const char *event, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">on_hangup</a>(void *closure, struct afb_wsj1 *wsj)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">on_reply</a>(void *closure, struct afb_wsj1_msg *msg)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">onScreenMessage</a>(const char *display_message)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">onScreenReply</a>(const char *reply_message)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">operator=</a>(const LibHomeScreen &amp;)=delete</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">registerCallback</a>(void(*event_cb)(const std::string &amp;event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">runEventloop</a>()</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(enum EventType et, handler_func f)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(const std::string &amp;event_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">tapShortcut</a>(const char *application_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">unsubscribe</a>(const std::string &amp;event_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">~LibHomeScreen</a>()</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(enum EventType et, handler_func f)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(const std::string &amp;event_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">tapShortcut</a>(const char *application_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">unsubscribe</a>(const std::string &amp;event_name)</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">~LibHomeScreen</a>()</td><td class="entry"><a class="el" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/doc/api-ref/html/dd/d1d/hs-helper_8c.html b/doc/api-ref/html/dd/d1d/hs-helper_8c.html
index e367001..ce8d1bd 100644
--- a/doc/api-ref/html/dd/d1d/hs-helper_8c.html
+++ b/doc/api-ref/html/dd/d1d/hs-helper_8c.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/hs-helper.c File Reference</title>
+<title>HomeScreenBinding: src/hs-helper.c File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -128,10 +128,10 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00048">48</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT16_MAX) || (tmp_id &lt; INT16_MIN) )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_id = (int16_t)tmp_id;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT16_MAX) || (tmp_id &lt; INT16_MIN) )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_id = (int16_t)tmp_id;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -168,10 +168,10 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00072">72</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT32_MAX) || (tmp_id &lt; INT32_MIN) )</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *out_id = (int32_t)tmp_id;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT32_MAX) || (tmp_id &lt; INT32_MIN) )</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *out_id = (int32_t)tmp_id;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -208,10 +208,10 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00024">24</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; UINT16_MAX) || (tmp_id &lt; 0) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *out_id = (uint16_t)tmp_id;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="fragment"><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; UINT16_MAX) || (tmp_id &lt; 0) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *out_id = (uint16_t)tmp_id;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -346,7 +346,7 @@ Functions</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dd/d1d/hs-helper_8c_source.html#l00142">142</a> of file <a class="el" href="../../dd/d1d/hs-helper_8c_source.html">hs-helper.c</a>.</p>
-<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> buf_size = 50;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a> / <span class="keyword">sizeof</span> *<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0 ; i &lt; size ; ++i)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!strncmp(value, <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[i], buf_size))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ret = i;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
+<div class="fragment"><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> buf_size = 50;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a> / <span class="keyword">sizeof</span> *<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0 ; i &lt; size ; ++i)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!strncmp(value, <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[i], buf_size))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ret = i;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
</div><!-- fragment -->
</div>
</div>
diff --git a/doc/api-ref/html/dd/d1d/hs-helper_8c_source.html b/doc/api-ref/html/dd/d1d/hs-helper_8c_source.html
index c28e212..792ec9d 100644
--- a/doc/api-ref/html/dd/d1d/hs-helper_8c_source.html
+++ b/doc/api-ref/html/dd/d1d/hs-helper_8c_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>HomeScreenBinding: homescreen_service/hs-helper.c Source File</title>
+<title>HomeScreenBinding: src/hs-helper.c Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_a01af9eb3c502936dfd53c3f8e45721d.html">homescreen_service</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -69,15 +69,15 @@ $(function() {
<a href="../../dd/d1d/hs-helper_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d3/d3d/hs-helper_8h.html">hs-helper.h</a>&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;limits.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;stdarg.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53"> 24</a></span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../dd/d1d/hs-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, uint16_t *out_id)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; UINT16_MAX) || (tmp_id &lt; 0) )</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *out_id = (uint16_t)tmp_id;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827"> 48</a></span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int16_t *out_id)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT16_MAX) || (tmp_id &lt; INT16_MIN) )</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *out_id = (int16_t)tmp_id;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2"> 72</a></span>&#160;<a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> <a class="code" href="../../dd/d1d/hs-helper_8c.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a>(<span class="keyword">const</span> <span class="keyword">struct</span> afb_req request, <span class="keyword">const</span> <span class="keywordtype">char</span> *source, int32_t *out_id)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* tmp = afb_req_value (request, source);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span>(!tmp)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">long</span> tmp_id = strtol(tmp,&amp;endptr,10);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>( (tmp_id &gt; INT32_MAX) || (tmp_id &lt; INT32_MIN) )</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *out_id = (int32_t)tmp_id;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e"> 96</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e">hs_add_object_to_json_object</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count,...)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; va_list args;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; va_start(args, count);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; count; ++i )</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">char</span> *key = va_arg(args, <span class="keywordtype">char</span>*);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">int</span> value = va_arg(args, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; json_object_object_add(j_obj, key, json_object_new_int((int32_t)value));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; ++i;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; va_end(args);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf"> 110</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keywordtype">int</span> count,...)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; va_list args;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; va_start(args, count);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; count; ++i )</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">char</span> *key = va_arg(args, <span class="keywordtype">char</span>*);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">char</span> *value = va_arg(args, <span class="keywordtype">char</span>*);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; json_object_object_add(j_obj, key, json_object_new_string(value));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; ++i;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; va_end(args);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;}</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a"> 125</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a>(<span class="keyword">struct</span> json_object* j_obj, <span class="keyword">const</span> <span class="keywordtype">char</span>* verb_name, <span class="keywordtype">int</span> count, ...)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; va_list args;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; va_start(args, count);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; json_object_object_add(j_obj,<span class="stringliteral">&quot;verb&quot;</span>, json_object_new_string(verb_name));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; count; ++i )</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">char</span> *key = va_arg(args, <span class="keywordtype">char</span>*);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">int</span> value = va_arg(args, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; json_object_object_add(j_obj, key, json_object_new_int((int32_t)value));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; ++i;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; va_end(args);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="../../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a"> 142</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* value)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;{</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">size_t</span> buf_size = 50;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a> / <span class="keyword">sizeof</span> *<a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> ret = -1;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0 ; i &lt; size ; ++i)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">if</span>(!strncmp(value, <a class="code" href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a>[i], buf_size))</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ret = i;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="ttc" id="hs-helper_8c_html_a8777c53f1d4d5412f19b134ad85ffedf"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs_add_object_to_json_object_str</a></div><div class="ttdeci">void hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00110">hs-helper.c:110</a></div></div>
<div class="ttc" id="hs-helper_8h_html"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html">hs-helper.h</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a649900645417f2df3a70b9ad67529f53"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a></div><div class="ttdeci">REQ_ERROR get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00024">hs-helper.c:24</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00033">hs-helper.h:33</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00027">hs-helper.h:27</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_a0cd84b1a2184c9b84d1b7bf24582f28e"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e">evlist</a></div><div class="ttdeci">static const char * evlist[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00034">hs-helper.h:34</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a2ff1b894941c3b461ca8119079c4146a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs_search_event_name_index</a></div><div class="ttdeci">int hs_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00142">hs-helper.c:142</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a2e62366684e39ea94436bf017e416827"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a></div><div class="ttdeci">REQ_ERROR get_value_int16(const struct afb_req request, const char *source, int16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00048">hs-helper.c:48</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b">OUT_RANGE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00031">hs-helper.h:31</a></div></div>
<div class="ttc" id="hs-helper_8c_html_ac5b0370643c520377afd3fd4891918d2"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a></div><div class="ttdeci">REQ_ERROR get_value_int32(const struct afb_req request, const char *source, int32_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00072">hs-helper.c:72</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00028">hs-helper.h:28</a></div></div>
-<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00025">hs-helper.h:25</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">NOT_NUMBER</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00030">hs-helper.h:30</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00029">hs-helper.h:29</a></div></div>
+<div class="ttc" id="hs-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="../../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d3d/hs-helper_8h_source.html#l00026">hs-helper.h:26</a></div></div>
<div class="ttc" id="hs-helper_8c_html_a1ba31a6a94515ff1730ba0043a67d59e"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e">hs_add_object_to_json_object</a></div><div class="ttdeci">void hs_add_object_to_json_object(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00096">hs-helper.c:96</a></div></div>
<div class="ttc" id="hs-helper_8c_html_ae83604a37134e7bdee3ce4f10bb0b47a"><div class="ttname"><a href="../../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs_add_object_to_json_object_func</a></div><div class="ttdeci">void hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d1d/hs-helper_8c_source.html#l00125">hs-helper.c:125</a></div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/doc/api-ref/html/de/dd0/class_lib_home_screen.html b/doc/api-ref/html/de/dd0/class_lib_home_screen.html
index 42548a6..2181e10 100644
--- a/doc/api-ref/html/de/dd0/class_lib_home_screen.html
+++ b/doc/api-ref/html/de/dd0/class_lib_home_screen.html
@@ -73,11 +73,12 @@ $(function() {
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a82616c91ac211d2ad08e709b524bf154"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> { <a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> = 1,
-<a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>
+<a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>,
+<a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a>
}</td></tr>
<tr class="separator:a82616c91ac211d2ad08e709b524bf154"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae99dee1e03d494d59d26c9f17078e01f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> = std::function&lt; void(const char *)&gt;</td></tr>
-<tr class="separator:ae99dee1e03d494d59d26c9f17078e01f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a334f11f81c84c98d18284215dcaada3a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> = std::function&lt; void(json_object *)&gt;</td></tr>
+<tr class="separator:a334f11f81c84c98d18284215dcaada3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
@@ -91,13 +92,13 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a23bc17798453cfca50904562736f6b25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a57b573cc767725762ba9beab032220"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a> (const int port, const std::string &amp;token)</td></tr>
<tr class="separator:a6a57b573cc767725762ba9beab032220"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a32d3282898d0f04151c24b4103511e00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">runEventloop</a> ()</td></tr>
-<tr class="separator:a32d3282898d0f04151c24b4103511e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb571c9577087b47065eb23e7fdbc903"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">tapShortcut</a> (const char *application_name)</td></tr>
<tr class="separator:afb571c9577087b47065eb23e7fdbc903"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac336482036a72b51a822725f1929523c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">onScreenMessage</a> (const char *display_message)</td></tr>
<tr class="separator:ac336482036a72b51a822725f1929523c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab1b0e08bf35415de9064afed899e9f85"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a> (enum <a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="el" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> f)</td></tr>
+<tr class="memitem:a6c065f41f2c5d1f58d2763bfb4da9c37"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">onScreenReply</a> (const char *reply_message)</td></tr>
+<tr class="separator:a6c065f41f2c5d1f58d2763bfb4da9c37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1b0e08bf35415de9064afed899e9f85"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a> (enum <a class="el" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="el" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> f)</td></tr>
<tr class="separator:ab1b0e08bf35415de9064afed899e9f85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2789e8a5372202cc36f48e71dbb9b7cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">registerCallback</a> (void(*event_cb)(const std::string &amp;<a class="el" href="../../df/d7d/structevent.html">event</a>, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</td></tr>
<tr class="separator:a2789e8a5372202cc36f48e71dbb9b7cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -129,19 +130,19 @@ Static Public Attributes</h2></td></tr>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00032">32</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
-<a id="ae99dee1e03d494d59d26c9f17078e01f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#ae99dee1e03d494d59d26c9f17078e01f">&#9670;&nbsp;</a></span>handler_func</h2>
+<a id="a334f11f81c84c98d18284215dcaada3a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a334f11f81c84c98d18284215dcaada3a">&#9670;&nbsp;</a></span>handler_func</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">using <a class="el" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">LibHomeScreen::handler_func</a> = std::function&lt;void(const char*)&gt;</td>
+ <td class="memname">using <a class="el" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">LibHomeScreen::handler_func</a> = std::function&lt;void(json_object*)&gt;</td>
</tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00041">41</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
+<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00042">42</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
</div>
</div>
@@ -160,11 +161,13 @@ Static Public Attributes</h2></td></tr>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"></a>Event_TapShortcut&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"></a>Event_OnScreenMessage&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"></a>Event_OnScreenReply&#160;</td><td class="fielddoc"></td></tr>
</table>
-<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00043">43</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> = 1,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; };</div><div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00044">44</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> = 1,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; };</div><div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -185,8 +188,8 @@ Static Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>constructor </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00085">85</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00083">83</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;{</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a249902aebf71a5383ca8ec6ae558d095"></a>
@@ -205,8 +208,8 @@ Static Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>destructor </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00093">93</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(sp_websock != NULL)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; free(sp_websock);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00090">90</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; sd_event_unref(mploop);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">if</span>(sp_websock != NULL)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; afb_wsj1_unref(sp_websock);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a0fff2f703c8ce184eb9edd133e0f4137"></a>
@@ -302,11 +305,11 @@ Static Public Attributes</h2></td></tr>
<h4>Note</h4>
<p>To call HomeScreen's APIs, the application should set its function name, arguments to JSON format. </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00369">369</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keywordtype">string</span>(verb)))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb, arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">libhomescreen.cpp:40</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7a2176c3d71fec0f09dcb2aa0866b17e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a></div><div class="ttdeci">static bool has_verb(const string &amp;verb)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00557">libhomescreen.cpp:557</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00076">libhomescreen.cpp:76</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00360">360</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a>(<span class="keywordtype">string</span>(verb)))</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;verb doesn&#39;t exit&quot;</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; }</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, verb, arg, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,verb);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a></div><div class="ttdeci">#define HMI_ERROR(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00018">hmi-debug.h:18</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">libhomescreen.cpp:36</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7a2176c3d71fec0f09dcb2aa0866b17e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">has_verb</a></div><div class="ttdeci">static bool has_verb(const string &amp;verb)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00518">libhomescreen.cpp:518</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00074">libhomescreen.cpp:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -346,9 +349,9 @@ Static Public Attributes</h2></td></tr>
<h4>Note</h4>
<p>Use this constructor </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00119">119</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;{</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span>(port &gt; 0 &amp;&amp; token.size() &gt; 0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; mport = port;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; mtoken = token;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;port and token should be &gt; 0, Initial port and token uses.&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ret = initialize_websocket();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(ret != 0 )</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to initialize websocket&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;Initialized&quot;</span>);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a4e42b2f5af2174dd24f958351becf63d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a></div><div class="ttdeci">#define DLOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">libhomescreen.cpp:33</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00116">116</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span>(port &gt; 0 &amp;&amp; token.size() &gt; 0)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; mport = port;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; mtoken = token;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;port and token should be &gt; 0, Initial port and token uses.&quot;</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ret = initialize_websocket();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(ret != 0 )</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to initialize websocket&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">else</span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Initialized&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a></div><div class="ttdeci">#define HMI_ERROR(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00018">hmi-debug.h:18</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -390,8 +393,8 @@ Static Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00457">457</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">448</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="a9c4885b51b43ab24a548d49fb3ab2de3"></a>
@@ -426,12 +429,14 @@ Static Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00467">467</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen on_event]: &quot;</span> &lt;&lt; <span class="keyword">event</span> &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; afb_wsj1_msg_object_s(msg) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (strstr(<a class="code" href="../../df/d7d/structevent.html">event</a>, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>) == NULL) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">struct </span>json_object* ev_contents = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">struct </span>json_object *json_data = json_object_object_get(ev_contents, <span class="stringliteral">&quot;data&quot;</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">if</span>(onEvent != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span> ev(<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; onEvent(ev, ev_contents);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* event_only = strchr(<a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span> (event_only != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; event_only = event_only + 1;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0].c_str()) == 0) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keyword">struct </span>json_object *json_application_name = json_object_object_get(json_data, <span class="stringliteral">&quot;application_name&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* application_name = json_object_get_string(json_application_name);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; i-&gt;second(application_name);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1].c_str()) == 0) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">struct </span>json_object *json_display_message = json_object_object_get(json_data, <span class="stringliteral">&quot;display_message&quot;</span>);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* display_message = json_object_get_string(json_display_message);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; i-&gt;second(display_message);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; json_object_put(ev_contents);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;}</div><div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">libhomescreen.cpp:40</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00049">libhomescreen.hpp:49</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00458">458</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;{</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;event: (%s) msg: (%s).&quot;</span>, <a class="code" href="../../df/d7d/structevent.html">event</a>, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (strstr(<a class="code" href="../../df/d7d/structevent.html">event</a>, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>) == NULL) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">struct </span>json_object* ev_contents = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keyword">struct </span>json_object *json_data = json_object_object_get(ev_contents, <span class="stringliteral">&quot;data&quot;</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span>(onEvent != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span> ev(<a class="code" href="../../df/d7d/structevent.html">event</a>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; onEvent(ev, ev_contents);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* event_only = strchr(<a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">if</span> (event_only != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; event_only = event_only + 1;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0].c_str()) == 0) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a>);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1].c_str()) == 0) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_only, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[2].c_str()) == 0) {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">auto</span> i = this-&gt;handlers.find(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a>);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> ( i != this-&gt;handlers.end() ) {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; i-&gt;second(json_data);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; json_object_put(ev_contents);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
+<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">libhomescreen.cpp:36</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00051">libhomescreen.hpp:51</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -461,8 +466,8 @@ Static Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">448</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;{</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a>(<span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span>(onHangup != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; onHangup();</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a4e42b2f5af2174dd24f958351becf63d"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">DLOG</a></div><div class="ttdeci">#define DLOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00033">libhomescreen.cpp:33</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00439">439</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;{</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span>(onHangup != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; onHangup();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -493,8 +498,9 @@ Static Public Attributes</h2></td></tr>
</div><div class="memdoc">
<p>msg is like ({"response":{"verb":"subscribe","error":0},"jtype":"afb-reply","request":{"status":"success","info":"homescreen binder subscribe event name [on_screen_message]"}}) msg is like ({"response":{"verb":"tap_shortcut","error":0},"jtype":"afb-reply","request":{"status":"success","info":"afb_event_push event [tap_shortcut]"}}) </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00519">519</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;{</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;[libhomescreen on_reply]: &quot;</span> &lt;&lt; <span class="stringliteral">&quot; (&quot;</span> &lt;&lt; afb_wsj1_msg_object_s(msg) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">if</span>(onReply != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">struct </span>json_object* reply = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; onReply(reply);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; json_object_put(reply);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00506">506</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;msg: (%s)&quot;</span>, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(onReply != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keyword">struct </span>json_object* reply = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; onReply(reply);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; json_object_put(reply);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a></div><div class="ttdeci">#define HMI_DEBUG(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00022">hmi-debug.h:22</a></div></div>
+</div><!-- fragment -->
</div>
</div>
<a id="ac336482036a72b51a822725f1929523c"></a>
@@ -512,19 +518,50 @@ Static Public Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>HomeScreenアプリに表示するメッセージイベントの発行</p>
-<p>各アプリからHomeScreenアプリケーションのOnScreenに表示するイベントを発行する</p>
+<p>Sending onScreen message event</p>
+<p>Sending OnScreen message event to HomeScreen from applications</p>
+<h4>Parameters</h4>
+<ul>
+<li>display_message [in] : message for display</li>
+</ul>
+<h4>Return</h4>
+<ul>
+<li>Returns 0 on success or -1 in case of error. </li>
+</ul>
+
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00244">244</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(display_message);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;display_message&quot;</span>, val);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="stringliteral">&quot;on_screen_message&quot;</span>, j_obj);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a6c065f41f2c5d1f58d2763bfb4da9c37"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c065f41f2c5d1f58d2763bfb4da9c37">&#9670;&nbsp;</a></span>onScreenReply()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int LibHomeScreen::onScreenReply </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>reply_message</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Sending onScreen reply event</p>
+<p>Sending OnScreen reply event to applications from HomeScreen</p>
<h4>Parameters</h4>
<ul>
-<li>display_message [in] : 表示するメッセージ</li>
+<li>reply_message [in] : message for reply</li>
</ul>
<h4>Return</h4>
<ul>
<li>Returns 0 on success or -1 in case of error. </li>
</ul>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00280">280</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;{</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(display_message);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;display_message&quot;</span>, val);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="stringliteral">&quot;on_screen_message&quot;</span>, j_obj);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00268">268</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(reply_message);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;reply_message&quot;</span>, val);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="stringliteral">&quot;on_screen_reply&quot;</span>, j_obj);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -596,37 +633,8 @@ Static Public Attributes</h2></td></tr>
<h4>Note</h4>
<p>Event callback is invoked by home screen for event you subscribed. If you would like to get event, please call subscribe function before/after this function </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00158">158</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;{</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; onEvent = event_cb;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; onReply = reply_cb;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; onHangup = hangup_cb;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;}</div></div><!-- fragment -->
-</div>
-</div>
-<a id="a32d3282898d0f04151c24b4103511e00"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a32d3282898d0f04151c24b4103511e00">&#9670;&nbsp;</a></span>runEventloop()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int LibHomeScreen::runEventloop </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-<p>This function start receiving the reply/event message from home screen</p>
-<h4>Parameters</h4>
-<p>Nothing</p>
-<h4>Return</h4>
-<ul>
-<li>Returns thread_id on success or -1 in case of error.</li>
-</ul>
-<h4>Note</h4>
-
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00224">224</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span>(mploop &amp;&amp; sp_websock)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; pthread_t thread_id;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">int</span> ret = pthread_create(&amp;thread_id, NULL, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a>, mploop);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span>(ret != 0)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Cannot run eventloop due to error:%d&quot;</span>, errno);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> thread_id;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Connecting is not established yet&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_aa73353e1bf62c68b6b0aba7a1e4e275e"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e">event_loop_run</a></div><div class="ttdeci">static void * event_loop_run(void *args)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00204">libhomescreen.cpp:204</a></div></div>
-</div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00155">155</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; onEvent = event_cb;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; onReply = reply_cb;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; onHangup = hangup_cb;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div></div><!-- fragment -->
</div>
</div>
<a id="ab1b0e08bf35415de9064afed899e9f85"></a>
@@ -644,7 +652,7 @@ Static Public Attributes</h2></td></tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype"><a class="el" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a>&#160;</td>
+ <td class="paramtype"><a class="el" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a>&#160;</td>
<td class="paramname"><em>f</em>&#160;</td>
</tr>
<tr>
@@ -654,21 +662,22 @@ Static Public Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>イベントハンドラの登録</p>
-<p>各アプリからHomeScreenアプリケーションのOnScreenに表示するイベントを発行する</p>
+<p>Setting Event Handler</p>
+<p>Setting event handler for Homescreen</p>
<h4>Parameters</h4>
<ul>
-<li>et [in] : 対象のイベント</li>
-<li>f [in] : イベントハンドラ</li>
+<li>et [in] : event name</li>
+<li>f [in] : event handler</li>
</ul>
<h4>Return</h4>
<p>Nothing </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00305">305</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (et &gt;= 1 &amp;&amp; et &lt;= 2) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">switch</span> (et) {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a>:</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0]);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>:</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1]);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; this-&gt;handlers[et] = std::move(f);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00401">libhomescreen.cpp:401</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00049">libhomescreen.hpp:49</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00293">293</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;{</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (et &gt;= 1 &amp;&amp; et &lt;= 3) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">switch</span> (et) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a>:</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[0]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>:</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[1]);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">case</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a>:</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[2]);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; this-&gt;handlers[et] = std::move(f);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00392">libhomescreen.cpp:392</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00051">libhomescreen.hpp:51</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -699,10 +708,10 @@ Static Public Attributes</h2></td></tr>
<h4>Note</h4>
<p>This function enables to get an event to your callback function. </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00401">401</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;{</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;subscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">libhomescreen.cpp:40</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00076">libhomescreen.cpp:76</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00392">392</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;subscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a></div><div class="ttdeci">#define HMI_ERROR(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00018">hmi-debug.h:18</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">libhomescreen.cpp:36</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00074">libhomescreen.cpp:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -721,19 +730,19 @@ Static Public Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<p>ショートカットアイコンがタップされたイベントの発行</p>
-<p>HomeScreenアプリケーションにて各アプリアイコンがタップされたときにイベントを発行する</p>
+<p>Sending ShortCut Icon tapped event</p>
+<p>When HomeScreen shortcut area is tapped, sending a event</p>
<h4>Parameters</h4>
<ul>
-<li>application_name [in] : タップされたアプリケーションの名前(label)</li>
+<li>application_name [in] : Tapped application name (label)</li>
</ul>
<h4>Return</h4>
<ul>
<li>Returns 0 on success or -1 in case of error. </li>
</ul>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00256">256</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;{</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(application_name);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;application_name&quot;</span>, val);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="stringliteral">&quot;tap_shortcut&quot;</span>, j_obj);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00220">220</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(application_name);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;application_name&quot;</span>, val);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> this-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="stringliteral">&quot;tap_shortcut&quot;</span>, j_obj);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
</div><!-- fragment -->
</div>
</div>
@@ -764,10 +773,10 @@ Static Public Attributes</h2></td></tr>
<h4>Note</h4>
<p>This function disables to get an event to your callback function. </p>
-<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00430">430</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;unsubscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a>(<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;}</div><div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00040">libhomescreen.cpp:40</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a797aa3053bd6a29819d44f8fad8a5eca"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">ELOG</a></div><div class="ttdeci">#define ELOG(args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00032">libhomescreen.cpp:32</a></div></div>
-<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00076">libhomescreen.cpp:76</a></div></div>
+<p class="definition">Definition at line <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html#l00421">421</a> of file <a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;{</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; json_object_object_add(j_obj, <span class="stringliteral">&quot;event&quot;</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordtype">int</span> ret = afb_wsj1_call_j(sp_websock, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a>, <span class="stringliteral">&quot;unsubscribe&quot;</span>, j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a>, <span class="keyword">this</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">&quot;libhomescreen&quot;</span>,<span class="stringliteral">&quot;Failed to call verb:%s&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a></div><div class="ttdeci">#define HMI_ERROR(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00018">hmi-debug.h:18</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a1e2d6e77dd8f0162f830058579eab42f"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">API</a></div><div class="ttdeci">static const char API[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00036">libhomescreen.cpp:36</a></div></div>
+<div class="ttc" id="libhomescreen_8cpp_html_a7778933bffa862c63fa0a1b8219faa8b"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">_on_reply_static</a></div><div class="ttdeci">static void _on_reply_static(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00074">libhomescreen.cpp:74</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -791,8 +800,8 @@ Static Public Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">{</div><div class="line"> std::string(<span class="stringliteral">&quot;ping&quot;</span>), </div><div class="line"> std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>), </div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;subscribe&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;unsubscribe&quot;</span>)</div><div class="line">}</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00048">48</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
+<b>Initial value:</b><div class="fragment"><div class="line">{</div><div class="line"> std::string(<span class="stringliteral">&quot;ping&quot;</span>), </div><div class="line"> std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>), </div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_reply&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;subscribe&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;unsubscribe&quot;</span>)</div><div class="line">}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00050">50</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
</div>
</div>
@@ -815,13 +824,13 @@ Static Public Attributes</h2></td></tr>
</tr>
</table>
</div><div class="memdoc">
-<b>Initial value:</b><div class="fragment"><div class="line">{</div><div class="line"> std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;none&quot;</span>)</div><div class="line">}</div></div><!-- fragment -->
-<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00049">49</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
+<b>Initial value:</b><div class="fragment"><div class="line">{</div><div class="line"> std::string(<span class="stringliteral">&quot;tap_shortcut&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_message&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;on_screen_reply&quot;</span>),</div><div class="line"> std::string(<span class="stringliteral">&quot;none&quot;</span>)</div><div class="line">}</div></div><!-- fragment -->
+<p class="definition">Definition at line <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html#l00051">51</a> of file <a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>include/libhomescreen/<a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a></li>
+<li>include/<a class="el" href="../../df/d43/libhomescreen_8hpp_source.html">libhomescreen.hpp</a></li>
<li>libhomescreen/<a class="el" href="../../d0/d8a/libhomescreen_8cpp_source.html">libhomescreen.cpp</a></li>
</ul>
</div><!-- contents -->
diff --git a/doc/api-ref/html/df/d43/libhomescreen_8hpp.html b/doc/api-ref/html/df/d43/libhomescreen_8hpp.html
index 631034d..c164aaf 100644
--- a/doc/api-ref/html/df/d43/libhomescreen_8hpp.html
+++ b/doc/api-ref/html/df/d43/libhomescreen_8hpp.html
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_0f70dc74e67ded1ed6ea12b5a24cac83.html">libhomescreen</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
diff --git a/doc/api-ref/html/df/d43/libhomescreen_8hpp_source.html b/doc/api-ref/html/df/d43/libhomescreen_8hpp_source.html
index 2722975..5e2f196 100644
--- a/doc/api-ref/html/df/d43/libhomescreen_8hpp_source.html
+++ b/doc/api-ref/html/df/d43/libhomescreen_8hpp_source.html
@@ -58,7 +58,7 @@ $(function() {
<div id="nav-path" class="navpath">
<ul>
-<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="../../dir_0f70dc74e67ded1ed6ea12b5a24cac83.html">libhomescreen</a></li> </ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
@@ -66,30 +66,31 @@ $(function() {
<div class="title">libhomescreen.hpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../df/d43/libhomescreen_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef LIBHOMESCREEN_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define LIBHOMESCREEN_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;systemd/sd-event.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;afb/afb-wsj1.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;afb/afb-ws-client.h&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">~LibHomeScreen</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>(<span class="keyword">const</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">operator=</a>(<span class="keyword">const</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f"> 41</a></span>&#160; <span class="keyword">using</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> = std::function&lt;void(const char*)&gt;;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154"> 43</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> {</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"> 44</a></span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> = 1,</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"> 45</a></span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08"> 48</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">api_list</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9"> 49</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">event_list</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="comment">/* Method */</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> port, <span class="keyword">const</span> std::string&amp; token);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">runEventloop</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">tapShortcut</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">onScreenMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="code" href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">handler_func</a> f);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">registerCallback</a>(</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> (*event_cb)(<span class="keyword">const</span> std::string&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents),</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> (*reply_cb)(<span class="keyword">struct</span> json_object* reply_contents),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> (*hangup_cb)(<span class="keywordtype">void</span>) = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="keyword">const</span> std::string&amp; verb, <span class="keyword">struct</span> json_object* arg);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* verb, <span class="keyword">struct</span> json_object* arg);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<span class="keyword">const</span> std::string&amp; event_name);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">unsubscribe</a>(<span class="keyword">const</span> std::string&amp; event_name);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">int</span> initialize_websocket();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; void (*onEvent)(<span class="keyword">const</span> std::string&amp; event, <span class="keyword">struct </span>json_object* event_contents);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; void (*onReply)(<span class="keyword">struct </span>json_object* reply);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; void (*onHangup)(void);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">struct </span>afb_wsj1* sp_websock;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">struct </span>afb_wsj1_itf minterface;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; sd_event* mploop;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; std::string muri;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> mport = 2000;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; std::string mtoken = <span class="stringliteral">&quot;hs&quot;</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; std::map&lt;EventType, handler_func&gt; handlers;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">/* Don&#39;t use/ Internal only */</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">on_hangup</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">on_call</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">on_event</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *event, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">on_reply</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LIBHOMESCREEN_H */</span><span class="preprocessor"></span></div><div class="ttc" id="class_lib_home_screen_html_a9c4885b51b43ab24a548d49fb3ab2de3"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a></div><div class="ttdeci">void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00467">libhomescreen.cpp:467</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a248d9648c6186287a7632ec1c75fc9c5"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a></div><div class="ttdeci">void on_reply(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00519">libhomescreen.cpp:519</a></div></div>
+<a href="../../df/d43/libhomescreen_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef LIBHOMESCREEN_H</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define LIBHOMESCREEN_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;systemd/sd-event.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;{</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;afb/afb-wsj1.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;afb/afb-ws-client.h&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">~LibHomeScreen</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen</a>(<span class="keyword">const</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">operator=</a>(<span class="keyword">const</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a> &amp;) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// using handler_func = std::function&lt;void(const char*)&gt;;</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a"> 42</a></span>&#160; <span class="keyword">using</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> = std::function&lt;void(json_object*)&gt;;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154"> 44</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> {</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"> 45</a></span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">Event_TapShortcut</a> = 1,</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"> 46</a></span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">Event_OnScreenMessage</a>,</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"> 47</a></span>&#160; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">Event_OnScreenReply</a></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08"> 50</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">api_list</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9"> 51</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::vector&lt;std::string&gt; <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">event_list</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">/* Method */</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> port, <span class="keyword">const</span> std::string&amp; token);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">tapShortcut</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">onScreenMessage</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">onScreenReply</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* reply_message);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<span class="keyword">enum</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">EventType</a> et, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">handler_func</a> f);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">registerCallback</a>(</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> (*event_cb)(<span class="keyword">const</span> std::string&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents),</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordtype">void</span> (*reply_cb)(<span class="keyword">struct</span> json_object* reply_contents),</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> (*hangup_cb)(<span class="keywordtype">void</span>) = <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="keyword">const</span> std::string&amp; verb, <span class="keyword">struct</span> json_object* arg);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* verb, <span class="keyword">struct</span> json_object* arg);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">subscribe</a>(<span class="keyword">const</span> std::string&amp; event_name);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">unsubscribe</a>(<span class="keyword">const</span> std::string&amp; event_name);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">int</span> initialize_websocket();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; void (*onEvent)(<span class="keyword">const</span> std::string&amp; event, <span class="keyword">struct </span>json_object* event_contents);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; void (*onReply)(<span class="keyword">struct </span>json_object* reply);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; void (*onHangup)(void);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">struct </span>afb_wsj1* sp_websock;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">struct </span>afb_wsj1_itf minterface;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; sd_event* mploop;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; std::string muri;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordtype">int</span> mport = 2000;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; std::string mtoken = <span class="stringliteral">&quot;hs&quot;</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; std::map&lt;EventType, handler_func&gt; handlers;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">/* Don&#39;t use/ Internal only */</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">on_hangup</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1 *wsj);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">on_call</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *api, <span class="keyword">const</span> <span class="keywordtype">char</span> *verb, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">on_event</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">const</span> <span class="keywordtype">char</span> *event, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">void</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">on_reply</a>(<span class="keywordtype">void</span> *closure, <span class="keyword">struct</span> afb_wsj1_msg *msg);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;};</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LIBHOMESCREEN_H */</span><span class="preprocessor"></span></div><div class="ttc" id="class_lib_home_screen_html_a9c4885b51b43ab24a548d49fb3ab2de3"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3">LibHomeScreen::on_event</a></div><div class="ttdeci">void on_event(void *closure, const char *event, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00458">libhomescreen.cpp:458</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a248d9648c6186287a7632ec1c75fc9c5"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5">LibHomeScreen::on_reply</a></div><div class="ttdeci">void on_reply(void *closure, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00506">libhomescreen.cpp:506</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6c065f41f2c5d1f58d2763bfb4da9c37"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">LibHomeScreen::onScreenReply</a></div><div class="ttdeci">int onScreenReply(const char *reply_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00268">libhomescreen.cpp:268</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a23bc17798453cfca50904562736f6b25"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">LibHomeScreen::operator=</a></div><div class="ttdeci">LibHomeScreen &amp; operator=(const LibHomeScreen &amp;)=delete</div></div>
-<div class="ttc" id="class_lib_home_screen_html_a608638eb87b2772a3dcc92d8ca8f3596"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a></div><div class="ttdeci">void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00457">libhomescreen.cpp:457</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a334f11f81c84c98d18284215dcaada3a"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">LibHomeScreen::handler_func</a></div><div class="ttdeci">std::function&lt; void(json_object *)&gt; handler_func</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00042">libhomescreen.hpp:42</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a608638eb87b2772a3dcc92d8ca8f3596"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596">LibHomeScreen::on_call</a></div><div class="ttdeci">void on_call(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">libhomescreen.cpp:448</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1c1fa69f24b981e824dd9fb810c4b74"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a></div><div class="ttdeci">void on_hangup(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00448">libhomescreen.cpp:448</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_afb571c9577087b47065eb23e7fdbc903"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a></div><div class="ttdeci">int tapShortcut(const char *application_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00256">libhomescreen.cpp:256</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00401">libhomescreen.cpp:401</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">LibHomeScreen::EventType</a></div><div class="ttdeci">EventType</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00043">libhomescreen.hpp:43</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a32d3282898d0f04151c24b4103511e00"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen::runEventloop</a></div><div class="ttdeci">int runEventloop()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00224">libhomescreen.cpp:224</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a724bd949c4154fad041f96a15ef0f5dc"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a></div><div class="ttdeci">LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00085">libhomescreen.cpp:85</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00049">libhomescreen.hpp:49</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ae99dee1e03d494d59d26c9f17078e01f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">LibHomeScreen::handler_func</a></div><div class="ttdeci">std::function&lt; void(const char *)&gt; handler_func</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00041">libhomescreen.hpp:41</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00119">libhomescreen.cpp:119</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ac336482036a72b51a822725f1929523c"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a></div><div class="ttdeci">int onScreenMessage(const char *display_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00280">libhomescreen.cpp:280</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1c1fa69f24b981e824dd9fb810c4b74"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74">LibHomeScreen::on_hangup</a></div><div class="ttdeci">void on_hangup(void *closure, struct afb_wsj1 *wsj)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00439">libhomescreen.cpp:439</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_afb571c9577087b47065eb23e7fdbc903"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903">LibHomeScreen::tapShortcut</a></div><div class="ttdeci">int tapShortcut(const char *application_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00220">libhomescreen.cpp:220</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_aa4c189807b75d070f567967f0d690738"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738">LibHomeScreen::subscribe</a></div><div class="ttdeci">int subscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00392">libhomescreen.cpp:392</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">LibHomeScreen::EventType</a></div><div class="ttdeci">EventType</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a724bd949c4154fad041f96a15ef0f5dc"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a></div><div class="ttdeci">LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00083">libhomescreen.cpp:83</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a6d8a4d33a006a08652e7377a4c29e9"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00051">libhomescreen.hpp:51</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00116">libhomescreen.cpp:116</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ac336482036a72b51a822725f1929523c"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen::onScreenMessage</a></div><div class="ttdeci">int onScreenMessage(const char *display_message)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00244">libhomescreen.cpp:244</a></div></div>
<div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a249902aebf71a5383ca8ec6ae558d095"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a></div><div class="ttdeci">~LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00093">libhomescreen.cpp:93</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00048">libhomescreen.hpp:48</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_aac03a45cbd453ba69ddb00c1016930a6"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a></div><div class="ttdeci">int unsubscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00430">libhomescreen.cpp:430</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00305">libhomescreen.cpp:305</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a2789e8a5372202cc36f48e71dbb9b7cf"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a></div><div class="ttdeci">void registerCallback(void(*event_cb)(const std::string &amp;event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00158">libhomescreen.cpp:158</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a249902aebf71a5383ca8ec6ae558d095"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a></div><div class="ttdeci">~LibHomeScreen()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00090">libhomescreen.cpp:90</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00050">libhomescreen.hpp:50</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_aac03a45cbd453ba69ddb00c1016930a6"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6">LibHomeScreen::unsubscribe</a></div><div class="ttdeci">int unsubscribe(const std::string &amp;event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00421">libhomescreen.cpp:421</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00293">libhomescreen.cpp:293</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a2789e8a5372202cc36f48e71dbb9b7cf"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen::registerCallback</a></div><div class="ttdeci">void registerCallback(void(*event_cb)(const std::string &amp;event, struct json_object *event_contents), void(*reply_cb)(struct json_object *reply_contents), void(*hangup_cb)(void)=nullptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00155">libhomescreen.cpp:155</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/doc/api-ref/html/df/d76/hmi-debug_8h.html b/doc/api-ref/html/df/d76/hmi-debug_8h.html
new file mode 100644
index 0000000..3931c00
--- /dev/null
+++ b/doc/api-ref/html/df/d76/hmi-debug_8h.html
@@ -0,0 +1,435 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>HomeScreenBinding: include/hmi-debug.h File Reference</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">HomeScreenBinding
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('../../',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">hmi-debug.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;time.h&gt;</code><br />
+<code>#include &lt;stdio.h&gt;</code><br />
+<code>#include &lt;afb/afb-binding.h&gt;</code><br />
+</div>
+<p><a href="../../df/d76/hmi-debug_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a65bb6c7cfe38f8a724beab5059d36fb2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(prefix, args, ...)&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a>, __FILE__, __FUNCTION__, __LINE__, prefix, args, ##__VA_ARGS__)</td></tr>
+<tr class="separator:a65bb6c7cfe38f8a724beab5059d36fb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a25361812432cd2480bc8f1a8e56ecbf7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">HMI_WARNING</a>(prefix, args, ...)&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td></tr>
+<tr class="separator:a25361812432cd2480bc8f1a8e56ecbf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc0d6e0760017d8ae48b836925b2ef15"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">HMI_NOTICE</a>(prefix, args, ...)&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td></tr>
+<tr class="separator:abc0d6e0760017d8ae48b836925b2ef15"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11b249a67108f0f4c50a0fc8a3eb4f5c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c">HMI_INFO</a>(prefix, args, ...)&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td></tr>
+<tr class="separator:a11b249a67108f0f4c50a0fc8a3eb4f5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d26d8b8201011dade787236519711c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(prefix, args, ...)&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td></tr>
+<tr class="separator:a0d26d8b8201011dade787236519711c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:aa5a9053636a30269210c54e734e0d583"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a> { <br />
+&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">LOG_LEVEL_NONE</a> = 0,
+<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a>,
+<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a>,
+<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a>,
+<br />
+&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a>,
+<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a>,
+<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">LOG_LEVEL_MAX</a> = LOG_LEVEL_ERROR
+<br />
+ }</td></tr>
+<tr class="separator:aa5a9053636a30269210c54e734e0d583"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a0846b9d51e2e0612c4825a9a581aa40a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a> (enum <a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a> level, const char *file, const char *func, const int line, const char *prefix, const char *log,...)</td></tr>
+<tr class="separator:a0846b9d51e2e0612c4825a9a581aa40a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a13d4c7647aad2e84766f8b48a6caab09"><td class="memItemLeft" align="right" valign="top">static char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a> [6][20] = {&quot;NONE&quot;, &quot;ERROR&quot;, &quot;WARNING&quot;, &quot;NOTICE&quot;, &quot;INFO&quot;, &quot;DEBUG&quot;}</td></tr>
+<tr class="separator:a13d4c7647aad2e84766f8b48a6caab09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a0d26d8b8201011dade787236519711c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d26d8b8201011dade787236519711c0">&#9670;&nbsp;</a></span>HMI_DEBUG</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define HMI_DEBUG</td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">prefix, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">args, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00022">22</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+<a id="a65bb6c7cfe38f8a724beab5059d36fb2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65bb6c7cfe38f8a724beab5059d36fb2">&#9670;&nbsp;</a></span>HMI_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define HMI_ERROR</td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">prefix, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">args, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a>, __FILE__, __FUNCTION__, __LINE__, prefix, args, ##__VA_ARGS__)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00018">18</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+<a id="a11b249a67108f0f4c50a0fc8a3eb4f5c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a11b249a67108f0f4c50a0fc8a3eb4f5c">&#9670;&nbsp;</a></span>HMI_INFO</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define HMI_INFO</td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">prefix, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">args, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00021">21</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+<a id="abc0d6e0760017d8ae48b836925b2ef15"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc0d6e0760017d8ae48b836925b2ef15">&#9670;&nbsp;</a></span>HMI_NOTICE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define HMI_NOTICE</td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">prefix, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">args, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00020">20</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+<a id="a25361812432cd2480bc8f1a8e56ecbf7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a25361812432cd2480bc8f1a8e56ecbf7">&#9670;&nbsp;</a></span>HMI_WARNING</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define HMI_WARNING</td>
+ <td>(</td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">prefix, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname">args, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td>&#160;&#160;&#160;<a class="el" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a>, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00019">19</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="aa5a9053636a30269210c54e734e0d583"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa5a9053636a30269210c54e734e0d583">&#9670;&nbsp;</a></span>LOG_LEVEL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848"></a>LOG_LEVEL_NONE&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f"></a>LOG_LEVEL_ERROR&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef"></a>LOG_LEVEL_WARNING&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e"></a>LOG_LEVEL_NOTICE&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4"></a>LOG_LEVEL_INFO&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177"></a>LOG_LEVEL_DEBUG&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444"></a>LOG_LEVEL_MAX&#160;</td><td class="fielddoc"></td></tr>
+</table>
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00008">8</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">LOG_LEVEL_NONE</a> = 0,</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a>,</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a>,</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a>,</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a>,</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">LOG_LEVEL_MAX</a> = <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div><div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00010">hmi-debug.h:10</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00012">hmi-debug.h:12</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00014">hmi-debug.h:14</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00013">hmi-debug.h:13</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">LOG_LEVEL_MAX</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00015">hmi-debug.h:15</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00011">hmi-debug.h:11</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">LOG_LEVEL_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00009">hmi-debug.h:9</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a0846b9d51e2e0612c4825a9a581aa40a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0846b9d51e2e0612c4825a9a581aa40a">&#9670;&nbsp;</a></span>_HMI_LOG()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void _HMI_LOG </td>
+ <td>(</td>
+ <td class="paramtype">enum <a class="el" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a>&#160;</td>
+ <td class="paramname"><em>level</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>func</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int&#160;</td>
+ <td class="paramname"><em>line</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>prefix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>log</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">&#160;</td>
+ <td class="paramname"><em>...</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00026">26</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+<div class="fragment"><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> log_level = (getenv(<span class="stringliteral">&quot;USE_HMI_DEBUG&quot;</span>) == NULL)?0:atoi(getenv(<span class="stringliteral">&quot;USE_HMI_DEBUG&quot;</span>));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span>(log_level &lt; level)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">struct </span>timespec tp;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> time;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; clock_gettime(CLOCK_REALTIME, &amp;tp);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; va_list args;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; va_start(args, log);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; message = NULL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; fprintf(stderr, <span class="stringliteral">&quot;[%10.3f] [%s %s] [%s:%d] &gt;&gt;&gt; %s \n&quot;</span>, time / 1000.0, prefix, <a class="code" href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a>[level], func, line, message);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; va_end(args);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; free(message);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="ttc" id="hmi-debug_8h_html_a13d4c7647aad2e84766f8b48a6caab09"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a></div><div class="ttdeci">static char ERROR_FLAG[6][20]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00024">hmi-debug.h:24</a></div></div>
+</div><!-- fragment -->
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="a13d4c7647aad2e84766f8b48a6caab09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a13d4c7647aad2e84766f8b48a6caab09">&#9670;&nbsp;</a></span>ERROR_FLAG</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">char ERROR_FLAG[6][20] = {&quot;NONE&quot;, &quot;ERROR&quot;, &quot;WARNING&quot;, &quot;NOTICE&quot;, &quot;INFO&quot;, &quot;DEBUG&quot;}</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p class="definition">Definition at line <a class="el" href="../../df/d76/hmi-debug_8h_source.html#l00024">24</a> of file <a class="el" href="../../df/d76/hmi-debug_8h_source.html">hmi-debug.h</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/doc/api-ref/html/df/d76/hmi-debug_8h_source.html b/doc/api-ref/html/df/d76/hmi-debug_8h_source.html
new file mode 100644
index 0000000..80b0c61
--- /dev/null
+++ b/doc/api-ref/html/df/d76/hmi-debug_8h_source.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>HomeScreenBinding: include/hmi-debug.h Source File</title>
+<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../jquery.js"></script>
+<script type="text/javascript" src="../../dynsections.js"></script>
+<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="../../search/searchdata.js"></script>
+<script type="text/javascript" src="../../search/search.js"></script>
+<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">HomeScreenBinding
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
+</script>
+<script type="text/javascript" src="../../menudata.js"></script>
+<script type="text/javascript" src="../../menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('../../',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="../../dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">hmi-debug.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="../../df/d76/hmi-debug_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef __HMI_DEBUG_H__</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define __HMI_DEBUG_H__</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583"> 8</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a>{</div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848"> 9</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">LOG_LEVEL_NONE</a> = 0,</div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f"> 10</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a>,</div><div class="line"><a name="l00011"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef"> 11</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a>,</div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e"> 12</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a>,</div><div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4"> 13</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a>,</div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177"> 14</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a>,</div><div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444"> 15</a></span>&#160; <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">LOG_LEVEL_MAX</a> = <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;};</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2"> 18</a></span>&#160;<span class="preprocessor">#define HMI_ERROR(prefix, args,...) _HMI_LOG(LOG_LEVEL_ERROR, __FILE__, __FUNCTION__, __LINE__, prefix, args, ##__VA_ARGS__)</span></div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7"> 19</a></span>&#160;<span class="preprocessor">#define HMI_WARNING(prefix, args,...) _HMI_LOG(LOG_LEVEL_WARNING, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</span></div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15"> 20</a></span>&#160;<span class="preprocessor">#define HMI_NOTICE(prefix, args,...) _HMI_LOG(LOG_LEVEL_NOTICE, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</span></div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c"> 21</a></span>&#160;<span class="preprocessor">#define HMI_INFO(prefix, args,...) _HMI_LOG(LOG_LEVEL_INFO, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</span></div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0"> 22</a></span>&#160;<span class="preprocessor">#define HMI_DEBUG(prefix, args,...) _HMI_LOG(LOG_LEVEL_DEBUG, __FILE__, __FUNCTION__,__LINE__, prefix, args,##__VA_ARGS__)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09"> 24</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">char</span> <a class="code" href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a>[6][20] = {<span class="stringliteral">&quot;NONE&quot;</span>, <span class="stringliteral">&quot;ERROR&quot;</span>, <span class="stringliteral">&quot;WARNING&quot;</span>, <span class="stringliteral">&quot;NOTICE&quot;</span>, <span class="stringliteral">&quot;INFO&quot;</span>, <span class="stringliteral">&quot;DEBUG&quot;</span>};</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a"> 26</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a>(<span class="keyword">enum</span> <a class="code" href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* file, <span class="keyword">const</span> <span class="keywordtype">char</span>* func, <span class="keyword">const</span> <span class="keywordtype">int</span> line, <span class="keyword">const</span> <span class="keywordtype">char</span>* prefix, <span class="keyword">const</span> <span class="keywordtype">char</span>* log, ...)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> log_level = (getenv(<span class="stringliteral">&quot;USE_HMI_DEBUG&quot;</span>) == NULL)?0:atoi(getenv(<span class="stringliteral">&quot;USE_HMI_DEBUG&quot;</span>));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span>(log_level &lt; level)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">char</span> *message;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">struct </span>timespec tp;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> time;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; clock_gettime(CLOCK_REALTIME, &amp;tp);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; time = (tp.tv_sec * 1000000L) + (tp.tv_nsec / 1000);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; va_list args;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; va_start(args, log);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">if</span> (log == NULL || vasprintf(&amp;message, log, args) &lt; 0)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; message = NULL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; fprintf(stderr, <span class="stringliteral">&quot;[%10.3f] [%s %s] [%s:%d] &gt;&gt;&gt; %s \n&quot;</span>, time / 1000.0, prefix, <a class="code" href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a>[level], func, line, message);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; va_end(args);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; free(message);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#endif //__HMI_DEBUG_H__</span></div><div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">LOG_LEVEL_ERROR</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00010">hmi-debug.h:10</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">LOG_LEVEL_NOTICE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00012">hmi-debug.h:12</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">LOG_LEVEL_DEBUG</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00014">hmi-debug.h:14</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">LOG_LEVEL_INFO</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00013">hmi-debug.h:13</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_a13d4c7647aad2e84766f8b48a6caab09"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">ERROR_FLAG</a></div><div class="ttdeci">static char ERROR_FLAG[6][20]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00024">hmi-debug.h:24</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">LOG_LEVEL</a></div><div class="ttdeci">LOG_LEVEL</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00008">hmi-debug.h:8</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">LOG_LEVEL_MAX</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00015">hmi-debug.h:15</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">LOG_LEVEL_WARNING</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00011">hmi-debug.h:11</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_a0846b9d51e2e0612c4825a9a581aa40a"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">_HMI_LOG</a></div><div class="ttdeci">static void _HMI_LOG(enum LOG_LEVEL level, const char *file, const char *func, const int line, const char *prefix, const char *log,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00026">hmi-debug.h:26</a></div></div>
+<div class="ttc" id="hmi-debug_8h_html_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848"><div class="ttname"><a href="../../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">LOG_LEVEL_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d76/hmi-debug_8h_source.html#l00009">hmi-debug.h:9</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="../../doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/doc/api-ref/html/df/d7d/structevent.html b/doc/api-ref/html/df/d7d/structevent.html
index 3ac6dbd..2fcc0eb 100644
--- a/doc/api-ref/html/df/d7d/structevent.html
+++ b/doc/api-ref/html/df/d7d/structevent.html
@@ -110,7 +110,7 @@ Public Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>homescreen_service/<a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a></li>
+<li>src/<a class="el" href="../../d0/d1e/homescreen_8c_source.html">homescreen.c</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/doc/api-ref/html/df/dac/test_8cpp.html b/doc/api-ref/html/df/dac/test_8cpp.html
index 7995dcb..00f9515 100644
--- a/doc/api-ref/html/df/dac/test_8cpp.html
+++ b/doc/api-ref/html/df/dac/test_8cpp.html
@@ -162,15 +162,15 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../df/dac/test_8cpp_source.html#l00117">117</a> of file <a class="el" href="../../df/dac/test_8cpp_source.html">test.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(argc == 1)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; printf(<span class="stringliteral">&quot;Please input port num in first argument, and token in second argument&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(argc == 2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">string</span> av(argv[1]);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>( (av == <span class="stringliteral">&quot;-h&quot;</span>) || (av == <span class="stringliteral">&quot;--help&quot;</span>))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">string</span> port_string(argv[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">string</span> token(argv[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">long</span> port = strtol(port_string.c_str(),&amp;endptr,10);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span>( (port &gt; 20000) || (port &lt; 0) )</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; printf(<span class="stringliteral">&quot;input under 20000(temporary number)&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; printf(<span class="stringliteral">&quot;not number&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;Call test for LibHomeScreen&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a> = <span class="keyword">new</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(port, token);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// hs-&gt;registerCallback(&amp;onEv, &amp;onRep);</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[0]); // tap_shortcut event subscribe</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[1]);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a>, [](<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name){</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_TapShortcut application_name = &quot;</span> &lt;&lt; application_name &lt;&lt; endl;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; });</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a>, [](<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message){</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenMessage display_message = &quot;</span> &lt;&lt; display_message &lt;&lt; endl;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; });</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; printf(<span class="stringliteral">&quot;failed to create event loop&quot;</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">runEventloop</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div><div class="ttc" id="test_8cpp_html_a64a6014565bb3e03294ec4a952d5add0"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a></div><div class="ttdeci">static void usage()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00035">test.cpp:35</a></div></div>
+<div class="fragment"><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(argc == 1)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; printf(<span class="stringliteral">&quot;Please input port num in first argument, and token in second argument&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(argc == 2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">string</span> av(argv[1]);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>( (av == <span class="stringliteral">&quot;-h&quot;</span>) || (av == <span class="stringliteral">&quot;--help&quot;</span>))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">string</span> port_string(argv[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">string</span> token(argv[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">long</span> port = strtol(port_string.c_str(),&amp;endptr,10);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span>( (port &gt; 20000) || (port &lt; 0) )</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; printf(<span class="stringliteral">&quot;input under 20000(temporary number)&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; printf(<span class="stringliteral">&quot;not number&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;Call test for LibHomeScreen&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a> = <span class="keyword">new</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(port, token);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// hs-&gt;registerCallback(&amp;onEv, &amp;onRep);</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[0]); // tap_shortcut event subscribe</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[1]);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *application_name = json_object_get_string(</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;application_name&quot;</span>));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_TapShortcut application_name = &quot;</span> &lt;&lt; application_name &lt;&lt; endl;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; });</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display_message = json_object_get_string(</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;display_message&quot;</span>));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenMessage display_message = &quot;</span> &lt;&lt; display_message &lt;&lt; endl;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; });</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *reply_message = json_object_get_string(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;reply_message&quot;</span>));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenReply reply_message = &quot;</span> &lt;&lt; reply_message &lt;&lt; endl;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; });</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; printf(<span class="stringliteral">&quot;failed to create event loop&quot;</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="test_8cpp_html_a64a6014565bb3e03294ec4a952d5add0"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a></div><div class="ttdeci">static void usage()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00035">test.cpp:35</a></div></div>
<div class="ttc" id="test_8cpp_html_a529acbd1fed9d98a587edfa62309fa8d"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a></div><div class="ttdeci">LibHomeScreen * hs</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00033">test.cpp:33</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
<div class="ttc" id="test_8cpp_html_aa9b3c43c212b49edee82ac30a11aa255"><div class="ttname"><a href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a></div><div class="ttdeci">static void call_test()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00051">test.cpp:51</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a32d3282898d0f04151c24b4103511e00"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen::runEventloop</a></div><div class="ttdeci">int runEventloop()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00224">libhomescreen.cpp:224</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00119">libhomescreen.cpp:119</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00116">libhomescreen.cpp:116</a></div></div>
<div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00305">libhomescreen.cpp:305</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00293">libhomescreen.cpp:293</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment -->
</div>
</div>
@@ -302,7 +302,7 @@ Variables</h2></td></tr>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../df/dac/test_8cpp_source.html#l00035">35</a> of file <a class="el" href="../../df/dac/test_8cpp_source.html">test.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb &quot;</span>&lt;&lt; <span class="stringliteral">&quot;key:arg&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;example:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;ping&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;------- -------- --- &quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; verb key value&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb list:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(); itr != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(); ++itr)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *itr &lt;&lt; endl;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Todo output api list</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; exit(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00048">libhomescreen.hpp:48</a></div></div>
+<div class="fragment"><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb &quot;</span>&lt;&lt; <span class="stringliteral">&quot;key:arg&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;example:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;ping&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;------- -------- --- &quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; verb key value&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb list:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(); itr != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(); ++itr)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *itr &lt;&lt; endl;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Todo output api list</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; exit(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00050">libhomescreen.hpp:50</a></div></div>
</div><!-- fragment -->
</div>
</div>
diff --git a/doc/api-ref/html/df/dac/test_8cpp_source.html b/doc/api-ref/html/df/dac/test_8cpp_source.html
index 4726190..2a5c650 100644
--- a/doc/api-ref/html/df/dac/test_8cpp_source.html
+++ b/doc/api-ref/html/df/dac/test_8cpp_source.html
@@ -66,24 +66,24 @@ $(function() {
<div class="title">test.cpp</div> </div>
</div><!--header-->
<div class="contents">
-<a href="../../df/dac/test_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;glib-2.0/glib.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">using namespace </span><a class="code" href="../../d8/dcc/namespacestd.html">std</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">static</span> vector&lt;string&gt; <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; str, <span class="keywordtype">char</span> sep);</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d"> 33</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>* <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0"> 35</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>()</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb &quot;</span>&lt;&lt; <span class="stringliteral">&quot;key:arg&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;example:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;ping&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;------- -------- --- &quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; verb key value&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb list:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(); itr != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(); ++itr)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *itr &lt;&lt; endl;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Todo output api list</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; exit(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255"> 51</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">string</span> command;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;input verb and argments&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">/* read the buffer */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(;;){</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">char</span> line[1023];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; cin.getline(line, <span class="keyword">sizeof</span>(line));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; command = line;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(command.empty()){</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; vector&lt;string&gt; v_command = <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(command, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">/*for(auto itr = v_command.begin(); itr != v_command.end(); ++itr)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> {</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> cout &lt;&lt; *itr &lt;&lt;endl;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> }*/</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">size_t</span> num = v_command.size();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(num % 2 == 0){</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;If command contains args, please input &lt;key,value&gt; in argument part&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">/* create json object */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1;i &lt; (v_command.size()) ;++i){</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(v_command[i+1].c_str());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; json_object_object_add(j_obj, v_command[i].c_str(), val);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ++i;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">/* call verb via LibHomeScreen */</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(v_command[0], j_obj);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">/* free vector */</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; vector&lt;string&gt;().swap(v_command);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; string().swap(command);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d"> 91</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d">onRep</a>(<span class="keyword">struct</span> json_object* reply_contents)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* str = json_object_to_json_string(reply_contents);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;test.cpp [CB onRep]: &quot;</span> &lt;&lt; str &lt;&lt; endl;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">//json_object_put(reply_contents); do not release!!!</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e"> 98</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e">onEv</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* str = json_object_to_json_string(event_contents);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;test.cpp [CB onEvent]: event: &quot;</span> &lt;&lt; <span class="keyword">event</span>.c_str() &lt;&lt; <span class="stringliteral">&quot; contents: &quot;</span> &lt;&lt; str &lt;&lt; endl;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">//json_object_put(event_contents); do not release!!!</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4"> 105</a></span>&#160;<span class="keyword">static</span> vector&lt;string&gt; <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; str, <span class="keywordtype">char</span> sep)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; vector&lt;string&gt; v;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; stringstream ss(str);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">string</span> buffer;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">while</span>( getline(ss, buffer, sep) ) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(!buffer.empty())</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; v.push_back(buffer);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 117</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(argc == 1)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; printf(<span class="stringliteral">&quot;Please input port num in first argument, and token in second argument&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(argc == 2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">string</span> av(argv[1]);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>( (av == <span class="stringliteral">&quot;-h&quot;</span>) || (av == <span class="stringliteral">&quot;--help&quot;</span>))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">string</span> port_string(argv[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">string</span> token(argv[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">long</span> port = strtol(port_string.c_str(),&amp;endptr,10);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span>( (port &gt; 20000) || (port &lt; 0) )</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; printf(<span class="stringliteral">&quot;input under 20000(temporary number)&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; printf(<span class="stringliteral">&quot;not number&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;Call test for LibHomeScreen&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; hs = <span class="keyword">new</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(port, token);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// hs-&gt;registerCallback(&amp;onEv, &amp;onRep);</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[0]); // tap_shortcut event subscribe</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[1]);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a>, [](<span class="keyword">const</span> <span class="keywordtype">char</span>* application_name){</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_TapShortcut application_name = &quot;</span> &lt;&lt; application_name &lt;&lt; endl;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; });</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a>, [](<span class="keyword">const</span> <span class="keywordtype">char</span>* display_message){</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenMessage display_message = &quot;</span> &lt;&lt; display_message &lt;&lt; endl;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; });</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; printf(<span class="stringliteral">&quot;failed to create event loop&quot;</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">runEventloop</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;}</div><div class="ttc" id="test_8cpp_html_a64a6014565bb3e03294ec4a952d5add0"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a></div><div class="ttdeci">static void usage()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00035">test.cpp:35</a></div></div>
+<a href="../../df/dac/test_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a>&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;glib-2.0/glib.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;fcntl.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;sstream&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">using namespace </span><a class="code" href="../../d8/dcc/namespacestd.html">std</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">static</span> vector&lt;string&gt; <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; str, <span class="keywordtype">char</span> sep);</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d"> 33</a></span>&#160;<a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>* <a class="code" href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0"> 35</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>()</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb &quot;</span>&lt;&lt; <span class="stringliteral">&quot;key:arg&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;example:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;ping&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;------- -------- --- &quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; verb key value&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;verb list:&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> itr = <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.begin(); itr != <a class="code" href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a>.end(); ++itr)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *itr &lt;&lt; endl;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">// Todo output api list</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; exit(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255"> 51</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">string</span> command;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;input verb and argments&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="comment">/* read the buffer */</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(;;){</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">char</span> line[1023];</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; cin.getline(line, <span class="keyword">sizeof</span>(line));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; command = line;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(command.empty()){</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; vector&lt;string&gt; v_command = <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(command, <span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">/*for(auto itr = v_command.begin(); itr != v_command.end(); ++itr)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> {</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> cout &lt;&lt; *itr &lt;&lt;endl;</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> }*/</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">size_t</span> num = v_command.size();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>(num % 2 == 0){</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;If command contains args, please input &lt;key,value&gt; in argument part&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="comment">/* create json object */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1;i &lt; (v_command.size()) ;++i){</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">struct </span>json_object* val = json_object_new_string(v_command[i+1].c_str());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; json_object_object_add(j_obj, v_command[i].c_str(), val);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; ++i;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">/* call verb via LibHomeScreen */</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">call</a>(v_command[0], j_obj);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">/* free vector */</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; vector&lt;string&gt;().swap(v_command);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; string().swap(command);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d"> 91</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d">onRep</a>(<span class="keyword">struct</span> json_object* reply_contents)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* str = json_object_to_json_string(reply_contents);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;test.cpp [CB onRep]: &quot;</span> &lt;&lt; str &lt;&lt; endl;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">//json_object_put(reply_contents); do not release!!!</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e"> 98</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="../../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e">onEv</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; <a class="code" href="../../df/d7d/structevent.html">event</a>, <span class="keyword">struct</span> json_object* event_contents)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* str = json_object_to_json_string(event_contents);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;test.cpp [CB onEvent]: event: &quot;</span> &lt;&lt; <span class="keyword">event</span>.c_str() &lt;&lt; <span class="stringliteral">&quot; contents: &quot;</span> &lt;&lt; str &lt;&lt; endl;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">//json_object_put(event_contents); do not release!!!</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4"> 105</a></span>&#160;<span class="keyword">static</span> vector&lt;string&gt; <a class="code" href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; str, <span class="keywordtype">char</span> sep)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; vector&lt;string&gt; v;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; stringstream ss(str);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">string</span> buffer;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">while</span>( getline(ss, buffer, sep) ) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(!buffer.empty())</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; v.push_back(buffer);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;}</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="../../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627"> 117</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span>(argc == 1)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; printf(<span class="stringliteral">&quot;Please input port num in first argument, and token in second argument&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span>(argc == 2)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">string</span> av(argv[1]);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>( (av == <span class="stringliteral">&quot;-h&quot;</span>) || (av == <span class="stringliteral">&quot;--help&quot;</span>))</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a>();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">string</span> port_string(argv[1]);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">string</span> token(argv[2]);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">char</span>* endptr;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">long</span> port = strtol(port_string.c_str(),&amp;endptr,10);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">/* error check of range */</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">if</span>( (port &gt; 20000) || (port &lt; 0) )</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; printf(<span class="stringliteral">&quot;input under 20000(temporary number)&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span>(*endptr != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; printf(<span class="stringliteral">&quot;not number&quot;</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;Call test for LibHomeScreen&quot;</span> &lt;&lt; endl;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; hs = <span class="keyword">new</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">init</a>(port, token);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// hs-&gt;registerCallback(&amp;onEv, &amp;onRep);</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[0]); // tap_shortcut event subscribe</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// hs-&gt;subscribe(event_list[1]);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *application_name = json_object_get_string(</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;application_name&quot;</span>));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_TapShortcut application_name = &quot;</span> &lt;&lt; application_name &lt;&lt; endl;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; });</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *display_message = json_object_get_string(</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;display_message&quot;</span>));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenMessage display_message = &quot;</span> &lt;&lt; display_message &lt;&lt; endl;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; });</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; hs-&gt;<a class="code" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">set_event_handler</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a>, [](json_object *<span class="keywordtype">object</span>){</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *reply_message = json_object_get_string(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; json_object_object_get(<span class="keywordtype">object</span>, <span class="stringliteral">&quot;reply_message&quot;</span>));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; cout &lt;&lt; <span class="stringliteral">&quot;set_event_handler Event_OnScreenReply reply_message = &quot;</span> &lt;&lt; reply_message &lt;&lt; endl;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; });</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (ret &lt; 0) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; printf(<span class="stringliteral">&quot;failed to create event loop&quot;</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a>();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div><div class="ttc" id="test_8cpp_html_a64a6014565bb3e03294ec4a952d5add0"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0">usage</a></div><div class="ttdeci">static void usage()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00035">test.cpp:35</a></div></div>
<div class="ttc" id="test_8cpp_html_aafb7f182b8bb6ba92354dde1658d86a4"><div class="ttname"><a href="../../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4">split</a></div><div class="ttdeci">static vector&lt; string &gt; split(const string &amp;str, char sep)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00105">test.cpp:105</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="../../df/d7d/structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d1e/homescreen_8c_source.html#l00035">homescreen.c:35</a></div></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="../../d8/dcc/namespacestd.html">std</a></div></div>
<div class="ttc" id="test_8cpp_html_a529acbd1fed9d98a587edfa62309fa8d"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">hs</a></div><div class="ttdeci">LibHomeScreen * hs</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00033">test.cpp:33</a></div></div>
<div class="ttc" id="libhomescreen_8hpp_html"><div class="ttname"><a href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen::Event_OnScreenMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00046">libhomescreen.hpp:46</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen::Event_OnScreenReply</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00047">libhomescreen.hpp:47</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a527b49dcfe581be6275d0eb2236ba37f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a527b49dcfe581be6275d0eb2236ba37f">LibHomeScreen::call</a></div><div class="ttdeci">int call(const std::string &amp;verb, struct json_object *arg)</div></div>
<div class="ttc" id="test_8cpp_html_a6a2874c419fe5936fcccadc7e6cf268e"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e">onEv</a></div><div class="ttdeci">static void onEv(const string &amp;event, struct json_object *event_contents)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00098">test.cpp:98</a></div></div>
<div class="ttc" id="test_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00117">test.cpp:117</a></div></div>
<div class="ttc" id="test_8cpp_html_aa9b3c43c212b49edee82ac30a11aa255"><div class="ttname"><a href="../../df/dac/test_8cpp.html#aa9b3c43c212b49edee82ac30a11aa255">call_test</a></div><div class="ttdeci">static void call_test()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00051">test.cpp:51</a></div></div>
<div class="ttc" id="test_8cpp_html_a6d3cb4886e7afd45bd56b49800da932d"><div class="ttname"><a href="../../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d">onRep</a></div><div class="ttdeci">static void onRep(struct json_object *reply_contents)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/dac/test_8cpp_source.html#l00091">test.cpp:91</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a32d3282898d0f04151c24b4103511e00"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen::runEventloop</a></div><div class="ttdeci">int runEventloop()</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00224">libhomescreen.cpp:224</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00119">libhomescreen.cpp:119</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a6a57b573cc767725762ba9beab032220"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen::init</a></div><div class="ttdeci">int init(const int port, const std::string &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00116">libhomescreen.cpp:116</a></div></div>
<div class="ttc" id="class_lib_home_screen_html"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00032">libhomescreen.hpp:32</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00048">libhomescreen.hpp:48</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00305">libhomescreen.cpp:305</a></div></div>
-<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00044">libhomescreen.hpp:44</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a5593ff5ac78f6495ccb649904cf0ab08"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a5593ff5ac78f6495ccb649904cf0ab08">LibHomeScreen::api_list</a></div><div class="ttdeci">static const std::vector&lt; std::string &gt; api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00050">libhomescreen.hpp:50</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_ab1b0e08bf35415de9064afed899e9f85"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen::set_event_handler</a></div><div class="ttdeci">void set_event_handler(enum EventType et, handler_func f)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00293">libhomescreen.cpp:293</a></div></div>
+<div class="ttc" id="class_lib_home_screen_html_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen::Event_TapShortcut</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00045">libhomescreen.hpp:45</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/doc/api-ref/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/api-ref/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644
index 0000000..167382f
--- /dev/null
+++ b/doc/api-ref/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>HomeScreenBinding: src Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectalign" style="padding-left: 0.5em;">
+ <div id="projectname">HomeScreenBinding
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">src Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:d0/d1e/homescreen_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="d0/d1e/homescreen_8c.html">homescreen.c</a> <a href="d0/d1e/homescreen_8c_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:dd/d1d/hs-helper_8c"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dd/d1d/hs-helper_8c.html">hs-helper.c</a> <a href="dd/d1d/hs-helper_8c_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:d3/d3d/hs-helper_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="d3/d3d/hs-helper_8h.html">hs-helper.h</a> <a href="d3/d3d/hs-helper_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.13
+</small></address>
+</body>
+</html>
diff --git a/doc/api-ref/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/api-ref/html/dir_d44c64559bbebec7f509842c48db8b23.html
index 029fe29..a25c052 100644
--- a/doc/api-ref/html/dir_d44c64559bbebec7f509842c48db8b23.html
+++ b/doc/api-ref/html/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -67,9 +67,11 @@ $(function() {
</div><!--header-->
<div class="contents">
<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-Directories</h2></td></tr>
-<tr class="memitem:dir_0f70dc74e67ded1ed6ea12b5a24cac83"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0f70dc74e67ded1ed6ea12b5a24cac83.html">libhomescreen</a></td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:df/d76/hmi-debug_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="df/d76/hmi-debug_8h.html">hmi-debug.h</a> <a href="df/d76/hmi-debug_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:df/d43/libhomescreen_8hpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a> <a href="df/d43/libhomescreen_8hpp_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
diff --git a/doc/api-ref/html/files.html b/doc/api-ref/html/files.html
index 1e5c5e1..821231f 100644
--- a/doc/api-ref/html/files.html
+++ b/doc/api-ref/html/files.html
@@ -63,17 +63,17 @@ $(function() {
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
-<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_a01af9eb3c502936dfd53c3f8e45721d.html" target="_self">homescreen_service</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d0/d1e/homescreen_8c_source.html"><span class="icondoc"></span></a><a class="el" href="d0/d1e/homescreen_8c.html" target="_self">homescreen.c</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dd/d1d/hs-helper_8c_source.html"><span class="icondoc"></span></a><a class="el" href="dd/d1d/hs-helper_8c.html" target="_self">hs-helper.c</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d3/d3d/hs-helper_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d3/d3d/hs-helper_8h.html" target="_self">hs-helper.h</a></td><td class="desc"></td></tr>
-<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
-<tr id="row_1_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">&#9660;</span><span id="img_1_0_" class="iconfopen" onclick="toggleFolder('1_0_')">&#160;</span><a class="el" href="dir_0f70dc74e67ded1ed6ea12b5a24cac83.html" target="_self">libhomescreen</a></td><td class="desc"></td></tr>
-<tr id="row_1_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="df/d43/libhomescreen_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="df/d43/libhomescreen_8hpp.html" target="_self">libhomescreen.hpp</a></td><td class="desc"></td></tr>
-<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span id="img_2_" class="iconfopen" onclick="toggleFolder('2_')">&#160;</span><a class="el" href="dir_65f76d62445e9e84c0450b12bf77c3bc.html" target="_self">libhomescreen</a></td><td class="desc"></td></tr>
-<tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d0/d8a/libhomescreen_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="d0/d8a/libhomescreen_8cpp.html" target="_self">libhomescreen.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="df/dac/test_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="df/dac/test_8cpp.html" target="_self">test.cpp</a></td><td class="desc"></td></tr>
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="df/d76/hmi-debug_8h_source.html"><span class="icondoc"></span></a><a class="el" href="df/d76/hmi-debug_8h.html" target="_self">hmi-debug.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="df/d43/libhomescreen_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="df/d43/libhomescreen_8hpp.html" target="_self">libhomescreen.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_65f76d62445e9e84c0450b12bf77c3bc.html" target="_self">libhomescreen</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d0/d8a/libhomescreen_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="d0/d8a/libhomescreen_8cpp.html" target="_self">libhomescreen.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="df/dac/test_8cpp_source.html"><span class="icondoc"></span></a><a class="el" href="df/dac/test_8cpp.html" target="_self">test.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span id="img_2_" class="iconfopen" onclick="toggleFolder('2_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
+<tr id="row_2_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d0/d1e/homescreen_8c_source.html"><span class="icondoc"></span></a><a class="el" href="d0/d1e/homescreen_8c.html" target="_self">homescreen.c</a></td><td class="desc"></td></tr>
+<tr id="row_2_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dd/d1d/hs-helper_8c_source.html"><span class="icondoc"></span></a><a class="el" href="dd/d1d/hs-helper_8c.html" target="_self">hs-helper.c</a></td><td class="desc"></td></tr>
+<tr id="row_2_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="d3/d3d/hs-helper_8h_source.html"><span class="icondoc"></span></a><a class="el" href="d3/d3d/hs-helper_8h.html" target="_self">hs-helper.h</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/doc/api-ref/html/functions.html b/doc/api-ref/html/functions.html
index 31359c6..4aa87d0 100644
--- a/doc/api-ref/html/functions.html
+++ b/doc/api-ref/html/functions.html
@@ -74,6 +74,9 @@ $(function() {
<li>Event_OnScreenMessage
: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen</a>
</li>
+<li>Event_OnScreenReply
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen</a>
+</li>
<li>Event_TapShortcut
: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen</a>
</li>
@@ -81,7 +84,7 @@ $(function() {
: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154">LibHomeScreen</a>
</li>
<li>handler_func
-: <a class="el" href="de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">LibHomeScreen</a>
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">LibHomeScreen</a>
</li>
<li>init()
: <a class="el" href="de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220">LibHomeScreen</a>
@@ -107,15 +110,15 @@ $(function() {
<li>onScreenMessage()
: <a class="el" href="de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen</a>
</li>
+<li>onScreenReply()
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">LibHomeScreen</a>
+</li>
<li>operator=()
: <a class="el" href="de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">LibHomeScreen</a>
</li>
<li>registerCallback()
: <a class="el" href="de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen</a>
</li>
-<li>runEventloop()
-: <a class="el" href="de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen</a>
-</li>
<li>set_event_handler()
: <a class="el" href="de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen</a>
</li>
diff --git a/doc/api-ref/html/functions_eval.html b/doc/api-ref/html/functions_eval.html
index 26a6d51..9cbcc1b 100644
--- a/doc/api-ref/html/functions_eval.html
+++ b/doc/api-ref/html/functions_eval.html
@@ -62,6 +62,9 @@ $(function() {
<li>Event_OnScreenMessage
: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d">LibHomeScreen</a>
</li>
+<li>Event_OnScreenReply
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd">LibHomeScreen</a>
+</li>
<li>Event_TapShortcut
: <a class="el" href="de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f">LibHomeScreen</a>
</li>
diff --git a/doc/api-ref/html/functions_func.html b/doc/api-ref/html/functions_func.html
index 6658617..500e2d4 100644
--- a/doc/api-ref/html/functions_func.html
+++ b/doc/api-ref/html/functions_func.html
@@ -83,15 +83,15 @@ $(function() {
<li>onScreenMessage()
: <a class="el" href="de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c">LibHomeScreen</a>
</li>
+<li>onScreenReply()
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37">LibHomeScreen</a>
+</li>
<li>operator=()
: <a class="el" href="de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25">LibHomeScreen</a>
</li>
<li>registerCallback()
: <a class="el" href="de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf">LibHomeScreen</a>
</li>
-<li>runEventloop()
-: <a class="el" href="de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00">LibHomeScreen</a>
-</li>
<li>set_event_handler()
: <a class="el" href="de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85">LibHomeScreen</a>
</li>
diff --git a/doc/api-ref/html/functions_type.html b/doc/api-ref/html/functions_type.html
index af507d7..f9914d4 100644
--- a/doc/api-ref/html/functions_type.html
+++ b/doc/api-ref/html/functions_type.html
@@ -60,7 +60,7 @@ $(function() {
<div class="contents">
&#160;<ul>
<li>handler_func
-: <a class="el" href="de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f">LibHomeScreen</a>
+: <a class="el" href="de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a">LibHomeScreen</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/doc/api-ref/html/globals.html b/doc/api-ref/html/globals.html
index bb30160..1498f7c 100644
--- a/doc/api-ref/html/globals.html
+++ b/doc/api-ref/html/globals.html
@@ -67,18 +67,15 @@ $(function() {
<li>_display_message
: <a class="el" href="d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92">homescreen.c</a>
</li>
-<li>_DLOG()
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">libhomescreen.cpp</a>
-</li>
-<li>_ELOG()
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">libhomescreen.cpp</a>
-</li>
<li>_error
: <a class="el" href="d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">homescreen.c</a>
</li>
<li>_GNU_SOURCE
: <a class="el" href="d0/d1e/homescreen_8c.html#a369266c24eacffb87046522897a570d5">homescreen.c</a>
</li>
+<li>_HMI_LOG()
+: <a class="el" href="df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">hmi-debug.h</a>
+</li>
<li>_on_call_static()
: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">libhomescreen.cpp</a>
</li>
@@ -91,6 +88,9 @@ $(function() {
<li>_on_reply_static()
: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b">libhomescreen.cpp</a>
</li>
+<li>_reply_message
+: <a class="el" href="d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">homescreen.c</a>
+</li>
</ul>
@@ -118,20 +118,16 @@ $(function() {
</ul>
-<h3><a id="index_d"></a>- d -</h3><ul>
-<li>DLOG
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">libhomescreen.cpp</a>
-</li>
-</ul>
-
-
<h3><a id="index_e"></a>- e -</h3><ul>
-<li>ELOG
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">libhomescreen.cpp</a>
+<li>ERROR_FLAG
+: <a class="el" href="df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">hmi-debug.h</a>
</li>
<li>ev_on_screen_message
: <a class="el" href="d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">homescreen.c</a>
</li>
+<li>ev_on_screen_reply
+: <a class="el" href="d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">homescreen.c</a>
+</li>
<li>ev_reserved
: <a class="el" href="d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">homescreen.c</a>
</li>
@@ -173,24 +169,39 @@ $(function() {
<li>has_verb()
: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e">libhomescreen.cpp</a>
</li>
+<li>HMI_DEBUG
+: <a class="el" href="df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">hmi-debug.h</a>
+</li>
+<li>HMI_ERROR
+: <a class="el" href="df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">hmi-debug.h</a>
+</li>
+<li>HMI_INFO
+: <a class="el" href="df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c">hmi-debug.h</a>
+</li>
+<li>HMI_NOTICE
+: <a class="el" href="df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">hmi-debug.h</a>
+</li>
+<li>HMI_WARNING
+: <a class="el" href="df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">hmi-debug.h</a>
+</li>
<li>hs
: <a class="el" href="df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d">test.cpp</a>
</li>
<li>hs_add_object_to_json_object()
-: <a class="el" href="d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e">hs-helper.h</a>
-, <a class="el" href="dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e">hs-helper.c</a>
+: <a class="el" href="dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e">hs-helper.c</a>
+, <a class="el" href="d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e">hs-helper.h</a>
</li>
<li>hs_add_object_to_json_object_func()
: <a class="el" href="dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs-helper.c</a>
, <a class="el" href="d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a">hs-helper.h</a>
</li>
<li>hs_add_object_to_json_object_str()
-: <a class="el" href="dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs-helper.c</a>
-, <a class="el" href="d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf">hs-helper.h</a>
+: <a class="el" href="d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf">hs-helper.h</a>
+, <a class="el" href="dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf">hs-helper.c</a>
</li>
<li>hs_search_event_name_index()
-: <a class="el" href="d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a">hs-helper.h</a>
-, <a class="el" href="dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs-helper.c</a>
+: <a class="el" href="dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a">hs-helper.c</a>
+, <a class="el" href="d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a">hs-helper.h</a>
</li>
</ul>
@@ -202,6 +213,34 @@ $(function() {
</ul>
+<h3><a id="index_l"></a>- l -</h3><ul>
+<li>LOG_LEVEL
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_DEBUG
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_ERROR
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_INFO
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_MAX
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_NONE
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_NOTICE
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_WARNING
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">hmi-debug.h</a>
+</li>
+</ul>
+
+
<h3><a id="index_m"></a>- m -</h3><ul>
<li>main()
: <a class="el" href="df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">test.cpp</a>
@@ -220,6 +259,9 @@ $(function() {
<li>on_screen_message()
: <a class="el" href="d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">homescreen.c</a>
</li>
+<li>on_screen_reply()
+: <a class="el" href="d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">homescreen.c</a>
+</li>
<li>onEv()
: <a class="el" href="df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e">test.cpp</a>
</li>
diff --git a/doc/api-ref/html/globals_defs.html b/doc/api-ref/html/globals_defs.html
index 2585144..24c615c 100644
--- a/doc/api-ref/html/globals_defs.html
+++ b/doc/api-ref/html/globals_defs.html
@@ -69,15 +69,24 @@ $(function() {
<li>COMMAND_EVENT_NUM
: <a class="el" href="d0/d1e/homescreen_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">homescreen.c</a>
</li>
-<li>DLOG
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d">libhomescreen.cpp</a>
-</li>
-<li>ELOG
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca">libhomescreen.cpp</a>
-</li>
<li>EVENT_SUBSCRIBE_ERROR_CODE
: <a class="el" href="d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">homescreen.c</a>
</li>
+<li>HMI_DEBUG
+: <a class="el" href="df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">hmi-debug.h</a>
+</li>
+<li>HMI_ERROR
+: <a class="el" href="df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">hmi-debug.h</a>
+</li>
+<li>HMI_INFO
+: <a class="el" href="df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c">hmi-debug.h</a>
+</li>
+<li>HMI_NOTICE
+: <a class="el" href="df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15">hmi-debug.h</a>
+</li>
+<li>HMI_WARNING
+: <a class="el" href="df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">hmi-debug.h</a>
+</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/doc/api-ref/html/globals_enum.html b/doc/api-ref/html/globals_enum.html
index cfa307d..6acaf5d 100644
--- a/doc/api-ref/html/globals_enum.html
+++ b/doc/api-ref/html/globals_enum.html
@@ -59,6 +59,9 @@ $(function() {
<div class="contents">
&#160;<ul>
+<li>LOG_LEVEL
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583">hmi-debug.h</a>
+</li>
<li>REQ_ERROR
: <a class="el" href="d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">hs-helper.h</a>
</li>
diff --git a/doc/api-ref/html/globals_eval.html b/doc/api-ref/html/globals_eval.html
index 3a15094..6619ccf 100644
--- a/doc/api-ref/html/globals_eval.html
+++ b/doc/api-ref/html/globals_eval.html
@@ -59,6 +59,27 @@ $(function() {
<div class="contents">
&#160;<ul>
+<li>LOG_LEVEL_DEBUG
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_ERROR
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_INFO
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_MAX
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_NONE
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_NOTICE
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e">hmi-debug.h</a>
+</li>
+<li>LOG_LEVEL_WARNING
+: <a class="el" href="df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef">hmi-debug.h</a>
+</li>
<li>NOT_NUMBER
: <a class="el" href="d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a">hs-helper.h</a>
</li>
diff --git a/doc/api-ref/html/globals_func.html b/doc/api-ref/html/globals_func.html
index 0ed9455..3d662e8 100644
--- a/doc/api-ref/html/globals_func.html
+++ b/doc/api-ref/html/globals_func.html
@@ -61,11 +61,8 @@ $(function() {
&#160;
<h3><a id="index__"></a>- _ -</h3><ul>
-<li>_DLOG()
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124">libhomescreen.cpp</a>
-</li>
-<li>_ELOG()
-: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d">libhomescreen.cpp</a>
+<li>_HMI_LOG()
+: <a class="el" href="df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a">hmi-debug.h</a>
</li>
<li>_on_call_static()
: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">libhomescreen.cpp</a>
@@ -153,6 +150,9 @@ $(function() {
<li>on_screen_message()
: <a class="el" href="d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338">homescreen.c</a>
</li>
+<li>on_screen_reply()
+: <a class="el" href="d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933">homescreen.c</a>
+</li>
<li>onEv()
: <a class="el" href="df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e">test.cpp</a>
</li>
diff --git a/doc/api-ref/html/globals_vars.html b/doc/api-ref/html/globals_vars.html
index 7a4bbc0..364ae73 100644
--- a/doc/api-ref/html/globals_vars.html
+++ b/doc/api-ref/html/globals_vars.html
@@ -68,15 +68,24 @@ $(function() {
<li>_error
: <a class="el" href="d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376">homescreen.c</a>
</li>
+<li>_reply_message
+: <a class="el" href="d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219">homescreen.c</a>
+</li>
<li>afbBindingV2
: <a class="el" href="d0/d1e/homescreen_8c.html#ae2a62ab481a2922cbfc788193857a12e">homescreen.c</a>
</li>
<li>API
: <a class="el" href="d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f">libhomescreen.cpp</a>
</li>
+<li>ERROR_FLAG
+: <a class="el" href="df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09">hmi-debug.h</a>
+</li>
<li>ev_on_screen_message
: <a class="el" href="d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c">homescreen.c</a>
</li>
+<li>ev_on_screen_reply
+: <a class="el" href="d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec">homescreen.c</a>
+</li>
<li>ev_reserved
: <a class="el" href="d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611">homescreen.c</a>
</li>
diff --git a/doc/api-ref/html/menudata.js b/doc/api-ref/html/menudata.js
index 6d4429d..6a15d9a 100644
--- a/doc/api-ref/html/menudata.js
+++ b/doc/api-ref/html/menudata.js
@@ -17,11 +17,11 @@ var menudata={children:[
{text:"_",url:"globals.html#index__"},
{text:"a",url:"globals.html#index_a"},
{text:"c",url:"globals.html#index_c"},
-{text:"d",url:"globals.html#index_d"},
{text:"e",url:"globals.html#index_e"},
{text:"g",url:"globals.html#index_g"},
{text:"h",url:"globals.html#index_h"},
{text:"i",url:"globals.html#index_i"},
+{text:"l",url:"globals.html#index_l"},
{text:"m",url:"globals.html#index_m"},
{text:"n",url:"globals.html#index_n"},
{text:"o",url:"globals.html#index_o"},
diff --git a/doc/api-ref/html/search/all_0.js b/doc/api-ref/html/search/all_0.js
index 7e3d3a1..e7aee8c 100644
--- a/doc/api-ref/html/search/all_0.js
+++ b/doc/api-ref/html/search/all_0.js
@@ -2,12 +2,12 @@ var searchData=
[
['_5fapplication_5fname',['_application_name',['../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81',1,'homescreen.c']]],
['_5fdisplay_5fmessage',['_display_message',['../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92',1,'homescreen.c']]],
- ['_5fdlog',['_DLOG',['../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124',1,'libhomescreen.cpp']]],
- ['_5felog',['_ELOG',['../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d',1,'libhomescreen.cpp']]],
['_5ferror',['_error',['../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376',1,'homescreen.c']]],
['_5fgnu_5fsource',['_GNU_SOURCE',['../d0/d1e/homescreen_8c.html#a369266c24eacffb87046522897a570d5',1,'homescreen.c']]],
+ ['_5fhmi_5flog',['_HMI_LOG',['../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a',1,'hmi-debug.h']]],
['_5fon_5fcall_5fstatic',['_on_call_static',['../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8',1,'libhomescreen.cpp']]],
['_5fon_5fevent_5fstatic',['_on_event_static',['../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9',1,'libhomescreen.cpp']]],
['_5fon_5fhangup_5fstatic',['_on_hangup_static',['../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c',1,'libhomescreen.cpp']]],
- ['_5fon_5freply_5fstatic',['_on_reply_static',['../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b',1,'libhomescreen.cpp']]]
+ ['_5fon_5freply_5fstatic',['_on_reply_static',['../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b',1,'libhomescreen.cpp']]],
+ ['_5freply_5fmessage',['_reply_message',['../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219',1,'homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/all_10.js b/doc/api-ref/html/search/all_10.js
index 1f66bcf..954e53b 100644
--- a/doc/api-ref/html/search/all_10.js
+++ b/doc/api-ref/html/search/all_10.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['unsubscribe',['unsubscribe',['../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6',1,'LibHomeScreen::unsubscribe()'],['../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3',1,'unsubscribe():&#160;homescreen.c']]],
- ['usage',['usage',['../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0',1,'test.cpp']]]
+ ['verbs',['verbs',['../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89',1,'homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/all_11.js b/doc/api-ref/html/search/all_11.js
index 954e53b..5b08f6d 100644
--- a/doc/api-ref/html/search/all_11.js
+++ b/doc/api-ref/html/search/all_11.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['verbs',['verbs',['../d0/d1e/homescreen_8c.html#acad6dadf60fac3d701e488e4fcd11c89',1,'homescreen.c']]]
+ ['_7elibhomescreen',['~LibHomeScreen',['../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095',1,'LibHomeScreen']]]
];
diff --git a/doc/api-ref/html/search/all_3.js b/doc/api-ref/html/search/all_3.js
index fa5d8c5..495680f 100644
--- a/doc/api-ref/html/search/all_3.js
+++ b/doc/api-ref/html/search/all_3.js
@@ -1,4 +1,17 @@
var searchData=
[
- ['dlog',['DLOG',['../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d',1,'libhomescreen.cpp']]]
+ ['error_5fflag',['ERROR_FLAG',['../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09',1,'hmi-debug.h']]],
+ ['ev_5fon_5fscreen_5fmessage',['ev_on_screen_message',['../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c',1,'homescreen.c']]],
+ ['ev_5fon_5fscreen_5freply',['ev_on_screen_reply',['../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec',1,'homescreen.c']]],
+ ['ev_5freserved',['ev_reserved',['../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611',1,'homescreen.c']]],
+ ['ev_5ftap_5fshortcut',['ev_tap_shortcut',['../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5',1,'homescreen.c']]],
+ ['event',['event',['../df/d7d/structevent.html',1,'event'],['../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214',1,'event::event()']]],
+ ['event_5flist',['event_list',['../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9',1,'LibHomeScreen::event_list()'],['../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c',1,'event_list():&#160;homescreen.c']]],
+ ['event_5floop_5frun',['event_loop_run',['../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e',1,'libhomescreen.cpp']]],
+ ['event_5fonscreenmessage',['Event_OnScreenMessage',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d',1,'LibHomeScreen']]],
+ ['event_5fonscreenreply',['Event_OnScreenReply',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd',1,'LibHomeScreen']]],
+ ['event_5fsubscribe_5ferror_5fcode',['EVENT_SUBSCRIBE_ERROR_CODE',['../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250',1,'homescreen.c']]],
+ ['event_5ftapshortcut',['Event_TapShortcut',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f',1,'LibHomeScreen']]],
+ ['eventtype',['EventType',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154',1,'LibHomeScreen']]],
+ ['evlist',['evlist',['../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/all_4.js b/doc/api-ref/html/search/all_4.js
index e5b369b..15928c8 100644
--- a/doc/api-ref/html/search/all_4.js
+++ b/doc/api-ref/html/search/all_4.js
@@ -1,15 +1,6 @@
var searchData=
[
- ['elog',['ELOG',['../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca',1,'libhomescreen.cpp']]],
- ['ev_5fon_5fscreen_5fmessage',['ev_on_screen_message',['../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c',1,'homescreen.c']]],
- ['ev_5freserved',['ev_reserved',['../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611',1,'homescreen.c']]],
- ['ev_5ftap_5fshortcut',['ev_tap_shortcut',['../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5',1,'homescreen.c']]],
- ['event',['event',['../df/d7d/structevent.html',1,'event'],['../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214',1,'event::event()']]],
- ['event_5flist',['event_list',['../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9',1,'LibHomeScreen::event_list()'],['../d0/d1e/homescreen_8c.html#a1c3c5bfa861dcb58d9e9d216d893864c',1,'event_list():&#160;homescreen.c']]],
- ['event_5floop_5frun',['event_loop_run',['../d0/d8a/libhomescreen_8cpp.html#aa73353e1bf62c68b6b0aba7a1e4e275e',1,'libhomescreen.cpp']]],
- ['event_5fonscreenmessage',['Event_OnScreenMessage',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d',1,'LibHomeScreen']]],
- ['event_5fsubscribe_5ferror_5fcode',['EVENT_SUBSCRIBE_ERROR_CODE',['../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250',1,'homescreen.c']]],
- ['event_5ftapshortcut',['Event_TapShortcut',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f',1,'LibHomeScreen']]],
- ['eventtype',['EventType',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154',1,'LibHomeScreen']]],
- ['evlist',['evlist',['../d3/d3d/hs-helper_8h.html#a0cd84b1a2184c9b84d1b7bf24582f28e',1,'hs-helper.h']]]
+ ['get_5fvalue_5fint16',['get_value_int16',['../dd/d1d/hs-helper_8c.html#a2e62366684e39ea94436bf017e416827',1,'get_value_int16(const struct afb_req request, const char *source, int16_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827',1,'get_value_int16(const struct afb_req request, const char *source, int16_t *out_id):&#160;hs-helper.c']]],
+ ['get_5fvalue_5fint32',['get_value_int32',['../dd/d1d/hs-helper_8c.html#ac5b0370643c520377afd3fd4891918d2',1,'get_value_int32(const struct afb_req request, const char *source, int32_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2',1,'get_value_int32(const struct afb_req request, const char *source, int32_t *out_id):&#160;hs-helper.c']]],
+ ['get_5fvalue_5fuint16',['get_value_uint16',['../dd/d1d/hs-helper_8c.html#a649900645417f2df3a70b9ad67529f53',1,'get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53',1,'get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id):&#160;hs-helper.c']]]
];
diff --git a/doc/api-ref/html/search/all_5.js b/doc/api-ref/html/search/all_5.js
index 15928c8..70c41b2 100644
--- a/doc/api-ref/html/search/all_5.js
+++ b/doc/api-ref/html/search/all_5.js
@@ -1,6 +1,19 @@
var searchData=
[
- ['get_5fvalue_5fint16',['get_value_int16',['../dd/d1d/hs-helper_8c.html#a2e62366684e39ea94436bf017e416827',1,'get_value_int16(const struct afb_req request, const char *source, int16_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a2e62366684e39ea94436bf017e416827',1,'get_value_int16(const struct afb_req request, const char *source, int16_t *out_id):&#160;hs-helper.c']]],
- ['get_5fvalue_5fint32',['get_value_int32',['../dd/d1d/hs-helper_8c.html#ac5b0370643c520377afd3fd4891918d2',1,'get_value_int32(const struct afb_req request, const char *source, int32_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#ac5b0370643c520377afd3fd4891918d2',1,'get_value_int32(const struct afb_req request, const char *source, int32_t *out_id):&#160;hs-helper.c']]],
- ['get_5fvalue_5fuint16',['get_value_uint16',['../dd/d1d/hs-helper_8c.html#a649900645417f2df3a70b9ad67529f53',1,'get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a649900645417f2df3a70b9ad67529f53',1,'get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id):&#160;hs-helper.c']]]
+ ['handler_5ffunc',['handler_func',['../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a',1,'LibHomeScreen']]],
+ ['has_5fverb',['has_verb',['../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e',1,'libhomescreen.cpp']]],
+ ['hmi_2ddebug_2eh',['hmi-debug.h',['../df/d76/hmi-debug_8h.html',1,'']]],
+ ['hmi_5fdebug',['HMI_DEBUG',['../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0',1,'hmi-debug.h']]],
+ ['hmi_5ferror',['HMI_ERROR',['../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2',1,'hmi-debug.h']]],
+ ['hmi_5finfo',['HMI_INFO',['../df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c',1,'hmi-debug.h']]],
+ ['hmi_5fnotice',['HMI_NOTICE',['../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15',1,'hmi-debug.h']]],
+ ['hmi_5fwarning',['HMI_WARNING',['../df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7',1,'hmi-debug.h']]],
+ ['homescreen_2ec',['homescreen.c',['../d0/d1e/homescreen_8c.html',1,'']]],
+ ['hs',['hs',['../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d',1,'test.cpp']]],
+ ['hs_2dhelper_2ec',['hs-helper.c',['../dd/d1d/hs-helper_8c.html',1,'']]],
+ ['hs_2dhelper_2eh',['hs-helper.h',['../d3/d3d/hs-helper_8h.html',1,'']]],
+ ['hs_5fadd_5fobject_5fto_5fjson_5fobject',['hs_add_object_to_json_object',['../dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e',1,'hs_add_object_to_json_object(struct json_object *j_obj, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e',1,'hs_add_object_to_json_object(struct json_object *j_obj, int count,...):&#160;hs-helper.c']]],
+ ['hs_5fadd_5fobject_5fto_5fjson_5fobject_5ffunc',['hs_add_object_to_json_object_func',['../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a',1,'hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a',1,'hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...):&#160;hs-helper.c']]],
+ ['hs_5fadd_5fobject_5fto_5fjson_5fobject_5fstr',['hs_add_object_to_json_object_str',['../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf',1,'hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf',1,'hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...):&#160;hs-helper.c']]],
+ ['hs_5fsearch_5fevent_5fname_5findex',['hs_search_event_name_index',['../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a',1,'hs_search_event_name_index(const char *value):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a',1,'hs_search_event_name_index(const char *value):&#160;hs-helper.c']]]
];
diff --git a/doc/api-ref/html/search/all_6.js b/doc/api-ref/html/search/all_6.js
index 75cae99..a3186af 100644
--- a/doc/api-ref/html/search/all_6.js
+++ b/doc/api-ref/html/search/all_6.js
@@ -1,13 +1,4 @@
var searchData=
[
- ['handler_5ffunc',['handler_func',['../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f',1,'LibHomeScreen']]],
- ['has_5fverb',['has_verb',['../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e',1,'libhomescreen.cpp']]],
- ['homescreen_2ec',['homescreen.c',['../d0/d1e/homescreen_8c.html',1,'']]],
- ['hs',['hs',['../df/dac/test_8cpp.html#a529acbd1fed9d98a587edfa62309fa8d',1,'test.cpp']]],
- ['hs_2dhelper_2ec',['hs-helper.c',['../dd/d1d/hs-helper_8c.html',1,'']]],
- ['hs_2dhelper_2eh',['hs-helper.h',['../d3/d3d/hs-helper_8h.html',1,'']]],
- ['hs_5fadd_5fobject_5fto_5fjson_5fobject',['hs_add_object_to_json_object',['../dd/d1d/hs-helper_8c.html#a1ba31a6a94515ff1730ba0043a67d59e',1,'hs_add_object_to_json_object(struct json_object *j_obj, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a1ba31a6a94515ff1730ba0043a67d59e',1,'hs_add_object_to_json_object(struct json_object *j_obj, int count,...):&#160;hs-helper.c']]],
- ['hs_5fadd_5fobject_5fto_5fjson_5fobject_5ffunc',['hs_add_object_to_json_object_func',['../dd/d1d/hs-helper_8c.html#ae83604a37134e7bdee3ce4f10bb0b47a',1,'hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#ae83604a37134e7bdee3ce4f10bb0b47a',1,'hs_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...):&#160;hs-helper.c']]],
- ['hs_5fadd_5fobject_5fto_5fjson_5fobject_5fstr',['hs_add_object_to_json_object_str',['../dd/d1d/hs-helper_8c.html#a8777c53f1d4d5412f19b134ad85ffedf',1,'hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a8777c53f1d4d5412f19b134ad85ffedf',1,'hs_add_object_to_json_object_str(struct json_object *j_obj, int count,...):&#160;hs-helper.c']]],
- ['hs_5fsearch_5fevent_5fname_5findex',['hs_search_event_name_index',['../dd/d1d/hs-helper_8c.html#a2ff1b894941c3b461ca8119079c4146a',1,'hs_search_event_name_index(const char *value):&#160;hs-helper.c'],['../d3/d3d/hs-helper_8h.html#a2ff1b894941c3b461ca8119079c4146a',1,'hs_search_event_name_index(const char *value):&#160;hs-helper.c']]]
+ ['init',['init',['../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220',1,'LibHomeScreen::init()'],['../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc',1,'init():&#160;homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/all_7.js b/doc/api-ref/html/search/all_7.js
index a3186af..8d1544e 100644
--- a/doc/api-ref/html/search/all_7.js
+++ b/doc/api-ref/html/search/all_7.js
@@ -1,4 +1,14 @@
var searchData=
[
- ['init',['init',['../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220',1,'LibHomeScreen::init()'],['../d0/d1e/homescreen_8c.html#a00cbbc0f3f4452db078ae511684a6adc',1,'init():&#160;homescreen.c']]]
+ ['libhomescreen',['LibHomeScreen',['../de/dd0/class_lib_home_screen.html',1,'LibHomeScreen'],['../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc',1,'LibHomeScreen::LibHomeScreen()'],['../de/dd0/class_lib_home_screen.html#a0fff2f703c8ce184eb9edd133e0f4137',1,'LibHomeScreen::LibHomeScreen(const LibHomeScreen &amp;)=delete']]],
+ ['libhomescreen_2ecpp',['libhomescreen.cpp',['../d0/d8a/libhomescreen_8cpp.html',1,'']]],
+ ['libhomescreen_2ehpp',['libhomescreen.hpp',['../df/d43/libhomescreen_8hpp.html',1,'']]],
+ ['log_5flevel',['LOG_LEVEL',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583',1,'hmi-debug.h']]],
+ ['log_5flevel_5fdebug',['LOG_LEVEL_DEBUG',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177',1,'hmi-debug.h']]],
+ ['log_5flevel_5ferror',['LOG_LEVEL_ERROR',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f',1,'hmi-debug.h']]],
+ ['log_5flevel_5finfo',['LOG_LEVEL_INFO',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4',1,'hmi-debug.h']]],
+ ['log_5flevel_5fmax',['LOG_LEVEL_MAX',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444',1,'hmi-debug.h']]],
+ ['log_5flevel_5fnone',['LOG_LEVEL_NONE',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848',1,'hmi-debug.h']]],
+ ['log_5flevel_5fnotice',['LOG_LEVEL_NOTICE',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e',1,'hmi-debug.h']]],
+ ['log_5flevel_5fwarning',['LOG_LEVEL_WARNING',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef',1,'hmi-debug.h']]]
];
diff --git a/doc/api-ref/html/search/all_8.js b/doc/api-ref/html/search/all_8.js
index e54bc1a..65e8f49 100644
--- a/doc/api-ref/html/search/all_8.js
+++ b/doc/api-ref/html/search/all_8.js
@@ -1,6 +1,4 @@
var searchData=
[
- ['libhomescreen',['LibHomeScreen',['../de/dd0/class_lib_home_screen.html',1,'LibHomeScreen'],['../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc',1,'LibHomeScreen::LibHomeScreen()'],['../de/dd0/class_lib_home_screen.html#a0fff2f703c8ce184eb9edd133e0f4137',1,'LibHomeScreen::LibHomeScreen(const LibHomeScreen &amp;)=delete']]],
- ['libhomescreen_2ecpp',['libhomescreen.cpp',['../d0/d8a/libhomescreen_8cpp.html',1,'']]],
- ['libhomescreen_2ehpp',['libhomescreen.hpp',['../df/d43/libhomescreen_8hpp.html',1,'']]]
+ ['main',['main',['../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'test.cpp']]]
];
diff --git a/doc/api-ref/html/search/all_9.js b/doc/api-ref/html/search/all_9.js
index 65e8f49..3235e35 100644
--- a/doc/api-ref/html/search/all_9.js
+++ b/doc/api-ref/html/search/all_9.js
@@ -1,4 +1,5 @@
var searchData=
[
- ['main',['main',['../df/dac/test_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627',1,'test.cpp']]]
+ ['name',['name',['../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab',1,'event']]],
+ ['not_5fnumber',['NOT_NUMBER',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/all_a.js b/doc/api-ref/html/search/all_a.js
index 3235e35..bd45f3f 100644
--- a/doc/api-ref/html/search/all_a.js
+++ b/doc/api-ref/html/search/all_a.js
@@ -1,5 +1,16 @@
var searchData=
[
- ['name',['name',['../df/d7d/structevent.html#a45c6cfb7961a21a3366db067e4cc59ab',1,'event']]],
- ['not_5fnumber',['NOT_NUMBER',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a',1,'hs-helper.h']]]
+ ['on_5fcall',['on_call',['../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596',1,'LibHomeScreen']]],
+ ['on_5fevent',['on_event',['../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3',1,'LibHomeScreen']]],
+ ['on_5fhangup',['on_hangup',['../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74',1,'LibHomeScreen']]],
+ ['on_5freply',['on_reply',['../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5',1,'LibHomeScreen']]],
+ ['on_5fscreen_5fmessage',['on_screen_message',['../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338',1,'homescreen.c']]],
+ ['on_5fscreen_5freply',['on_screen_reply',['../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933',1,'homescreen.c']]],
+ ['onev',['onEv',['../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e',1,'test.cpp']]],
+ ['onevent',['onevent',['../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c',1,'homescreen.c']]],
+ ['onrep',['onRep',['../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d',1,'test.cpp']]],
+ ['onscreenmessage',['onScreenMessage',['../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c',1,'LibHomeScreen']]],
+ ['onscreenreply',['onScreenReply',['../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37',1,'LibHomeScreen']]],
+ ['operator_3d',['operator=',['../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25',1,'LibHomeScreen']]],
+ ['out_5frange',['OUT_RANGE',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/all_b.js b/doc/api-ref/html/search/all_b.js
index b1b8915..fe196ed 100644
--- a/doc/api-ref/html/search/all_b.js
+++ b/doc/api-ref/html/search/all_b.js
@@ -1,14 +1,5 @@
var searchData=
[
- ['on_5fcall',['on_call',['../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596',1,'LibHomeScreen']]],
- ['on_5fevent',['on_event',['../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3',1,'LibHomeScreen']]],
- ['on_5fhangup',['on_hangup',['../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74',1,'LibHomeScreen']]],
- ['on_5freply',['on_reply',['../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5',1,'LibHomeScreen']]],
- ['on_5fscreen_5fmessage',['on_screen_message',['../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338',1,'homescreen.c']]],
- ['onev',['onEv',['../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e',1,'test.cpp']]],
- ['onevent',['onevent',['../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c',1,'homescreen.c']]],
- ['onrep',['onRep',['../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d',1,'test.cpp']]],
- ['onscreenmessage',['onScreenMessage',['../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c',1,'LibHomeScreen']]],
- ['operator_3d',['operator=',['../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25',1,'LibHomeScreen']]],
- ['out_5frange',['OUT_RANGE',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b',1,'hs-helper.h']]]
+ ['pingsample',['pingSample',['../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05',1,'homescreen.c']]],
+ ['preinit',['preinit',['../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de',1,'homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/all_c.js b/doc/api-ref/html/search/all_c.js
index fe196ed..6066723 100644
--- a/doc/api-ref/html/search/all_c.js
+++ b/doc/api-ref/html/search/all_c.js
@@ -1,5 +1,7 @@
var searchData=
[
- ['pingsample',['pingSample',['../d0/d1e/homescreen_8c.html#af48cab759d4ae0ddbfcdd60f4051ba05',1,'homescreen.c']]],
- ['preinit',['preinit',['../d0/d1e/homescreen_8c.html#a83d646edf54a6a082f69121bc89a08de',1,'homescreen.c']]]
+ ['registercallback',['registerCallback',['../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf',1,'LibHomeScreen']]],
+ ['req_5ferror',['REQ_ERROR',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899',1,'REQ_ERROR():&#160;hs-helper.h'],['../d3/d3d/hs-helper_8h.html#ab0d62ccfa9c3ab87f090f67c3d50adce',1,'REQ_ERROR():&#160;hs-helper.h']]],
+ ['req_5ffail',['REQ_FAIL',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1',1,'hs-helper.h']]],
+ ['req_5fok',['REQ_OK',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/all_d.js b/doc/api-ref/html/search/all_d.js
index 4f34fb9..657855b 100644
--- a/doc/api-ref/html/search/all_d.js
+++ b/doc/api-ref/html/search/all_d.js
@@ -1,8 +1,6 @@
var searchData=
[
- ['registercallback',['registerCallback',['../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf',1,'LibHomeScreen']]],
- ['req_5ferror',['REQ_ERROR',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899',1,'REQ_ERROR():&#160;hs-helper.h'],['../d3/d3d/hs-helper_8h.html#ab0d62ccfa9c3ab87f090f67c3d50adce',1,'REQ_ERROR():&#160;hs-helper.h']]],
- ['req_5ffail',['REQ_FAIL',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1',1,'hs-helper.h']]],
- ['req_5fok',['REQ_OK',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee',1,'hs-helper.h']]],
- ['runeventloop',['runEventloop',['../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00',1,'LibHomeScreen']]]
+ ['set_5fevent_5fhandler',['set_event_handler',['../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85',1,'LibHomeScreen']]],
+ ['split',['split',['../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4',1,'test.cpp']]],
+ ['subscribe',['subscribe',['../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738',1,'LibHomeScreen::subscribe()'],['../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1',1,'subscribe():&#160;homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/all_e.js b/doc/api-ref/html/search/all_e.js
index 657855b..c5f0227 100644
--- a/doc/api-ref/html/search/all_e.js
+++ b/doc/api-ref/html/search/all_e.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['set_5fevent_5fhandler',['set_event_handler',['../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85',1,'LibHomeScreen']]],
- ['split',['split',['../df/dac/test_8cpp.html#aafb7f182b8bb6ba92354dde1658d86a4',1,'test.cpp']]],
- ['subscribe',['subscribe',['../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738',1,'LibHomeScreen::subscribe()'],['../d0/d1e/homescreen_8c.html#a4ff0c8b506669e5622a6ee168134d8f1',1,'subscribe():&#160;homescreen.c']]]
+ ['tap_5fshortcut',['tap_shortcut',['../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227',1,'homescreen.c']]],
+ ['tapshortcut',['tapShortcut',['../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903',1,'LibHomeScreen']]],
+ ['test_2ecpp',['test.cpp',['../df/dac/test_8cpp.html',1,'']]]
];
diff --git a/doc/api-ref/html/search/all_f.js b/doc/api-ref/html/search/all_f.js
index c5f0227..1f66bcf 100644
--- a/doc/api-ref/html/search/all_f.js
+++ b/doc/api-ref/html/search/all_f.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['tap_5fshortcut',['tap_shortcut',['../d0/d1e/homescreen_8c.html#a096eae5c8f297f9df142a406eea56227',1,'homescreen.c']]],
- ['tapshortcut',['tapShortcut',['../de/dd0/class_lib_home_screen.html#afb571c9577087b47065eb23e7fdbc903',1,'LibHomeScreen']]],
- ['test_2ecpp',['test.cpp',['../df/dac/test_8cpp.html',1,'']]]
+ ['unsubscribe',['unsubscribe',['../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6',1,'LibHomeScreen::unsubscribe()'],['../d0/d1e/homescreen_8c.html#ab92621255d7370c6dd8a0f1a8e376ad3',1,'unsubscribe():&#160;homescreen.c']]],
+ ['usage',['usage',['../df/dac/test_8cpp.html#a64a6014565bb3e03294ec4a952d5add0',1,'test.cpp']]]
];
diff --git a/doc/api-ref/html/search/defines_3.js b/doc/api-ref/html/search/defines_3.js
index fa5d8c5..02b9aaf 100644
--- a/doc/api-ref/html/search/defines_3.js
+++ b/doc/api-ref/html/search/defines_3.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['dlog',['DLOG',['../d0/d8a/libhomescreen_8cpp.html#a4e42b2f5af2174dd24f958351becf63d',1,'libhomescreen.cpp']]]
+ ['event_5fsubscribe_5ferror_5fcode',['EVENT_SUBSCRIBE_ERROR_CODE',['../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250',1,'homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/defines_4.js b/doc/api-ref/html/search/defines_4.js
index f5e239e..e8bbac7 100644
--- a/doc/api-ref/html/search/defines_4.js
+++ b/doc/api-ref/html/search/defines_4.js
@@ -1,5 +1,8 @@
var searchData=
[
- ['elog',['ELOG',['../d0/d8a/libhomescreen_8cpp.html#a797aa3053bd6a29819d44f8fad8a5eca',1,'libhomescreen.cpp']]],
- ['event_5fsubscribe_5ferror_5fcode',['EVENT_SUBSCRIBE_ERROR_CODE',['../d0/d1e/homescreen_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250',1,'homescreen.c']]]
+ ['hmi_5fdebug',['HMI_DEBUG',['../df/d76/hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0',1,'hmi-debug.h']]],
+ ['hmi_5ferror',['HMI_ERROR',['../df/d76/hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2',1,'hmi-debug.h']]],
+ ['hmi_5finfo',['HMI_INFO',['../df/d76/hmi-debug_8h.html#a11b249a67108f0f4c50a0fc8a3eb4f5c',1,'hmi-debug.h']]],
+ ['hmi_5fnotice',['HMI_NOTICE',['../df/d76/hmi-debug_8h.html#abc0d6e0760017d8ae48b836925b2ef15',1,'hmi-debug.h']]],
+ ['hmi_5fwarning',['HMI_WARNING',['../df/d76/hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7',1,'hmi-debug.h']]]
];
diff --git a/doc/api-ref/html/search/enums_1.js b/doc/api-ref/html/search/enums_1.js
index 99b5d97..da1c230 100644
--- a/doc/api-ref/html/search/enums_1.js
+++ b/doc/api-ref/html/search/enums_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['req_5ferror',['REQ_ERROR',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899',1,'hs-helper.h']]]
+ ['log_5flevel',['LOG_LEVEL',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583',1,'hmi-debug.h']]]
];
diff --git a/doc/api-ref/html/search/enums_2.html b/doc/api-ref/html/search/enums_2.html
new file mode 100644
index 0000000..a042e52
--- /dev/null
+++ b/doc/api-ref/html/search/enums_2.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enums_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/doc/api-ref/html/search/enums_2.js b/doc/api-ref/html/search/enums_2.js
new file mode 100644
index 0000000..99b5d97
--- /dev/null
+++ b/doc/api-ref/html/search/enums_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['req_5ferror',['REQ_ERROR',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899',1,'hs-helper.h']]]
+];
diff --git a/doc/api-ref/html/search/enumvalues_0.js b/doc/api-ref/html/search/enumvalues_0.js
index afeb775..f00671f 100644
--- a/doc/api-ref/html/search/enumvalues_0.js
+++ b/doc/api-ref/html/search/enumvalues_0.js
@@ -1,5 +1,6 @@
var searchData=
[
['event_5fonscreenmessage',['Event_OnScreenMessage',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d',1,'LibHomeScreen']]],
+ ['event_5fonscreenreply',['Event_OnScreenReply',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd',1,'LibHomeScreen']]],
['event_5ftapshortcut',['Event_TapShortcut',['../de/dd0/class_lib_home_screen.html#a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f',1,'LibHomeScreen']]]
];
diff --git a/doc/api-ref/html/search/enumvalues_1.js b/doc/api-ref/html/search/enumvalues_1.js
index 4ba24e9..49ed77c 100644
--- a/doc/api-ref/html/search/enumvalues_1.js
+++ b/doc/api-ref/html/search/enumvalues_1.js
@@ -1,4 +1,10 @@
var searchData=
[
- ['not_5fnumber',['NOT_NUMBER',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a',1,'hs-helper.h']]]
+ ['log_5flevel_5fdebug',['LOG_LEVEL_DEBUG',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177',1,'hmi-debug.h']]],
+ ['log_5flevel_5ferror',['LOG_LEVEL_ERROR',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f',1,'hmi-debug.h']]],
+ ['log_5flevel_5finfo',['LOG_LEVEL_INFO',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4',1,'hmi-debug.h']]],
+ ['log_5flevel_5fmax',['LOG_LEVEL_MAX',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444',1,'hmi-debug.h']]],
+ ['log_5flevel_5fnone',['LOG_LEVEL_NONE',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848',1,'hmi-debug.h']]],
+ ['log_5flevel_5fnotice',['LOG_LEVEL_NOTICE',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e',1,'hmi-debug.h']]],
+ ['log_5flevel_5fwarning',['LOG_LEVEL_WARNING',['../df/d76/hmi-debug_8h.html#aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef',1,'hmi-debug.h']]]
];
diff --git a/doc/api-ref/html/search/enumvalues_2.js b/doc/api-ref/html/search/enumvalues_2.js
index f931fd3..4ba24e9 100644
--- a/doc/api-ref/html/search/enumvalues_2.js
+++ b/doc/api-ref/html/search/enumvalues_2.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['out_5frange',['OUT_RANGE',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b',1,'hs-helper.h']]]
+ ['not_5fnumber',['NOT_NUMBER',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/enumvalues_3.js b/doc/api-ref/html/search/enumvalues_3.js
index 3acc711..f931fd3 100644
--- a/doc/api-ref/html/search/enumvalues_3.js
+++ b/doc/api-ref/html/search/enumvalues_3.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['req_5ffail',['REQ_FAIL',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1',1,'hs-helper.h']]],
- ['req_5fok',['REQ_OK',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee',1,'hs-helper.h']]]
+ ['out_5frange',['OUT_RANGE',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b',1,'hs-helper.h']]]
];
diff --git a/doc/api-ref/html/search/enumvalues_4.html b/doc/api-ref/html/search/enumvalues_4.html
new file mode 100644
index 0000000..d6f69ac
--- /dev/null
+++ b/doc/api-ref/html/search/enumvalues_4.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html><head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="enumvalues_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript"><!--
+createResults();
+--></script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript"><!--
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+--></script>
+</div>
+</body>
+</html>
diff --git a/doc/api-ref/html/search/enumvalues_4.js b/doc/api-ref/html/search/enumvalues_4.js
new file mode 100644
index 0000000..3acc711
--- /dev/null
+++ b/doc/api-ref/html/search/enumvalues_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['req_5ffail',['REQ_FAIL',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1',1,'hs-helper.h']]],
+ ['req_5fok',['REQ_OK',['../d3/d3d/hs-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee',1,'hs-helper.h']]]
+];
diff --git a/doc/api-ref/html/search/files_0.js b/doc/api-ref/html/search/files_0.js
index 92fefdc..388fa9c 100644
--- a/doc/api-ref/html/search/files_0.js
+++ b/doc/api-ref/html/search/files_0.js
@@ -1,5 +1,6 @@
var searchData=
[
+ ['hmi_2ddebug_2eh',['hmi-debug.h',['../df/d76/hmi-debug_8h.html',1,'']]],
['homescreen_2ec',['homescreen.c',['../d0/d1e/homescreen_8c.html',1,'']]],
['hs_2dhelper_2ec',['hs-helper.c',['../dd/d1d/hs-helper_8c.html',1,'']]],
['hs_2dhelper_2eh',['hs-helper.h',['../d3/d3d/hs-helper_8h.html',1,'']]]
diff --git a/doc/api-ref/html/search/functions_0.js b/doc/api-ref/html/search/functions_0.js
index 8ed786e..2d6dcae 100644
--- a/doc/api-ref/html/search/functions_0.js
+++ b/doc/api-ref/html/search/functions_0.js
@@ -1,7 +1,6 @@
var searchData=
[
- ['_5fdlog',['_DLOG',['../d0/d8a/libhomescreen_8cpp.html#a7639744c63851d916fb673963e234124',1,'libhomescreen.cpp']]],
- ['_5felog',['_ELOG',['../d0/d8a/libhomescreen_8cpp.html#af583e7770fe13e35089388a45eaf9d9d',1,'libhomescreen.cpp']]],
+ ['_5fhmi_5flog',['_HMI_LOG',['../df/d76/hmi-debug_8h.html#a0846b9d51e2e0612c4825a9a581aa40a',1,'hmi-debug.h']]],
['_5fon_5fcall_5fstatic',['_on_call_static',['../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8',1,'libhomescreen.cpp']]],
['_5fon_5fevent_5fstatic',['_on_event_static',['../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9',1,'libhomescreen.cpp']]],
['_5fon_5fhangup_5fstatic',['_on_hangup_static',['../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c',1,'libhomescreen.cpp']]],
diff --git a/doc/api-ref/html/search/functions_8.js b/doc/api-ref/html/search/functions_8.js
index 6bdfccd..5038b19 100644
--- a/doc/api-ref/html/search/functions_8.js
+++ b/doc/api-ref/html/search/functions_8.js
@@ -5,9 +5,11 @@ var searchData=
['on_5fhangup',['on_hangup',['../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74',1,'LibHomeScreen']]],
['on_5freply',['on_reply',['../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5',1,'LibHomeScreen']]],
['on_5fscreen_5fmessage',['on_screen_message',['../d0/d1e/homescreen_8c.html#a640cf8ed97d804c5ed1c09a349056338',1,'homescreen.c']]],
+ ['on_5fscreen_5freply',['on_screen_reply',['../d0/d1e/homescreen_8c.html#a2f380055d7d69828115d2a8951634933',1,'homescreen.c']]],
['onev',['onEv',['../df/dac/test_8cpp.html#a6a2874c419fe5936fcccadc7e6cf268e',1,'test.cpp']]],
['onevent',['onevent',['../d0/d1e/homescreen_8c.html#a1279893c0fe937311a81e0a98fb4cf1c',1,'homescreen.c']]],
['onrep',['onRep',['../df/dac/test_8cpp.html#a6d3cb4886e7afd45bd56b49800da932d',1,'test.cpp']]],
['onscreenmessage',['onScreenMessage',['../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c',1,'LibHomeScreen']]],
+ ['onscreenreply',['onScreenReply',['../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37',1,'LibHomeScreen']]],
['operator_3d',['operator=',['../de/dd0/class_lib_home_screen.html#a23bc17798453cfca50904562736f6b25',1,'LibHomeScreen']]]
];
diff --git a/doc/api-ref/html/search/functions_a.js b/doc/api-ref/html/search/functions_a.js
index 41acd3b..eefb399 100644
--- a/doc/api-ref/html/search/functions_a.js
+++ b/doc/api-ref/html/search/functions_a.js
@@ -1,5 +1,4 @@
var searchData=
[
- ['registercallback',['registerCallback',['../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf',1,'LibHomeScreen']]],
- ['runeventloop',['runEventloop',['../de/dd0/class_lib_home_screen.html#a32d3282898d0f04151c24b4103511e00',1,'LibHomeScreen']]]
+ ['registercallback',['registerCallback',['../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf',1,'LibHomeScreen']]]
];
diff --git a/doc/api-ref/html/search/searchdata.js b/doc/api-ref/html/search/searchdata.js
index 267bace..d69b699 100644
--- a/doc/api-ref/html/search/searchdata.js
+++ b/doc/api-ref/html/search/searchdata.js
@@ -1,14 +1,14 @@
var indexSectionsWithContent =
{
- 0: "_acdeghilmnoprstuv~",
+ 0: "_aceghilmnoprstuv~",
1: "el",
2: "hlt",
3: "_ceghilmoprstu~",
4: "_aehnv",
5: "hr",
- 6: "er",
- 7: "enor",
- 8: "_acde"
+ 6: "elr",
+ 7: "elnor",
+ 8: "_aceh"
};
var indexSectionNames =
diff --git a/doc/api-ref/html/search/typedefs_0.js b/doc/api-ref/html/search/typedefs_0.js
index a25b811..5a33afe 100644
--- a/doc/api-ref/html/search/typedefs_0.js
+++ b/doc/api-ref/html/search/typedefs_0.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['handler_5ffunc',['handler_func',['../de/dd0/class_lib_home_screen.html#ae99dee1e03d494d59d26c9f17078e01f',1,'LibHomeScreen']]]
+ ['handler_5ffunc',['handler_func',['../de/dd0/class_lib_home_screen.html#a334f11f81c84c98d18284215dcaada3a',1,'LibHomeScreen']]]
];
diff --git a/doc/api-ref/html/search/variables_0.js b/doc/api-ref/html/search/variables_0.js
index 803d818..e4cf187 100644
--- a/doc/api-ref/html/search/variables_0.js
+++ b/doc/api-ref/html/search/variables_0.js
@@ -2,5 +2,6 @@ var searchData=
[
['_5fapplication_5fname',['_application_name',['../d0/d1e/homescreen_8c.html#a1f2c79fa6801b63751e270d67994fe81',1,'homescreen.c']]],
['_5fdisplay_5fmessage',['_display_message',['../d0/d1e/homescreen_8c.html#abfd6c1d6f316fa952b11553f8f275e92',1,'homescreen.c']]],
- ['_5ferror',['_error',['../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376',1,'homescreen.c']]]
+ ['_5ferror',['_error',['../d0/d1e/homescreen_8c.html#aed1c5296a2e6d34945507a0fca17a376',1,'homescreen.c']]],
+ ['_5freply_5fmessage',['_reply_message',['../d0/d1e/homescreen_8c.html#a79b0f0b481161527ccb80e83da143219',1,'homescreen.c']]]
];
diff --git a/doc/api-ref/html/search/variables_2.js b/doc/api-ref/html/search/variables_2.js
index 6f0029f..af57c7f 100644
--- a/doc/api-ref/html/search/variables_2.js
+++ b/doc/api-ref/html/search/variables_2.js
@@ -1,6 +1,8 @@
var searchData=
[
+ ['error_5fflag',['ERROR_FLAG',['../df/d76/hmi-debug_8h.html#a13d4c7647aad2e84766f8b48a6caab09',1,'hmi-debug.h']]],
['ev_5fon_5fscreen_5fmessage',['ev_on_screen_message',['../d0/d1e/homescreen_8c.html#af7cfc4f688bb898c09291252c4cb832c',1,'homescreen.c']]],
+ ['ev_5fon_5fscreen_5freply',['ev_on_screen_reply',['../d0/d1e/homescreen_8c.html#a5c225341e0ecbae0585302ef754a55ec',1,'homescreen.c']]],
['ev_5freserved',['ev_reserved',['../d0/d1e/homescreen_8c.html#a25fbdcc4e5787e3f41d99f4a71e86611',1,'homescreen.c']]],
['ev_5ftap_5fshortcut',['ev_tap_shortcut',['../d0/d1e/homescreen_8c.html#a2af1ff5a4cbf03125e61e903832035f5',1,'homescreen.c']]],
['event',['event',['../df/d7d/structevent.html#a58726ebc551d36562ac3f9e1fe293214',1,'event']]],
diff --git a/doc/api-ref/latex/d0/d1e/homescreen_8c.tex b/doc/api-ref/latex/d0/d1e/homescreen_8c.tex
index 93a1600..150bacb 100644
--- a/doc/api-ref/latex/d0/d1e/homescreen_8c.tex
+++ b/doc/api-ref/latex/d0/d1e/homescreen_8c.tex
@@ -1,5 +1,5 @@
-\hypertarget{homescreen_8c}{}\section{homescreen\+\_\+service/homescreen.c File Reference}
-\label{homescreen_8c}\index{homescreen\+\_\+service/homescreen.\+c@{homescreen\+\_\+service/homescreen.\+c}}
+\hypertarget{homescreen_8c}{}\section{src/homescreen.c File Reference}
+\label{homescreen_8c}\index{src/homescreen.\+c@{src/homescreen.\+c}}
{\ttfamily \#include $<$afb/afb-\/binding.\+h$>$}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
@@ -22,7 +22,7 @@ struct \hyperlink{structevent}{event}
\item
\#define \hyperlink{homescreen_8c_ad2c1fbc92ba364fcf83f15e6d0af66f0}{A\+F\+B\+\_\+\+B\+I\+N\+D\+I\+N\+G\+\_\+\+V\+E\+R\+S\+I\+ON}~2
\item
-\#define \hyperlink{homescreen_8c_a09f43d9e7e1c5d2198c0d66024b4500e}{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM}~3
+\#define \hyperlink{homescreen_8c_a09f43d9e7e1c5d2198c0d66024b4500e}{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM}~4
\item
\#define \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{E\+V\+E\+N\+T\+\_\+\+S\+U\+B\+S\+C\+R\+I\+B\+E\+\_\+\+E\+R\+R\+O\+R\+\_\+\+C\+O\+DE}~100
\end{DoxyCompactItemize}
@@ -35,6 +35,8 @@ static void \hyperlink{homescreen_8c_a096eae5c8f297f9df142a406eea56227}{tap\+\_\
\item
static void \hyperlink{homescreen_8c_a640cf8ed97d804c5ed1c09a349056338}{on\+\_\+screen\+\_\+message} (struct afb\+\_\+req request)
\item
+static void \hyperlink{homescreen_8c_a2f380055d7d69828115d2a8951634933}{on\+\_\+screen\+\_\+reply} (struct afb\+\_\+req request)
+\item
static void \hyperlink{homescreen_8c_a4ff0c8b506669e5622a6ee168134d8f1}{subscribe} (struct afb\+\_\+req request)
\item
static void \hyperlink{homescreen_8c_ab92621255d7370c6dd8a0f1a8e376ad3}{unsubscribe} (struct afb\+\_\+req request)
@@ -54,6 +56,8 @@ static struct afb\+\_\+event \hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e9038
\item
static struct afb\+\_\+event \hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\+\_\+on\+\_\+screen\+\_\+message}
\item
+static struct afb\+\_\+event \hyperlink{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}{ev\+\_\+on\+\_\+screen\+\_\+reply}
+\item
static struct afb\+\_\+event \hyperlink{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}{ev\+\_\+reserved}
\item
static const char \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\+\_\+error} \mbox{[}$\,$\mbox{]} = \char`\"{}error\char`\"{}
@@ -62,6 +66,8 @@ static const char \hyperlink{homescreen_8c_a1f2c79fa6801b63751e270d67994fe81}{\+
\item
static const char \hyperlink{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}{\+\_\+display\+\_\+message} \mbox{[}$\,$\mbox{]} = \char`\"{}display\+\_\+message\char`\"{}
\item
+static const char \hyperlink{homescreen_8c_a79b0f0b481161527ccb80e83da143219}{\+\_\+reply\+\_\+message} \mbox{[}$\,$\mbox{]} = \char`\"{}reply\+\_\+message\char`\"{}
+\item
static const struct afb\+\_\+verb\+\_\+v2 \hyperlink{homescreen_8c_acad6dadf60fac3d701e488e4fcd11c89}{verbs} \mbox{[}$\,$\mbox{]}
\item
const struct afb\+\_\+binding\+\_\+v2 \hyperlink{homescreen_8c_ae2a62ab481a2922cbfc788193857a12e}{afb\+Binding\+V2}
@@ -93,7 +99,7 @@ Definition at line 18 of file homescreen.\+c.
\index{homescreen.\+c@{homescreen.\+c}!C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM@{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM}}
\index{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM@{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM}!homescreen.\+c@{homescreen.\+c}}
\subsubsection{\texorpdfstring{C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM}{COMMAND\_EVENT\_NUM}}
-{\footnotesize\ttfamily \#define C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM~3}
+{\footnotesize\ttfamily \#define C\+O\+M\+M\+A\+N\+D\+\_\+\+E\+V\+E\+N\+T\+\_\+\+N\+UM~4}
@@ -120,28 +126,32 @@ Definition at line 32 of file homescreen.\+c.
-Definition at line 238 of file homescreen.\+c.
+Definition at line 277 of file homescreen.\+c.
\begin{DoxyCode}
-239 \{
-240 AFB\_NOTICE(\textcolor{stringliteral}{"binding init"});
-241
-242 \hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[0]);
-243 \hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[1]);
-244 \hyperlink{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}{ev\_reserved} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[2]);
-245
-246 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[0].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[0];
-247 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[0].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut};
-248
-249 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[1].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[1];
-250 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[1].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message};
-251
-252 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[2].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[2];
-253 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[2].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}{ev\_reserved};
-254
-255 \textcolor{keywordflow}{return} 0;
-256 \}
+278 \{
+279 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"binding init"});
+280
+281 \hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[0]);
+282 \hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[1]);
+283 \hyperlink{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}{ev\_on\_screen\_reply} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[2]);
+284 \hyperlink{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}{ev\_reserved} = afb\_daemon\_make\_event(\hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[3]);
+285
+286 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[0].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[0];
+287 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[0].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut};
+288
+289 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[1].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[1];
+290 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[1].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message};
+291
+292 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[2].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[2];
+293 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[2].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}{ev\_on\_screen\_reply};
+294
+295 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[3].\hyperlink{structevent_a45c6cfb7961a21a3366db067e4cc59ab}{name} = \hyperlink{hs-helper_8h_a0cd84b1a2184c9b84d1b7bf24582f28e}{evlist}[3];
+296 \hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[3].\hyperlink{structevent_a58726ebc551d36562ac3f9e1fe293214}{event} = &\hyperlink{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}{ev\_reserved};
+297
+298 \textcolor{keywordflow}{return} 0;
+299 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_a640cf8ed97d804c5ed1c09a349056338}\label{homescreen_8c_a640cf8ed97d804c5ed1c09a349056338}}
\index{homescreen.\+c@{homescreen.\+c}!on\+\_\+screen\+\_\+message@{on\+\_\+screen\+\_\+message}}
@@ -149,47 +159,95 @@ Definition at line 238 of file homescreen.\+c.
\subsubsection{\texorpdfstring{on\+\_\+screen\+\_\+message()}{on\_screen\_message()}}
{\footnotesize\ttfamily static void on\+\_\+screen\+\_\+message (\begin{DoxyParamCaption}\item[{struct afb\+\_\+req}]{request }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
-Home\+Screenの\+On\+Screenを表示する
+Home\+Screen On\+Screen message
\subparagraph*{Parameters}
Request key
\begin{DoxyItemize}
-\item display\+\_\+message \+: 表示したい文字列
+\item display\+\_\+message \+: message for display
\end{DoxyItemize}
\subparagraph*{Return}
Nothing
-Definition at line 113 of file homescreen.\+c.
+Definition at line 114 of file homescreen.\+c.
\begin{DoxyCode}
-114 \{
-115 AFB\_NOTICE(\textcolor{stringliteral}{"%s is called."}, \_\_FUNCTION\_\_);
-116
-117 \textcolor{keywordtype}{int} ret = 0;
-118 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* value = afb\_req\_value(request, \hyperlink{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}{\_display\_message});
-119 \textcolor{keywordflow}{if} (value) \{
-120
-121 AFB\_NOTICE(\textcolor{stringliteral}{"request params = %s."}, value);
-122
-123 \textcolor{keyword}{struct }json\_object* push\_obj = json\_object\_new\_object();
-124 \hyperlink{hs-helper_8c_a8777c53f1d4d5412f19b134ad85ffedf}{hs\_add\_object\_to\_json\_object\_str}( push\_obj, 2,
-125 \hyperlink{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}{\_display\_message}, value);
-126 afb\_event\_push(\hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message}, push\_obj);
-127 \} \textcolor{keywordflow}{else} \{
-128 afb\_req\_fail\_f(request, \textcolor{stringliteral}{"failed"}, \textcolor{stringliteral}{"called %s, Unknown palameter"}, \_\_FUNCTION\_\_);
-129 \textcolor{keywordflow}{return};
-130 \}
-131
-132 \textcolor{comment}{// HomeScreenに返すレスポンス}
-133 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
-134 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
-135 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
-136 afb\_req\_success(request, res, \textcolor{stringliteral}{"afb\_event\_push event [on\_screen\_message]"});
-137 \}
+115 \{
+116 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"is called."});
+117
+118 \textcolor{keywordtype}{int} ret = 0;
+119 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* value = afb\_req\_value(request, \hyperlink{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}{\_display\_message});
+120 \textcolor{keywordflow}{if} (value) \{
+121
+122 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"request params = %s."}, value);
+123
+124 \textcolor{keyword}{struct }json\_object* push\_obj = json\_object\_new\_object();
+125 \hyperlink{hs-helper_8c_a8777c53f1d4d5412f19b134ad85ffedf}{hs\_add\_object\_to\_json\_object\_str}( push\_obj, 2,
+126 \hyperlink{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}{\_display\_message}, value);
+127 afb\_event\_push(\hyperlink{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}{ev\_on\_screen\_message}, push\_obj);
+128 \} \textcolor{keywordflow}{else} \{
+129 afb\_req\_fail\_f(request, \textcolor{stringliteral}{"failed"}, \textcolor{stringliteral}{"called %s, Unknown palameter"}, \_\_FUNCTION\_\_);
+130 \textcolor{keywordflow}{return};
+131 \}
+132
+133 \textcolor{comment}{// response to HomeScreen}
+134 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
+135 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
+136 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
+137 afb\_req\_success(request, res, \textcolor{stringliteral}{"afb\_event\_push event [on\_screen\_message]"});
+138 \}
+\end{DoxyCode}
+\mbox{\Hypertarget{homescreen_8c_a2f380055d7d69828115d2a8951634933}\label{homescreen_8c_a2f380055d7d69828115d2a8951634933}}
+\index{homescreen.\+c@{homescreen.\+c}!on\+\_\+screen\+\_\+reply@{on\+\_\+screen\+\_\+reply}}
+\index{on\+\_\+screen\+\_\+reply@{on\+\_\+screen\+\_\+reply}!homescreen.\+c@{homescreen.\+c}}
+\subsubsection{\texorpdfstring{on\+\_\+screen\+\_\+reply()}{on\_screen\_reply()}}
+{\footnotesize\ttfamily static void on\+\_\+screen\+\_\+reply (\begin{DoxyParamCaption}\item[{struct afb\+\_\+req}]{request }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
+Home\+Screen On\+Screen Reply
+
+\subparagraph*{Parameters}
+
+Request key
+\begin{DoxyItemize}
+\item reply\+\_\+message \+: message for reply
+\end{DoxyItemize}
+
+\subparagraph*{Return}
+
+Nothing
+
+Definition at line 151 of file homescreen.\+c.
+
+
+\begin{DoxyCode}
+152 \{
+153 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"is called."});
+154
+155 \textcolor{keywordtype}{int} ret = 0;
+156 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* value = afb\_req\_value(request, \hyperlink{homescreen_8c_a79b0f0b481161527ccb80e83da143219}{\_reply\_message});
+157 \textcolor{keywordflow}{if} (value) \{
+158
+159 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"request params = %s."}, value);
+160
+161 \textcolor{keyword}{struct }json\_object* push\_obj = json\_object\_new\_object();
+162 \hyperlink{hs-helper_8c_a8777c53f1d4d5412f19b134ad85ffedf}{hs\_add\_object\_to\_json\_object\_str}( push\_obj, 2,
+163 \hyperlink{homescreen_8c_a79b0f0b481161527ccb80e83da143219}{\_reply\_message}, value);
+164 afb\_event\_push(\hyperlink{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}{ev\_on\_screen\_reply}, push\_obj);
+165 \} \textcolor{keywordflow}{else} \{
+166 afb\_req\_fail\_f(request, \textcolor{stringliteral}{"failed"}, \textcolor{stringliteral}{"called %s, Unknown palameter"}, \_\_FUNCTION\_\_);
+167 \textcolor{keywordflow}{return};
+168 \}
+169
+170 \textcolor{comment}{// response to HomeScreen}
+171 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
+172 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
+173 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
+174 afb\_req\_success(request, res, \textcolor{stringliteral}{"afb\_event\_push event [on\_screen\_reply]"});
+175 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_a1279893c0fe937311a81e0a98fb4cf1c}\label{homescreen_8c_a1279893c0fe937311a81e0a98fb4cf1c}}
\index{homescreen.\+c@{homescreen.\+c}!onevent@{onevent}}
@@ -199,13 +257,13 @@ Definition at line 113 of file homescreen.\+c.
-Definition at line 258 of file homescreen.\+c.
+Definition at line 301 of file homescreen.\+c.
\begin{DoxyCode}
-259 \{
-260 AFB\_NOTICE(\textcolor{stringliteral}{"on\_event %s"}, \hyperlink{structevent}{event});
-261 \}
+302 \{
+303 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"on\_event %s"}, \hyperlink{structevent}{event});
+304 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_af48cab759d4ae0ddbfcdd60f4051ba05}\label{homescreen_8c_af48cab759d4ae0ddbfcdd60f4051ba05}}
\index{homescreen.\+c@{homescreen.\+c}!ping\+Sample@{ping\+Sample}}
@@ -215,16 +273,17 @@ Definition at line 258 of file homescreen.\+c.
-Definition at line 55 of file homescreen.\+c.
+Definition at line 57 of file homescreen.\+c.
\begin{DoxyCode}
-56 \{
-57 \textcolor{keyword}{static} \textcolor{keywordtype}{int} pingcount = 0;
-58 afb\_req\_success\_f(request, json\_object\_new\_int(pingcount), \textcolor{stringliteral}{"Ping count = %d"}, pingcount);
-59 AFB\_NOTICE(\textcolor{stringliteral}{"Verbosity macro at level notice invoked at ping invocation count = %d"}, pingcount);
-60 pingcount++;
-61 \}
+58 \{
+59 \textcolor{keyword}{static} \textcolor{keywordtype}{int} pingcount = 0;
+60 afb\_req\_success\_f(request, json\_object\_new\_int(pingcount), \textcolor{stringliteral}{"Ping count = %d"}, pingcount);
+61 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"Verbosity macro at level notice invoked at ping invocation
+ count = %d"}, pingcount);
+62 pingcount++;
+63 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_a83d646edf54a6a082f69121bc89a08de}\label{homescreen_8c_a83d646edf54a6a082f69121bc89a08de}}
\index{homescreen.\+c@{homescreen.\+c}!preinit@{preinit}}
@@ -234,14 +293,14 @@ Definition at line 55 of file homescreen.\+c.
-Definition at line 232 of file homescreen.\+c.
+Definition at line 271 of file homescreen.\+c.
\begin{DoxyCode}
-233 \{
-234 AFB\_NOTICE(\textcolor{stringliteral}{"binding preinit (was register)"});
-235 \textcolor{keywordflow}{return} 0;
-236 \}
+272 \{
+273 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"binding preinit (was register)"});
+274 \textcolor{keywordflow}{return} 0;
+275 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_a4ff0c8b506669e5622a6ee168134d8f1}\label{homescreen_8c_a4ff0c8b506669e5622a6ee168134d8f1}}
\index{homescreen.\+c@{homescreen.\+c}!subscribe@{subscribe}}
@@ -264,36 +323,36 @@ Nothing
\subparagraph*{Note}
-Definition at line 151 of file homescreen.\+c.
+Definition at line 189 of file homescreen.\+c.
\begin{DoxyCode}
-152 \{
-153 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *value = afb\_req\_value(request, \textcolor{stringliteral}{"event"});
-154 AFB\_NOTICE(\textcolor{stringliteral}{"value is %s"}, value);
-155 \textcolor{keywordtype}{int} ret = 0;
-156 \textcolor{keywordflow}{if}(value) \{
-157 \textcolor{keywordtype}{int} index = \hyperlink{hs-helper_8c_a2ff1b894941c3b461ca8119079c4146a}{hs\_search\_event\_name\_index}(value);
-158 \textcolor{keywordflow}{if}(index < 0)
-159 \{
-160 AFB\_NOTICE(\textcolor{stringliteral}{"dedicated event doesn't exist"});
-161 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
-162 \}
-163 \textcolor{keywordflow}{else}
-164 \{
-165 afb\_req\_subscribe(request, *\hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[index].\hyperlink{structevent}{event});
-166 \}
-167 \}
-168 \textcolor{keywordflow}{else}\{
-169 AFB\_NOTICE(\textcolor{stringliteral}{"Please input event name"});
-170 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
-171 \}
-172 \textcolor{comment}{/*create response json object*/}
-173 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
-174 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
-175 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
-176 afb\_req\_success\_f(request, res, \textcolor{stringliteral}{"homescreen binder subscribe event name [%s]"}, value);
-177 \}
+190 \{
+191 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *value = afb\_req\_value(request, \textcolor{stringliteral}{"event"});
+192 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"value is %s"}, value);
+193 \textcolor{keywordtype}{int} ret = 0;
+194 \textcolor{keywordflow}{if}(value) \{
+195 \textcolor{keywordtype}{int} index = \hyperlink{hs-helper_8c_a2ff1b894941c3b461ca8119079c4146a}{hs\_search\_event\_name\_index}(value);
+196 \textcolor{keywordflow}{if}(index < 0)
+197 \{
+198 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"dedicated event doesn't exist"});
+199 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
+200 \}
+201 \textcolor{keywordflow}{else}
+202 \{
+203 afb\_req\_subscribe(request, *\hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[index].\hyperlink{structevent}{event});
+204 \}
+205 \}
+206 \textcolor{keywordflow}{else}\{
+207 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"Please input event name"});
+208 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
+209 \}
+210 \textcolor{comment}{/*create response json object*/}
+211 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
+212 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
+213 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
+214 afb\_req\_success\_f(request, res, \textcolor{stringliteral}{"homescreen binder subscribe event name [%s]"}, value);
+215 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_a096eae5c8f297f9df142a406eea56227}\label{homescreen_8c_a096eae5c8f297f9df142a406eea56227}}
\index{homescreen.\+c@{homescreen.\+c}!tap\+\_\+shortcut@{tap\+\_\+shortcut}}
@@ -301,47 +360,47 @@ Definition at line 151 of file homescreen.\+c.
\subsubsection{\texorpdfstring{tap\+\_\+shortcut()}{tap\_shortcut()}}
{\footnotesize\ttfamily static void tap\+\_\+shortcut (\begin{DoxyParamCaption}\item[{struct afb\+\_\+req}]{request }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
-Home\+Screenから呼ばれる ショートカットがタップされたことをアプリケーションに通知するために使用する アプリケーションからは使用されない
+tap\+\_\+shortcut notify for homescreen When Shortcut area is tapped, notify these applciations
\subparagraph*{Parameters}
Request key
\begin{DoxyItemize}
-\item application\+\_\+name \+: アプリケーション名
+\item application\+\_\+name \+: application name
\end{DoxyItemize}
\subparagraph*{Return}
Nothing
-Definition at line 76 of file homescreen.\+c.
+Definition at line 77 of file homescreen.\+c.
\begin{DoxyCode}
-77 \{
-78 AFB\_NOTICE(\textcolor{stringliteral}{"%s is called."}, \_\_FUNCTION\_\_);
-79
-80 \textcolor{keywordtype}{int} ret = 0;
-81 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* value = afb\_req\_value(request, \hyperlink{homescreen_8c_a1f2c79fa6801b63751e270d67994fe81}{\_application\_name});
-82 \textcolor{keywordflow}{if} (value) \{
-83
-84 AFB\_NOTICE(\textcolor{stringliteral}{"request params = %s."}, value);
-85
-86 \textcolor{keyword}{struct }json\_object* push\_obj = json\_object\_new\_object();
-87 \hyperlink{hs-helper_8c_a8777c53f1d4d5412f19b134ad85ffedf}{hs\_add\_object\_to\_json\_object\_str}( push\_obj, 2,
-88 \hyperlink{homescreen_8c_a1f2c79fa6801b63751e270d67994fe81}{\_application\_name}, value);
-89 afb\_event\_push(\hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut}, push\_obj);
-90 \} \textcolor{keywordflow}{else} \{
-91 afb\_req\_fail\_f(request, \textcolor{stringliteral}{"failed"}, \textcolor{stringliteral}{"called %s, Unknown palameter"}, \_\_FUNCTION\_\_);
-92 \textcolor{keywordflow}{return};
-93 \}
-94
-95 \textcolor{comment}{// HomeScreenに返すレスポンス}
-96 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
-97 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
-98 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
-99 afb\_req\_success(request, res, \textcolor{stringliteral}{"afb\_event\_push event [tap\_shortcut]"});
-100 \}
+78 \{
+79 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"is called."});
+80
+81 \textcolor{keywordtype}{int} ret = 0;
+82 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* value = afb\_req\_value(request, \hyperlink{homescreen_8c_a1f2c79fa6801b63751e270d67994fe81}{\_application\_name});
+83 \textcolor{keywordflow}{if} (value) \{
+84
+85 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"request params = %s."}, value);
+86
+87 \textcolor{keyword}{struct }json\_object* push\_obj = json\_object\_new\_object();
+88 \hyperlink{hs-helper_8c_a8777c53f1d4d5412f19b134ad85ffedf}{hs\_add\_object\_to\_json\_object\_str}( push\_obj, 2,
+89 \hyperlink{homescreen_8c_a1f2c79fa6801b63751e270d67994fe81}{\_application\_name}, value);
+90 afb\_event\_push(\hyperlink{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}{ev\_tap\_shortcut}, push\_obj);
+91 \} \textcolor{keywordflow}{else} \{
+92 afb\_req\_fail\_f(request, \textcolor{stringliteral}{"failed"}, \textcolor{stringliteral}{"called %s, Unknown palameter"}, \_\_FUNCTION\_\_);
+93 \textcolor{keywordflow}{return};
+94 \}
+95
+96 \textcolor{comment}{// response to HomeScreen}
+97 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
+98 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
+99 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
+100 afb\_req\_success(request, res, \textcolor{stringliteral}{"afb\_event\_push event [tap\_shortcut]"});
+101 \}
\end{DoxyCode}
\mbox{\Hypertarget{homescreen_8c_ab92621255d7370c6dd8a0f1a8e376ad3}\label{homescreen_8c_ab92621255d7370c6dd8a0f1a8e376ad3}}
\index{homescreen.\+c@{homescreen.\+c}!unsubscribe@{unsubscribe}}
@@ -364,36 +423,36 @@ Nothing
\subparagraph*{Note}
-Definition at line 191 of file homescreen.\+c.
+Definition at line 229 of file homescreen.\+c.
\begin{DoxyCode}
-192 \{
-193 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *value = afb\_req\_value(request, \textcolor{stringliteral}{"event"});
-194 AFB\_NOTICE(\textcolor{stringliteral}{"value is %s"}, value);
-195 \textcolor{keywordtype}{int} ret = 0;
-196 \textcolor{keywordflow}{if}(value) \{
-197 \textcolor{keywordtype}{int} index = \hyperlink{hs-helper_8c_a2ff1b894941c3b461ca8119079c4146a}{hs\_search\_event\_name\_index}(value);
-198 \textcolor{keywordflow}{if}(index < 0)
-199 \{
-200 AFB\_NOTICE(\textcolor{stringliteral}{"dedicated event doesn't exist"});
-201 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
-202 \}
-203 \textcolor{keywordflow}{else}
-204 \{
-205 afb\_req\_unsubscribe(request, *\hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[index].\hyperlink{structevent}{event});
-206 \}
-207 \}
-208 \textcolor{keywordflow}{else}\{
-209 AFB\_NOTICE(\textcolor{stringliteral}{"Please input event name"});
-210 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
-211 \}
-212 \textcolor{comment}{/*create response json object*/}
-213 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
-214 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
-215 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
-216 afb\_req\_success\_f(request, res, \textcolor{stringliteral}{"homescreen binder unsubscribe event name [%s]"}, value);
-217 \}
+230 \{
+231 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *value = afb\_req\_value(request, \textcolor{stringliteral}{"event"});
+232 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"value is %s"}, value);
+233 \textcolor{keywordtype}{int} ret = 0;
+234 \textcolor{keywordflow}{if}(value) \{
+235 \textcolor{keywordtype}{int} index = \hyperlink{hs-helper_8c_a2ff1b894941c3b461ca8119079c4146a}{hs\_search\_event\_name\_index}(value);
+236 \textcolor{keywordflow}{if}(index < 0)
+237 \{
+238 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"dedicated event doesn't exist"});
+239 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
+240 \}
+241 \textcolor{keywordflow}{else}
+242 \{
+243 afb\_req\_unsubscribe(request, *\hyperlink{homescreen_8c_a1c3c5bfa861dcb58d9e9d216d893864c}{event\_list}[index].\hyperlink{structevent}{event});
+244 \}
+245 \}
+246 \textcolor{keywordflow}{else}\{
+247 \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{HMI\_NOTICE}(\textcolor{stringliteral}{"homescreen-service"},\textcolor{stringliteral}{"Please input event name"});
+248 ret = \hyperlink{homescreen_8c_a9a68ed04201d9390bb85b2c6ab1d7250}{EVENT\_SUBSCRIBE\_ERROR\_CODE};
+249 \}
+250 \textcolor{comment}{/*create response json object*/}
+251 \textcolor{keyword}{struct }json\_object *res = json\_object\_new\_object();
+252 \hyperlink{hs-helper_8c_ae83604a37134e7bdee3ce4f10bb0b47a}{hs\_add\_object\_to\_json\_object\_func}(res, \_\_FUNCTION\_\_, 2,
+253 \hyperlink{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}{\_error}, ret);
+254 afb\_req\_success\_f(request, res, \textcolor{stringliteral}{"homescreen binder unsubscribe event name [%s]"}, value);
+255 \}
\end{DoxyCode}
@@ -406,7 +465,7 @@ Definition at line 191 of file homescreen.\+c.
-Definition at line 48 of file homescreen.\+c.
+Definition at line 49 of file homescreen.\+c.
\mbox{\Hypertarget{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}\label{homescreen_8c_abfd6c1d6f316fa952b11553f8f275e92}}
\index{homescreen.\+c@{homescreen.\+c}!\+\_\+display\+\_\+message@{\+\_\+display\+\_\+message}}
@@ -416,7 +475,7 @@ Definition at line 48 of file homescreen.\+c.
-Definition at line 49 of file homescreen.\+c.
+Definition at line 50 of file homescreen.\+c.
\mbox{\Hypertarget{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}\label{homescreen_8c_aed1c5296a2e6d34945507a0fca17a376}}
\index{homescreen.\+c@{homescreen.\+c}!\+\_\+error@{\+\_\+error}}
@@ -426,7 +485,17 @@ Definition at line 49 of file homescreen.\+c.
-Definition at line 46 of file homescreen.\+c.
+Definition at line 47 of file homescreen.\+c.
+
+\mbox{\Hypertarget{homescreen_8c_a79b0f0b481161527ccb80e83da143219}\label{homescreen_8c_a79b0f0b481161527ccb80e83da143219}}
+\index{homescreen.\+c@{homescreen.\+c}!\+\_\+reply\+\_\+message@{\+\_\+reply\+\_\+message}}
+\index{\+\_\+reply\+\_\+message@{\+\_\+reply\+\_\+message}!homescreen.\+c@{homescreen.\+c}}
+\subsubsection{\texorpdfstring{\+\_\+reply\+\_\+message}{\_reply\_message}}
+{\footnotesize\ttfamily const char \+\_\+reply\+\_\+message\mbox{[}$\,$\mbox{]} = \char`\"{}reply\+\_\+message\char`\"{}\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line 51 of file homescreen.\+c.
\mbox{\Hypertarget{homescreen_8c_ae2a62ab481a2922cbfc788193857a12e}\label{homescreen_8c_ae2a62ab481a2922cbfc788193857a12e}}
\index{homescreen.\+c@{homescreen.\+c}!afb\+Binding\+V2@{afb\+Binding\+V2}}
@@ -447,7 +516,7 @@ Definition at line 46 of file homescreen.\+c.
\end{DoxyCode}
-Definition at line 263 of file homescreen.\+c.
+Definition at line 306 of file homescreen.\+c.
\mbox{\Hypertarget{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}\label{homescreen_8c_af7cfc4f688bb898c09291252c4cb832c}}
\index{homescreen.\+c@{homescreen.\+c}!ev\+\_\+on\+\_\+screen\+\_\+message@{ev\+\_\+on\+\_\+screen\+\_\+message}}
@@ -459,6 +528,16 @@ Definition at line 263 of file homescreen.\+c.
Definition at line 43 of file homescreen.\+c.
+\mbox{\Hypertarget{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}\label{homescreen_8c_a5c225341e0ecbae0585302ef754a55ec}}
+\index{homescreen.\+c@{homescreen.\+c}!ev\+\_\+on\+\_\+screen\+\_\+reply@{ev\+\_\+on\+\_\+screen\+\_\+reply}}
+\index{ev\+\_\+on\+\_\+screen\+\_\+reply@{ev\+\_\+on\+\_\+screen\+\_\+reply}!homescreen.\+c@{homescreen.\+c}}
+\subsubsection{\texorpdfstring{ev\+\_\+on\+\_\+screen\+\_\+reply}{ev\_on\_screen\_reply}}
+{\footnotesize\ttfamily struct afb\+\_\+event ev\+\_\+on\+\_\+screen\+\_\+reply\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line 44 of file homescreen.\+c.
+
\mbox{\Hypertarget{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}\label{homescreen_8c_a25fbdcc4e5787e3f41d99f4a71e86611}}
\index{homescreen.\+c@{homescreen.\+c}!ev\+\_\+reserved@{ev\+\_\+reserved}}
\index{ev\+\_\+reserved@{ev\+\_\+reserved}!homescreen.\+c@{homescreen.\+c}}
@@ -467,7 +546,7 @@ Definition at line 43 of file homescreen.\+c.
-Definition at line 44 of file homescreen.\+c.
+Definition at line 45 of file homescreen.\+c.
\mbox{\Hypertarget{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}\label{homescreen_8c_a2af1ff5a4cbf03125e61e903832035f5}}
\index{homescreen.\+c@{homescreen.\+c}!ev\+\_\+tap\+\_\+shortcut@{ev\+\_\+tap\+\_\+shortcut}}
@@ -505,6 +584,8 @@ Definition at line 40 of file homescreen.\+c.
\hyperlink{homescreen_8c_a096eae5c8f297f9df142a406eea56227}{tap\_shortcut}, .auth = NULL \},
\{ .verb = \textcolor{stringliteral}{"on\_screen\_message"}, .session = AFB\_SESSION\_NONE, .callback =
\hyperlink{homescreen_8c_a640cf8ed97d804c5ed1c09a349056338}{on\_screen\_message}, .auth = NULL \},
+ \{ .verb = \textcolor{stringliteral}{"on\_screen\_reply"}, .session = AFB\_SESSION\_NONE, .callback =
+ \hyperlink{homescreen_8c_a2f380055d7d69828115d2a8951634933}{on\_screen\_reply}, .auth = NULL \},
\{ .verb = \textcolor{stringliteral}{"subscribe"}, .session = AFB\_SESSION\_NONE, .callback =
\hyperlink{homescreen_8c_a4ff0c8b506669e5622a6ee168134d8f1}{subscribe}, .auth = NULL \},
\{ .verb = \textcolor{stringliteral}{"unsubscribe"}, .session = AFB\_SESSION\_NONE, .callback =
@@ -514,5 +595,5 @@ Definition at line 40 of file homescreen.\+c.
\end{DoxyCode}
-Definition at line 222 of file homescreen.\+c.
+Definition at line 260 of file homescreen.\+c.
diff --git a/doc/api-ref/latex/d0/d8a/libhomescreen_8cpp.tex b/doc/api-ref/latex/d0/d8a/libhomescreen_8cpp.tex
index 3e7f572..3a824b9 100644
--- a/doc/api-ref/latex/d0/d8a/libhomescreen_8cpp.tex
+++ b/doc/api-ref/latex/d0/d8a/libhomescreen_8cpp.tex
@@ -12,21 +12,11 @@
{\ttfamily \#include $<$cstdio$>$}\newline
{\ttfamily \#include $<$cstdlib$>$}\newline
{\ttfamily \#include $<$cstring$>$}\newline
-{\ttfamily \#include $<$libhomescreen/libhomescreen.\+hpp$>$}\newline
-\subsection*{Macros}
-\begin{DoxyCompactItemize}
-\item
-\#define \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{E\+L\+OG}(args, ...)~\hyperlink{libhomescreen_8cpp_af583e7770fe13e35089388a45eaf9d9d}{\+\_\+\+E\+L\+OG}(\+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+,args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
-\item
-\#define \hyperlink{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}{D\+L\+OG}(args, ...)~\hyperlink{libhomescreen_8cpp_a7639744c63851d916fb673963e234124}{\+\_\+\+D\+L\+OG}(\+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+,args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
-\end{DoxyCompactItemize}
+{\ttfamily \#include $<$libhomescreen.\+hpp$>$}\newline
+{\ttfamily \#include \char`\"{}hmi-\/debug.\+h\char`\"{}}\newline
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item
-static void \hyperlink{libhomescreen_8cpp_a7639744c63851d916fb673963e234124}{\+\_\+\+D\+L\+OG} (const char $\ast$func, const int line, const char $\ast$log,...)
-\item
-static void \hyperlink{libhomescreen_8cpp_af583e7770fe13e35089388a45eaf9d9d}{\+\_\+\+E\+L\+OG} (const char $\ast$func, const int line, const char $\ast$log,...)
-\item
static bool \hyperlink{libhomescreen_8cpp_a7a2176c3d71fec0f09dcb2aa0866b17e}{has\+\_\+verb} (const string \&verb)
\item
static void \hyperlink{libhomescreen_8cpp_a73c05b96c151e5e46c28585ccb143c1c}{\+\_\+on\+\_\+hangup\+\_\+static} (void $\ast$closure, struct afb\+\_\+wsj1 $\ast$wsj)
@@ -46,76 +36,7 @@ static const char \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42
\end{DoxyCompactItemize}
-\subsection{Macro Definition Documentation}
-\mbox{\Hypertarget{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}\label{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}}
-\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!D\+L\+OG@{D\+L\+OG}}
-\index{D\+L\+OG@{D\+L\+OG}!libhomescreen.\+cpp@{libhomescreen.\+cpp}}
-\subsubsection{\texorpdfstring{D\+L\+OG}{DLOG}}
-{\footnotesize\ttfamily \#define D\+L\+OG(\begin{DoxyParamCaption}\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{libhomescreen_8cpp_a7639744c63851d916fb673963e234124}{\+\_\+\+D\+L\+OG}(\+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+,args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
-
-
-
-Definition at line 33 of file libhomescreen.\+cpp.
-
-\mbox{\Hypertarget{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}\label{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}}
-\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!E\+L\+OG@{E\+L\+OG}}
-\index{E\+L\+OG@{E\+L\+OG}!libhomescreen.\+cpp@{libhomescreen.\+cpp}}
-\subsubsection{\texorpdfstring{E\+L\+OG}{ELOG}}
-{\footnotesize\ttfamily \#define E\+L\+OG(\begin{DoxyParamCaption}\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{libhomescreen_8cpp_af583e7770fe13e35089388a45eaf9d9d}{\+\_\+\+E\+L\+OG}(\+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+,args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
-
-
-
-Definition at line 32 of file libhomescreen.\+cpp.
-
-
-
\subsection{Function Documentation}
-\mbox{\Hypertarget{libhomescreen_8cpp_a7639744c63851d916fb673963e234124}\label{libhomescreen_8cpp_a7639744c63851d916fb673963e234124}}
-\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+\+D\+L\+OG@{\+\_\+\+D\+L\+OG}}
-\index{\+\_\+\+D\+L\+OG@{\+\_\+\+D\+L\+OG}!libhomescreen.\+cpp@{libhomescreen.\+cpp}}
-\subsubsection{\texorpdfstring{\+\_\+\+D\+L\+O\+G()}{\_DLOG()}}
-{\footnotesize\ttfamily static void \+\_\+\+D\+L\+OG (\begin{DoxyParamCaption}\item[{const char $\ast$}]{func, }\item[{const int}]{line, }\item[{const char $\ast$}]{log, }\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
-
-
-
-Definition at line 545 of file libhomescreen.\+cpp.
-
-
-\begin{DoxyCode}
-546 \{
-547 \textcolor{keywordtype}{char} *message;
-548 va\_list args;
-549 va\_start(args, log);
-550 \textcolor{keywordflow}{if} (log == NULL || vasprintf(&message, log, args) < 0)
-551 message = NULL;
-552 cout << \textcolor{stringliteral}{"[libhomescreen DEBUG]"} << func << \textcolor{stringliteral}{"("} << line << \textcolor{stringliteral}{"):"} << message << endl;
-553 va\_end(args);
-554 free(message);
-555 \}
-\end{DoxyCode}
-\mbox{\Hypertarget{libhomescreen_8cpp_af583e7770fe13e35089388a45eaf9d9d}\label{libhomescreen_8cpp_af583e7770fe13e35089388a45eaf9d9d}}
-\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+\+E\+L\+OG@{\+\_\+\+E\+L\+OG}}
-\index{\+\_\+\+E\+L\+OG@{\+\_\+\+E\+L\+OG}!libhomescreen.\+cpp@{libhomescreen.\+cpp}}
-\subsubsection{\texorpdfstring{\+\_\+\+E\+L\+O\+G()}{\_ELOG()}}
-{\footnotesize\ttfamily static void \+\_\+\+E\+L\+OG (\begin{DoxyParamCaption}\item[{const char $\ast$}]{func, }\item[{const int}]{line, }\item[{const char $\ast$}]{log, }\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
-
-
-
-Definition at line 533 of file libhomescreen.\+cpp.
-
-
-\begin{DoxyCode}
-534 \{
-535 \textcolor{keywordtype}{char} *message;
-536 va\_list args;
-537 va\_start(args, log);
-538 \textcolor{keywordflow}{if} (log == NULL || vasprintf(&message, log, args) < 0)
-539 message = NULL;
-540 cout << \textcolor{stringliteral}{"[libhomescreen ERROR]"} << func << \textcolor{stringliteral}{"("} << line << \textcolor{stringliteral}{"):"} << message << endl;
-541 va\_end(args);
-542 free(message);
-543 \}
-\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_a782a05fde0f1c17e0c4c8f972a3f53c8}\label{libhomescreen_8cpp_a782a05fde0f1c17e0c4c8f972a3f53c8}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+on\+\_\+call\+\_\+static@{\+\_\+on\+\_\+call\+\_\+static}}
\index{\+\_\+on\+\_\+call\+\_\+static@{\+\_\+on\+\_\+call\+\_\+static}!libhomescreen.\+cpp@{libhomescreen.\+cpp}}
@@ -124,13 +45,13 @@ Definition at line 533 of file libhomescreen.\+cpp.
-Definition at line 66 of file libhomescreen.\+cpp.
+Definition at line 64 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-67 \{
-68 \textcolor{comment}{/* LibHomeScreen is not called from other process */}
-69 \}
+65 \{
+66 \textcolor{comment}{/* LibHomeScreen is not called from other process */}
+67 \}
\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_a3df86185aa9453726556da201d95a6f9}\label{libhomescreen_8cpp_a3df86185aa9453726556da201d95a6f9}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+on\+\_\+event\+\_\+static@{\+\_\+on\+\_\+event\+\_\+static}}
@@ -140,13 +61,13 @@ Definition at line 66 of file libhomescreen.\+cpp.
-Definition at line 71 of file libhomescreen.\+cpp.
+Definition at line 69 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-72 \{
-73 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_event(NULL,\hyperlink{structevent}{event},msg);
-74 \}
+70 \{
+71 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_event(NULL,\hyperlink{structevent}{event},msg);
+72 \}
\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_a73c05b96c151e5e46c28585ccb143c1c}\label{libhomescreen_8cpp_a73c05b96c151e5e46c28585ccb143c1c}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+on\+\_\+hangup\+\_\+static@{\+\_\+on\+\_\+hangup\+\_\+static}}
@@ -156,13 +77,13 @@ Definition at line 71 of file libhomescreen.\+cpp.
websocket
-Definition at line 61 of file libhomescreen.\+cpp.
+Definition at line 59 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-62 \{
-63 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_hangup(NULL,wsj);
-64 \}
+60 \{
+61 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_hangup(NULL,wsj);
+62 \}
\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}\label{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!\+\_\+on\+\_\+reply\+\_\+static@{\+\_\+on\+\_\+reply\+\_\+static}}
@@ -172,13 +93,13 @@ Definition at line 61 of file libhomescreen.\+cpp.
-Definition at line 76 of file libhomescreen.\+cpp.
+Definition at line 74 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-77 \{
-78 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_reply(NULL,msg);
-79 \}
+75 \{
+76 \textcolor{keyword}{static\_cast<}\hyperlink{class_lib_home_screen}{LibHomeScreen}*\textcolor{keyword}{>}(closure)->on\_reply(NULL,msg);
+77 \}
\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_aa73353e1bf62c68b6b0aba7a1e4e275e}\label{libhomescreen_8cpp_aa73353e1bf62c68b6b0aba7a1e4e275e}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!event\+\_\+loop\+\_\+run@{event\+\_\+loop\+\_\+run}}
@@ -188,16 +109,16 @@ Definition at line 76 of file libhomescreen.\+cpp.
-Definition at line 204 of file libhomescreen.\+cpp.
+Definition at line 201 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-205 \{
-206 \textcolor{keyword}{struct }sd\_event* loop = (\textcolor{keyword}{struct }sd\_event*)(args);
-207 \hyperlink{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}{DLOG}(\textcolor{stringliteral}{"start eventloop"});
-208 \textcolor{keywordflow}{for}(;;)
-209 sd\_event\_run(loop, 30000000);
-210 \}
+202 \{
+203 \textcolor{keyword}{struct }sd\_event* loop = (\textcolor{keyword}{struct }sd\_event*)(args);
+204 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"start eventloop"});
+205 \textcolor{keywordflow}{for}(;;)
+206 sd\_event\_run(loop, 30000000);
+207 \}
\end{DoxyCode}
\mbox{\Hypertarget{libhomescreen_8cpp_a7a2176c3d71fec0f09dcb2aa0866b17e}\label{libhomescreen_8cpp_a7a2176c3d71fec0f09dcb2aa0866b17e}}
\index{libhomescreen.\+cpp@{libhomescreen.\+cpp}!has\+\_\+verb@{has\+\_\+verb}}
@@ -207,19 +128,19 @@ Definition at line 204 of file libhomescreen.\+cpp.
-Definition at line 557 of file libhomescreen.\+cpp.
+Definition at line 518 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-558 \{
-559 \hyperlink{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}{DLOG}(\textcolor{stringliteral}{"verb is %s"}, verb.c\_str());
-560 \textcolor{keywordflow}{if}(find(\hyperlink{class_lib_home_screen_a5593ff5ac78f6495ccb649904cf0ab08}{LibHomeScreen::api\_list}.begin(),
+519 \{
+520 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"verb is %s"}, verb.c\_str());
+521 \textcolor{keywordflow}{if}(find(\hyperlink{class_lib_home_screen_a5593ff5ac78f6495ccb649904cf0ab08}{LibHomeScreen::api\_list}.begin(),
\hyperlink{class_lib_home_screen_a5593ff5ac78f6495ccb649904cf0ab08}{LibHomeScreen::api\_list}.end(), verb) !=
\hyperlink{class_lib_home_screen_a5593ff5ac78f6495ccb649904cf0ab08}{LibHomeScreen::api\_list}.end())
-561 \textcolor{keywordflow}{return} \textcolor{keyword}{true};
-562 \textcolor{keywordflow}{else}
-563 \textcolor{keywordflow}{return} \textcolor{keyword}{false};
-564 \}
+522 \textcolor{keywordflow}{return} \textcolor{keyword}{true};
+523 \textcolor{keywordflow}{else}
+524 \textcolor{keywordflow}{return} \textcolor{keyword}{false};
+525 \}
\end{DoxyCode}
@@ -232,5 +153,5 @@ Definition at line 557 of file libhomescreen.\+cpp.
-Definition at line 40 of file libhomescreen.\+cpp.
+Definition at line 36 of file libhomescreen.\+cpp.
diff --git a/doc/api-ref/latex/d3/d3d/hs-helper_8h.tex b/doc/api-ref/latex/d3/d3d/hs-helper_8h.tex
index 3cd4498..d6e9808 100644
--- a/doc/api-ref/latex/d3/d3d/hs-helper_8h.tex
+++ b/doc/api-ref/latex/d3/d3d/hs-helper_8h.tex
@@ -1,9 +1,10 @@
-\hypertarget{hs-helper_8h}{}\section{homescreen\+\_\+service/hs-\/helper.h File Reference}
-\label{hs-helper_8h}\index{homescreen\+\_\+service/hs-\/helper.\+h@{homescreen\+\_\+service/hs-\/helper.\+h}}
+\hypertarget{hs-helper_8h}{}\section{src/hs-\/helper.h File Reference}
+\label{hs-helper_8h}\index{src/hs-\/helper.\+h@{src/hs-\/helper.\+h}}
{\ttfamily \#include $<$afb/afb-\/binding.\+h$>$}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
{\ttfamily \#include $<$glib.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
+{\ttfamily \#include \char`\"{}hmi-\/debug.\+h\char`\"{}}\newline
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item
@@ -96,16 +97,16 @@ O\+U\+T\+\_\+\+R\+A\+N\+GE&\\
\end{DoxyEnumFields}
-Definition at line 25 of file hs-\/helper.\+h.
+Definition at line 26 of file hs-\/helper.\+h.
\begin{DoxyCode}
-26 \{
-27 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1}{REQ\_FAIL} = -1,
-28 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee}{REQ\_OK}=0,
-29 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a}{NOT\_NUMBER},
-30 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b}{OUT\_RANGE}
-31 \}\hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899}{REQ\_ERROR};
+27 \{
+28 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1}{REQ\_FAIL} = -1,
+29 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee}{REQ\_OK}=0,
+30 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899aa223eed65c9bee2bf1f4cdecaf90d66a}{NOT\_NUMBER},
+31 \hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899add1c84bf80c5f80741ee8f37fef1e12b}{OUT\_RANGE}
+32 \}\hyperlink{hs-helper_8h_aa49f1dbbf26f01627a5737cf43aad899}{REQ\_ERROR};
\end{DoxyCode}
@@ -334,10 +335,11 @@ Definition at line 142 of file hs-\/helper.\+c.
= \{
\textcolor{stringliteral}{"tap\_shortcut"},
\textcolor{stringliteral}{"on\_screen\_message"},
+ \textcolor{stringliteral}{"on\_screen\_reply"},
\textcolor{stringliteral}{"reserved"}
\}
\end{DoxyCode}
-Definition at line 33 of file hs-\/helper.\+h.
+Definition at line 34 of file hs-\/helper.\+h.
diff --git a/doc/api-ref/latex/dd/d1d/hs-helper_8c.tex b/doc/api-ref/latex/dd/d1d/hs-helper_8c.tex
index 74c26fb..407da09 100644
--- a/doc/api-ref/latex/dd/d1d/hs-helper_8c.tex
+++ b/doc/api-ref/latex/dd/d1d/hs-helper_8c.tex
@@ -1,5 +1,5 @@
-\hypertarget{hs-helper_8c}{}\section{homescreen\+\_\+service/hs-\/helper.c File Reference}
-\label{hs-helper_8c}\index{homescreen\+\_\+service/hs-\/helper.\+c@{homescreen\+\_\+service/hs-\/helper.\+c}}
+\hypertarget{hs-helper_8c}{}\section{src/hs-\/helper.c File Reference}
+\label{hs-helper_8c}\index{src/hs-\/helper.\+c@{src/hs-\/helper.\+c}}
{\ttfamily \#include \char`\"{}hs-\/helper.\+h\char`\"{}}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
diff --git a/doc/api-ref/latex/de/dd0/class_lib_home_screen.tex b/doc/api-ref/latex/de/dd0/class_lib_home_screen.tex
index 5dba568..ce14de7 100644
--- a/doc/api-ref/latex/de/dd0/class_lib_home_screen.tex
+++ b/doc/api-ref/latex/de/dd0/class_lib_home_screen.tex
@@ -8,10 +8,11 @@
\begin{DoxyCompactItemize}
\item
enum \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154}{Event\+Type} \{ \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\+\_\+\+Tap\+Shortcut} = 1,
-\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\+\_\+\+On\+Screen\+Message}
+\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\+\_\+\+On\+Screen\+Message},
+\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}{Event\+\_\+\+On\+Screen\+Reply}
\}
\item
-using \hyperlink{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}{handler\+\_\+func} = std\+::function$<$ void(const char $\ast$)$>$
+using \hyperlink{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}{handler\+\_\+func} = std\+::function$<$ void(json\+\_\+object $\ast$)$>$
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
@@ -26,13 +27,13 @@ using \hyperlink{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}{handle
\item
int \hyperlink{class_lib_home_screen_a6a57b573cc767725762ba9beab032220}{init} (const int port, const std\+::string \&token)
\item
-int \hyperlink{class_lib_home_screen_a32d3282898d0f04151c24b4103511e00}{run\+Eventloop} ()
-\item
int \hyperlink{class_lib_home_screen_afb571c9577087b47065eb23e7fdbc903}{tap\+Shortcut} (const char $\ast$application\+\_\+name)
\item
int \hyperlink{class_lib_home_screen_ac336482036a72b51a822725f1929523c}{on\+Screen\+Message} (const char $\ast$display\+\_\+message)
\item
-void \hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\+\_\+event\+\_\+handler} (enum \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154}{Event\+Type} et, \hyperlink{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}{handler\+\_\+func} f)
+int \hyperlink{class_lib_home_screen_a6c065f41f2c5d1f58d2763bfb4da9c37}{on\+Screen\+Reply} (const char $\ast$reply\+\_\+message)
+\item
+void \hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\+\_\+event\+\_\+handler} (enum \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154}{Event\+Type} et, \hyperlink{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}{handler\+\_\+func} f)
\item
void \hyperlink{class_lib_home_screen_a2789e8a5372202cc36f48e71dbb9b7cf}{register\+Callback} (void($\ast$event\+\_\+cb)(const std\+::string \&\hyperlink{structevent}{event}, struct json\+\_\+object $\ast$event\+\_\+contents), void($\ast$reply\+\_\+cb)(struct json\+\_\+object $\ast$reply\+\_\+contents), void($\ast$hangup\+\_\+cb)(void)=nullptr)
\item
@@ -69,15 +70,15 @@ Definition at line 32 of file libhomescreen.\+hpp.
\subsection{Member Typedef Documentation}
-\mbox{\Hypertarget{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}\label{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}}
+\mbox{\Hypertarget{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}\label{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!handler\+\_\+func@{handler\+\_\+func}}
\index{handler\+\_\+func@{handler\+\_\+func}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}
\subsubsection{\texorpdfstring{handler\+\_\+func}{handler\_func}}
-{\footnotesize\ttfamily using \hyperlink{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}{Lib\+Home\+Screen\+::handler\+\_\+func} = std\+::function$<$void(const char$\ast$)$>$}
+{\footnotesize\ttfamily using \hyperlink{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}{Lib\+Home\+Screen\+::handler\+\_\+func} = std\+::function$<$void(json\+\_\+object$\ast$)$>$}
-Definition at line 41 of file libhomescreen.\+hpp.
+Definition at line 42 of file libhomescreen.\+hpp.
@@ -97,17 +98,22 @@ Event\+\_\+\+Tap\+Shortcut&\\
Event\+\_\+\+On\+Screen\+Message&\\
\hline
+\raisebox{\heightof{T}}[0pt][0pt]{\index{Event\+\_\+\+On\+Screen\+Reply@{Event\+\_\+\+On\+Screen\+Reply}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!Event\+\_\+\+On\+Screen\+Reply@{Event\+\_\+\+On\+Screen\+Reply}}}\mbox{\Hypertarget{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}\label{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}}
+Event\+\_\+\+On\+Screen\+Reply&\\
+\hline
+
\end{DoxyEnumFields}
-Definition at line 43 of file libhomescreen.\+hpp.
+Definition at line 44 of file libhomescreen.\+hpp.
\begin{DoxyCode}
-43 \{
-44 \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut} = 1,
-45 \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage}
-46 \};
+44 \{
+45 \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut} = 1,
+46 \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage},
+47 \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}{Event\_OnScreenReply}
+48 \};
\end{DoxyCode}
@@ -120,13 +126,12 @@ Definition at line 43 of file libhomescreen.\+hpp.
constructor
-Definition at line 85 of file libhomescreen.\+cpp.
+Definition at line 83 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-86 \{
-87
-88 \}
+84 \{
+85 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a249902aebf71a5383ca8ec6ae558d095}\label{class_lib_home_screen_a249902aebf71a5383ca8ec6ae558d095}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!````~Lib\+Home\+Screen@{$\sim$\+Lib\+Home\+Screen}}
@@ -136,20 +141,20 @@ Definition at line 85 of file libhomescreen.\+cpp.
destructor
-Definition at line 93 of file libhomescreen.\+cpp.
+Definition at line 90 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-94 \{
-95 \textcolor{keywordflow}{if}(mploop)
-96 \{
-97 sd\_event\_unref(mploop);
-98 \}
-99 \textcolor{keywordflow}{if}(sp\_websock != NULL)
-100 \{
-101 free(sp\_websock);
-102 \}
-103 \}
+91 \{
+92 \textcolor{keywordflow}{if}(mploop)
+93 \{
+94 sd\_event\_unref(mploop);
+95 \}
+96 \textcolor{keywordflow}{if}(sp\_websock != NULL)
+97 \{
+98 afb\_wsj1\_unref(sp\_websock);
+99 \}
+100 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a0fff2f703c8ce184eb9edd133e0f4137}\label{class_lib_home_screen_a0fff2f703c8ce184eb9edd133e0f4137}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}
@@ -193,27 +198,27 @@ This function calls the A\+PI of Home\+Screen via Web\+Socket This function is o
To call Home\+Screen\textquotesingle{}s A\+P\+Is, the application should set its function name, arguments to J\+S\+ON format.
-Definition at line 369 of file libhomescreen.\+cpp.
+Definition at line 360 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-370 \{
-371 \textcolor{keywordtype}{int} ret;
-372 \textcolor{keywordflow}{if}(!sp\_websock)
-373 \{
-374 \textcolor{keywordflow}{return} -1;
+361 \{
+362 \textcolor{keywordtype}{int} ret;
+363 \textcolor{keywordflow}{if}(!sp\_websock)
+364 \{
+365 \textcolor{keywordflow}{return} -1;
+366 \}
+367 \textcolor{keywordflow}{if} (!\hyperlink{libhomescreen_8cpp_a7a2176c3d71fec0f09dcb2aa0866b17e}{has\_verb}(\textcolor{keywordtype}{string}(verb)))
+368 \{
+369 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"verb doesn't exit"});
+370 \textcolor{keywordflow}{return} -1;
+371 \}
+372 ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, verb, arg, \hyperlink{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}{\_on\_reply\_static}, \textcolor{keyword}{this});
+373 \textcolor{keywordflow}{if} (ret < 0) \{
+374 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"Failed to call verb:%s"},verb);
375 \}
-376 \textcolor{keywordflow}{if} (!\hyperlink{libhomescreen_8cpp_a7a2176c3d71fec0f09dcb2aa0866b17e}{has\_verb}(\textcolor{keywordtype}{string}(verb)))
-377 \{
-378 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"verb doesn't exit"});
-379 \textcolor{keywordflow}{return} -1;
-380 \}
-381 ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, verb, arg, \hyperlink{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}{\_on\_reply\_static}, \textcolor{keyword}{this});
-382 \textcolor{keywordflow}{if} (ret < 0) \{
-383 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Failed to call verb:%s"},verb);
-384 \}
-385 \textcolor{keywordflow}{return} ret;
-386 \}
+376 \textcolor{keywordflow}{return} ret;
+377 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a6a57b573cc767725762ba9beab032220}\label{class_lib_home_screen_a6a57b573cc767725762ba9beab032220}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!init@{init}}
@@ -239,33 +244,33 @@ Nothing
Use this constructor
-Definition at line 119 of file libhomescreen.\+cpp.
+Definition at line 116 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-120 \{
-121 \textcolor{keywordtype}{int} ret = 0;
-122 \textcolor{keywordflow}{if}(port > 0 && token.size() > 0)
-123 \{
-124 mport = port;
-125 mtoken = token;
-126 \}
-127 \textcolor{keywordflow}{else}
-128 \{
-129 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"port and token should be > 0, Initial port and token uses."});
-130 \}
-131
-132 ret = initialize\_websocket();
-133 \textcolor{keywordflow}{if}(ret != 0 )
-134 \{
-135 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Failed to initialize websocket"});
+117 \{
+118 \textcolor{keywordtype}{int} ret = 0;
+119 \textcolor{keywordflow}{if}(port > 0 && token.size() > 0)
+120 \{
+121 mport = port;
+122 mtoken = token;
+123 \}
+124 \textcolor{keywordflow}{else}
+125 \{
+126 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"port and token should be > 0, Initial port and token uses."});
+127 \}
+128
+129 ret = initialize\_websocket();
+130 \textcolor{keywordflow}{if}(ret != 0 )
+131 \{
+132 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"Failed to initialize websocket"});
+133 \}
+134 \textcolor{keywordflow}{else}\{
+135 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"Initialized"});
136 \}
-137 \textcolor{keywordflow}{else}\{
-138 \hyperlink{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}{DLOG}(\textcolor{stringliteral}{"Initialized"});
-139 \}
-140
-141 \textcolor{keywordflow}{return} ret;
-142 \}
+137
+138 \textcolor{keywordflow}{return} ret;
+139 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a608638eb87b2772a3dcc92d8ca8f3596}\label{class_lib_home_screen_a608638eb87b2772a3dcc92d8ca8f3596}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+\_\+call@{on\+\_\+call}}
@@ -275,12 +280,12 @@ Definition at line 119 of file libhomescreen.\+cpp.
-Definition at line 457 of file libhomescreen.\+cpp.
+Definition at line 448 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-458 \{
-459 \}
+449 \{
+450 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a9c4885b51b43ab24a548d49fb3ab2de3}\label{class_lib_home_screen_a9c4885b51b43ab24a548d49fb3ab2de3}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+\_\+event@{on\+\_\+event}}
@@ -290,56 +295,52 @@ Definition at line 457 of file libhomescreen.\+cpp.
-Definition at line 467 of file libhomescreen.\+cpp.
+Definition at line 458 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-468 \{
-469 cout << \textcolor{stringliteral}{"[libhomescreen on\_event]: "} << \textcolor{keyword}{event} << \textcolor{stringliteral}{" ("} << afb\_wsj1\_msg\_object\_s(msg) << \textcolor{stringliteral}{")"} << endl;
-470
-471 \textcolor{keywordflow}{if} (strstr(\hyperlink{structevent}{event}, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}) == NULL) \{
-472 \textcolor{keywordflow}{return};
+459 \{
+460 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"event: (%s) msg: (%s)."}, \hyperlink{structevent}{event}, afb\_wsj1\_msg\_object\_s(msg));
+461
+462 \textcolor{keywordflow}{if} (strstr(\hyperlink{structevent}{event}, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}) == NULL) \{
+463 \textcolor{keywordflow}{return};
+464 \}
+465
+466 \textcolor{keyword}{struct }json\_object* ev\_contents = afb\_wsj1\_msg\_object\_j(msg);
+467 \textcolor{keyword}{struct }json\_object *json\_data = json\_object\_object\_get(ev\_contents, \textcolor{stringliteral}{"data"});
+468
+469 \textcolor{keywordflow}{if}(onEvent != \textcolor{keyword}{nullptr})
+470 \{
+471 \textcolor{keyword}{const} \textcolor{keywordtype}{string} ev(\hyperlink{structevent}{event});
+472 onEvent(ev, ev\_contents);
473 \}
474
-475 \textcolor{keyword}{struct }json\_object* ev\_contents = afb\_wsj1\_msg\_object\_j(msg);
-476 \textcolor{keyword}{struct }json\_object *json\_data = json\_object\_object\_get(ev\_contents, \textcolor{stringliteral}{"data"});
-477
-478 \textcolor{keywordflow}{if}(onEvent != \textcolor{keyword}{nullptr})
-479 \{
-480 \textcolor{keyword}{const} \textcolor{keywordtype}{string} ev(\hyperlink{structevent}{event});
-481 onEvent(ev, ev\_contents);
-482 \}
-483
-484 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* event\_only = strchr(\hyperlink{structevent}{event}, \textcolor{charliteral}{'/'});
-485 \textcolor{keywordflow}{if} (event\_only != \textcolor{keyword}{nullptr}) \{
-486 event\_only = event\_only + 1;
-487 \}
-488
-489 \textcolor{keywordflow}{if} (strcasecmp(event\_only, \hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[0].c\_str()) == 0) \{
-490 \textcolor{keyword}{auto} i = this->handlers.find(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut});
-491
-492 \textcolor{keyword}{struct }json\_object *json\_application\_name = json\_object\_object\_get(json\_data, \textcolor{stringliteral}{"application\_name"});
-493 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* application\_name = json\_object\_get\_string(json\_application\_name);
-494
-495 \textcolor{keywordflow}{if} ( i != this->handlers.end() ) \{
-496 i->second(application\_name);
-497 \}
-498 \}
-499 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (strcasecmp(event\_only, \hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[1].c\_str()) == 0) \{
-500
-501 \textcolor{keyword}{auto} i = this->handlers.find(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage});
-502
-503 \textcolor{keyword}{struct }json\_object *json\_display\_message = json\_object\_object\_get(json\_data, \textcolor{stringliteral}{"display\_message"});
-504 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* display\_message = json\_object\_get\_string(json\_display\_message);
-505
-506 \textcolor{keywordflow}{if} ( i != this->handlers.end() ) \{
-507 i->second(display\_message);
-508 \}
-509
-510 \}
-511
-512 json\_object\_put(ev\_contents);
-513 \}
+475 \textcolor{keyword}{const} \textcolor{keywordtype}{char}* event\_only = strchr(\hyperlink{structevent}{event}, \textcolor{charliteral}{'/'});
+476 \textcolor{keywordflow}{if} (event\_only != \textcolor{keyword}{nullptr}) \{
+477 event\_only = event\_only + 1;
+478 \}
+479
+480 \textcolor{keywordflow}{if} (strcasecmp(event\_only, \hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[0].c\_str()) == 0) \{
+481 \textcolor{keyword}{auto} i = this->handlers.find(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut});
+482 \textcolor{keywordflow}{if} ( i != this->handlers.end() ) \{
+483 i->second(json\_data);
+484 \}
+485 \}
+486 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (strcasecmp(event\_only, \hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[1].c\_str()) == 0) \{
+487 \textcolor{keyword}{auto} i = this->handlers.find(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage});
+488 \textcolor{keywordflow}{if} ( i != this->handlers.end() ) \{
+489 i->second(json\_data);
+490 \}
+491 \}
+492 \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (strcasecmp(event\_only, \hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[2].c\_str()) == 0) \{
+493 \textcolor{keyword}{auto} i = this->handlers.find(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}{Event\_OnScreenReply});
+494 \textcolor{keywordflow}{if} ( i != this->handlers.end() ) \{
+495 i->second(json\_data);
+496 \}
+497 \}
+498
+499 json\_object\_put(ev\_contents);
+500 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_ab1c1fa69f24b981e824dd9fb810c4b74}\label{class_lib_home_screen_ab1c1fa69f24b981e824dd9fb810c4b74}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+\_\+hangup@{on\+\_\+hangup}}
@@ -349,17 +350,17 @@ Definition at line 467 of file libhomescreen.\+cpp.
-Definition at line 448 of file libhomescreen.\+cpp.
+Definition at line 439 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-449 \{
-450 \hyperlink{libhomescreen_8cpp_a4e42b2f5af2174dd24f958351becf63d}{DLOG}(\textcolor{stringliteral}{"%s called"}, \_\_FUNCTION\_\_);
-451 \textcolor{keywordflow}{if}(onHangup != \textcolor{keyword}{nullptr})
-452 \{
-453 onHangup();
-454 \}
-455 \}
+440 \{
+441 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"%s called"}, \_\_FUNCTION\_\_);
+442 \textcolor{keywordflow}{if}(onHangup != \textcolor{keyword}{nullptr})
+443 \{
+444 onHangup();
+445 \}
+446 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a248d9648c6186287a7632ec1c75fc9c5}\label{class_lib_home_screen_a248d9648c6186287a7632ec1c75fc9c5}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+\_\+reply@{on\+\_\+reply}}
@@ -369,20 +370,20 @@ Definition at line 448 of file libhomescreen.\+cpp.
msg is like (\{\char`\"{}response\char`\"{}\+:\{\char`\"{}verb\char`\"{}\+:\char`\"{}subscribe\char`\"{},\char`\"{}error\char`\"{}\+:0\},\char`\"{}jtype\char`\"{}\+:\char`\"{}afb-\/reply\char`\"{},\char`\"{}request\char`\"{}\+:\{\char`\"{}status\char`\"{}\+:\char`\"{}success\char`\"{},\char`\"{}info\char`\"{}\+:\char`\"{}homescreen binder subscribe event name \mbox{[}on\+\_\+screen\+\_\+message\mbox{]}\char`\"{}\}\}) msg is like (\{\char`\"{}response\char`\"{}\+:\{\char`\"{}verb\char`\"{}\+:\char`\"{}tap\+\_\+shortcut\char`\"{},\char`\"{}error\char`\"{}\+:0\},\char`\"{}jtype\char`\"{}\+:\char`\"{}afb-\/reply\char`\"{},\char`\"{}request\char`\"{}\+:\{\char`\"{}status\char`\"{}\+:\char`\"{}success\char`\"{},\char`\"{}info\char`\"{}\+:\char`\"{}afb\+\_\+event\+\_\+push event \mbox{[}tap\+\_\+shortcut\mbox{]}\char`\"{}\}\})
-Definition at line 519 of file libhomescreen.\+cpp.
+Definition at line 506 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-520 \{
-521 cout << \textcolor{stringliteral}{"[libhomescreen on\_reply]: "} << \textcolor{stringliteral}{" ("} << afb\_wsj1\_msg\_object\_s(msg) << \textcolor{stringliteral}{")"} << endl;
-522 \textcolor{keywordflow}{if}(onReply != \textcolor{keyword}{nullptr})
-523 \{
-524 \textcolor{keyword}{struct }json\_object* reply = afb\_wsj1\_msg\_object\_j(msg);
-525 onReply(reply);
-526
-527 json\_object\_put(reply);
-528 \}
-529 \}
+507 \{
+508 \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{HMI\_DEBUG}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"msg: (%s)"}, afb\_wsj1\_msg\_object\_s(msg));
+509 \textcolor{keywordflow}{if}(onReply != \textcolor{keyword}{nullptr})
+510 \{
+511 \textcolor{keyword}{struct }json\_object* reply = afb\_wsj1\_msg\_object\_j(msg);
+512 onReply(reply);
+513
+514 json\_object\_put(reply);
+515 \}
+516 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_ac336482036a72b51a822725f1929523c}\label{class_lib_home_screen_ac336482036a72b51a822725f1929523c}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+Screen\+Message@{on\+Screen\+Message}}
@@ -390,15 +391,55 @@ Definition at line 519 of file libhomescreen.\+cpp.
\subsubsection{\texorpdfstring{on\+Screen\+Message()}{onScreenMessage()}}
{\footnotesize\ttfamily int Lib\+Home\+Screen\+::on\+Screen\+Message (\begin{DoxyParamCaption}\item[{const char $\ast$}]{display\+\_\+message }\end{DoxyParamCaption})}
-Home\+Screenアプリに表示するメッセージイベントの発行
+Sending on\+Screen message event
+
+Sending On\+Screen message event to Home\+Screen from applications
+
+\subparagraph*{Parameters}
+
+
+\begin{DoxyItemize}
+\item display\+\_\+message \mbox{[}in\mbox{]} \+: message for display
+\end{DoxyItemize}
+
+\subparagraph*{Return}
+
+
+\begin{DoxyItemize}
+\item Returns 0 on success or -\/1 in case of error.
+\end{DoxyItemize}
+
+Definition at line 244 of file libhomescreen.\+cpp.
-各アプリから\+Home\+Screenアプリケーションの\+On\+Screenに表示するイベントを発行する
+
+\begin{DoxyCode}
+245 \{
+246 \textcolor{keywordflow}{if}(!sp\_websock)
+247 \{
+248 \textcolor{keywordflow}{return} -1;
+249 \}
+250
+251 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
+252 \textcolor{keyword}{struct }json\_object* val = json\_object\_new\_string(display\_message);
+253 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"display\_message"}, val);
+254 \textcolor{keywordflow}{return} this->\hyperlink{class_lib_home_screen_a527b49dcfe581be6275d0eb2236ba37f}{call}(\textcolor{stringliteral}{"on\_screen\_message"}, j\_obj);
+255 \}
+\end{DoxyCode}
+\mbox{\Hypertarget{class_lib_home_screen_a6c065f41f2c5d1f58d2763bfb4da9c37}\label{class_lib_home_screen_a6c065f41f2c5d1f58d2763bfb4da9c37}}
+\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!on\+Screen\+Reply@{on\+Screen\+Reply}}
+\index{on\+Screen\+Reply@{on\+Screen\+Reply}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}
+\subsubsection{\texorpdfstring{on\+Screen\+Reply()}{onScreenReply()}}
+{\footnotesize\ttfamily int Lib\+Home\+Screen\+::on\+Screen\+Reply (\begin{DoxyParamCaption}\item[{const char $\ast$}]{reply\+\_\+message }\end{DoxyParamCaption})}
+
+Sending on\+Screen reply event
+
+Sending On\+Screen reply event to applications from Home\+Screen
\subparagraph*{Parameters}
\begin{DoxyItemize}
-\item display\+\_\+message \mbox{[}in\mbox{]} \+: 表示するメッセージ
+\item reply\+\_\+message \mbox{[}in\mbox{]} \+: message for reply
\end{DoxyItemize}
\subparagraph*{Return}
@@ -408,21 +449,21 @@ Home\+Screenアプリに表示するメッセージイベントの発行
\item Returns 0 on success or -\/1 in case of error.
\end{DoxyItemize}
-Definition at line 280 of file libhomescreen.\+cpp.
+Definition at line 268 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-281 \{
-282 \textcolor{keywordflow}{if}(!sp\_websock)
-283 \{
-284 \textcolor{keywordflow}{return} -1;
-285 \}
-286
-287 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
-288 \textcolor{keyword}{struct }json\_object* val = json\_object\_new\_string(display\_message);
-289 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"display\_message"}, val);
-290 \textcolor{keywordflow}{return} this->\hyperlink{class_lib_home_screen_a527b49dcfe581be6275d0eb2236ba37f}{call}(\textcolor{stringliteral}{"on\_screen\_message"}, j\_obj);
-291 \}
+269 \{
+270 \textcolor{keywordflow}{if}(!sp\_websock)
+271 \{
+272 \textcolor{keywordflow}{return} -1;
+273 \}
+274
+275 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
+276 \textcolor{keyword}{struct }json\_object* val = json\_object\_new\_string(reply\_message);
+277 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"reply\_message"}, val);
+278 \textcolor{keywordflow}{return} this->\hyperlink{class_lib_home_screen_a527b49dcfe581be6275d0eb2236ba37f}{call}(\textcolor{stringliteral}{"on\_screen\_reply"}, j\_obj);
+279 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_a23bc17798453cfca50904562736f6b25}\label{class_lib_home_screen_a23bc17798453cfca50904562736f6b25}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!operator=@{operator=}}
@@ -454,101 +495,59 @@ Nothing
Event callback is invoked by home screen for event you subscribed. If you would like to get event, please call subscribe function before/after this function
-Definition at line 158 of file libhomescreen.\+cpp.
-
-
-\begin{DoxyCode}
-162 \{
-163 onEvent = event\_cb;
-164 onReply = reply\_cb;
-165 onHangup = hangup\_cb;
-166 \}
-\end{DoxyCode}
-\mbox{\Hypertarget{class_lib_home_screen_a32d3282898d0f04151c24b4103511e00}\label{class_lib_home_screen_a32d3282898d0f04151c24b4103511e00}}
-\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!run\+Eventloop@{run\+Eventloop}}
-\index{run\+Eventloop@{run\+Eventloop}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}
-\subsubsection{\texorpdfstring{run\+Eventloop()}{runEventloop()}}
-{\footnotesize\ttfamily int Lib\+Home\+Screen\+::run\+Eventloop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
-
-This function start receiving the reply/event message from home screen
-
-\subparagraph*{Parameters}
-
-Nothing
-
-\subparagraph*{Return}
-
-
-\begin{DoxyItemize}
-\item Returns thread\+\_\+id on success or -\/1 in case of error.
-\end{DoxyItemize}
-
-\subparagraph*{Note}
-
-Definition at line 224 of file libhomescreen.\+cpp.
+Definition at line 155 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-225 \{
-226 \textcolor{keywordflow}{if}(mploop && sp\_websock)
-227 \{
-228 pthread\_t thread\_id;
-229 \textcolor{keywordtype}{int} ret = pthread\_create(&thread\_id, NULL, \hyperlink{libhomescreen_8cpp_aa73353e1bf62c68b6b0aba7a1e4e275e}{event\_loop\_run}, mploop);
-230 \textcolor{keywordflow}{if}(ret != 0)
-231 \{
-232 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Cannot run eventloop due to error:%d"}, errno);
-233 \textcolor{keywordflow}{return} -1;
-234 \}
-235 \textcolor{keywordflow}{else}
-236 \textcolor{keywordflow}{return} thread\_id;
-237 \}
-238 \textcolor{keywordflow}{else}
-239 \{
-240 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Connecting is not established yet"});
-241 \textcolor{keywordflow}{return} -1;
-242 \}
-243 \}
+159 \{
+160 onEvent = event\_cb;
+161 onReply = reply\_cb;
+162 onHangup = hangup\_cb;
+163 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}\label{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!set\+\_\+event\+\_\+handler@{set\+\_\+event\+\_\+handler}}
\index{set\+\_\+event\+\_\+handler@{set\+\_\+event\+\_\+handler}!Lib\+Home\+Screen@{Lib\+Home\+Screen}}
\subsubsection{\texorpdfstring{set\+\_\+event\+\_\+handler()}{set\_event\_handler()}}
-{\footnotesize\ttfamily void Lib\+Home\+Screen\+::set\+\_\+event\+\_\+handler (\begin{DoxyParamCaption}\item[{enum \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154}{Event\+Type}}]{et, }\item[{\hyperlink{class_lib_home_screen_ae99dee1e03d494d59d26c9f17078e01f}{handler\+\_\+func}}]{f }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily void Lib\+Home\+Screen\+::set\+\_\+event\+\_\+handler (\begin{DoxyParamCaption}\item[{enum \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154}{Event\+Type}}]{et, }\item[{\hyperlink{class_lib_home_screen_a334f11f81c84c98d18284215dcaada3a}{handler\+\_\+func}}]{f }\end{DoxyParamCaption})}
-イベントハンドラの登録
+Setting Event Handler
-各アプリから\+Home\+Screenアプリケーションの\+On\+Screenに表示するイベントを発行する
+Setting event handler for Homescreen
\subparagraph*{Parameters}
\begin{DoxyItemize}
-\item et \mbox{[}in\mbox{]} \+: 対象のイベント
-\item f \mbox{[}in\mbox{]} \+: イベントハンドラ
+\item et \mbox{[}in\mbox{]} \+: event name
+\item f \mbox{[}in\mbox{]} \+: event handler
\end{DoxyItemize}
\subparagraph*{Return}
Nothing
-Definition at line 305 of file libhomescreen.\+cpp.
+Definition at line 293 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-306 \{
-307 \textcolor{keywordflow}{if} (et >= 1 && et <= 2) \{
-308 \textcolor{keywordflow}{switch} (et) \{
-309 \textcolor{keywordflow}{case} \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut}:
-310 this->\hyperlink{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}{subscribe}(\hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[0]);
-311 \textcolor{keywordflow}{break};
-312 \textcolor{keywordflow}{case} \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage}:
-313 this->\hyperlink{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}{subscribe}(\hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[1]);
-314 \textcolor{keywordflow}{break};
-315 \}
-316
-317 this->handlers[et] = std::move(f);
-318 \}
-319 \}
+294 \{
+295 \textcolor{keywordflow}{if} (et >= 1 && et <= 3) \{
+296 \textcolor{keywordflow}{switch} (et) \{
+297 \textcolor{keywordflow}{case} \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{Event\_TapShortcut}:
+298 this->\hyperlink{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}{subscribe}(\hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[0]);
+299 \textcolor{keywordflow}{break};
+300 \textcolor{keywordflow}{case} \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{Event\_OnScreenMessage}:
+301 this->\hyperlink{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}{subscribe}(\hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[1]);
+302 \textcolor{keywordflow}{break};
+303 \textcolor{keywordflow}{case} \hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}{Event\_OnScreenReply}:
+304 this->\hyperlink{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}{subscribe}(\hyperlink{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}{LibHomeScreen::event\_list}[2]);
+305 \textcolor{keywordflow}{break};
+306 \}
+307
+308 this->handlers[et] = std::move(f);
+309 \}
+310 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}\label{class_lib_home_screen_aa4c189807b75d070f567967f0d690738}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!subscribe@{subscribe}}
@@ -576,25 +575,25 @@ Register callback function for each event
This function enables to get an event to your callback function.
-Definition at line 401 of file libhomescreen.\+cpp.
+Definition at line 392 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-402 \{
-403 \textcolor{keywordflow}{if}(!sp\_websock)
-404 \{
-405 \textcolor{keywordflow}{return} -1;
-406 \}
-407 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
-408 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"event"}, json\_object\_new\_string(event\_name.c\_str()));
-409
-410 \textcolor{keywordtype}{int} ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, \textcolor{stringliteral}{"subscribe"}, j\_obj,
+393 \{
+394 \textcolor{keywordflow}{if}(!sp\_websock)
+395 \{
+396 \textcolor{keywordflow}{return} -1;
+397 \}
+398 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
+399 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"event"}, json\_object\_new\_string(event\_name.c\_str()));
+400
+401 \textcolor{keywordtype}{int} ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, \textcolor{stringliteral}{"subscribe"}, j\_obj,
\hyperlink{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}{\_on\_reply\_static}, \textcolor{keyword}{this});
-411 \textcolor{keywordflow}{if} (ret < 0) \{
-412 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Failed to call verb:%s"},\_\_FUNCTION\_\_);
-413 \}
-414 \textcolor{keywordflow}{return} ret;
-415 \}
+402 \textcolor{keywordflow}{if} (ret < 0) \{
+403 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"Failed to call verb:%s"},\_\_FUNCTION\_\_);
+404 \}
+405 \textcolor{keywordflow}{return} ret;
+406 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_afb571c9577087b47065eb23e7fdbc903}\label{class_lib_home_screen_afb571c9577087b47065eb23e7fdbc903}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!tap\+Shortcut@{tap\+Shortcut}}
@@ -602,15 +601,15 @@ Definition at line 401 of file libhomescreen.\+cpp.
\subsubsection{\texorpdfstring{tap\+Shortcut()}{tapShortcut()}}
{\footnotesize\ttfamily int Lib\+Home\+Screen\+::tap\+Shortcut (\begin{DoxyParamCaption}\item[{const char $\ast$}]{application\+\_\+name }\end{DoxyParamCaption})}
-ショートカットアイコンがタップされたイベントの発行
+Sending Short\+Cut Icon tapped event
-Home\+Screenアプリケーションにて各アプリアイコンがタップされたときにイベントを発行する
+When Home\+Screen shortcut area is tapped, sending a event
\subparagraph*{Parameters}
\begin{DoxyItemize}
-\item application\+\_\+name \mbox{[}in\mbox{]} \+: タップされたアプリケーションの名前(label)
+\item application\+\_\+name \mbox{[}in\mbox{]} \+: Tapped application name (label)
\end{DoxyItemize}
\subparagraph*{Return}
@@ -620,21 +619,21 @@ Home\+Screenアプリケーションにて各アプリアイコンがタップ
\item Returns 0 on success or -\/1 in case of error.
\end{DoxyItemize}
-Definition at line 256 of file libhomescreen.\+cpp.
+Definition at line 220 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-257 \{
-258 \textcolor{keywordflow}{if}(!sp\_websock)
-259 \{
-260 \textcolor{keywordflow}{return} -1;
-261 \}
-262
-263 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
-264 \textcolor{keyword}{struct }json\_object* val = json\_object\_new\_string(application\_name);
-265 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"application\_name"}, val);
-266 \textcolor{keywordflow}{return} this->\hyperlink{class_lib_home_screen_a527b49dcfe581be6275d0eb2236ba37f}{call}(\textcolor{stringliteral}{"tap\_shortcut"}, j\_obj);
-267 \}
+221 \{
+222 \textcolor{keywordflow}{if}(!sp\_websock)
+223 \{
+224 \textcolor{keywordflow}{return} -1;
+225 \}
+226
+227 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
+228 \textcolor{keyword}{struct }json\_object* val = json\_object\_new\_string(application\_name);
+229 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"application\_name"}, val);
+230 \textcolor{keywordflow}{return} this->\hyperlink{class_lib_home_screen_a527b49dcfe581be6275d0eb2236ba37f}{call}(\textcolor{stringliteral}{"tap\_shortcut"}, j\_obj);
+231 \}
\end{DoxyCode}
\mbox{\Hypertarget{class_lib_home_screen_aac03a45cbd453ba69ddb00c1016930a6}\label{class_lib_home_screen_aac03a45cbd453ba69ddb00c1016930a6}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!unsubscribe@{unsubscribe}}
@@ -662,25 +661,25 @@ Unregister callback function for each event
This function disables to get an event to your callback function.
-Definition at line 430 of file libhomescreen.\+cpp.
+Definition at line 421 of file libhomescreen.\+cpp.
\begin{DoxyCode}
-431 \{
-432 \textcolor{keywordflow}{if}(!sp\_websock)
-433 \{
-434 \textcolor{keywordflow}{return} -1;
-435 \}
-436 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
-437 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"event"}, json\_object\_new\_string(event\_name.c\_str()));
-438
-439 \textcolor{keywordtype}{int} ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, \textcolor{stringliteral}{"unsubscribe"}, j\_obj,
+422 \{
+423 \textcolor{keywordflow}{if}(!sp\_websock)
+424 \{
+425 \textcolor{keywordflow}{return} -1;
+426 \}
+427 \textcolor{keyword}{struct }json\_object* j\_obj = json\_object\_new\_object();
+428 json\_object\_object\_add(j\_obj, \textcolor{stringliteral}{"event"}, json\_object\_new\_string(event\_name.c\_str()));
+429
+430 \textcolor{keywordtype}{int} ret = afb\_wsj1\_call\_j(sp\_websock, \hyperlink{libhomescreen_8cpp_a1e2d6e77dd8f0162f830058579eab42f}{API}, \textcolor{stringliteral}{"unsubscribe"}, j\_obj,
\hyperlink{libhomescreen_8cpp_a7778933bffa862c63fa0a1b8219faa8b}{\_on\_reply\_static}, \textcolor{keyword}{this});
-440 \textcolor{keywordflow}{if} (ret < 0) \{
-441 \hyperlink{libhomescreen_8cpp_a797aa3053bd6a29819d44f8fad8a5eca}{ELOG}(\textcolor{stringliteral}{"Failed to call verb:%s"},\_\_FUNCTION\_\_);
-442 \}
-443 \textcolor{keywordflow}{return} ret;
-444 \}
+431 \textcolor{keywordflow}{if} (ret < 0) \{
+432 \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{HMI\_ERROR}(\textcolor{stringliteral}{"libhomescreen"},\textcolor{stringliteral}{"Failed to call verb:%s"},\_\_FUNCTION\_\_);
+433 \}
+434 \textcolor{keywordflow}{return} ret;
+435 \}
\end{DoxyCode}
@@ -697,13 +696,14 @@ Definition at line 430 of file libhomescreen.\+cpp.
std::string(\textcolor{stringliteral}{"ping"}),
std::string(\textcolor{stringliteral}{"tap\_shortcut"}),
std::string(\textcolor{stringliteral}{"on\_screen\_message"}),
+ std::string(\textcolor{stringliteral}{"on\_screen\_reply"}),
std::string(\textcolor{stringliteral}{"subscribe"}),
std::string(\textcolor{stringliteral}{"unsubscribe"})
\}
\end{DoxyCode}
-Definition at line 48 of file libhomescreen.\+hpp.
+Definition at line 50 of file libhomescreen.\+hpp.
\mbox{\Hypertarget{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}\label{class_lib_home_screen_a6a6d8a4d33a006a08652e7377a4c29e9}}
\index{Lib\+Home\+Screen@{Lib\+Home\+Screen}!event\+\_\+list@{event\+\_\+list}}
@@ -716,16 +716,17 @@ Definition at line 48 of file libhomescreen.\+hpp.
\{
std::string(\textcolor{stringliteral}{"tap\_shortcut"}),
std::string(\textcolor{stringliteral}{"on\_screen\_message"}),
+ std::string(\textcolor{stringliteral}{"on\_screen\_reply"}),
std::string(\textcolor{stringliteral}{"none"})
\}
\end{DoxyCode}
-Definition at line 49 of file libhomescreen.\+hpp.
+Definition at line 51 of file libhomescreen.\+hpp.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-include/libhomescreen/\hyperlink{libhomescreen_8hpp}{libhomescreen.\+hpp}\item
+include/\hyperlink{libhomescreen_8hpp}{libhomescreen.\+hpp}\item
libhomescreen/\hyperlink{libhomescreen_8cpp}{libhomescreen.\+cpp}\end{DoxyCompactItemize}
diff --git a/doc/api-ref/latex/df/d43/libhomescreen_8hpp.tex b/doc/api-ref/latex/df/d43/libhomescreen_8hpp.tex
index aa4b996..a88a588 100644
--- a/doc/api-ref/latex/df/d43/libhomescreen_8hpp.tex
+++ b/doc/api-ref/latex/df/d43/libhomescreen_8hpp.tex
@@ -1,5 +1,5 @@
\hypertarget{libhomescreen_8hpp}{}\section{include/libhomescreen.hpp File Reference}
-\label{libhomescreen_8hpp}\index{include/libhomescreen/libhomescreen.\+hpp@{include/libhomescreen/libhomescreen.\+hpp}}
+\label{libhomescreen_8hpp}\index{include/libhomescreen.\+hpp@{include/libhomescreen.\+hpp}}
{\ttfamily \#include $<$vector$>$}\newline
{\ttfamily \#include $<$map$>$}\newline
{\ttfamily \#include $<$string$>$}\newline
diff --git a/doc/api-ref/latex/df/d76/hmi-debug_8h.tex b/doc/api-ref/latex/df/d76/hmi-debug_8h.tex
new file mode 100644
index 0000000..4f5a64c
--- /dev/null
+++ b/doc/api-ref/latex/df/d76/hmi-debug_8h.tex
@@ -0,0 +1,202 @@
+\hypertarget{hmi-debug_8h}{}\section{include/hmi-\/debug.h File Reference}
+\label{hmi-debug_8h}\index{include/hmi-\/debug.\+h@{include/hmi-\/debug.\+h}}
+{\ttfamily \#include $<$time.\+h$>$}\newline
+{\ttfamily \#include $<$stdio.\+h$>$}\newline
+{\ttfamily \#include $<$afb/afb-\/binding.\+h$>$}\newline
+\subsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\#define \hyperlink{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}{H\+M\+I\+\_\+\+E\+R\+R\+OR}(prefix, args, ...)~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+, \+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args, \#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
+\item
+\#define \hyperlink{hmi-debug_8h_a25361812432cd2480bc8f1a8e56ecbf7}{H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG}(prefix, args, ...)~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
+\item
+\#define \hyperlink{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}{H\+M\+I\+\_\+\+N\+O\+T\+I\+CE}(prefix, args, ...)~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
+\item
+\#define \hyperlink{hmi-debug_8h_a11b249a67108f0f4c50a0fc8a3eb4f5c}{H\+M\+I\+\_\+\+I\+N\+FO}(prefix, args, ...)~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
+\item
+\#define \hyperlink{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}{H\+M\+I\+\_\+\+D\+E\+B\+UG}(prefix, args, ...)~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)
+\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item
+enum \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}{L\+O\+G\+\_\+\+L\+E\+V\+EL} \{ \newline
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE} = 0,
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR},
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG},
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE},
+\newline
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO},
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG},
+\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX} = L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR
+ \}
+\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+static void \hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG} (enum \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}{L\+O\+G\+\_\+\+L\+E\+V\+EL} level, const char $\ast$file, const char $\ast$func, const int line, const char $\ast$prefix, const char $\ast$log,...)
+\end{DoxyCompactItemize}
+\subsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+static char \hyperlink{hmi-debug_8h_a13d4c7647aad2e84766f8b48a6caab09}{E\+R\+R\+O\+R\+\_\+\+F\+L\+AG} \mbox{[}6\mbox{]}\mbox{[}20\mbox{]} = \{\char`\"{}N\+O\+NE\char`\"{}, \char`\"{}E\+R\+R\+OR\char`\"{}, \char`\"{}W\+A\+R\+N\+I\+NG\char`\"{}, \char`\"{}N\+O\+T\+I\+CE\char`\"{}, \char`\"{}I\+N\+FO\char`\"{}, \char`\"{}D\+E\+B\+UG\char`\"{}\}
+\end{DoxyCompactItemize}
+
+
+\subsection{Macro Definition Documentation}
+\mbox{\Hypertarget{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}\label{hmi-debug_8h_a0d26d8b8201011dade787236519711c0}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!H\+M\+I\+\_\+\+D\+E\+B\+UG@{H\+M\+I\+\_\+\+D\+E\+B\+UG}}
+\index{H\+M\+I\+\_\+\+D\+E\+B\+UG@{H\+M\+I\+\_\+\+D\+E\+B\+UG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{H\+M\+I\+\_\+\+D\+E\+B\+UG}{HMI\_DEBUG}}
+{\footnotesize\ttfamily \#define H\+M\+I\+\_\+\+D\+E\+B\+UG(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
+
+
+
+Definition at line 22 of file hmi-\/debug.\+h.
+
+\mbox{\Hypertarget{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}\label{hmi-debug_8h_a65bb6c7cfe38f8a724beab5059d36fb2}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!H\+M\+I\+\_\+\+E\+R\+R\+OR@{H\+M\+I\+\_\+\+E\+R\+R\+OR}}
+\index{H\+M\+I\+\_\+\+E\+R\+R\+OR@{H\+M\+I\+\_\+\+E\+R\+R\+OR}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{H\+M\+I\+\_\+\+E\+R\+R\+OR}{HMI\_ERROR}}
+{\footnotesize\ttfamily \#define H\+M\+I\+\_\+\+E\+R\+R\+OR(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+, \+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args, \#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
+
+
+
+Definition at line 18 of file hmi-\/debug.\+h.
+
+\mbox{\Hypertarget{hmi-debug_8h_a11b249a67108f0f4c50a0fc8a3eb4f5c}\label{hmi-debug_8h_a11b249a67108f0f4c50a0fc8a3eb4f5c}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!H\+M\+I\+\_\+\+I\+N\+FO@{H\+M\+I\+\_\+\+I\+N\+FO}}
+\index{H\+M\+I\+\_\+\+I\+N\+FO@{H\+M\+I\+\_\+\+I\+N\+FO}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{H\+M\+I\+\_\+\+I\+N\+FO}{HMI\_INFO}}
+{\footnotesize\ttfamily \#define H\+M\+I\+\_\+\+I\+N\+FO(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
+
+
+
+Definition at line 21 of file hmi-\/debug.\+h.
+
+\mbox{\Hypertarget{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}\label{hmi-debug_8h_abc0d6e0760017d8ae48b836925b2ef15}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!H\+M\+I\+\_\+\+N\+O\+T\+I\+CE@{H\+M\+I\+\_\+\+N\+O\+T\+I\+CE}}
+\index{H\+M\+I\+\_\+\+N\+O\+T\+I\+CE@{H\+M\+I\+\_\+\+N\+O\+T\+I\+CE}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{H\+M\+I\+\_\+\+N\+O\+T\+I\+CE}{HMI\_NOTICE}}
+{\footnotesize\ttfamily \#define H\+M\+I\+\_\+\+N\+O\+T\+I\+CE(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
+
+
+
+Definition at line 20 of file hmi-\/debug.\+h.
+
+\mbox{\Hypertarget{hmi-debug_8h_a25361812432cd2480bc8f1a8e56ecbf7}\label{hmi-debug_8h_a25361812432cd2480bc8f1a8e56ecbf7}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG@{H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG}}
+\index{H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG@{H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG}{HMI\_WARNING}}
+{\footnotesize\ttfamily \#define H\+M\+I\+\_\+\+W\+A\+R\+N\+I\+NG(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{args, }\item[{}]{... }\end{DoxyParamCaption})~\hyperlink{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}(\hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG}, \+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+F\+U\+N\+C\+T\+I\+O\+N\+\_\+\+\_\+,\+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, prefix, args,\#\#\+\_\+\+\_\+\+V\+A\+\_\+\+A\+R\+G\+S\+\_\+\+\_\+)}
+
+
+
+Definition at line 19 of file hmi-\/debug.\+h.
+
+
+
+\subsection{Enumeration Type Documentation}
+\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+EL@{L\+O\+G\+\_\+\+L\+E\+V\+EL}}
+\index{L\+O\+G\+\_\+\+L\+E\+V\+EL@{L\+O\+G\+\_\+\+L\+E\+V\+EL}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{L\+O\+G\+\_\+\+L\+E\+V\+EL}{LOG\_LEVEL}}
+{\footnotesize\ttfamily enum \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}{L\+O\+G\+\_\+\+L\+E\+V\+EL}}
+
+\begin{DoxyEnumFields}{Enumerator}
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+NE&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+E\+R\+R\+OR&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+W\+A\+R\+N\+I\+NG&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+N\+O\+T\+I\+CE&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+I\+N\+FO&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+D\+E\+B\+UG&\\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX@{L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX}}}\mbox{\Hypertarget{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444}\label{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444}}
+L\+O\+G\+\_\+\+L\+E\+V\+E\+L\+\_\+\+M\+AX&\\
+\hline
+
+\end{DoxyEnumFields}
+
+
+Definition at line 8 of file hmi-\/debug.\+h.
+
+
+\begin{DoxyCode}
+8 \{
+9 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a69dacb1837e1e37c6ed34cc2ee1d8848}{LOG\_LEVEL\_NONE} = 0,
+10 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}{LOG\_LEVEL\_ERROR},
+11 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b4dd81b4dc7eefbc55ba03415c627ef}{LOG\_LEVEL\_WARNING},
+12 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a23ae4d711a7bbb3900240cb7316b4b4e}{LOG\_LEVEL\_NOTICE},
+13 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583aedee1e3159bfe7d918b6e29873c5aee4}{LOG\_LEVEL\_INFO},
+14 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a538b2b6e011479d408ecd2be0f6d6177}{LOG\_LEVEL\_DEBUG},
+15 \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a0459003454bc8bb17752e6d8e5787444}{LOG\_LEVEL\_MAX} = \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583a5b40f003febbc3b535649d63f4b8a44f}{LOG\_LEVEL\_ERROR}
+16 \};
+\end{DoxyCode}
+
+
+\subsection{Function Documentation}
+\mbox{\Hypertarget{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}\label{hmi-debug_8h_a0846b9d51e2e0612c4825a9a581aa40a}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!\+\_\+\+H\+M\+I\+\_\+\+L\+OG@{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}}
+\index{\+\_\+\+H\+M\+I\+\_\+\+L\+OG@{\+\_\+\+H\+M\+I\+\_\+\+L\+OG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{\+\_\+\+H\+M\+I\+\_\+\+L\+O\+G()}{\_HMI\_LOG()}}
+{\footnotesize\ttfamily static void \+\_\+\+H\+M\+I\+\_\+\+L\+OG (\begin{DoxyParamCaption}\item[{enum \hyperlink{hmi-debug_8h_aa5a9053636a30269210c54e734e0d583}{L\+O\+G\+\_\+\+L\+E\+V\+EL}}]{level, }\item[{const char $\ast$}]{file, }\item[{const char $\ast$}]{func, }\item[{const int}]{line, }\item[{const char $\ast$}]{prefix, }\item[{const char $\ast$}]{log, }\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line 26 of file hmi-\/debug.\+h.
+
+
+\begin{DoxyCode}
+27 \{
+28 \textcolor{keyword}{const} \textcolor{keywordtype}{int} log\_level = (getenv(\textcolor{stringliteral}{"USE\_HMI\_DEBUG"}) == NULL)?0:atoi(getenv(\textcolor{stringliteral}{"USE\_HMI\_DEBUG"}));
+29 \textcolor{keywordflow}{if}(log\_level < level)
+30 \{
+31 \textcolor{keywordflow}{return};
+32 \}
+33
+34 \textcolor{keywordtype}{char} *message;
+35 \textcolor{keyword}{struct }timespec tp;
+36 \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{int} time;
+37
+38 clock\_gettime(CLOCK\_REALTIME, &tp);
+39 time = (tp.tv\_sec * 1000000L) + (tp.tv\_nsec / 1000);
+40
+41 va\_list args;
+42 va\_start(args, log);
+43 \textcolor{keywordflow}{if} (log == NULL || vasprintf(&message, log, args) < 0)
+44 message = NULL;
+45 fprintf(stderr, \textcolor{stringliteral}{"[%10.3f] [%s %s] [%s:%d] >>> %s \(\backslash\)n"}, time / 1000.0, prefix,
+ \hyperlink{hmi-debug_8h_a13d4c7647aad2e84766f8b48a6caab09}{ERROR\_FLAG}[level], func, line, message);
+46 va\_end(args);
+47 free(message);
+48 \}
+\end{DoxyCode}
+
+
+\subsection{Variable Documentation}
+\mbox{\Hypertarget{hmi-debug_8h_a13d4c7647aad2e84766f8b48a6caab09}\label{hmi-debug_8h_a13d4c7647aad2e84766f8b48a6caab09}}
+\index{hmi-\/debug.\+h@{hmi-\/debug.\+h}!E\+R\+R\+O\+R\+\_\+\+F\+L\+AG@{E\+R\+R\+O\+R\+\_\+\+F\+L\+AG}}
+\index{E\+R\+R\+O\+R\+\_\+\+F\+L\+AG@{E\+R\+R\+O\+R\+\_\+\+F\+L\+AG}!hmi-\/debug.\+h@{hmi-\/debug.\+h}}
+\subsubsection{\texorpdfstring{E\+R\+R\+O\+R\+\_\+\+F\+L\+AG}{ERROR\_FLAG}}
+{\footnotesize\ttfamily char E\+R\+R\+O\+R\+\_\+\+F\+L\+AG\mbox{[}6\mbox{]}\mbox{[}20\mbox{]} = \{\char`\"{}N\+O\+NE\char`\"{}, \char`\"{}E\+R\+R\+OR\char`\"{}, \char`\"{}W\+A\+R\+N\+I\+NG\char`\"{}, \char`\"{}N\+O\+T\+I\+CE\char`\"{}, \char`\"{}I\+N\+FO\char`\"{}, \char`\"{}D\+E\+B\+UG\char`\"{}\}\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Definition at line 24 of file hmi-\/debug.\+h.
+
diff --git a/doc/api-ref/latex/df/d7d/structevent.tex b/doc/api-ref/latex/df/d7d/structevent.tex
index 5eb6636..d33a2da 100644
--- a/doc/api-ref/latex/df/d7d/structevent.tex
+++ b/doc/api-ref/latex/df/d7d/structevent.tex
@@ -41,4 +41,4 @@ Definition at line 36 of file homescreen.\+c.
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
-homescreen\+\_\+service/\hyperlink{homescreen_8c}{homescreen.\+c}\end{DoxyCompactItemize}
+src/\hyperlink{homescreen_8c}{homescreen.\+c}\end{DoxyCompactItemize}
diff --git a/doc/api-ref/latex/df/dac/test_8cpp.tex b/doc/api-ref/latex/df/dac/test_8cpp.tex
index cbc5bce..92ef1df 100644
--- a/doc/api-ref/latex/df/dac/test_8cpp.tex
+++ b/doc/api-ref/latex/df/dac/test_8cpp.tex
@@ -1,6 +1,6 @@
\hypertarget{test_8cpp}{}\section{libhomescreen/test.cpp File Reference}
\label{test_8cpp}\index{libhomescreen/test.\+cpp@{libhomescreen/test.\+cpp}}
-{\ttfamily \#include $<$libhomescreen/libhomescreen.\+hpp$>$}\newline
+{\ttfamily \#include $<$libhomescreen.\+hpp$>$}\newline
{\ttfamily \#include $<$iostream$>$}\newline
{\ttfamily \#include $<$glib-\/2.\+0/glib.\+h$>$}\newline
{\ttfamily \#include $<$fcntl.\+h$>$}\newline
@@ -143,26 +143,35 @@ Definition at line 117 of file test.\+cpp.
160 \textcolor{comment}{// hs->subscribe(event\_list[1]);}
161
162 \hyperlink{test_8cpp_a529acbd1fed9d98a587edfa62309fa8d}{hs}->\hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\_event\_handler}(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154a4b0a82d501e4db5fbfe25c254c92896f}{LibHomeScreen::Event\_TapShortcut}
- , [](\textcolor{keyword}{const} \textcolor{keywordtype}{char}* application\_name)\{
-163 cout << \textcolor{stringliteral}{"set\_event\_handler Event\_TapShortcut application\_name = "} << application\_name << endl;
-164 \});
-165
-166 \hyperlink{test_8cpp_a529acbd1fed9d98a587edfa62309fa8d}{hs}->\hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\_event\_handler}(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{LibHomeScreen::Event\_OnScreenMessage}
- , [](\textcolor{keyword}{const} \textcolor{keywordtype}{char}* display\_message)\{
-167 cout << \textcolor{stringliteral}{"set\_event\_handler Event\_OnScreenMessage display\_message = "} << display\_message << endl;
-168 \});
-169
-170
-171 \textcolor{keywordflow}{if} (ret < 0) \{
-172 printf(\textcolor{stringliteral}{"failed to create event loop"});
-173 \textcolor{keywordflow}{return} -1;
-174 \}
-175 \hyperlink{test_8cpp_a529acbd1fed9d98a587edfa62309fa8d}{hs}->\hyperlink{class_lib_home_screen_a32d3282898d0f04151c24b4103511e00}{runEventloop}();
-176
-177 \hyperlink{test_8cpp_aa9b3c43c212b49edee82ac30a11aa255}{call\_test}();
-178
-179 \textcolor{keywordflow}{return} 0;
-180 \}
+ , [](json\_object *\textcolor{keywordtype}{object})\{
+163 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *application\_name = json\_object\_get\_string(
+164 json\_object\_object\_get(\textcolor{keywordtype}{object}, \textcolor{stringliteral}{"application\_name"}));
+165 cout << \textcolor{stringliteral}{"set\_event\_handler Event\_TapShortcut application\_name = "} << application\_name << endl;
+166 \});
+167
+168 \hyperlink{test_8cpp_a529acbd1fed9d98a587edfa62309fa8d}{hs}->\hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\_event\_handler}(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154aea56fa32a124a8ddcbea127755280a1d}{LibHomeScreen::Event\_OnScreenMessage}
+ , [](json\_object *\textcolor{keywordtype}{object})\{
+169 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *display\_message = json\_object\_get\_string(
+170 json\_object\_object\_get(\textcolor{keywordtype}{object}, \textcolor{stringliteral}{"display\_message"}));
+171 cout << \textcolor{stringliteral}{"set\_event\_handler Event\_OnScreenMessage display\_message = "} << display\_message << endl;
+172 \});
+173
+174 \hyperlink{test_8cpp_a529acbd1fed9d98a587edfa62309fa8d}{hs}->\hyperlink{class_lib_home_screen_ab1b0e08bf35415de9064afed899e9f85}{set\_event\_handler}(\hyperlink{class_lib_home_screen_a82616c91ac211d2ad08e709b524bf154acae91db4efc2394fd701f581d277a3fd}{LibHomeScreen::Event\_OnScreenReply}
+ , [](json\_object *\textcolor{keywordtype}{object})\{
+175 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *reply\_message = json\_object\_get\_string(
+176 json\_object\_object\_get(\textcolor{keywordtype}{object}, \textcolor{stringliteral}{"reply\_message"}));
+177 cout << \textcolor{stringliteral}{"set\_event\_handler Event\_OnScreenReply reply\_message = "} << reply\_message << endl;
+178 \});
+179
+180 \textcolor{keywordflow}{if} (ret < 0) \{
+181 printf(\textcolor{stringliteral}{"failed to create event loop"});
+182 \textcolor{keywordflow}{return} -1;
+183 \}
+184
+185 \hyperlink{test_8cpp_aa9b3c43c212b49edee82ac30a11aa255}{call\_test}();
+186
+187 \textcolor{keywordflow}{return} 0;
+188 \}
\end{DoxyCode}
\mbox{\Hypertarget{test_8cpp_a6a2874c419fe5936fcccadc7e6cf268e}\label{test_8cpp_a6a2874c419fe5936fcccadc7e6cf268e}}
\index{test.\+cpp@{test.\+cpp}!on\+Ev@{on\+Ev}}
diff --git a/doc/api-ref/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/doc/api-ref/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
new file mode 100644
index 0000000..4a60c25
--- /dev/null
+++ b/doc/api-ref/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
@@ -0,0 +1,11 @@
+\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\section{src Directory Reference}
+\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item
+file \hyperlink{homescreen_8c}{homescreen.\+c}
+\item
+file \hyperlink{hs-helper_8c}{hs-\/helper.\+c}
+\item
+file \hyperlink{hs-helper_8h}{hs-\/helper.\+h}
+\end{DoxyCompactItemize}
diff --git a/doc/api-ref/latex/dir_d44c64559bbebec7f509842c48db8b23.tex b/doc/api-ref/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
index ab82131..c00f852 100644
--- a/doc/api-ref/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
+++ b/doc/api-ref/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
@@ -1,7 +1,9 @@
\hypertarget{dir_d44c64559bbebec7f509842c48db8b23}{}\section{include Directory Reference}
\label{dir_d44c64559bbebec7f509842c48db8b23}\index{include Directory Reference@{include Directory Reference}}
-\subsection*{Directories}
+\subsection*{Files}
\begin{DoxyCompactItemize}
\item
-directory \hyperlink{dir_0f70dc74e67ded1ed6ea12b5a24cac83}{libhomescreen}
+file \hyperlink{hmi-debug_8h}{hmi-\/debug.\+h}
+\item
+file \hyperlink{libhomescreen_8hpp}{libhomescreen.\+hpp}
\end{DoxyCompactItemize}
diff --git a/doc/api-ref/latex/files.tex b/doc/api-ref/latex/files.tex
index d076b5a..d348dbe 100644
--- a/doc/api-ref/latex/files.tex
+++ b/doc/api-ref/latex/files.tex
@@ -1,9 +1,10 @@
\section{File List}
Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList}
-\item\contentsline{section}{homescreen\+\_\+service/\hyperlink{homescreen_8c}{homescreen.\+c} }{\pageref{homescreen_8c}}{}
-\item\contentsline{section}{homescreen\+\_\+service/\hyperlink{hs-helper_8c}{hs-\/helper.\+c} }{\pageref{hs-helper_8c}}{}
-\item\contentsline{section}{homescreen\+\_\+service/\hyperlink{hs-helper_8h}{hs-\/helper.\+h} }{\pageref{hs-helper_8h}}{}
-\item\contentsline{section}{include/libhomescreen/\hyperlink{libhomescreen_8hpp}{libhomescreen.\+hpp} }{\pageref{libhomescreen_8hpp}}{}
+\item\contentsline{section}{include/\hyperlink{hmi-debug_8h}{hmi-\/debug.\+h} }{\pageref{hmi-debug_8h}}{}
+\item\contentsline{section}{include/\hyperlink{libhomescreen_8hpp}{libhomescreen.\+hpp} }{\pageref{libhomescreen_8hpp}}{}
\item\contentsline{section}{libhomescreen/\hyperlink{libhomescreen_8cpp}{libhomescreen.\+cpp} }{\pageref{libhomescreen_8cpp}}{}
\item\contentsline{section}{libhomescreen/\hyperlink{test_8cpp}{test.\+cpp} }{\pageref{test_8cpp}}{}
+\item\contentsline{section}{src/\hyperlink{homescreen_8c}{homescreen.\+c} }{\pageref{homescreen_8c}}{}
+\item\contentsline{section}{src/\hyperlink{hs-helper_8c}{hs-\/helper.\+c} }{\pageref{hs-helper_8c}}{}
+\item\contentsline{section}{src/\hyperlink{hs-helper_8h}{hs-\/helper.\+h} }{\pageref{hs-helper_8h}}{}
\end{DoxyCompactList}
diff --git a/doc/api-ref/latex/refman.tex b/doc/api-ref/latex/refman.tex
index 2a03ade..1559bf7 100644
--- a/doc/api-ref/latex/refman.tex
+++ b/doc/api-ref/latex/refman.tex
@@ -146,12 +146,13 @@
\input{df/d7d/structevent}
\input{de/dd0/class_lib_home_screen}
\chapter{File Documentation}
-\input{d0/d1e/homescreen_8c}
-\input{dd/d1d/hs-helper_8c}
-\input{d3/d3d/hs-helper_8h}
+\input{df/d76/hmi-debug_8h}
\input{df/d43/libhomescreen_8hpp}
\input{d0/d8a/libhomescreen_8cpp}
\input{df/dac/test_8cpp}
+\input{d0/d1e/homescreen_8c}
+\input{dd/d1d/hs-helper_8c}
+\input{d3/d3d/hs-helper_8h}
%--- End generated contents ---
% Index
diff --git a/doc/parts/initialize-registercallback.svg b/doc/parts/initialize-registercallback.svg
new file mode 100644
index 0000000..cc861db
--- /dev/null
+++ b/doc/parts/initialize-registercallback.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="330px" preserveAspectRatio="none" style="width:436px;height:330px;" version="1.1" viewBox="0 0 436 330" width="436px" zoomAndPan="magnify"><defs><filter height="300%" id="f1rrry8f9c71eg" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="412" x="12" y="22.9951">Application initialization phase (ex. registerCallback)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="58.5" x2="58.5" y1="81.5938" y2="273.5234"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="194.5" x2="194.5" y1="81.5938" y2="273.5234"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="335.5" x2="335.5" y1="81.5938" y2="273.5234"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="42.5" y="78.292">App</text><ellipse cx="59" cy="49.2969" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="47" x2="71" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="42.5" y="285.5186">App</text><ellipse cx="59" cy="304.8203" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="47" x2="71" y1="318.8203" y2="318.8203"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="124.5" y="78.292">HomeScreenBinder</text><ellipse cx="195" cy="49.2969" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="183" x2="207" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="124.5" y="285.5186">HomeScreenBinder</text><ellipse cx="195" cy="304.8203" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="183" x2="207" y1="318.8203" y2="318.8203"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="275.5" y="78.292">HomeScreenGUI</text><ellipse cx="335.5" cy="49.2969" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="323.5" x2="347.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="275.5" y="285.5186">HomeScreenGUI</text><ellipse cx="335.5" cy="304.8203" fill="#FEFECE" filter="url(#f1rrry8f9c71eg)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="323.5" x2="347.5" y1="318.8203" y2="318.8203"/><polygon fill="#A80036" points="183,108.5938,193,112.5938,183,116.5938,187,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="59" x2="189" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="66" y="107.6606">init(port, token)</text><polygon fill="#A80036" points="183,137.7266,193,141.7266,183,145.7266,187,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="59" x2="189" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="66" y="136.7935">subscribe()</text><polygon fill="#FBFB77" filter="url(#f1rrry8f9c71eg)" points="40.5,154.8594,40.5,224.8594,345.5,224.8594,345.5,164.8594,335.5,154.8594,40.5,154.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="335.5" x2="335.5" y1="154.8594" y2="164.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="345.5" x2="335.5" y1="164.8594" y2="164.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="284" x="46.5" y="171.9263">Register the event the App wishes to receive</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="46.5" y="187.0591">・tap_shortcut</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="145" x="46.5" y="202.1919">・on_screen_message</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="117" x="46.5" y="217.3247">・on_screen_reply</text><polygon fill="#A80036" points="183,251.3906,193,255.3906,183,259.3906,187,255.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="59" x2="189" y1="255.3906" y2="255.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="66" y="250.4575">registerCallback()</text><!--
+@startuml
+title Application initialization phase (ex. registerCallback)
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: init(port, token)
+App->HomeScreenBinder: subscribe()
+
+note over HomeScreenBinder
+ Register the event the App wishes to receive
+ ・tap_shortcut
+ ・on_screen_message
+ ・on_screen_reply
+end note
+
+App->HomeScreenBinder: registerCallback()
+@enduml
+
+PlantUML version 1.2017.18(Fri Oct 06 16:56:32 UTC 2017)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg> \ No newline at end of file
diff --git a/doc/parts/initialize-set-event-handler.svg b/doc/parts/initialize-set-event-handler.svg
new file mode 100644
index 0000000..176ec1f
--- /dev/null
+++ b/doc/parts/initialize-set-event-handler.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="301px" preserveAspectRatio="none" style="width:452px;height:301px;" version="1.1" viewBox="0 0 452 301" width="452px" zoomAndPan="magnify"><defs><filter height="300%" id="fo5flcejoga9p" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="428" x="12" y="22.9951">Application initialization phase (ex. set_event_handler)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="57.5" x2="57.5" y1="81.5938" y2="244.3906"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="209.5" x2="209.5" y1="81.5938" y2="244.3906"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="350.5" x2="350.5" y1="81.5938" y2="244.3906"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="41.5" y="78.292">App</text><ellipse cx="58" cy="49.2969" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="46" x2="70" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="41.5" y="256.3857">App</text><ellipse cx="58" cy="275.6875" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="46" x2="70" y1="289.6875" y2="289.6875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="139.5" y="78.292">HomeScreenBinder</text><ellipse cx="210" cy="49.2969" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="198" x2="222" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="139.5" y="256.3857">HomeScreenBinder</text><ellipse cx="210" cy="275.6875" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="198" x2="222" y1="289.6875" y2="289.6875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="290.5" y="78.292">HomeScreenGUI</text><ellipse cx="350.5" cy="49.2969" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="338.5" x2="362.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="290.5" y="256.3857">HomeScreenGUI</text><ellipse cx="350.5" cy="275.6875" fill="#FEFECE" filter="url(#fo5flcejoga9p)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="338.5" x2="362.5" y1="289.6875" y2="289.6875"/><polygon fill="#A80036" points="198,108.5938,208,112.5938,198,116.5938,202,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58" x2="204" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="65" y="107.6606">init(port, token)</text><polygon fill="#A80036" points="198,137.7266,208,141.7266,198,145.7266,202,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="58" x2="204" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="65" y="136.7935">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#fo5flcejoga9p)" points="49.5,154.8594,49.5,224.8594,365.5,224.8594,365.5,164.8594,355.5,154.8594,49.5,154.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="355.5" x2="355.5" y1="154.8594" y2="164.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="365.5" x2="355.5" y1="164.8594" y2="164.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="295" x="55.5" y="171.9263">setup event handler the App wishes to receive</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="244" x="55.5" y="187.0591">・LibHomeScreen::Event_TapShortcut</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="286" x="55.5" y="202.1919">・LibHomeScreen::Event_OnScreenMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="263" x="55.5" y="217.3247">・LibHomeScreen::Event_OnScreenReply</text><!--
+@startuml
+title Application initialization phase (ex. set_event_handler)
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: init(port, token)
+App->HomeScreenBinder: set_event_handler()
+
+note over HomeScreenBinder
+ setup event handler the App wishes to receive
+ ・LibHomeScreen::Event_TapShortcut
+ ・LibHomeScreen::Event_OnScreenMessage
+ ・LibHomeScreen::Event_OnScreenReply
+end note
+@enduml
+
+PlantUML version 1.2017.18(Fri Oct 06 16:56:32 UTC 2017)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg> \ No newline at end of file
diff --git a/doc/parts/initialize.svg b/doc/parts/initialize.svg
index 4ebf927..6e66c99 100644
--- a/doc/parts/initialize.svg
+++ b/doc/parts/initialize.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="399px" preserveAspectRatio="none" style="width:383px;height:399px;" version="1.1" viewBox="0 0 383 399" width="383px" zoomAndPan="magnify"><defs><filter height="300%" id="f1d1g4haip41mn" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="238" x="73.5" y="22.9951">Application initialization phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="24" x2="24" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="176" x2="176" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="317" x2="317" y1="81.5938" y2="341.7891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="78.292">App</text><ellipse cx="24.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="353.7842">App</text><ellipse cx="24.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="78.292">HomeScreenBinder</text><ellipse cx="176.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="353.7842">HomeScreenBinder</text><ellipse cx="176.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="78.292">HomeScreenGUI</text><ellipse cx="317" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="353.7842">HomeScreenGUI</text><ellipse cx="317" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="387.0859" y2="387.0859"/><polygon fill="#A80036" points="164.5,108.5938,174.5,112.5938,164.5,116.5938,168.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="31.5" y="107.6606">init(port, token)</text><polygon fill="#A80036" points="164.5,137.7266,174.5,141.7266,164.5,145.7266,168.5,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="31.5" y="136.7935">subscribe()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="54,154.8594,54,194.8594,295,194.8594,295,164.8594,285,154.8594,54,154.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="285" x2="285" y1="154.8594" y2="164.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="295" x2="285" y1="164.8594" y2="164.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="60" y="171.9263">Appが受信したいイベントを登録する</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="60" y="187.0591">・tap_shortcut</text><polygon fill="#A80036" points="164.5,221.125,174.5,225.125,164.5,229.125,168.5,225.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="225.125" y2="225.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="31.5" y="220.1919">registerCallback()</text><polygon fill="#A80036" points="164.5,250.2578,174.5,254.2578,164.5,258.2578,168.5,254.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="254.2578" y2="254.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="31.5" y="249.3247">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="31,267.3906,31,322.3906,318,322.3906,318,277.3906,308,267.3906,31,267.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308" x2="308" y1="267.3906" y2="277.3906"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="318" x2="308" y1="277.3906" y2="277.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="37" y="284.4575">イベント受信のコールバック登録</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="206" x="37" y="299.5903">registerCallbackによる登録または</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="266" x="37" y="314.7231">set_event_handlerによる登録どちらかでOK</text><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="399px" preserveAspectRatio="none" style="width:383px;height:399px;" version="1.1" viewBox="0 0 383 399" width="383px" zoomAndPan="magnify"><defs><filter height="300%" id="f1d1g4haip41mn" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="238" x="73.5" y="22.9951">Application initialization phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="24" x2="24" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="176" x2="176" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="317" x2="317" y1="81.5938" y2="341.7891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="78.292">App</text><ellipse cx="24.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="353.7842">App</text><ellipse cx="24.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="78.292">HomeScreenBinder</text><ellipse cx="176.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="353.7842">HomeScreenBinder</text><ellipse cx="176.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="78.292">HomeScreenGUI</text><ellipse cx="317" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="353.7842">HomeScreenGUI</text><ellipse cx="317" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="387.0859" y2="387.0859"/><polygon fill="#A80036" points="164.5,108.5938,174.5,112.5938,164.5,116.5938,168.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="31.5" y="107.6606">init(port, token)</text><polygon fill="#A80036" points="164.5,137.7266,174.5,141.7266,164.5,145.7266,168.5,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="31.5" y="136.7935">subscribe()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="54,154.8594,54,194.8594,295,194.8594,295,164.8594,285,154.8594,54,154.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="285" x2="285" y1="154.8594" y2="164.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="295" x2="285" y1="164.8594" y2="164.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="60" y="171.9263">Appが受信したいイベントを登録する</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="60" y="187.0591">・tap_shortcut</text><polygon fill="#A80036" points="164.5,221.125,174.5,225.125,164.5,229.125,168.5,225.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="225.125" y2="225.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="31.5" y="220.1919">registerCallback()</text><polygon fill="#A80036" points="164.5,250.2578,174.5,254.2578,164.5,258.2578,168.5,254.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="254.2578" y2="254.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="31.5" y="249.3247">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="31,267.3906,31,322.3906,318,322.3906,318,277.3906,308,267.3906,31,267.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308" x2="308" y1="267.3906" y2="277.3906"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="318" x2="308" y1="277.3906" y2="277.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="37" y="284.4575">イベント受信のコールバック登録</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="206" x="37" y="299.5903">registerCallbackによる登録または</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="266" x="37" y="314.7231">set_event_handlerによる登録どちらかでOK</text><!--
@startuml
title Application initialization phase
entity App
@@ -21,14 +21,14 @@ note over HomeScreenBinder
set_event_handlerによる登録どちらかでOK
end note
@enduml
-
-PlantUML version 1.2017.18beta10(Unknown compile time)
-(GPL source distribution)
-Java Runtime: Java(TM) SE Runtime Environment
-JVM: Java HotSpot(TM) 64-Bit Server VM
-Java Version: 1.7.0_25-b15
-Operating System: Linux
-Default Encoding: UTF-8
-Language: en
-Country: US
+
+PlantUML version 1.2017.18beta10(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
--></g></svg> \ No newline at end of file
diff --git a/doc/parts/on_screen_message.svg b/doc/parts/on_screen_message.svg
index b7a82bd..66ceed3 100644
--- a/doc/parts/on_screen_message.svg
+++ b/doc/parts/on_screen_message.svg
@@ -1,14 +1,30 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="217px" preserveAspectRatio="none" style="width:585px;height:217px;" version="1.1" viewBox="0 0 585 217" width="585px" zoomAndPan="magnify"><defs><filter height="300%" id="f1tu3ie33v7cnu" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="361" x="113.25" y="22.9951">Application Callback Event TapShortcut phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="24" x2="24" y1="81.5938" y2="159.8594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="286" x2="286" y1="81.5938" y2="159.8594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="519.5" x2="519.5" y1="81.5938" y2="159.8594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="78.292">App</text><ellipse cx="24.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="171.8545">App</text><ellipse cx="24.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="205.1563" y2="205.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="216" y="78.292">HomeScreenBinder</text><ellipse cx="286.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="274.5" x2="298.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="216" y="171.8545">HomeScreenBinder</text><ellipse cx="286.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="274.5" x2="298.5" y1="205.1563" y2="205.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="459.5" y="78.292">HomeScreenGUI</text><ellipse cx="519.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="507.5" x2="531.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="459.5" y="171.8545">HomeScreenGUI</text><ellipse cx="519.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="507.5" x2="531.5" y1="205.1563" y2="205.1563"/><polygon fill="#A80036" points="274.5,108.5938,284.5,112.5938,274.5,116.5938,278.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="280.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="31.5" y="107.6606">onScreenMessage(display_message)</text><polygon fill="#A80036" points="507.5,137.7266,517.5,141.7266,507.5,145.7266,511.5,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="286.5" x2="513.5" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="209" x="293.5" y="136.7935">eventCallback(display_message)</text><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="411px" preserveAspectRatio="none" style="width:799px;height:411px;" version="1.1" viewBox="0 0 799 411" width="799px" zoomAndPan="magnify"><defs><filter height="300%" id="f4ukdfhh6ocv4" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="480" x="159.5" y="22.9951">Application Callback Event On Screen Message / Reply phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="145" x2="145" y1="81.5938" y2="354.6563"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="407" x2="407" y1="81.5938" y2="354.6563"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="642.5" x2="642.5" y1="81.5938" y2="354.6563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="129" y="78.292">App</text><ellipse cx="145.5" cy="49.2969" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="133.5" x2="157.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="129" y="366.6514">App</text><ellipse cx="145.5" cy="385.9531" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="133.5" x2="157.5" y1="399.9531" y2="399.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="337" y="78.292">HomeScreenBinder</text><ellipse cx="407.5" cy="49.2969" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="395.5" x2="419.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="337" y="366.6514">HomeScreenBinder</text><ellipse cx="407.5" cy="385.9531" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="395.5" x2="419.5" y1="399.9531" y2="399.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="582.5" y="78.292">HomeScreenGUI</text><ellipse cx="642.5" cy="49.2969" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="630.5" x2="654.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="582.5" y="366.6514">HomeScreenGUI</text><ellipse cx="642.5" cy="385.9531" fill="#FEFECE" filter="url(#f4ukdfhh6ocv4)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="630.5" x2="654.5" y1="399.9531" y2="399.9531"/><polygon fill="#A80036" points="418.5,108.5938,408.5,112.5938,418.5,116.5938,414.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="412.5" x2="641.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="424.5" y="107.6606">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#f4ukdfhh6ocv4)" points="493,125.7266,493,150.7266,787,150.7266,787,135.7266,777,125.7266,493,125.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="777" x2="777" y1="125.7266" y2="135.7266"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="787" x2="777" y1="135.7266" y2="135.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="273" x="499" y="142.7935">LibHomeScreen::Event_OnScreenMessage</text><polygon fill="#A80036" points="395.5,176.8594,405.5,180.8594,395.5,184.8594,399.5,180.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="145.5" x2="401.5" y1="180.8594" y2="180.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="152.5" y="175.9263">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#f4ukdfhh6ocv4)" points="8,193.9922,8,218.9922,279,218.9922,279,203.9922,269,193.9922,8,193.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="269" x2="269" y1="193.9922" y2="203.9922"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="279" x2="269" y1="203.9922" y2="203.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="250" x="14" y="211.0591">LibHomeScreen::Event_OnScreenReply</text><polygon fill="#A80036" points="395.5,245.125,405.5,249.125,395.5,253.125,399.5,249.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="145.5" x2="401.5" y1="249.125" y2="249.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="152.5" y="244.1919">onScreenMessage(display_message)</text><polygon fill="#A80036" points="630.5,274.2578,640.5,278.2578,630.5,282.2578,634.5,278.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="407.5" x2="636.5" y1="278.2578" y2="278.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="211" x="414.5" y="273.3247">event_handler(display_message)</text><polygon fill="#A80036" points="418.5,303.3906,408.5,307.3906,418.5,311.3906,414.5,307.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="412.5" x2="641.5" y1="307.3906" y2="307.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="424.5" y="302.4575">onScreenReply(reply_message)</text><polygon fill="#A80036" points="156.5,332.5234,146.5,336.5234,156.5,340.5234,152.5,336.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="150.5" x2="406.5" y1="336.5234" y2="336.5234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="198" x="162.5" y="331.5903">event_handler(reply_message)</text><!--
@startuml
-title Application Callback Event TapShortcut phase
+title Application Callback Event On Screen Message / Reply phase
entity App
entity HomeScreenBinder
entity HomeScreenGUI
+
+HomeScreenGUI->HomeScreenBinder: set_event_handler()
+
+note over HomeScreenGUI
+ LibHomeScreen::Event_OnScreenMessage
+end note
+
+
+App->HomeScreenBinder: set_event_handler()
+
+note over App
+ LibHomeScreen::Event_OnScreenReply
+end note
+
App->HomeScreenBinder: onScreenMessage(display_message)
-HomeScreenBinder->HomeScreenGUI: eventCallback(display_message)
+HomeScreenBinder->HomeScreenGUI: event_handler(display_message)
+HomeScreenGUI->HomeScreenBinder: onScreenReply(reply_message)
+HomeScreenBinder->App: event_handler(reply_message)
@enduml
-PlantUML version 1.2017.18beta10(Unknown compile time)
+PlantUML version 1.2017.18(Fri Oct 06 16:56:32 UTC 2017)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
diff --git a/doc/parts/tap_shortcut.svg b/doc/parts/tap_shortcut.svg
index 2d2436b..d454164 100644
--- a/doc/parts/tap_shortcut.svg
+++ b/doc/parts/tap_shortcut.svg
@@ -1,18 +1,20 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="271px" preserveAspectRatio="none" style="width:707px;height:271px;" version="1.1" viewBox="0 0 707 271" width="707px" zoomAndPan="magnify"><defs><filter height="300%" id="fh1g4l6nfhbas" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="361" x="174.25" y="22.9951">Application Callback Event TapShortcut phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="182" x2="182" y1="81.5938" y2="214.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="418" x2="418" y1="81.5938" y2="214.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="641.5" x2="641.5" y1="81.5938" y2="214.125"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="166" y="78.292">App</text><ellipse cx="182.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="170.5" x2="194.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="166" y="226.1201">App</text><ellipse cx="182.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="170.5" x2="194.5" y1="259.4219" y2="259.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="348" y="78.292">HomeScreenBinder</text><ellipse cx="418.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="406.5" x2="430.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="348" y="226.1201">HomeScreenBinder</text><ellipse cx="418.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="406.5" x2="430.5" y1="259.4219" y2="259.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="581.5" y="78.292">HomeScreenGUI</text><ellipse cx="641.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="629.5" x2="653.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="581.5" y="226.1201">HomeScreenGUI</text><ellipse cx="641.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="629.5" x2="653.5" y1="259.4219" y2="259.4219"/><polygon fill="#FBFB77" filter="url(#fh1g4l6nfhbas)" points="8,96.5938,8,136.5938,354,136.5938,354,106.5938,344,96.5938,8,96.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="344" x2="344" y1="96.5938" y2="106.5938"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="354" x2="344" y1="106.5938" y2="106.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="103" x="14" y="113.6606">Appは初期化時に</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="325" x="14" y="128.7935">TapShortcutのイベントを受け取る設定をしていること</text><polygon fill="#A80036" points="429.5,162.8594,419.5,166.8594,429.5,170.8594,425.5,166.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="423.5" x2="640.5" y1="166.8594" y2="166.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="199" x="435.5" y="161.9263">tapShortcut(application_name)</text><polygon fill="#A80036" points="193.5,191.9922,183.5,195.9922,193.5,199.9922,189.5,195.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="187.5" x2="417.5" y1="195.9922" y2="195.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="212" x="199.5" y="191.0591">eventCallback(application_name)</text><!--
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="285px" preserveAspectRatio="none" style="width:662px;height:285px;" version="1.1" viewBox="0 0 662 285" width="662px" zoomAndPan="magnify"><defs><filter height="300%" id="fijzwybejitm5" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="361" x="151.75" y="22.9951">Application Callback Event TapShortcut phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="135" x2="135" y1="81.5938" y2="228.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="373" x2="373" y1="81.5938" y2="228.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="596.5" x2="596.5" y1="81.5938" y2="228.125"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="119" y="78.292">App</text><ellipse cx="135.5" cy="49.2969" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="123.5" x2="147.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="119" y="240.1201">App</text><ellipse cx="135.5" cy="259.4219" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="123.5" x2="147.5" y1="273.4219" y2="273.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="303" y="78.292">HomeScreenBinder</text><ellipse cx="373.5" cy="49.2969" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="361.5" x2="385.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="303" y="240.1201">HomeScreenBinder</text><ellipse cx="373.5" cy="259.4219" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="361.5" x2="385.5" y1="273.4219" y2="273.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="536.5" y="78.292">HomeScreenGUI</text><ellipse cx="596.5" cy="49.2969" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="584.5" x2="608.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="536.5" y="240.1201">HomeScreenGUI</text><ellipse cx="596.5" cy="259.4219" fill="#FEFECE" filter="url(#fijzwybejitm5)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="584.5" x2="608.5" y1="273.4219" y2="273.4219"/><polygon fill="#A80036" points="361.5,108.5938,371.5,112.5938,361.5,116.5938,365.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="135.5" x2="367.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="142.5" y="107.6606">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#fijzwybejitm5)" points="8,125.7266,8,150.7266,260,150.7266,260,135.7266,250,125.7266,8,125.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="250" x2="250" y1="125.7266" y2="135.7266"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="260" x2="250" y1="135.7266" y2="135.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="231" x="14" y="142.7935">LibHomeScreen::Event_TapShortcut</text><polygon fill="#A80036" points="384.5,176.8594,374.5,180.8594,384.5,184.8594,380.5,180.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="378.5" x2="595.5" y1="180.8594" y2="180.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="199" x="390.5" y="175.9263">tapShortcut(application_name)</text><polygon fill="#A80036" points="146.5,205.9922,136.5,209.9922,146.5,213.9922,142.5,209.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="140.5" x2="372.5" y1="209.9922" y2="209.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="214" x="152.5" y="205.0591">event_handler(application_name)</text><!--
@startuml
title Application Callback Event TapShortcut phase
entity App
entity HomeScreenBinder
entity HomeScreenGUI
+App->HomeScreenBinder: set_event_handler()
+
note over App
- Appは初期化時に
- TapShortcutのイベントを受け取る設定をしていること
+ LibHomeScreen::Event_TapShortcut
end note
+
HomeScreenGUI->HomeScreenBinder: tapShortcut(application_name)
-HomeScreenBinder->App: eventCallback(application_name)
+HomeScreenBinder->App: event_handler(application_name)
@enduml
-PlantUML version 1.2017.18beta10(Unknown compile time)
+PlantUML version 1.2017.18(Fri Oct 06 16:56:32 UTC 2017)
(GPL source distribution)
Java Runtime: Java(TM) SE Runtime Environment
JVM: Java HotSpot(TM) 64-Bit Server VM
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;
}
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"
};