1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
<!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.11"/>
<title>HomeScreenBinding: libhomescreen/libhomescreen.cpp 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>
<script type="text/javascript">
$(document).ready(function() { init_search(); });
</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.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="../../index.html"><span>Main Page</span></a></li>
<li><a href="../../annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="../../files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="../../search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="../../files.html"><span>File List</span></a></li>
<li><a href="../../globals.html"><span>File Members</span></a></li>
</ul>
</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_65f76d62445e9e84c0450b12bf77c3bc.html">libhomescreen</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<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> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <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> <span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> <span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <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> <span class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <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> <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> <span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <stdarg.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include <sys/socket.h></span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <algorithm></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <errno.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <cassert></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <cctype></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <cerrno></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <cstdio></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <cstring></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <<a class="code" href="../../df/d43/libhomescreen_8hpp.html">libhomescreen.hpp</a>></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "hmi-debug.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using namespace </span><a class="code" href="../../d8/dcc/namespacestd.html">std</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <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>& verb);</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a1e2d6e77dd8f0162f830058579eab42f"> 35</a></span> <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">"homescreen"</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00"> 36</a></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00">ApplicationId</a>[] = <span class="stringliteral">"application_id"</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">const</span> std::vector<std::string> <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>  std::string(<span class="stringliteral">"ping"</span>), <span class="comment">// debug do not use</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::string(<span class="stringliteral">"tap_shortcut"</span>), <span class="comment">// HomeScreen Application only</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::string(<span class="stringliteral">"on_screen_message"</span>),</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::string(<span class="stringliteral">"on_screen_reply"</span>),</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  std::string(<span class="stringliteral">"subscribe"</span>),</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  std::string(<span class="stringliteral">"unsubscribe"</span>),</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::string(<span class="stringliteral">"showWindow"</span>),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::string(<span class="stringliteral">"hideWindow"</span>),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::string(<span class="stringliteral">"replyShowWindow"</span>),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::string(<span class="stringliteral">"showNotification"</span>),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::string(<span class="stringliteral">"showInformation"</span>)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">const</span> std::vector<std::string> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// std::string("tap_shortcut"),</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::string(<span class="stringliteral">"showWindow"</span>),</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::string(<span class="stringliteral">"on_screen_message"</span>),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::string(<span class="stringliteral">"on_screen_reply"</span>),</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::string(<span class="stringliteral">"hideWindow"</span>),</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::string(<span class="stringliteral">"replyShowWindow"</span>),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::string(<span class="stringliteral">"showNotification"</span>),</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::string(<span class="stringliteral">"showInformation"</span>),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::string(<span class="stringliteral">"none"</span>)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c"> 69</a></span> <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="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">static_cast<</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">></span>(closure)->on_hangup(NULL,wsj);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8"> 74</a></span> <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="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">/* LibHomeScreen is not called from other process */</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9"> 79</a></span> <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>* event, <span class="keyword">struct</span> afb_wsj1_msg *msg)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">static_cast<</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">></span>(closure)->on_event(NULL,event,msg);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7778933bffa862c63fa0a1b8219faa8b"> 84</a></span> <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="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">static_cast<</span><a class="code" href="../../de/dd0/class_lib_home_screen.html">LibHomeScreen</a>*<span class="keyword">></span>(closure)->on_reply(NULL,msg);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc"> 93</a></span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a724bd949c4154fad041f96a15ef0f5dc">LibHomeScreen::LibHomeScreen</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095"> 100</a></span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a249902aebf71a5383ca8ec6ae558d095">LibHomeScreen::~LibHomeScreen</a>()</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  sd_event_unref(mploop);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(sp_websock != NULL)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  afb_wsj1_unref(sp_websock);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6a57b573cc767725762ba9beab032220"> 126</a></span> <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> <a class="code" href="../../de/da4/simple-egl_8cpp.html#a300b6806fe6818927fe4df08f2398124">port</a>, <span class="keyword">const</span> <span class="keywordtype">string</span>& <a class="code" href="../../de/da4/simple-egl_8cpp.html#a623ef6987ef3bd185c07b28b13e46d34">token</a>)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(port > 0 && token.size() > 0)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  mport = <a class="code" href="../../de/da4/simple-egl_8cpp.html#a300b6806fe6818927fe4df08f2398124">port</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  mtoken = <a class="code" href="../../de/da4/simple-egl_8cpp.html#a623ef6987ef3bd185c07b28b13e46d34">token</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"port and token should be > 0, Initial port and token uses."</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ret = initialize_websocket();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(ret != 0 )</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to initialize websocket"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">else</span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Initialized"</span>);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a2789e8a5372202cc36f48e71dbb9b7cf"> 165</a></span> <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="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">void</span> (*event_cb)(<span class="keyword">const</span> std::string& event, <span class="keyword">struct</span> json_object* event_contents),</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">void</span> (*reply_cb)(<span class="keyword">struct</span> json_object* reply_contents),</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">void</span> (*hangup_cb)(<span class="keywordtype">void</span>))</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  onEvent = event_cb;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  onReply = reply_cb;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  onHangup = hangup_cb;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">int</span> LibHomeScreen::initialize_websocket()</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  mploop = NULL;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  onEvent = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  onReply = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">int</span> ret = sd_event_default(&mploop);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(ret < 0)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to create event loop"</span>);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">/* Initialize interface from websocket */</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  minterface.on_hangup = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a73c05b96c151e5e46c28585ccb143c1c">_on_hangup_static</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  minterface.on_call = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a782a05fde0f1c17e0c4c8f972a3f53c8">_on_call_static</a>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  minterface.on_event = <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a3df86185aa9453726556da201d95a6f9">_on_event_static</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  muri += <span class="stringliteral">"ws://localhost:"</span> + to_string(mport) + <span class="stringliteral">"/api?token="</span> + mtoken; <span class="comment">/*To be modified*/</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  sp_websock = afb_ws_client_connect_wsj1(mploop, muri.c_str(), &minterface, <span class="keyword">this</span>);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(sp_websock == NULL)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to create websocket connection"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">goto</span> END;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">/* creates the evsrc */</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">//ret = sd_event_add_io(mploop,&mevent_src, sp_websock->fd, EPOLLIN, event_callback, NULL);</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> END:</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span>(mploop)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  sd_event_unref(mploop);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6ca8ff4a2aa019a735afaff713e0ef44"> 222</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6ca8ff4a2aa019a735afaff713e0ef44">LibHomeScreen::tapShortcut</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_id)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">struct </span>json_object* obj = json_object_new_object();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(<span class="stringliteral">"normal"</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  json_object_object_add(obj, <span class="stringliteral">"area"</span>, val);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <a class="code" href="../../d6/dda/homescreen_8cpp.html#ae475c69e7ca2a539ae0fb40a82963ac1">showWindow</a>(application_id, obj);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ac336482036a72b51a822725f1929523c"> 242</a></span> <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="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(display_message);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  json_object_object_add(j_obj, <span class="stringliteral">"display_message"</span>, val);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"on_screen_message"</span>, j_obj);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6c065f41f2c5d1f58d2763bfb4da9c37"> 266</a></span> <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="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(reply_message);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  json_object_object_add(j_obj, <span class="stringliteral">"reply_message"</span>, val);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"on_screen_reply"</span>, j_obj);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1b0e08bf35415de9064afed899e9f85"> 295</a></span> <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="l00296"></a><span class="lineno"> 296</span> {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (et >= 1 && et <= 7) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">switch</span> (et) {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment">/* case Event_TapShortcut:</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"> this->subscribe(LibHomeScreen::event_list[0]);</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"> break;*/</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">case</span> Event_ShowWindow:</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">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="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">case</span> Event_OnScreenMessage:</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">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="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> Event_OnScreenReply:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">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="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> Event_HideWindow:</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[3]);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">case</span> Event_ReplyShowWindow:</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[4]);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">case</span> Event_ShowNotification:</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[5]);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">case</span> Event_ShowInformation:</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  this-><a class="code" href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">subscribe</a>(<a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[6]);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  this->handlers[et] = std::move(f);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <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>& verb, <span class="keyword">struct</span> json_object* arg)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <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="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"verb doesn't exit"</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  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="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span> (ret < 0) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to call verb:%s"</span>,verb.c_str());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab5e8e8ab7d53e0f114e9e907fcbb7643"> 377</a></span> <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="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <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="l00385"></a><span class="lineno"> 385</span>  {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"verb doesn't exit"</span>);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  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="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span> (ret < 0) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to call verb:%s"</span>,verb);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aa4c189807b75d070f567967f0d690738"> 409</a></span> <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>& event_name)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  }</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  json_object_object_add(j_obj, <span class="stringliteral">"event"</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <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">"subscribe"</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="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">if</span> (ret < 0) {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to call verb"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#aac03a45cbd453ba69ddb00c1016930a6"> 438</a></span> <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>& event_name)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  json_object_object_add(j_obj, <span class="stringliteral">"event"</span>, json_object_new_string(event_name.c_str()));</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <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">"unsubscribe"</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="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span> (ret < 0) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"Failed to call verb"</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> </div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a69fc770cb3f94d30a10c2c8c81eb892f"> 467</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a69fc770cb3f94d30a10c2c8c81eb892f">LibHomeScreen::showWindow</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_id, json_object* json)</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(application_id);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  json_object_object_add(j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00">ApplicationId</a>, val);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span> (json == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">struct </span>json_object* j_json = json_object_new_object();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keyword">struct </span>json_object* value = json_object_new_string(<span class="stringliteral">"normal"</span>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  json_object_object_add(j_json, <span class="stringliteral">"area"</span>, value);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  json_object_object_add(j_obj, <span class="stringliteral">"parameter"</span>, j_json);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  json_object_object_add(j_obj, <span class="stringliteral">"parameter"</span>, json);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"showWindow"</span>, j_obj);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span> }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div><div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a4dbaea6c7b310e8ce7207155ff11b32a"> 503</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a4dbaea6c7b310e8ce7207155ff11b32a">LibHomeScreen::hideWindow</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_id)</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(application_id);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  json_object_object_add(j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00">ApplicationId</a>, val);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"hideWindow"</span>, j_obj);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a6310b129fc85ef0623e2e2063950cc4b"> 530</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6310b129fc85ef0623e2e2063950cc4b">LibHomeScreen::replyShowWindow</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* application_id, json_object* json)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span> (json == <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">HMI_WARNING</a>(<span class="stringliteral">"libhomescreen"</span>, <span class="stringliteral">"replyShowWindow`s parameter is null"</span>);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span> </div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">struct </span>json_object* j_obj = json_object_new_object();</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">struct </span>json_object* val = json_object_new_string(application_id);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  json_object_object_add(j_obj, <a class="code" href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00">ApplicationId</a>, val);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  json_object_object_add(j_obj, <span class="stringliteral">"parameter"</span>, json);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"replyShowWindow"</span>, j_obj);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span> }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a93ad567ed597a80a344ba82457c2bd7f"> 562</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#a93ad567ed597a80a344ba82457c2bd7f">LibHomeScreen::showNotification</a>(json_object* json)</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"showNotification"</span>, json);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span> </div><div class="line"><a name="l00584"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ada999aeb0444c964428bdf1ee236727f"> 584</a></span> <span class="keywordtype">int</span> <a class="code" href="../../de/dd0/class_lib_home_screen.html#ada999aeb0444c964428bdf1ee236727f">LibHomeScreen::showInformation</a>(json_object* json)</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span> {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">if</span>(!sp_websock)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">return</span> this->call(<span class="stringliteral">"showInformation"</span>, json);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="comment">/************* Callback Function *************/</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#ab1c1fa69f24b981e824dd9fb810c4b74"> 597</a></span> <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="l00598"></a><span class="lineno"> 598</span> {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"called"</span>);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">if</span>(onHangup != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  onHangup();</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  }</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a608638eb87b2772a3dcc92d8ca8f3596"> 606</a></span> <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="l00607"></a><span class="lineno"> 607</span> {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="comment">/*</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="comment">* event is like "homescreen/hvac"</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="comment">* msg is like {"event":"homescreen\/hvac","data":{"type":"tap_shortcut"},"jtype":"afb-event"}</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="comment">* so you can get</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="comment"> event name : struct json_object obj = json_object_object_get(msg,"event")</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="comment">*/</span></div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a9c4885b51b43ab24a548d49fb3ab2de3"> 616</a></span> <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="l00617"></a><span class="lineno"> 617</span> {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"event: (%s) msg: (%s)."</span>, event, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <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="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keyword">struct </span>json_object* ev_contents = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keyword">struct </span>json_object *json_data;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">if</span>(!json_object_object_get_ex(ev_contents, <span class="stringliteral">"data"</span>, &json_data)) {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a65bb6c7cfe38f8a724beab5059d36fb2">HMI_ERROR</a>(<span class="stringliteral">"libhomescreen"</span>, <span class="stringliteral">"got ev_contents error."</span>);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> </div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">if</span>(onEvent != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  {</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">const</span> <span class="keywordtype">string</span> ev(event);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  onEvent(ev, ev_contents);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  }</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* event_type = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keyword">struct </span>json_object *json_event_type;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">if</span>(json_object_object_get_ex(json_data, <span class="stringliteral">"type"</span>, &json_event_type)) {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  event_type = json_object_get_string(json_event_type);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">HMI_WARNING</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"event_type is null."</span>);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> </div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">if</span> (strcasecmp(event_type, <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="l00648"></a><span class="lineno"> 648</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_ShowWindow);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  i->second(json_data);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <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="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_OnScreenMessage);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  i->second(json_data);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <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="l00660"></a><span class="lineno"> 660</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_OnScreenReply);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  i->second(json_data);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[3].c_str()) == 0) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_HideWindow);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  i->second(json_data);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[4].c_str()) == 0) {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_ReplyShowWindow);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  i->second(json_data);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[5].c_str()) == 0) {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_ShowNotification);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  i->second(json_data);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  }</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strcasecmp(event_type, <a class="code" href="../../de/dd0/class_lib_home_screen.html#a6a6d8a4d33a006a08652e7377a4c29e9">LibHomeScreen::event_list</a>[6].c_str()) == 0) {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keyword">auto</span> i = this->handlers.find(Event_ShowInformation);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">if</span> ( i != this->handlers.end() ) {</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  i->second(json_data);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div><div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="../../de/dd0/class_lib_home_screen.html#a248d9648c6186287a7632ec1c75fc9c5"> 695</a></span> <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="l00696"></a><span class="lineno"> 696</span> {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"msg: (%s)"</span>, afb_wsj1_msg_object_s(msg));</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span>(onReply != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keyword">struct </span>json_object* reply = afb_wsj1_msg_object_j(msg);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  onReply(reply);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> </div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="../../d0/d8a/libhomescreen_8cpp.html#a7a2176c3d71fec0f09dcb2aa0866b17e"> 705</a></span> <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>& verb)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span> {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <a class="code" href="../../d2/d66/include_2hmi-debug_8h.html#a0d26d8b8201011dade787236519711c0">HMI_DEBUG</a>(<span class="stringliteral">"libhomescreen"</span>,<span class="stringliteral">"verb is %s"</span>, verb.c_str());</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <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="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</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#l00616">libhomescreen.cpp:616</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#l00069">libhomescreen.cpp:69</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#l00695">libhomescreen.cpp:695</a></div></div>
<div class="ttc" id="homescreen_8cpp_html_ae475c69e7ca2a539ae0fb40a82963ac1"><div class="ttname"><a href="../../d6/dda/homescreen_8cpp.html#ae475c69e7ca2a539ae0fb40a82963ac1">showWindow</a></div><div class="ttdeci">static void showWindow(afb_req_t request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dda/homescreen_8cpp_source.html#l00194">homescreen.cpp:194</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#l00266">libhomescreen.cpp:266</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< void(json_object *)> handler_func</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00040">libhomescreen.hpp:40</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#l00606">libhomescreen.cpp:606</a></div></div>
<div class="ttc" id="homescreen_8cpp_html_a6e942ab2b7207d2aef9adce71a4574e8"><div class="ttname"><a href="../../d6/dda/homescreen_8cpp.html#a6e942ab2b7207d2aef9adce71a4574e8">subscribe</a></div><div class="ttdeci">static void subscribe(afb_req_t request)</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/dda/homescreen_8cpp_source.html#l00140">homescreen.cpp:140</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a6ca8ff4a2aa019a735afaff713e0ef44"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6ca8ff4a2aa019a735afaff713e0ef44">LibHomeScreen::tapShortcut</a></div><div class="ttdeci">int tapShortcut(const char *application_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00222">libhomescreen.cpp:222</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#l00074">libhomescreen.cpp:74</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#l00035">libhomescreen.cpp:35</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a4dbaea6c7b310e8ce7207155ff11b32a"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a4dbaea6c7b310e8ce7207155ff11b32a">LibHomeScreen::hideWindow</a></div><div class="ttdeci">int hideWindow(const char *application_id)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00503">libhomescreen.cpp:503</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_a69fc770cb3f94d30a10c2c8c81eb892f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a69fc770cb3f94d30a10c2c8c81eb892f">LibHomeScreen::showWindow</a></div><div class="ttdeci">int showWindow(const char *application_id, json_object *json)</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_a5a89bcb5a83f6b2e5c664a041bd8fd00"><div class="ttname"><a href="../../d0/d8a/libhomescreen_8cpp.html#a5a89bcb5a83f6b2e5c664a041bd8fd00">ApplicationId</a></div><div class="ttdeci">static const char ApplicationId[]</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_a6310b129fc85ef0623e2e2063950cc4b"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a6310b129fc85ef0623e2e2063950cc4b">LibHomeScreen::replyShowWindow</a></div><div class="ttdeci">int replyShowWindow(const char *application_id, json_object *json)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00530">libhomescreen.cpp:530</a></div></div>
<div class="ttc" id="simple-egl_8cpp_html_a623ef6987ef3bd185c07b28b13e46d34"><div class="ttname"><a href="../../de/da4/simple-egl_8cpp.html#a623ef6987ef3bd185c07b28b13e46d34">token</a></div><div class="ttdeci">string token</div><div class="ttdef"><b>Definition:</b> <a href="../../de/da4/simple-egl_8cpp_source.html#l00061">simple-egl.cpp:61</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 &verb, struct json_object *arg)</div></div>
<div class="ttc" id="class_lib_home_screen_html_ada999aeb0444c964428bdf1ee236727f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#ada999aeb0444c964428bdf1ee236727f">LibHomeScreen::showInformation</a></div><div class="ttdeci">int showInformation(json_object *json)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00584">libhomescreen.cpp:584</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#l00597">libhomescreen.cpp:597</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 &event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00409">libhomescreen.cpp:409</a></div></div>
<div class="ttc" id="include_2hmi-debug_8h_html_a25361812432cd2480bc8f1a8e56ecbf7"><div class="ttname"><a href="../../d2/d66/include_2hmi-debug_8h.html#a25361812432cd2480bc8f1a8e56ecbf7">HMI_WARNING</a></div><div class="ttdeci">#define HMI_WARNING(prefix, args,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d66/include_2hmi-debug_8h_source.html#l00039">hmi-debug.h:39</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#l00042">libhomescreen.hpp:42</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#l00093">libhomescreen.cpp:93</a></div></div>
<div class="ttc" id="simple-egl_8cpp_html_a300b6806fe6818927fe4df08f2398124"><div class="ttname"><a href="../../de/da4/simple-egl_8cpp.html#a300b6806fe6818927fe4df08f2398124">port</a></div><div class="ttdeci">long port</div><div class="ttdef"><b>Definition:</b> <a href="../../de/da4/simple-egl_8cpp_source.html#l00060">simple-egl.cpp:60</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< std::string > event_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00064">libhomescreen.hpp:64</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 &token)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00126">libhomescreen.cpp:126</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 &verb)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00705">libhomescreen.cpp:705</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#l00079">libhomescreen.cpp:79</a></div></div>
<div class="ttc" id="include_2hmi-debug_8h_html_a65bb6c7cfe38f8a724beab5059d36fb2"><div class="ttname"><a href="../../d2/d66/include_2hmi-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="../../d2/d66/include_2hmi-debug_8h_source.html#l00038">hmi-debug.h:38</a></div></div>
<div class="ttc" id="include_2hmi-debug_8h_html_a0d26d8b8201011dade787236519711c0"><div class="ttname"><a href="../../d2/d66/include_2hmi-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="../../d2/d66/include_2hmi-debug_8h_source.html#l00042">hmi-debug.h:42</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#l00242">libhomescreen.cpp:242</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#l00031">libhomescreen.hpp:31</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#l00100">libhomescreen.cpp:100</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< std::string > api_list</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d43/libhomescreen_8hpp_source.html#l00063">libhomescreen.hpp:63</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 &event_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00438">libhomescreen.cpp:438</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#l00295">libhomescreen.cpp:295</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 &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#l00165">libhomescreen.cpp:165</a></div></div>
<div class="ttc" id="class_lib_home_screen_html_a93ad567ed597a80a344ba82457c2bd7f"><div class="ttname"><a href="../../de/dd0/class_lib_home_screen.html#a93ad567ed597a80a344ba82457c2bd7f">LibHomeScreen::showNotification</a></div><div class="ttdeci">int showNotification(json_object *json)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d8a/libhomescreen_8cpp_source.html#l00562">libhomescreen.cpp:562</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#l00084">libhomescreen.cpp:84</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
|