aboutsummaryrefslogtreecommitdiffstats
path: root/doc/api-ref/html/soundmanager_8c_source.html
blob: 691326b99ae7f0aa2af97f8e17fb0a5268658ef4 (plain)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Sound Manager: R:/SoundManagerBinding/src/soundmanager.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Sound Manager
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('soundmanager_8c_source.html','');});
</script>
<div id="doc-content">
<!-- 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 class="header">
  <div class="headertitle">
<div class="title">soundmanager.c</div>  </div>
</div><!--header-->
<div class="contents">
<a href="soundmanager_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright (c) 2017 TOYOTA MOTOR CORPORATION</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *      http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing, software</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * See the License for the specific language governing permissions and</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * limitations under the License.</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a369266c24eacffb87046522897a570d5">   17</a></span>&#160;<span class="preprocessor">#define _GNU_SOURCE</span></div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#ad2c1fbc92ba364fcf83f15e6d0af66f0">   18</a></span>&#160;<span class="preprocessor">#define AFB_BINDING_VERSION 2</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;json-c/json.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;glib.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &lt;afb/afb-binding.h&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sm-error_8h.html">sm-error.h</a>&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sm-helper_8h.html">sm-helper.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="audio__manager__interface_8h.html">dbus/audio_manager_interface.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#ad25089fbfd55bf795bed283a5b283461">   32</a></span>&#160;<span class="preprocessor">#define AM_NAME &quot;org.genivi.audiomanager&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#afa98a8b4c63efeb6e209144e7b247291">   33</a></span>&#160;<span class="preprocessor">#define AM_CMD_PATH     &quot;/org/genivi/audiomanager/commandinterface&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a9a50fb496af125690fb276944b3b4cff">   34</a></span>&#160;<span class="preprocessor">#define AM_ROUTE_PATH   &quot;/org/genivi/audiomanager/routinginterface&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a96c947aaa1e7cb28095c24d1dc4b6ed4">   35</a></span>&#160;<span class="preprocessor">#define AM_ROUTE_NAME   &quot;org.genivi.audiomanager.routinginterface&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a525d367205e4db384f040fb48b795f29">   36</a></span>&#160;<span class="preprocessor">#define SOUND_MANAGER_RETURN_INTERFACE   &quot;org.genivi.audiomanager.routing.soundmanager&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a7d51ac1cb2ec7570dcf07012d66cf524">   37</a></span>&#160;<span class="preprocessor">#define SOUND_MANAGER_BUS_NAME &quot;org.genivi.audiomanager.routing.soundmanager&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a2690d3e2461f5a2f9bb0720d657280da">   38</a></span>&#160;<span class="preprocessor">#define SOUND_MANAGER_PATH &quot;/org/genivi/audiomanager/routing/soundmanager&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">   40</a></span>&#160;<span class="preprocessor">#define COMMAND_EVENT_NUM 10</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a33d1c40de8a5e7a3d6f0e2f45de9f37f">   41</a></span>&#160;<span class="preprocessor">#define ROUTING_EVENT_NUM 10</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a77e25a7b6c35e720d5407547742ffb4a">   42</a></span>&#160;<span class="preprocessor">#define DEFAULT_SINK 1</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a01a153a96c3eca52ef728f1485f1d4f3">   43</a></span>&#160;<span class="preprocessor">#define DEFAULT_SOURCE_CLASS_ID 100</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#aefb25f32a5ddeacbb5e6b8b09dc3e7bc">   44</a></span>&#160;<span class="preprocessor">#define DYNAMIC_DOMAIN_ID 100</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#ab6cc6b4707dec0c561eec43222a498ca">   45</a></span>&#160;<span class="preprocessor">#define DEFAULT_DOMAIN_ID 0</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a65be832e9b9e7fc4df6f9247f9779169">   46</a></span>&#160;<span class="preprocessor">#define DYNAMIC_SOURCE_ID 0</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a2c0c52208e7308ae9eecd726fe8d94b9">   47</a></span>&#160;<span class="preprocessor">#define DEFAULT_VOLUME 100</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a3d2195a3c1e1c25f65a4d583f3ca383b">   48</a></span>&#160;<span class="preprocessor">#define DEFAULT_AVAILABLES 1</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#afe2844c6f961ec3364ee5e54148baf3d">   49</a></span>&#160;<span class="preprocessor">#define DEFAULT_CONNECTION_FORMAT 2</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#ad84a55c2affa8cbbf6584ec59ffe8d8a">   50</a></span>&#160;<span class="preprocessor">#define DEFAULT_INTERRUPT 0</span></div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a2e55e315783d371a4d49378bae0310a7">   51</a></span>&#160;<span class="preprocessor">#define DEFAULT_SOURCE_STATE 2</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a822ca9cdd926d3e23974346b3b0ea896">   52</a></span>&#160;<span class="preprocessor">#define DS_CONTROLLED 1</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">   54</a></span>&#160;<span class="preprocessor">#define EVENT_SUBSCRIBE_ERROR_CODE 100</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">const</span> <span class="keyword">static</span> <span class="keyword">struct </span>afb_binding_interface *afbitf;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">static</span> <a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a> *am_cmd_bus;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keyword">static</span> <a class="code" href="audio__manager__interface_8h.html#a8731118300bd1c17bd016ef36256ea12">AudiomanagerRoutinginterface</a> *am_route_bus;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">static</span> <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *sm_adapter;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keyword">static</span> <a class="code" href="struct___audiomanager_routing_soundmanager_iface.html">AudiomanagerRoutingSoundmanagerIface</a>* sm_itf;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">static</span> GDBusConnection* system_conn = NULL;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="keyword">static</span> GMainLoop *loop = NULL;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="keyword">static</span> guint16 SOUNDMANAGER_DOMAIN_ID;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="comment">/* To Do hash table is better */</span></div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structevent.html">   66</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structevent.html">event</a>{</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structevent.html#a723489bec273335d13513cd1040c0216">   67</a></span>&#160;    <span class="keywordtype">char</span>* <a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">   68</a></span>&#160;    <span class="keyword">struct </span>afb_event* <a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a>;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    };</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structevent.html">event</a> command_event_list[<a class="code" href="soundmanager_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a>];</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span><a class="code" href="structevent.html">event</a> routing_event_list[<a class="code" href="soundmanager_8c.html#a33d1c40de8a5e7a3d6f0e2f45de9f37f">ROUTING_EVENT_NUM</a>];</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_new_connection;</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_removed_main_connection;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_volume_changed;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_sink_mute_state_changed;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_main_connection_state_changed;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment">/* Routing interface event */</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_set_routing_ready;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_set_routing_rundown;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_async_connect;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_async_disconnect;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="keyword">static</span> <span class="keyword">struct </span>afb_event ev_async_set_source_state;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _source_id[] = <span class="stringliteral">&quot;sourceID&quot;</span>;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _sink_id[] = <span class="stringliteral">&quot;sinkID&quot;</span> ;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _sink_name[] = <span class="stringliteral">&quot;sinkName&quot;</span> ;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _main_connection_id[] = <span class="stringliteral">&quot;mainConnectionID&quot;</span>;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _delay[] = <span class="stringliteral">&quot;delay&quot;</span>;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _connection_state[] = <span class="stringliteral">&quot;connectionState&quot;</span>;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _connection_id[] = <span class="stringliteral">&quot;connectionID&quot;</span>;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _volume[] = <span class="stringliteral">&quot;volume&quot;</span>;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _volume_step[] = <span class="stringliteral">&quot;volumeStep&quot;</span>;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _interrupt[] = <span class="stringliteral">&quot;interrupt&quot;</span>;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _mute_state[] = <span class="stringliteral">&quot;muteState&quot;</span>;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _domain_id[] = <span class="stringliteral">&quot;domainID&quot;</span>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _handle[] = <span class="stringliteral">&quot;handle&quot;</span>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _appname[] = <span class="stringliteral">&quot;appname&quot;</span>;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _ramp[] = <span class="stringliteral">&quot;ramp&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _time[] = <span class="stringliteral">&quot;time&quot;</span>;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _source_state[] = <span class="stringliteral">&quot;sourceState&quot;</span>;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _source_class_id[] = <span class="stringliteral">&quot;sourceClassID&quot;</span>;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _sink_class_id[] = <span class="stringliteral">&quot;sinkClassID&quot;</span>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _error[] = <span class="stringliteral">&quot;error&quot;</span>;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _sink_data[] = <span class="stringliteral">&quot;sinkData&quot;</span>;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _source_data[] = <span class="stringliteral">&quot;sourceData&quot;</span>;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _interrupt_state[] = <span class="stringliteral">&quot;interruptState&quot;</span>;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _availability[] = <span class="stringliteral">&quot;availability&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _list_volumes[] = <span class="stringliteral">&quot;listVolumes&quot;</span>;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _payload[] = <span class="stringliteral">&quot;payload&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> _connection_format[] = <span class="stringliteral">&quot;connectionFormat&quot;</span>;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="comment">********** Method of Sound Manager (API) **********</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> connect (<span class="keyword">struct</span> afb_req request) </div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;{</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    guint16 source_id = 0, sink_id = 0;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    guint16 main_connectionID = 0;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    gint16 ret = -1;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1 = <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err2 = <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    </div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _source_id, &amp;source_id);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <span class="comment">/* ToDo: Hardware abstraction for application user is needed. </span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="comment">    select appname(speaker) or sourceID(sinkID). If appname is desired, it changes to sourceID(sinkID) */</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    </div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* default_sink = afb_req_value (request, _sink_id);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordflow">if</span>(default_sink != NULL){</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        <span class="keywordflow">if</span>((strlen(<span class="stringliteral">&quot;default&quot;</span>) == strlen(default_sink)) &amp;&amp;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;           (0 == strncmp(<span class="stringliteral">&quot;default&quot;</span>, default_sink, strlen(<span class="stringliteral">&quot;default&quot;</span>)))){</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;            sink_id = <a class="code" href="soundmanager_8c.html#a77e25a7b6c35e720d5407547742ffb4a">DEFAULT_SINK</a>;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;            req_err2 = <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        }</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        <span class="keywordflow">else</span>{</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;            req_err2 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _sink_id, &amp;sink_id);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        }</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    }</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    </div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    {</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        AFB_INFO(<span class="stringliteral">&quot;get_value_uint16 source ret = %d,sink ret = %d&quot;</span>, source_id, sink_id);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        AFB_NOTICE(<span class="stringliteral">&quot;wrong request&quot;</span>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>,NULL);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    }</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a4ddada2b9dbb9eed0a2f22009fd0b317">audiomanager_commandinterface_call_connect_sync</a>(</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        source_id,</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        sink_id,</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        &amp;ret,</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        &amp;main_connectionID,</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    {</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    }</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    <span class="comment">/* ToDo Remember appname(key) and tie to sourceID(value) */</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;    </div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 4,</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="stringliteral">&quot;error&quot;</span>, ret,</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        _main_connection_id, main_connectionID);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> disconnect (<span class="keyword">struct</span> afb_req request)  </div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;{</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    </div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    guint16 id;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    gint16 ret;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    </div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    req_err = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _main_connection_id, &amp;<span class="keywordtype">id</span>);</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;requested %s = %d&quot;</span>, _main_connection_id, <span class="keywordtype">id</span>);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    </div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">if</span>(req_err != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>)</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    {</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>,afb_req_value (request, _main_connection_id));</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    }</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#abc5fb1befb03a12679136625a0aa1aca">audiomanager_commandinterface_call_disconnect_sync</a>(</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        <span class="keywordtype">id</span>,</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        &amp;ret,</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;ret = %d&quot;</span>, ret);</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    {</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    }</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res_obj, __FUNCTION__, 2,</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        _error, ret);</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    afb_req_success(request, res_obj, info); <span class="comment">/* return error num as status */</span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> setVolume (<span class="keyword">struct</span> afb_req request) </div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;{</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    </div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    guint16 sink_id, vol;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    gint16 ret;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    </div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _sink_id, &amp;sink_id);</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(request, _volume, &amp;vol);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;requested %s = %d, %s = %d&quot;</span>,_sink_id, sink_id, _volume, vol);</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    {</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    }</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#af27cf97f8fa87de47e0ee2c59940424f">audiomanager_commandinterface_call_set_volume_sync</a>(</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        sink_id,</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        vol,</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        &amp;ret,</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;ret = %d&quot;</span>, ret);</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    {</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    }</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res_obj, __FUNCTION__, 2,</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="stringliteral">&quot;error&quot;</span>, ret);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;    afb_req_success(request, res_obj, info); <span class="comment">/* return error num as status */</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;}</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> volumeStep (<span class="keyword">struct</span> afb_req request) </div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;{</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;    </div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    guint16 sink_id, vol;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    gint16 ret;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    </div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _sink_id, &amp;sink_id);</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(request, _volume_step, &amp;vol);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;requested %s = %d, %s = %d&quot;</span>,_sink_id, sink_id, _volume_step, vol);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    {</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    }</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#aafc35c8740b1373e0964bc469cd6548f">audiomanager_commandinterface_call_volume_step_sync</a>(</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;        sink_id,</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        vol,</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        &amp;ret,</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;ret = %d&quot;</span>, ret);</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    {</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    }</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res_obj, __FUNCTION__, 2,</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;        <span class="stringliteral">&quot;error&quot;</span>, ret);</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    afb_req_success(request, res_obj, info); <span class="comment">/* return error num as status */</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;}</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> setSinkMuteState(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;{</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    </div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    guint16 sink_id, mute;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    gint16 ret;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;    </div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _sink_id, &amp;sink_id);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(request, _mute_state, &amp;mute);</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;requested %s = %d, %s = %d&quot;</span>,_sink_id, sink_id, _mute_state, mute);</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    {</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    }</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#afc19e9a9c634f428c7b17c20db3f0b7d">audiomanager_commandinterface_call_set_sink_mute_state_sync</a>(</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        sink_id,</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        mute,</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        &amp;ret,</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;ret = %d&quot;</span>, ret);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    {</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;    }</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res_obj, __FUNCTION__, 2,</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <span class="stringliteral">&quot;error&quot;</span>, ret);</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;    afb_req_success(request, res_obj, info); <span class="comment">/* return error num as status */</span>    </div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;}</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> getListMainConnections(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;{</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call getListMainConnections&quot;</span>);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    guint16 ret;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    GVariant* mainConnectionList;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a181177bbe37995c1d64e2f60f0b8dae1">audiomanager_commandinterface_call_get_list_main_connections_sync</a>(</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;        &amp;ret,</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        &amp;mainConnectionList,</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        NULL,</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        &amp;err</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    );</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    {</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    }</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    <span class="comment">/* create response */</span></div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    <span class="keyword">struct </span>json_object *array_res = json_object_new_array();</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    gsize size = g_variant_n_children(mainConnectionList);</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;mainConnectionList size is %u&quot;</span>,(uint16_t)size);</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;    <span class="keyword">struct </span>json_object *verb_obj = json_object_new_object();</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(verb_obj, __FUNCTION__, 0);</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;    json_object_array_add(array_res, verb_obj);</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keywordflow">if</span>(size &lt;= 0)</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    {</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        AFB_NOTICE( <span class="stringliteral">&quot;mainConnectionList size is 0&quot;</span>);</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;    }</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    <span class="keywordflow">else</span>{</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; size; ++i)</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        {</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;            guint16 mcid, srcid, sinkid;</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;            gint16 delay, constate;</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;            g_variant_get_child(</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;                mainConnectionList,i,<span class="stringliteral">&quot;(qqqnn)&quot;</span>, </div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;                &amp;mcid, &amp;srcid, &amp;sinkid, &amp;delay, &amp;constate</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;                );</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;            <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;            <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj,10,</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;                _main_connection_id, mcid,</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;                _source_id, srcid,</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;                _sink_id, sinkid,</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;                _delay, delay,</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;                _connection_state, constate</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;            );</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;            json_object_array_add(array_res,res_obj);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        }</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    }</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;json object :%s:&quot;</span>,json_object_to_json_string(array_res));</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    afb_req_success(request, array_res, <span class="stringliteral">&quot;Success to get main connection list&quot;</span>);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;}</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> getListMainSinks(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    guint16 ret;</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    GVariant* mainSinkList;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a26d9526788210248c2a4cc1e69aff199">audiomanager_commandinterface_call_get_list_main_sinks_sync</a>(</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;        am_cmd_bus,</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        &amp;ret,</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        &amp;mainSinkList,</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;        NULL,</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        &amp;err</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    );</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;    {</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);        </div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;    }</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    <span class="comment">/* create response */</span></div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;    <span class="keyword">struct </span>json_object *array_res = json_object_new_array();</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    gsize size = g_variant_n_children(mainSinkList);</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s size is %u&quot;</span>,__FUNCTION__, (uint16_t)size);</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    <span class="keyword">struct </span>json_object *verb_obj = json_object_new_object();</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(verb_obj, __FUNCTION__, 0);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    json_object_array_add(array_res, verb_obj);</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;    <span class="keywordflow">if</span>(size &lt;= 0)</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    {</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        AFB_NOTICE(<span class="stringliteral">&quot;%s size is 0&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;    }</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    <span class="keywordflow">else</span>{</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        <span class="comment">/*for(int i = 0; i &lt; size; ++i)</span></div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;<span class="comment">        {</span></div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;<span class="comment">            guint16 sinkid, sinkclassid;</span></div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;<span class="comment">            gchar* sinkname;</span></div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;<span class="comment">            GVariant* available = g_variant_new(&quot;(nn)&quot;, -1, -1);</span></div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;<span class="comment">            gint16 volume, mutestate;</span></div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;<span class="comment">            g_variant_get_child(</span></div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="comment">                mainSinkList,i,&quot;(qs(nn)nnq)&quot;, </span></div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;<span class="comment">                &amp;sinkid, sinkname, &amp;volume, &amp;mutestate, &amp;sinkclassid);</span></div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;<span class="comment">            struct json_object* res_obj = json_object_new_object();</span></div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;<span class="comment">            sm_add_object_to_json_object(res_obj,2,_sink_id, sinkid);</span></div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;<span class="comment">            json_object_object_add(res_obj, _sink_name, json_object_new_string(sinkname));</span></div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;<span class="comment">            sm_add_object_to_json_object(res_obj,6,</span></div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;<span class="comment">                _volume, volume,</span></div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;<span class="comment">                _mute_state, mutestate,</span></div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;<span class="comment">                _sink_class_id, sinkclassid);</span></div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;<span class="comment">            json_object_array_add(array_res,res_obj);</span></div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;<span class="comment">        }*/</span></div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    }</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;json object :%s:&quot;</span>,json_object_to_json_string(array_res));</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    <span class="comment">//afb_req_success(request, array_res, &quot;Success to get main sink list&quot;);</span></div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    afb_req_success(request, array_res, <span class="stringliteral">&quot;This is not implemented yet&quot;</span>);</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;}</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;<span class="comment">****** Routing Interface method(API) ***********</span></div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> ackConnect(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;{</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    <span class="comment">/* This function will be deprecated */</span></div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    guint16 handle, connection_id, error;</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;    guint16 ret = 0;</div><div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2 , req_err3;</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    </div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _handle, &amp;handle);</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _connection_id, &amp;connection_id);</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;    req_err3 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _error, &amp;error);</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;    </div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err3 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;    {</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;    }</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;    <span class="keywordflow">if</span>(connection_id == 0)</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;    {</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, <span class="stringliteral">&quot;connectionID is more than 0&quot;</span>);</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    }</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    </div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#adadd28e13e61121cbe94ef86e2721204">audiomanager_routinginterface_call_ack_connect_sync</a>(</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        am_route_bus,</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        handle,</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        connection_id,</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;        error,</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;    {</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;    }</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        _error, ret);    </div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;}</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> ackDisconnect(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;{</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    <span class="comment">/* This function will be deprecated */</span></div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    guint16 handle, connection_id, error;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    guint16 ret = 0;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2 , req_err3;</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;    </div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _handle, &amp;handle);</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _connection_id, &amp;connection_id);</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    req_err3 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _error, &amp;error);</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    </div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err3 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;    {</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, <span class="stringliteral">&quot;connectionID is more than 0&quot;</span>);        </div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;    }</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    <span class="keywordflow">if</span>(connection_id == 0)</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;    {</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, <span class="stringliteral">&quot;connectionID is more than 0&quot;</span>);</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    }</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a7a4e4f1ed80dee36c519fb86958430ec">audiomanager_routinginterface_call_ack_disconnect_sync</a>(</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;        am_route_bus,</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;        handle,</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;        connection_id,</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;        error,</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;    {</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;    }</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;        _error, ret);    </div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;}</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> ackSetSourceState(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;{</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;    guint16 handle, error;</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;    guint16 ret = 0;</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err1, req_err2;</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;    </div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;    req_err1 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _handle, &amp;handle);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;    req_err2 = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _error, &amp;error);</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;    </div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;    <span class="keywordflow">if</span>((req_err1 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>) || (req_err2 != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>))</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    {</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        AFB_DEBUG(<span class="stringliteral">&quot;wrong request&quot;</span>);</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);        </div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;    }</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a3e796f9928089743d18b5e2404e1d45c">audiomanager_routinginterface_call_ack_set_source_state_sync</a>(</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;        am_route_bus,</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        handle,</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        error,</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    {</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;    }</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;        _error, ret);    </div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;}</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> registerSource(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;{</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;    </div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;    guint16 source_id; <span class="comment">/* q  0 is for dynamic id*/</span></div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;    guint16 domain_id;  <span class="comment">/* q */</span></div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    guint16 source_class_id;   <span class="comment">/* q */</span></div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;    gint32  source_state; <span class="comment">/* i  */</span></div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;    gint16  volume;  <span class="comment">/* n */</span></div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;    </div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _source_id, &amp;source_id)){</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;        source_id = <a class="code" href="soundmanager_8c.html#a65be832e9b9e7fc4df6f9247f9779169">DYNAMIC_SOURCE_ID</a>;  <span class="comment">/* if 0, dynamic source id will be applied */</span></div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;    }</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a> req_err = <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _domain_id, &amp;domain_id);</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    <span class="keywordflow">if</span>( req_err != <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a>){</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;        <span class="keywordflow">if</span>(req_err == <a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a>)</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;        {</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;            domain_id = SOUNDMANAGER_DOMAIN_ID;    <span class="comment">/* default in AGL */</span></div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;        }</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;        <span class="keywordflow">else</span>{</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;            afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, <span class="stringliteral">&quot;Please input domainID as uint16, otherwise no value is OK&quot;</span>);</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;            <span class="keywordflow">return</span>;</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;        }</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;    }</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;    <span class="keywordflow">if</span>(domain_id == 0)</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;    {</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;        afb_req_fail(request,<span class="stringliteral">&quot;wrong-request&quot;</span>, <span class="stringliteral">&quot;domainID should be more than 0&quot;</span>);</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;    }</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;    <span class="keyword">const</span> gchar* <a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = afb_req_value(request, _appname);  <span class="comment">/* s */</span></div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;    <span class="keywordflow">if</span>(!name)</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    {</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;        <span class="keywordtype">char</span>* info = <span class="stringliteral">&quot;Must specify the name. Please input json arg such as {\&quot;appname\&quot;:\&quot;radio\&quot;}&quot;</span>;</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;        afb_req_fail(request, NULL, info);</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    }</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _source_class_id, &amp;source_class_id)){</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;        source_class_id = <a class="code" href="soundmanager_8c.html#a01a153a96c3eca52ef728f1485f1d4f3">DEFAULT_SOURCE_CLASS_ID</a>;    <span class="comment">/* BASE */</span></div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    }</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a>(request, _source_state, &amp;source_state)){</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;        source_state = <a class="code" href="soundmanager_8c.html#a2e55e315783d371a4d49378bae0310a7">DEFAULT_SOURCE_STATE</a>; <span class="comment">/* SS_OFF */</span></div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    }</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(request, _volume, &amp;volume)){</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;        volume = <a class="code" href="soundmanager_8c.html#a2c0c52208e7308ae9eecd726fe8d94b9">DEFAULT_VOLUME</a>;</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;    }</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;    gboolean visible = TRUE;   <span class="comment">/* b */</span></div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;    <span class="keyword">struct </span><a class="code" href="structavailability__s.html">availability_s</a> available;     <span class="comment">/* (ii) */</span></div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;    available.<a class="code" href="structavailability__s.html#afdad584642d8870c90c54fac11bf25f2">availability</a> = <a class="code" href="soundmanager_8c.html#a3d2195a3c1e1c25f65a4d583f3ca383b">DEFAULT_AVAILABLES</a>;         <span class="comment">/* A_UNKNOWN */</span></div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;    available.avalilable_reason = 0;    <span class="comment">/* AR_UNKNOWN */</span></div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;    guint16 interrupt;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a>(request, _interrupt, &amp;interrupt)){</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;        interrupt = <a class="code" href="soundmanager_8c.html#ad84a55c2affa8cbbf6584ec59ffe8d8a">DEFAULT_INTERRUPT</a>;  <span class="comment">/* q IS_OFF */</span></div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    }</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <span class="keyword">struct </span><a class="code" href="structsound__property__s.html">sound_property_s</a> sound_property_list;   <span class="comment">/* a(in) */</span></div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    sound_property_list.<a class="code" href="structsound__property__s.html#ac16b579b78b9552f10922eb2423e3726">type</a> = 0;</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    sound_property_list.value = 0;     <span class="comment">/* in reality, this is array of struct */</span></div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;    </div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;    gint32 connection_format_list = <a class="code" href="soundmanager_8c.html#afe2844c6f961ec3364ee5e54148baf3d">DEFAULT_CONNECTION_FORMAT</a>; <span class="comment">/* ai */</span></div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    <span class="keyword">struct  </span><a class="code" href="structmain__sound__property__s.html">main_sound_property_s</a> main_property_list;    <span class="comment">/* a(in) */</span></div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;    main_property_list.<a class="code" href="structmain__sound__property__s.html#add28376b77aa40fa79c8796a641cb3b4">type</a> = 0;</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;    main_property_list.value = 0;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    <span class="keyword">struct </span><a class="code" href="structnotification__config__s.html">notification_config_s</a> nconf_routing;</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;    <span class="keyword">struct </span><a class="code" href="structnotification__config__s.html">notification_config_s</a> nconf_command; <span class="comment">/* a(iin)a(iin) */</span></div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;    nconf_routing.<a class="code" href="structnotification__config__s.html#acf4add4414b451c1a51df3833c7b5663">type</a> = 0;</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    nconf_routing.status = 0;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    nconf_routing.parameter = 0;</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    nconf_command.type = 0;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    nconf_command.status = 0;</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;    nconf_command.parameter = 0;</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;    <span class="comment">/* acquire data */</span></div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;    guint16 acquire_source_id;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;    guint16 ret;</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    GVariant* sourceData = <a class="code" href="sm-helper_8c.html#a3da984668307f39d541053eba1d78a83">create_source_data</a> (source_id, domain_id, name, source_class_id, </div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;        source_state, volume, visible, available, interrupt,</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;        sound_property_list, connection_format_list, main_property_list,</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;        nconf_routing, nconf_command);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;    GVariant* input =  g_variant_ref_sink(sourceData);</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a8bd76889d860b7db9327f1e6e1f8c9c9">audiomanager_routinginterface_call_register_source_sync</a>(</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;        am_route_bus,</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;        input,</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        &amp;acquire_source_id,</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;        &amp;ret,</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    g_variant_unref(input);</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;    {</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;    }</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 4,</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;        _error, ret,</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;        _source_id, acquire_source_id);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;}</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> deregisterSource(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;{</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;    guint16 source_id;</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;    guint16 ret;</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    </div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;    </div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;    <span class="keywordflow">if</span>(<a class="code" href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a> != <a class="code" href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a>(request, _source_id, &amp;source_id)){</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        afb_req_fail(request, <span class="stringliteral">&quot;wrong-request&quot;</span>, NULL);</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    }</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#ae1459fb13596f7770810b8754f7de063">audiomanager_routinginterface_call_deregister_source_sync</a>(</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        am_route_bus,</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        source_id,</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        &amp;ret,</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;        NULL, &amp;err</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;    );</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;    {</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;        afb_req_fail_f(request, <span class="stringliteral">&quot;failed&quot;</span>, <span class="stringliteral">&quot;Unable to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;        <span class="keywordflow">return</span>;</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;    }</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;        _error, ret);</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;}</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> subscribe(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;{</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;    <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;    <span class="keywordflow">if</span>(value) {  </div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;        <span class="keywordtype">int</span> index = <a class="code" href="sm-helper_8c.html#a971c6c55c9b04ae87c377fbde6a4c6f6">sm_search_event_name_index</a>(value);</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;        <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;        {</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;            index = <a class="code" href="sm-helper_8c.html#a2a63791cfba48b0456aefafe237e419e">sm_search_routing_event_name_index</a>(value);</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;            <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;            {</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;                AFB_NOTICE( <span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);            </div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;                ret = <a class="code" href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;            }</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;            {</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                afb_req_subscribe(request, *routing_event_list[index].<a class="code" href="structevent.html">event</a>);</div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;            }         </div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;        }</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;        {</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;            afb_req_subscribe(request, *command_event_list[index].<a class="code" href="structevent.html">event</a>);            </div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;        }</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;    }</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;    <span class="keywordflow">else</span>{</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;        AFB_NOTICE( <span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;        ret = <a class="code" href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    }</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;        _error, ret);    </div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;}</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> unsubscribe(<span class="keyword">struct</span> afb_req request)</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;{</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *value = afb_req_value(request, <span class="stringliteral">&quot;event&quot;</span>);</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;value is %s&quot;</span>, value);</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;    <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;    <span class="keywordflow">if</span>(value) {  </div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        <span class="keywordtype">int</span> index = <a class="code" href="sm-helper_8c.html#a971c6c55c9b04ae87c377fbde6a4c6f6">sm_search_event_name_index</a>(value);</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;        <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;        {</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;            index = <a class="code" href="sm-helper_8c.html#a2a63791cfba48b0456aefafe237e419e">sm_search_routing_event_name_index</a>(value);</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;            <span class="keywordflow">if</span>(index &lt; 0)</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;            {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;                AFB_NOTICE( <span class="stringliteral">&quot;dedicated event doesn&#39;t exist&quot;</span>);            </div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;                ret = <a class="code" href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;            }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;            <span class="keywordflow">else</span></div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;            {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;                afb_req_unsubscribe(request, *routing_event_list[index].<a class="code" href="structevent.html">event</a>);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;            }     </div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;        {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;            afb_req_unsubscribe(request, *command_event_list[index].<a class="code" href="structevent.html">event</a>);            </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;        }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;    }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;    <span class="keywordflow">else</span>{</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;        AFB_NOTICE( <span class="stringliteral">&quot;Please input event name&quot;</span>);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;        ret = <a class="code" href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a>;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;    }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;    <span class="comment">/*create response json object*/</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;    <span class="keyword">struct </span>json_object *res = json_object_new_object();</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <a class="code" href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a>(res, __FUNCTION__, 2,</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        _error, ret);    </div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;    <span class="keywordtype">char</span> *info = <a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    afb_req_success(request, res, info);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;}</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;<span class="comment">********** Callback Function invoked by Audio Manager **********</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_new_main_connection(<a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a>* interface,</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;    GVariant* mainConnection)</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;{</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;    guint16 mcid, srcid, sinkid;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;    gint16 delay, constate;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;    g_variant_get(</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;        mainConnection,<span class="stringliteral">&quot;(qqqnn)&quot;</span>, &amp;mcid, &amp;srcid, &amp;sinkid, &amp;delay, &amp;constate);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;    </div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj,10,</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;        _main_connection_id, mcid,</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;        _source_id, srcid,</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;        _sink_id, sinkid,</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;        _delay, delay,</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;        _connection_state, constate</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;        );</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;json object :%s:&quot;</span>,json_object_to_json_string(res_obj));</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;    afb_event_push(ev_new_connection, res_obj);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;}</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_removed_main_connection(</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a>* interface, guint16 mainConnectionID)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;{</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;    </div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj, 2, </div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;        _main_connection_id, mainConnectionID);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;    afb_event_push(ev_removed_main_connection, res_obj);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;}</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_main_connection_state_changed(</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a>* interface, guint16 connectionID, gint16 connectionState)</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;{</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj, 4, </div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;        _connection_id, connectionID,</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;        _connection_state, connectionState);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;    afb_event_push(ev_main_connection_state_changed, res_obj);</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;}</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_volume_changed(</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;            <a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a>* interface, guint16 sinkID, gint16 volume)</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;{</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj, 4,</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;        _sink_id, sinkID,</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;        _volume, volume);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;    afb_event_push(ev_volume_changed, res_obj);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;}</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_sink_mute_state_changed(</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;            <a class="code" href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a>* interface, guint16 sinkID, gint16 mute)</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;{</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;    <span class="keyword">struct </span>json_object* res_obj = json_object_new_object();</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(res_obj, 4,</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;        _sink_id, sinkID,</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;        _mute_state, mute);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;    afb_event_push(ev_sink_mute_state_changed, res_obj);</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;}</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="comment">********** Callback Function invoked by Audio Manager Routing Interface**********</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_set_routing_ready(</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;            <a class="code" href="audio__manager__interface_8h.html#a8731118300bd1c17bd016ef36256ea12">AudiomanagerRoutinginterface</a>* interface)</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;{</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;    afb_event_push(ev_set_routing_ready, NULL);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;}</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_set_routing_rundown(</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;            <a class="code" href="audio__manager__interface_8h.html#a8731118300bd1c17bd016ef36256ea12">AudiomanagerRoutinginterface</a>* interface)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;{</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;    AFB_DEBUG(<span class="stringliteral">&quot;%s is called&quot;</span>,__FUNCTION__);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;    afb_event_push(ev_set_routing_ready, NULL);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;}</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="comment">********** Callback Function invoked by Sound Manager Adapter Interface**********</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="comment">*   For now, there may be no need to send events to applications from these invocation.</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;<span class="comment">*   Sound Manager just sends ack to Audio Manager in charge of applications.</span></div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="keyword">static</span> gboolean on_async_abort(</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *<span class="keywordtype">object</span>,</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;    GDBusMethodInvocation *invocation,</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;    guint16 arg_handle)</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;{</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);    </div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;    <span class="comment">/* Nothing To Do. If it is better to implement something, I will implement */</span></div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;    <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;}</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;<span class="keyword">static</span> gboolean on_async_connect(</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *<span class="keywordtype">object</span>,</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;    GDBusMethodInvocation *invocation,</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;    guint16 arg_handle,</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;    guint16 arg_connectionID,</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;    guint16 arg_sourceID,</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;    guint16 arg_sinkID,</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;    gint arg_connectionFormat)</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;{</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;    <span class="keyword">struct </span>json_object* ev_obj = json_object_new_object();</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(ev_obj, 10,</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;        _handle, arg_handle,</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;        _connection_id, arg_connectionID,</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;        _source_id, arg_sourceID,</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;        _sink_id, arg_sinkID,</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;        _connection_format, arg_connectionFormat);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;    afb_event_push(ev_async_connect, ev_obj);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;    <span class="comment">/* GError must be initialized here because it is same as grobal errno, </span></div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="comment">       so if afb_event_push is failed due to something, number will be changed */</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;    GError* err = NULL;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#adadd28e13e61121cbe94ef86e2721204">audiomanager_routinginterface_call_ack_connect_sync</a>(</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;        am_route_bus,</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;        arg_handle,</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;        arg_connectionID,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;        0,</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;    {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Can&#39;t send ack to sound manager adapter %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;        <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;    }</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;    <span class="keywordflow">return</span> TRUE; </div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;}</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="keyword">static</span> gboolean on_async_disconnect(</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *<span class="keywordtype">object</span>,</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;    GDBusMethodInvocation *invocation,</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;    guint16 arg_handle,</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;    guint16 arg_connectionID)</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;{</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;    <span class="keyword">struct </span>json_object* ev_obj = json_object_new_object();</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(ev_obj, 4,</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        _handle, arg_handle,</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;        _connection_id, arg_connectionID);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;    afb_event_push(ev_async_disconnect, ev_obj);</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;    GError* err = NULL;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a7a4e4f1ed80dee36c519fb86958430ec">audiomanager_routinginterface_call_ack_disconnect_sync</a>(</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;        am_route_bus,</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;        arg_handle,</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;        arg_connectionID,</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;        0,</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;    <span class="keywordflow">if</span>(err != NULL)</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;    {</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Can&#39;t send ack to sound manager adapter %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;        <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;    }</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;    <span class="keywordflow">return</span> TRUE;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;}</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="keyword">static</span> gboolean on_async_set_sink_volume(</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *<span class="keywordtype">object</span>,</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;    GDBusMethodInvocation *invocation,</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;    guint16 arg_handle,</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;    guint16 arg_sinkID,</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;    gint16 arg_volume,</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;    gint16 arg_ramp,</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;    guint16 arg_time)</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;{</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;    GError* err = NULL;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#ad6c3a3b45afb772d4db1587b11187e4c">audiomanager_routinginterface_call_ack_set_sink_volume_sync</a>(</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;        am_route_bus,</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;        arg_handle,</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;        arg_volume,</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;        0, NULL, &amp;err);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;    <span class="keywordflow">if</span>(err != NULL);{</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Can&#39;t send ack to sound manager adapter %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;        <span class="keywordflow">return</span> FALSE;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;    }</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;    <span class="keywordflow">return</span> TRUE;  </div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;}</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="keyword">static</span> gboolean on_async_set_source_state(</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    <a class="code" href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a> *<span class="keywordtype">object</span>,</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;    GDBusMethodInvocation *invocation,</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    guint16 arg_handle,</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    guint16 arg_sourceID,</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;    gint arg_sourceState)</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;{</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);    </div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;    <span class="keyword">struct </span>json_object* ev_obj = json_object_new_object();</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;    <span class="keywordtype">char</span>* ss_key = <a class="code" href="sm-error_8h.html#a2df7c91b7a762f9ae743210bbb8e822f">get_source_state_key</a>(arg_sourceState);</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;    <a class="code" href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a>(ev_obj, 4,</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;        _handle, arg_handle,</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;        _source_id, arg_sourceID);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;    json_object_object_add(ev_obj, _source_state, json_object_new_string(ss_key));</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;    afb_event_push(ev_async_set_source_state, ev_obj);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;    <span class="comment">/* Applications must return ackSetSourceState to look sourceID, then Sound Manager doen&#39;t return ackSetSourceState */</span></div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;    <span class="comment">/*audiomanager_routinginterface_call_ack_set_source_state_sync(</span></div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="comment">        am_route_bus,</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;<span class="comment">        arg_handle,</span></div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="comment">        NULL,</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="comment">        NULL, &amp;err);*/</span></div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;}</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="comment"> * array of the verbs exported to afb-daemon</span></div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct </span>afb_verb_v2 binding_verbs[]= {</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;{ .verb = <span class="stringliteral">&quot;connect&quot;</span>,                .callback = connect,                .auth = NULL, </div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;                .info = <span class="stringliteral">&quot;Connect source id and sink id&quot;</span> ,       .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;{ .verb = <span class="stringliteral">&quot;disconnect&quot;</span>,             .callback = disconnect,             .auth = NULL, </div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;                .info = <span class="stringliteral">&quot;Disconnect source id and sink id&quot;</span> ,    .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;{ .verb = <span class="stringliteral">&quot;setVolume&quot;</span>,              .callback = setVolume,              .auth = NULL, </div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;                .info = <span class="stringliteral">&quot;Set volume value&quot;</span> ,                    .session = AFB_SESSION_NONE}, <span class="comment">/* it is better to show the range*/</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;{ .verb = <span class="stringliteral">&quot;volumeStep&quot;</span>,             .callback = volumeStep,             .auth = NULL, </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;                .info = <span class="stringliteral">&quot;Set volume step range&quot;</span> ,               .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;{ .verb = <span class="stringliteral">&quot;setSinkMuteState&quot;</span>,       .callback = setSinkMuteState,       .auth = NULL, </div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;                .info = <span class="stringliteral">&quot;Set Mute state: 1 means mute, 2 means umute. Others are invalid&quot;</span> ,.session = AFB_SESSION_NONE},</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;{ .verb = <span class="stringliteral">&quot;getListMainConnections&quot;</span>, .callback = getListMainConnections, .auth = NULL, </div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;                .info = <span class="stringliteral">&quot;Get MainConnection List&quot;</span> ,             .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;{ .verb = <span class="stringliteral">&quot;getListMainSinks&quot;</span>,       .callback = getListMainSinks,       .auth = NULL, </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;                .info = <span class="stringliteral">&quot;Get MainSink List&quot;</span> ,                   .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;{ .verb = <span class="stringliteral">&quot;registerSource&quot;</span>,         .callback = registerSource,         .auth = NULL, </div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;                .info = <span class="stringliteral">&quot;Register Application&quot;</span> ,                .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;{ .verb = <span class="stringliteral">&quot;deregisterSource&quot;</span>,       .callback = deregisterSource,       .auth = NULL, </div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;                .info = <span class="stringliteral">&quot;Deregister Application&quot;</span> ,              .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;{ .verb = <span class="stringliteral">&quot;ackConnect&quot;</span>,             .callback = ackConnect,             .auth = NULL, </div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;                .info = <span class="stringliteral">&quot;Acknowledge of asyncConnect&quot;</span> ,         .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;{ .verb = <span class="stringliteral">&quot;ackDisconnect&quot;</span>,          .callback = ackDisconnect,          .auth = NULL, </div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;                .info = <span class="stringliteral">&quot;Acknowledge of asyncConnect&quot;</span> ,         .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;{ .verb = <span class="stringliteral">&quot;ackSetSourceState&quot;</span>,      .callback = ackSetSourceState,      .auth = NULL, </div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;                .info = <span class="stringliteral">&quot;Acknowledge of asyncSetSourceState&quot;</span> ,  .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;{ .verb = <span class="stringliteral">&quot;subscribe&quot;</span>,              .callback = subscribe,              .auth = NULL, </div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;                .info = <span class="stringliteral">&quot;Subscribe event&quot;</span> ,                     .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;{ .verb = <span class="stringliteral">&quot;unsubscribe&quot;</span>,            .callback = unsubscribe,            .auth = NULL, </div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;                .info = <span class="stringliteral">&quot;Unsubscribe event&quot;</span> ,                   .session = AFB_SESSION_NONE},</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;{ .verb = NULL } <span class="comment">/* marker for end of the array */</span>};</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> *dbus_event_loop_run(<span class="keywordtype">void</span> *args)</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;{</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;    loop = g_main_loop_new(NULL, FALSE);</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;    g_main_loop_run(loop);</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;}</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment">********** Internal Function used by Sound Manager **********</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> registerDomain()</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;{</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    <span class="comment">/* Default Setting of Sound Manager Domain */</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;    <span class="keyword">struct </span><a class="code" href="structdomain__data.html">domain_data</a> ddata = {</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;        .<a class="code" href="structdomain__data.html#af1c7931d89ac01836657748e3afb43ca">domainID</a>   = <a class="code" href="soundmanager_8c.html#aefb25f32a5ddeacbb5e6b8b09dc3e7bc">DYNAMIC_DOMAIN_ID</a>,</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;        .name       = <span class="stringliteral">&quot;SoundManager&quot;</span>,</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;        .busname    = <a class="code" href="soundmanager_8c.html#a7d51ac1cb2ec7570dcf07012d66cf524">SOUND_MANAGER_BUS_NAME</a>,</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;        .nodename   = <span class="stringliteral">&quot;soundmanager&quot;</span>,</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;        .early      = FALSE,</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;        .complete   = TRUE,</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;        .state      = <a class="code" href="soundmanager_8c.html#a822ca9cdd926d3e23974346b3b0ea896">DS_CONTROLLED</a></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;    };</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;    GVariant* domainData = <a class="code" href="sm-helper_8c.html#af76a3fdf18a0f4ce83e6732e34d30344">create_domain_data</a>(&amp;ddata);</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;    gchar* retBusName = <a class="code" href="soundmanager_8c.html#a7d51ac1cb2ec7570dcf07012d66cf524">SOUND_MANAGER_BUS_NAME</a>;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;    gchar* retPath = <a class="code" href="soundmanager_8c.html#a2690d3e2461f5a2f9bb0720d657280da">SOUND_MANAGER_PATH</a>;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;    gchar* retInterface = <a class="code" href="soundmanager_8c.html#a525d367205e4db384f040fb48b795f29">SOUND_MANAGER_RETURN_INTERFACE</a>;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;    guint16 domain_id;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;    GError *err = NULL;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;    guint16 error;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;    <a class="code" href="audio__manager__interface_8c.html#a5f7bda35b571a0ce339108d3cb40b9cf">audiomanager_routinginterface_call_register_domain_sync</a>(</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;        am_route_bus, </div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;        domainData,</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;        retBusName, </div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;        retPath,</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;        retInterface, </div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;        &amp;domain_id, &amp;error,</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        NULL, &amp;err);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;    <span class="keywordflow">if</span>(err != NULL){</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Failed to call %s&quot;</span>, __FUNCTION__);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;    }</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;    <span class="keywordflow">if</span>(error != 0)</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;    {</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Failed to register domain&quot;</span>);</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;        <span class="keywordflow">return</span> error;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;    }</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;    SOUNDMANAGER_DOMAIN_ID = domain_id;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    AFB_NOTICE( <span class="stringliteral">&quot;Complete registered domain id:%d&quot;</span>,SOUNDMANAGER_DOMAIN_ID);</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;}</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> preinit()</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;{</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;    <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;    AFB_INFO(<span class="stringliteral">&quot;Initialize Dbus object&quot;</span>);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;    <span class="comment">/* Initialize Dbus interface */</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;    <span class="keywordflow">if</span>(am_cmd_bus || am_route_bus)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;    {</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;Dbus object to Audio Manager is already created&quot;</span>);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;        <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;    }</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;    am_cmd_bus = <a class="code" href="audio__manager__interface_8c.html#a99addfde08c5933d19b448ad9386e1ae">audiomanager_commandinterface_proxy_new_for_bus_sync</a>(</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;        G_BUS_TYPE_SYSTEM,</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;        G_DBUS_PROXY_FLAGS_NONE,</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;        <a class="code" href="soundmanager_8c.html#ad25089fbfd55bf795bed283a5b283461">AM_NAME</a>,</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;        <a class="code" href="soundmanager_8c.html#afa98a8b4c63efeb6e209144e7b247291">AM_CMD_PATH</a>,</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;        NULL,</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;        NULL</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;        );</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;    am_route_bus = <a class="code" href="audio__manager__interface_8c.html#ab20c157db75c8704f853c2ae11f64cc6">audiomanager_routinginterface_proxy_new_for_bus_sync</a>(</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;        G_BUS_TYPE_SYSTEM,</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;        G_DBUS_PROXY_FLAGS_NONE,</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;        <a class="code" href="soundmanager_8c.html#ad25089fbfd55bf795bed283a5b283461">AM_NAME</a>,</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;        <a class="code" href="soundmanager_8c.html#a9a50fb496af125690fb276944b3b4cff">AM_ROUTE_PATH</a>,</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;        NULL,</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;        NULL</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;        );</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;    <span class="keywordflow">if</span>(!am_cmd_bus || !am_route_bus)</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;    {</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;        <span class="keywordflow">goto</span> out;</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;    }</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;    AFB_NOTICE( <span class="stringliteral">&quot;Finish Initialize&quot;</span>);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;out:</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;    AFB_ERROR(<span class="stringliteral">&quot;Failed to initialize&quot;</span>);</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;}</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> create_adapter()</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;{</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;    GError *error = NULL;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;    gboolean ret;</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;    GVariant *value;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;    system_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &amp;error);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;    <span class="keywordflow">if</span> (error)</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;    {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;        g_error_free(error);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;    }</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;    sm_adapter = <a class="code" href="audio__manager__interface_8c.html#aa457ed83f6cd0148308d87aee03208fe">audiomanager_routing_soundmanager_skeleton_new</a>();</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;    sm_itf = <a class="code" href="audio__manager__interface_8h.html#aa7e79be0b07eea5d54dea54ca8e43e51">AUDIOMANAGER_ROUTING_SOUNDMANAGER_GET_IFACE</a>(sm_adapter);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;    <span class="comment">/* initialize sound manager adapter */</span></div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;    sm_itf-&gt;<a class="code" href="struct___audiomanager_routing_soundmanager_iface.html#a2533187c934a62aa925bc33f36e0842d">handle_async_abort</a> = on_async_abort;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;    sm_itf-&gt;<a class="code" href="struct___audiomanager_routing_soundmanager_iface.html#aaf21bf6e7f0a53cc0ff682ab84915916">handle_async_connect</a> = on_async_connect;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;    sm_itf-&gt;<a class="code" href="struct___audiomanager_routing_soundmanager_iface.html#a4afe4885e0f8effeec506c7c248ce406">handle_async_disconnect</a> = on_async_disconnect;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;    sm_itf-&gt;<a class="code" href="struct___audiomanager_routing_soundmanager_iface.html#ad50e3c8bf63145db7b2793f3f09a8a1a">handle_async_set_sink_volume</a> = on_async_set_sink_volume;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;    sm_itf-&gt;<a class="code" href="struct___audiomanager_routing_soundmanager_iface.html#afa12d6ca18a68e5ef319b6f5d4830ad3">handle_async_set_source_state</a> = on_async_set_source_state;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;    <span class="keywordtype">int</span> sigret = g_signal_connect(sm_adapter, <span class="stringliteral">&quot;handle-async-abort&quot;</span>, G_CALLBACK(on_async_abort),NULL);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;    sigret = g_signal_connect(sm_adapter, <span class="stringliteral">&quot;handle-async-connect&quot;</span>, G_CALLBACK(on_async_connect),NULL);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    sigret = g_signal_connect(sm_adapter, <span class="stringliteral">&quot;handle-async-disconnect&quot;</span>, G_CALLBACK(on_async_disconnect),NULL);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;    sigret = g_signal_connect(sm_adapter, <span class="stringliteral">&quot;handle-async-set-sink-volume&quot;</span>, G_CALLBACK(on_async_set_sink_volume),NULL);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;    sigret = g_signal_connect(sm_adapter, <span class="stringliteral">&quot;handle-async-set-source-state&quot;</span>, G_CALLBACK(on_async_set_source_state),NULL);</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;    ret = g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(sm_adapter), system_conn, <a class="code" href="soundmanager_8c.html#a2690d3e2461f5a2f9bb0720d657280da">SOUND_MANAGER_PATH</a>, &amp;error);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;    <span class="keywordflow">if</span> (FALSE == ret)</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;    {</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;        AFB_ERROR( <span class="stringliteral">&quot;failed to export&quot;</span>);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;        g_error_free(error);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;        g_object_unref(system_conn);</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;    }</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;}</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> on_name_lost(GDBusServer *server, GDBusConnection *conn, gpointer data)</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;{</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;    AFB_WARNING(<span class="stringliteral">&quot;%s called&quot;</span>, __FUNCTION__);    </div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;}</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span> sm_event_init()</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;{</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;    AFB_NOTICE(<span class="stringliteral">&quot;Initialize event receive setting&quot;</span>);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;    printf(<span class="stringliteral">&quot;Initialize event receive setting&quot;</span>);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;    <span class="keywordtype">int</span> ret;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;    <span class="comment">/* Initialize make event */</span></div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;    <span class="keywordtype">size_t</span> size = <span class="keyword">sizeof</span> cmd_evlist / <span class="keyword">sizeof</span> *cmd_evlist;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;    <span class="comment">/*create event*/</span></div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;    <span class="comment">/*ToDo Hash table is better. And event should be created in the loop</span></div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;<span class="comment">      I would like to change */</span></div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;    ev_volume_changed = afb_daemon_make_event(cmd_evlist[0]);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;    ev_new_connection = afb_daemon_make_event(cmd_evlist[1]);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;    ev_removed_main_connection   = afb_daemon_make_event(cmd_evlist[2]);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;    ev_sink_mute_state_changed  = afb_daemon_make_event(cmd_evlist[3]);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;    ev_main_connection_state_changed    = afb_daemon_make_event(cmd_evlist[4]);</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;    command_event_list[0].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = cmd_evlist[0]; </div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;    command_event_list[0].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_volume_changed;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;    command_event_list[1].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = cmd_evlist[1]; </div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    command_event_list[1].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_new_connection;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;    command_event_list[2].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = cmd_evlist[2]; </div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;    command_event_list[2].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_removed_main_connection;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;    command_event_list[3].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = cmd_evlist[3]; </div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;    command_event_list[3].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_sink_mute_state_changed;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;    command_event_list[4].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = cmd_evlist[4]; </div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;    command_event_list[4].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_main_connection_state_changed;</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;    <span class="comment">/* create routing event */</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;    ev_set_routing_ready = afb_daemon_make_event(route_evlist[0]);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;    ev_set_routing_rundown = afb_daemon_make_event(route_evlist[1]);    </div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;    ev_async_connect = afb_daemon_make_event(route_evlist[2]);</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;    ev_async_set_source_state = afb_daemon_make_event(route_evlist[3]);</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;    ev_async_disconnect = afb_daemon_make_event(route_evlist[4]);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;    </div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    routing_event_list[0].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = route_evlist[0]; </div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;    routing_event_list[0].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_set_routing_ready;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;    routing_event_list[1].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = route_evlist[1]; </div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;    routing_event_list[1].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_set_routing_rundown;</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;    routing_event_list[2].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = route_evlist[2]; </div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;    routing_event_list[2].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_async_connect;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;    routing_event_list[3].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = route_evlist[3]; </div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;    routing_event_list[3].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_async_set_source_state;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160;    routing_event_list[4].<a class="code" href="structevent.html#a723489bec273335d13513cd1040c0216">name</a> = route_evlist[4]; </div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;    routing_event_list[4].<a class="code" href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event</a> = &amp;ev_async_disconnect;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160;    <span class="comment">/*for(size_t i = 0; i &lt; size; ++i)</span></div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;<span class="comment">    {</span></div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160;<span class="comment">        struct afb_event afbev = afb_daemon_make_event(afbitf-&gt;daemon, cmd_evlist[i]));</span></div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;<span class="comment">        size_t afbev_size = sizeof afbev;</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;<span class="comment">        size_t key_size = sizeof cmd_evlist[i];</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;<span class="comment">        struct event ev = {cmd_evlist[i],afbev};</span></div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="comment">        command_event_list[i] = malloc(key_size + afbev_size);</span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="comment">        command_event_list[i] = ev;</span></div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160;<span class="comment">        search_result = hsearch(entry, FIND);</span></div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160;<span class="comment">        if(search_result)</span></div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;<span class="comment">            AFB_NOTICE( &quot;event name is %s&quot;, search_result-&gt;key);    </span></div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="comment">    }*/</span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;    <span class="comment">/* Initialize dbus event thread */</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;    <span class="keywordflow">if</span>(!am_cmd_bus || !am_route_bus)</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;    {</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;        <span class="keywordflow">goto</span> ev_init_out;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160;    }</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;    pthread_t thread_id;</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;    ret = pthread_create(&amp;thread_id, NULL, dbus_event_loop_run, NULL);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160;    <span class="keywordflow">if</span>(ret != 0)</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;    {</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;        <span class="keywordflow">goto</span> ev_init_out;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;    }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;    <span class="comment">/* initialize signal from audio manager command interface */</span></div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;    g_signal_connect(am_cmd_bus, </div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;        <span class="stringliteral">&quot;volume_changed&quot;</span>, </div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;        G_CALLBACK(on_volume_changed), </div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160;        NULL);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160;    g_signal_connect(am_cmd_bus, </div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160;        <span class="stringliteral">&quot;new_main_connection&quot;</span>, </div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160;        G_CALLBACK(on_new_main_connection), </div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160;        NULL);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160;    g_signal_connect(am_cmd_bus, </div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160;        <span class="stringliteral">&quot;removed_main_connection&quot;</span>, </div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;        G_CALLBACK(on_removed_main_connection), </div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;        NULL);</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160;    g_signal_connect(am_cmd_bus, </div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;        <span class="stringliteral">&quot;sink_mute_state_changed&quot;</span>, </div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;        G_CALLBACK(on_sink_mute_state_changed), </div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;        NULL);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;    g_signal_connect(am_cmd_bus, </div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;        <span class="stringliteral">&quot;main_connection_state_changed&quot;</span>, </div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;        G_CALLBACK(on_main_connection_state_changed), </div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;        NULL);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;    g_signal_connect(am_route_bus, </div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;        <span class="stringliteral">&quot;set_routing_ready&quot;</span>, </div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;        G_CALLBACK(on_set_routing_ready), </div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;        NULL);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;    g_signal_connect(am_route_bus, </div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;        <span class="stringliteral">&quot;set_routing_rundown&quot;</span>, </div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;        G_CALLBACK(on_set_routing_rundown), </div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;        NULL);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;    <span class="comment">/* Get soundmanager adapter bus */</span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;    ret = g_bus_own_name(G_BUS_TYPE_SYSTEM, <a class="code" href="soundmanager_8c.html#a7d51ac1cb2ec7570dcf07012d66cf524">SOUND_MANAGER_BUS_NAME</a>, G_BUS_NAME_OWNER_FLAGS_NONE,</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;        NULL,NULL, NULL, NULL, NULL);</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;    AFB_DEBUG( <span class="stringliteral">&quot;g_bus_own_name ret: %d&quot;</span>, ret);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;    ret = create_adapter();</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;    <span class="keywordflow">if</span>(ret != 0)</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;    {</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;        <span class="keywordflow">goto</span> ev_init_out;        </div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;    }</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;    ret = registerDomain();</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;    <span class="keywordflow">if</span>(ret != 0)</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;    {</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;        AFB_ERROR(<span class="stringliteral">&quot;registerDomain error: %s&quot;</span>,<a class="code" href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a>(ret));</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;        <span class="keywordflow">goto</span> ev_init_out;        </div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;    }</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;    AFB_INFO(<span class="stringliteral">&quot;Finish Initialize event receive setting&quot;</span>);</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;ev_init_out:</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;    <span class="keywordflow">if</span>(loop != NULL)</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;    {</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;        g_main_loop_unref(loop);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;    }</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;    AFB_WARNING( <span class="stringliteral">&quot;DBus connection is not created&quot;</span>);</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;    <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;}</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> onevent(<span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structevent.html">event</a>, <span class="keyword">struct</span> json_object *<span class="keywordtype">object</span>)</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;{</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;   AFB_NOTICE(<span class="stringliteral">&quot;on_event %s&quot;</span>, event);</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;}</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;</div><div class="line"><a name="l01567"></a><span class="lineno"><a class="line" href="soundmanager_8c.html#ae2a62ab481a2922cbfc788193857a12e"> 1567</a></span>&#160;<span class="keyword">const</span> <span class="keyword">struct </span>afb_binding_v2 <a class="code" href="soundmanager_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a> = {</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;    .api = <span class="stringliteral">&quot;soundmanager&quot;</span>,</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;    .specification = NULL,</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;    .verbs = binding_verbs,</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;    .preinit = preinit,</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;    .init = sm_event_init,</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;    .onevent = onevent</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;};</div><div class="ttc" id="audio__manager__interface_8h_html_a50a64aefeed571462d6ae149525f39b1"><div class="ttname"><a href="audio__manager__interface_8h.html#a50a64aefeed571462d6ae149525f39b1">AudiomanagerRoutingSoundmanager</a></div><div class="ttdeci">struct _AudiomanagerRoutingSoundmanager AudiomanagerRoutingSoundmanager</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01079">audio_manager_interface.h:1079</a></div></div>
<div class="ttc" id="structevent_html_a58726ebc551d36562ac3f9e1fe293214"><div class="ttname"><a href="structevent.html#a58726ebc551d36562ac3f9e1fe293214">event::event</a></div><div class="ttdeci">struct afb_event * event</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00068">soundmanager.c:68</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a65be832e9b9e7fc4df6f9247f9779169"><div class="ttname"><a href="soundmanager_8c.html#a65be832e9b9e7fc4df6f9247f9779169">DYNAMIC_SOURCE_ID</a></div><div class="ttdeci">#define DYNAMIC_SOURCE_ID</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00046">soundmanager.c:46</a></div></div>
<div class="ttc" id="structmain__sound__property__s_html_add28376b77aa40fa79c8796a641cb3b4"><div class="ttname"><a href="structmain__sound__property__s.html#add28376b77aa40fa79c8796a641cb3b4">main_sound_property_s::type</a></div><div class="ttdeci">gint32 type</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00065">sm-helper.h:65</a></div></div>
<div class="ttc" id="soundmanager_8c_html_afa98a8b4c63efeb6e209144e7b247291"><div class="ttname"><a href="soundmanager_8c.html#afa98a8b4c63efeb6e209144e7b247291">AM_CMD_PATH</a></div><div class="ttdeci">#define AM_CMD_PATH</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00033">soundmanager.c:33</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html">_AudiomanagerRoutingSoundmanagerIface</a></div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01082">audio_manager_interface.h:1082</a></div></div>
<div class="ttc" id="soundmanager_8c_html_ad25089fbfd55bf795bed283a5b283461"><div class="ttname"><a href="soundmanager_8c.html#ad25089fbfd55bf795bed283a5b283461">AM_NAME</a></div><div class="ttdeci">#define AM_NAME</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00032">soundmanager.c:32</a></div></div>
<div class="ttc" id="structavailability__s_html_afdad584642d8870c90c54fac11bf25f2"><div class="ttname"><a href="structavailability__s.html#afdad584642d8870c90c54fac11bf25f2">availability_s::availability</a></div><div class="ttdeci">gint32 availability</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00056">sm-helper.h:56</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_ae1459fb13596f7770810b8754f7de063"><div class="ttname"><a href="audio__manager__interface_8c.html#ae1459fb13596f7770810b8754f7de063">audiomanager_routinginterface_call_deregister_source_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_deregister_source_sync(AudiomanagerRoutinginterface *proxy, guint16 arg_sourceID, guint16 *out_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l05154">audio_manager_interface.c:5154</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a2c0c52208e7308ae9eecd726fe8d94b9"><div class="ttname"><a href="soundmanager_8c.html#a2c0c52208e7308ae9eecd726fe8d94b9">DEFAULT_VOLUME</a></div><div class="ttdeci">#define DEFAULT_VOLUME</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00047">soundmanager.c:47</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a9a50fb496af125690fb276944b3b4cff"><div class="ttname"><a href="soundmanager_8c.html#a9a50fb496af125690fb276944b3b4cff">AM_ROUTE_PATH</a></div><div class="ttdeci">#define AM_ROUTE_PATH</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00034">soundmanager.c:34</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a525d367205e4db384f040fb48b795f29"><div class="ttname"><a href="soundmanager_8c.html#a525d367205e4db384f040fb48b795f29">SOUND_MANAGER_RETURN_INTERFACE</a></div><div class="ttdeci">#define SOUND_MANAGER_RETURN_INTERFACE</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00036">soundmanager.c:36</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html_aaf21bf6e7f0a53cc0ff682ab84915916"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html#aaf21bf6e7f0a53cc0ff682ab84915916">_AudiomanagerRoutingSoundmanagerIface::handle_async_connect</a></div><div class="ttdeci">gboolean(* handle_async_connect)(AudiomanagerRoutingSoundmanager *object, GDBusMethodInvocation *invocation, guint16 arg_handle, guint16 arg_connectionID, guint16 arg_sourceID, guint16 arg_sinkID, gint arg_connectionFormat)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01091">audio_manager_interface.h:1091</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a01a153a96c3eca52ef728f1485f1d4f3"><div class="ttname"><a href="soundmanager_8c.html#a01a153a96c3eca52ef728f1485f1d4f3">DEFAULT_SOURCE_CLASS_ID</a></div><div class="ttdeci">#define DEFAULT_SOURCE_CLASS_ID</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00043">soundmanager.c:43</a></div></div>
<div class="ttc" id="soundmanager_8c_html_aefb25f32a5ddeacbb5e6b8b09dc3e7bc"><div class="ttname"><a href="soundmanager_8c.html#aefb25f32a5ddeacbb5e6b8b09dc3e7bc">DYNAMIC_DOMAIN_ID</a></div><div class="ttdeci">#define DYNAMIC_DOMAIN_ID</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00044">soundmanager.c:44</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a67cdeffaf2fd293c9f7de73c64e851a9"><div class="ttname"><a href="sm-helper_8c.html#a67cdeffaf2fd293c9f7de73c64e851a9">sm_add_object_to_json_object_func</a></div><div class="ttdeci">void sm_add_object_to_json_object_func(struct json_object *j_obj, const char *verb_name, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00110">sm-helper.c:110</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a3d2195a3c1e1c25f65a4d583f3ca383b"><div class="ttname"><a href="soundmanager_8c.html#a3d2195a3c1e1c25f65a4d583f3ca383b">DEFAULT_AVAILABLES</a></div><div class="ttdeci">#define DEFAULT_AVAILABLES</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00048">soundmanager.c:48</a></div></div>
<div class="ttc" id="audio__manager__interface_8h_html_a5da5a28ccb8ea2c0268dd4ac81920879"><div class="ttname"><a href="audio__manager__interface_8h.html#a5da5a28ccb8ea2c0268dd4ac81920879">AudiomanagerCommandinterface</a></div><div class="ttdeci">struct _AudiomanagerCommandinterface AudiomanagerCommandinterface</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l00024">audio_manager_interface.h:24</a></div></div>
<div class="ttc" id="structevent_html"><div class="ttname"><a href="structevent.html">event</a></div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00066">soundmanager.c:66</a></div></div>
<div class="ttc" id="structavailability__s_html"><div class="ttname"><a href="structavailability__s.html">availability_s</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00055">sm-helper.h:55</a></div></div>
<div class="ttc" id="audio__manager__interface_8h_html_a8731118300bd1c17bd016ef36256ea12"><div class="ttname"><a href="audio__manager__interface_8h.html#a8731118300bd1c17bd016ef36256ea12">AudiomanagerRoutinginterface</a></div><div class="ttdeci">struct _AudiomanagerRoutinginterface AudiomanagerRoutinginterface</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l00433">audio_manager_interface.h:433</a></div></div>
<div class="ttc" id="soundmanager_8c_html_ad84a55c2affa8cbbf6584ec59ffe8d8a"><div class="ttname"><a href="soundmanager_8c.html#ad84a55c2affa8cbbf6584ec59ffe8d8a">DEFAULT_INTERRUPT</a></div><div class="ttdeci">#define DEFAULT_INTERRUPT</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00050">soundmanager.c:50</a></div></div>
<div class="ttc" id="sm-error_8h_html_ac9e29e97b431d3e8e4f342c1a03f3240"><div class="ttname"><a href="sm-error_8h.html#ac9e29e97b431d3e8e4f342c1a03f3240">get_response_audiomanager_massage_error</a></div><div class="ttdeci">char * get_response_audiomanager_massage_error(int am_error_code)</div><div class="ttdef"><b>Definition:</b> <a href="sm-error_8h_source.html#l00004">sm-error.h:4</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a7a4e4f1ed80dee36c519fb86958430ec"><div class="ttname"><a href="audio__manager__interface_8c.html#a7a4e4f1ed80dee36c519fb86958430ec">audiomanager_routinginterface_call_ack_disconnect_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_ack_disconnect_sync(AudiomanagerRoutinginterface *proxy, guint16 arg_handle, guint16 arg_connectionID, guint16 arg_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l04510">audio_manager_interface.c:4510</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_adadd28e13e61121cbe94ef86e2721204"><div class="ttname"><a href="audio__manager__interface_8c.html#adadd28e13e61121cbe94ef86e2721204">audiomanager_routinginterface_call_ack_connect_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_ack_connect_sync(AudiomanagerRoutinginterface *proxy, guint16 arg_handle, guint16 arg_connectionID, guint16 arg_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l04400">audio_manager_interface.c:4400</a></div></div>
<div class="ttc" id="structdomain__data_html"><div class="ttname"><a href="structdomain__data.html">domain_data</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00069">sm-helper.h:69</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_af27cf97f8fa87de47e0ee2c59940424f"><div class="ttname"><a href="audio__manager__interface_8c.html#af27cf97f8fa87de47e0ee2c59940424f">audiomanager_commandinterface_call_set_volume_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_set_volume_sync(AudiomanagerCommandinterface *proxy, guint16 arg_sinkID, gint16 arg_volume, gint16 *out_result, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01531">audio_manager_interface.c:1531</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a8bd76889d860b7db9327f1e6e1f8c9c9"><div class="ttname"><a href="audio__manager__interface_8c.html#a8bd76889d860b7db9327f1e6e1f8c9c9">audiomanager_routinginterface_call_register_source_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_register_source_sync(AudiomanagerRoutinginterface *proxy, GVariant *arg_sourceData, guint16 *out_sourceID, guint16 *out_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l05048">audio_manager_interface.c:5048</a></div></div>
<div class="ttc" id="sm-error_8h_html"><div class="ttname"><a href="sm-error_8h.html">sm-error.h</a></div></div>
<div class="ttc" id="structmain__sound__property__s_html"><div class="ttname"><a href="structmain__sound__property__s.html">main_sound_property_s</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00064">sm-helper.h:64</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_afc19e9a9c634f428c7b17c20db3f0b7d"><div class="ttname"><a href="audio__manager__interface_8c.html#afc19e9a9c634f428c7b17c20db3f0b7d">audiomanager_commandinterface_call_set_sink_mute_state_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_set_sink_mute_state_sync(AudiomanagerCommandinterface *proxy, guint16 arg_sinkID, gint16 arg_muteState, gint16 *out_result, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01751">audio_manager_interface.c:1751</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_ad6c3a3b45afb772d4db1587b11187e4c"><div class="ttname"><a href="audio__manager__interface_8c.html#ad6c3a3b45afb772d4db1587b11187e4c">audiomanager_routinginterface_call_ack_set_sink_volume_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_ack_set_sink_volume_sync(AudiomanagerRoutinginterface *proxy, guint16 arg_handle, gint16 arg_volume, guint16 arg_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l04724">audio_manager_interface.c:4724</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a181177bbe37995c1d64e2f60f0b8dae1"><div class="ttname"><a href="audio__manager__interface_8c.html#a181177bbe37995c1d64e2f60f0b8dae1">audiomanager_commandinterface_call_get_list_main_connections_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_get_list_main_connections_sync(AudiomanagerCommandinterface *proxy, gint16 *out_result, GVariant **out_listConnections, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01857">audio_manager_interface.c:1857</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a26d9526788210248c2a4cc1e69aff199"><div class="ttname"><a href="audio__manager__interface_8c.html#a26d9526788210248c2a4cc1e69aff199">audiomanager_commandinterface_call_get_list_main_sinks_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_get_list_main_sinks_sync(AudiomanagerCommandinterface *proxy, gint16 *out_result, GVariant **out_listMainSinks, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01961">audio_manager_interface.c:1961</a></div></div>
<div class="ttc" id="audio__manager__interface_8h_html_aa7e79be0b07eea5d54dea54ca8e43e51"><div class="ttname"><a href="audio__manager__interface_8h.html#aa7e79be0b07eea5d54dea54ca8e43e51">AUDIOMANAGER_ROUTING_SOUNDMANAGER_GET_IFACE</a></div><div class="ttdeci">#define AUDIOMANAGER_ROUTING_SOUNDMANAGER_GET_IFACE(o)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01076">audio_manager_interface.h:1076</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html_a2533187c934a62aa925bc33f36e0842d"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html#a2533187c934a62aa925bc33f36e0842d">_AudiomanagerRoutingSoundmanagerIface::handle_async_abort</a></div><div class="ttdeci">gboolean(* handle_async_abort)(AudiomanagerRoutingSoundmanager *object, GDBusMethodInvocation *invocation, guint16 arg_handle)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01086">audio_manager_interface.h:1086</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a2e62366684e39ea94436bf017e416827"><div class="ttname"><a href="sm-helper_8c.html#a2e62366684e39ea94436bf017e416827">get_value_int16</a></div><div class="ttdeci">REQ_ERROR get_value_int16(const struct afb_req request, const char *source, int16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00048">sm-helper.c:48</a></div></div>
<div class="ttc" id="sm-helper_8h_html"><div class="ttname"><a href="sm-helper_8h.html">sm-helper.h</a></div></div>
<div class="ttc" id="structdomain__data_html_af1c7931d89ac01836657748e3afb43ca"><div class="ttname"><a href="structdomain__data.html#af1c7931d89ac01836657748e3afb43ca">domain_data::domainID</a></div><div class="ttdeci">guint16 domainID</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00070">sm-helper.h:70</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a33d1c40de8a5e7a3d6f0e2f45de9f37f"><div class="ttname"><a href="soundmanager_8c.html#a33d1c40de8a5e7a3d6f0e2f45de9f37f">ROUTING_EVENT_NUM</a></div><div class="ttdeci">#define ROUTING_EVENT_NUM</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00041">soundmanager.c:41</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html_a4afe4885e0f8effeec506c7c248ce406"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html#a4afe4885e0f8effeec506c7c248ce406">_AudiomanagerRoutingSoundmanagerIface::handle_async_disconnect</a></div><div class="ttdeci">gboolean(* handle_async_disconnect)(AudiomanagerRoutingSoundmanager *object, GDBusMethodInvocation *invocation, guint16 arg_handle, guint16 arg_connectionID)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01100">audio_manager_interface.h:1100</a></div></div>
<div class="ttc" id="structnotification__config__s_html"><div class="ttname"><a href="structnotification__config__s.html">notification_config_s</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00059">sm-helper.h:59</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_ab20c157db75c8704f853c2ae11f64cc6"><div class="ttname"><a href="audio__manager__interface_8c.html#ab20c157db75c8704f853c2ae11f64cc6">audiomanager_routinginterface_proxy_new_for_bus_sync</a></div><div class="ttdeci">AudiomanagerRoutinginterface * audiomanager_routinginterface_proxy_new_for_bus_sync(GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l06668">audio_manager_interface.c:6668</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a971c6c55c9b04ae87c377fbde6a4c6f6"><div class="ttname"><a href="sm-helper_8c.html#a971c6c55c9b04ae87c377fbde6a4c6f6">sm_search_event_name_index</a></div><div class="ttdeci">int sm_search_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00127">sm-helper.c:127</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a7d51ac1cb2ec7570dcf07012d66cf524"><div class="ttname"><a href="soundmanager_8c.html#a7d51ac1cb2ec7570dcf07012d66cf524">SOUND_MANAGER_BUS_NAME</a></div><div class="ttdeci">#define SOUND_MANAGER_BUS_NAME</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00037">soundmanager.c:37</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_aa457ed83f6cd0148308d87aee03208fe"><div class="ttname"><a href="audio__manager__interface_8c.html#aa457ed83f6cd0148308d87aee03208fe">audiomanager_routing_soundmanager_skeleton_new</a></div><div class="ttdeci">AudiomanagerRoutingSoundmanager * audiomanager_routing_soundmanager_skeleton_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l08818">audio_manager_interface.c:8818</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a649900645417f2df3a70b9ad67529f53"><div class="ttname"><a href="sm-helper_8c.html#a649900645417f2df3a70b9ad67529f53">get_value_uint16</a></div><div class="ttdeci">REQ_ERROR get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00024">sm-helper.c:24</a></div></div>
<div class="ttc" id="sm-error_8h_html_a2df7c91b7a762f9ae743210bbb8e822f"><div class="ttname"><a href="sm-error_8h.html#a2df7c91b7a762f9ae743210bbb8e822f">get_source_state_key</a></div><div class="ttdeci">char * get_source_state_key(int am_source_state)</div><div class="ttdef"><b>Definition:</b> <a href="sm-error_8h_source.html#l00038">sm-error.h:38</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a2690d3e2461f5a2f9bb0720d657280da"><div class="ttname"><a href="soundmanager_8c.html#a2690d3e2461f5a2f9bb0720d657280da">SOUND_MANAGER_PATH</a></div><div class="ttdeci">#define SOUND_MANAGER_PATH</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00038">soundmanager.c:38</a></div></div>
<div class="ttc" id="audio__manager__interface_8h_html"><div class="ttname"><a href="audio__manager__interface_8h.html">audio_manager_interface.h</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a4ddada2b9dbb9eed0a2f22009fd0b317"><div class="ttname"><a href="audio__manager__interface_8c.html#a4ddada2b9dbb9eed0a2f22009fd0b317">audiomanager_commandinterface_call_connect_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_connect_sync(AudiomanagerCommandinterface *proxy, guint16 arg_sourceID, guint16 arg_sinkID, gint16 *out_result, guint16 *out_mainConnectionID, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01315">audio_manager_interface.c:1315</a></div></div>
<div class="ttc" id="structnotification__config__s_html_acf4add4414b451c1a51df3833c7b5663"><div class="ttname"><a href="structnotification__config__s.html#acf4add4414b451c1a51df3833c7b5663">notification_config_s::type</a></div><div class="ttdeci">gint32 type</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00060">sm-helper.h:60</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_aafc35c8740b1373e0964bc469cd6548f"><div class="ttname"><a href="audio__manager__interface_8c.html#aafc35c8740b1373e0964bc469cd6548f">audiomanager_commandinterface_call_volume_step_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_volume_step_sync(AudiomanagerCommandinterface *proxy, guint16 arg_sinkID, gint16 arg_volumeStep, gint16 *out_result, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01641">audio_manager_interface.c:1641</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a822ca9cdd926d3e23974346b3b0ea896"><div class="ttname"><a href="soundmanager_8c.html#a822ca9cdd926d3e23974346b3b0ea896">DS_CONTROLLED</a></div><div class="ttdeci">#define DS_CONTROLLED</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00052">soundmanager.c:52</a></div></div>
<div class="ttc" id="sm-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee"><div class="ttname"><a href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899ab093abb14c097b3b7719debb04d5e8ee">REQ_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00029">sm-helper.h:29</a></div></div>
<div class="ttc" id="structsound__property__s_html_ac16b579b78b9552f10922eb2423e3726"><div class="ttname"><a href="structsound__property__s.html#ac16b579b78b9552f10922eb2423e3726">sound_property_s::type</a></div><div class="ttdeci">guint16 type</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00052">sm-helper.h:52</a></div></div>
<div class="ttc" id="soundmanager_8c_html_ae2a62ab481a2922cbfc788193857a12e"><div class="ttname"><a href="soundmanager_8c.html#ae2a62ab481a2922cbfc788193857a12e">afbBindingV2</a></div><div class="ttdeci">const struct afb_binding_v2 afbBindingV2</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l01567">soundmanager.c:1567</a></div></div>
<div class="ttc" id="sm-helper_8c_html_ac5b0370643c520377afd3fd4891918d2"><div class="ttname"><a href="sm-helper_8c.html#ac5b0370643c520377afd3fd4891918d2">get_value_int32</a></div><div class="ttdeci">REQ_ERROR get_value_int32(const struct afb_req request, const char *source, int32_t *out_id)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00072">sm-helper.c:72</a></div></div>
<div class="ttc" id="sm-helper_8c_html_abce7df03d817a3356071f1563011b77f"><div class="ttname"><a href="sm-helper_8c.html#abce7df03d817a3356071f1563011b77f">sm_add_object_to_json_object</a></div><div class="ttdeci">void sm_add_object_to_json_object(struct json_object *j_obj, int count,...)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00096">sm-helper.c:96</a></div></div>
<div class="ttc" id="structsound__property__s_html"><div class="ttname"><a href="structsound__property__s.html">sound_property_s</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00051">sm-helper.h:51</a></div></div>
<div class="ttc" id="sm-helper_8c_html_af76a3fdf18a0f4ce83e6732e34d30344"><div class="ttname"><a href="sm-helper_8c.html#af76a3fdf18a0f4ce83e6732e34d30344">create_domain_data</a></div><div class="ttdeci">GVariant * create_domain_data(struct domain_data *data)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00218">sm-helper.c:218</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a3e796f9928089743d18b5e2404e1d45c"><div class="ttname"><a href="audio__manager__interface_8c.html#a3e796f9928089743d18b5e2404e1d45c">audiomanager_routinginterface_call_ack_set_source_state_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_ack_set_source_state_sync(AudiomanagerRoutinginterface *proxy, guint16 arg_handle, guint16 arg_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l04616">audio_manager_interface.c:4616</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a77e25a7b6c35e720d5407547742ffb4a"><div class="ttname"><a href="soundmanager_8c.html#a77e25a7b6c35e720d5407547742ffb4a">DEFAULT_SINK</a></div><div class="ttdeci">#define DEFAULT_SINK</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00042">soundmanager.c:42</a></div></div>
<div class="ttc" id="sm-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1"><div class="ttname"><a href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899a96a855966bc63045222b3dcac524cee1">REQ_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00028">sm-helper.h:28</a></div></div>
<div class="ttc" id="soundmanager_8c_html_afe2844c6f961ec3364ee5e54148baf3d"><div class="ttname"><a href="soundmanager_8c.html#afe2844c6f961ec3364ee5e54148baf3d">DEFAULT_CONNECTION_FORMAT</a></div><div class="ttdeci">#define DEFAULT_CONNECTION_FORMAT</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00049">soundmanager.c:49</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html_afa12d6ca18a68e5ef319b6f5d4830ad3"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html#afa12d6ca18a68e5ef319b6f5d4830ad3">_AudiomanagerRoutingSoundmanagerIface::handle_async_set_source_state</a></div><div class="ttdeci">gboolean(* handle_async_set_source_state)(AudiomanagerRoutingSoundmanager *object, GDBusMethodInvocation *invocation, guint16 arg_handle, guint16 arg_sourceID, gint arg_sourceState)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01115">audio_manager_interface.h:1115</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a3da984668307f39d541053eba1d78a83"><div class="ttname"><a href="sm-helper_8c.html#a3da984668307f39d541053eba1d78a83">create_source_data</a></div><div class="ttdeci">GVariant * create_source_data(guint16 sourceID, guint16 domainID, const char *appname, guint16 sourceClassID, gint32 sourceState, gint16 volume, gboolean visible, struct availability_s availables, guint16 interrupt, struct sound_property_s soundPropertyList, gint32 connectionFormatList, struct main_sound_property_s mainPropertyList, struct notification_config_s NConfRouting, struct notification_config_s NConfCommand)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00159">sm-helper.c:159</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a9a68ed04201d9390bb85b2c6ab1d7250"><div class="ttname"><a href="soundmanager_8c.html#a9a68ed04201d9390bb85b2c6ab1d7250">EVENT_SUBSCRIBE_ERROR_CODE</a></div><div class="ttdeci">#define EVENT_SUBSCRIBE_ERROR_CODE</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00054">soundmanager.c:54</a></div></div>
<div class="ttc" id="sm-helper_8h_html_aa49f1dbbf26f01627a5737cf43aad899"><div class="ttname"><a href="sm-helper_8h.html#aa49f1dbbf26f01627a5737cf43aad899">REQ_ERROR</a></div><div class="ttdeci">REQ_ERROR</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8h_source.html#l00026">sm-helper.h:26</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a99addfde08c5933d19b448ad9386e1ae"><div class="ttname"><a href="audio__manager__interface_8c.html#a99addfde08c5933d19b448ad9386e1ae">audiomanager_commandinterface_proxy_new_for_bus_sync</a></div><div class="ttdeci">AudiomanagerCommandinterface * audiomanager_commandinterface_proxy_new_for_bus_sync(GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l02469">audio_manager_interface.c:2469</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_abc5fb1befb03a12679136625a0aa1aca"><div class="ttname"><a href="audio__manager__interface_8c.html#abc5fb1befb03a12679136625a0aa1aca">audiomanager_commandinterface_call_disconnect_sync</a></div><div class="ttdeci">gboolean audiomanager_commandinterface_call_disconnect_sync(AudiomanagerCommandinterface *proxy, guint16 arg_mainConnectionID, gint16 *out_result, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l01423">audio_manager_interface.c:1423</a></div></div>
<div class="ttc" id="audio__manager__interface_8c_html_a5f7bda35b571a0ce339108d3cb40b9cf"><div class="ttname"><a href="audio__manager__interface_8c.html#a5f7bda35b571a0ce339108d3cb40b9cf">audiomanager_routinginterface_call_register_domain_sync</a></div><div class="ttdeci">gboolean audiomanager_routinginterface_call_register_domain_sync(AudiomanagerRoutinginterface *proxy, GVariant *arg_domaindata, const gchar *arg_returnBusname, const gchar *arg_returnPath, const gchar *arg_returnInterface, guint16 *out_domainid, guint16 *out_error, GCancellable *cancellable, GError **error)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8c_source.html#l05996">audio_manager_interface.c:5996</a></div></div>
<div class="ttc" id="struct___audiomanager_routing_soundmanager_iface_html_ad50e3c8bf63145db7b2793f3f09a8a1a"><div class="ttname"><a href="struct___audiomanager_routing_soundmanager_iface.html#ad50e3c8bf63145db7b2793f3f09a8a1a">_AudiomanagerRoutingSoundmanagerIface::handle_async_set_sink_volume</a></div><div class="ttdeci">gboolean(* handle_async_set_sink_volume)(AudiomanagerRoutingSoundmanager *object, GDBusMethodInvocation *invocation, guint16 arg_handle, guint16 arg_sinkID, gint16 arg_volume, gint16 arg_ramp, guint16 arg_time)</div><div class="ttdef"><b>Definition:</b> <a href="audio__manager__interface_8h_source.html#l01106">audio_manager_interface.h:1106</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a2e55e315783d371a4d49378bae0310a7"><div class="ttname"><a href="soundmanager_8c.html#a2e55e315783d371a4d49378bae0310a7">DEFAULT_SOURCE_STATE</a></div><div class="ttdeci">#define DEFAULT_SOURCE_STATE</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00051">soundmanager.c:51</a></div></div>
<div class="ttc" id="soundmanager_8c_html_a09f43d9e7e1c5d2198c0d66024b4500e"><div class="ttname"><a href="soundmanager_8c.html#a09f43d9e7e1c5d2198c0d66024b4500e">COMMAND_EVENT_NUM</a></div><div class="ttdeci">#define COMMAND_EVENT_NUM</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00040">soundmanager.c:40</a></div></div>
<div class="ttc" id="structevent_html_a723489bec273335d13513cd1040c0216"><div class="ttname"><a href="structevent.html#a723489bec273335d13513cd1040c0216">event::name</a></div><div class="ttdeci">char * name</div><div class="ttdef"><b>Definition:</b> <a href="soundmanager_8c_source.html#l00067">soundmanager.c:67</a></div></div>
<div class="ttc" id="sm-helper_8c_html_a2a63791cfba48b0456aefafe237e419e"><div class="ttname"><a href="sm-helper_8c.html#a2a63791cfba48b0456aefafe237e419e">sm_search_routing_event_name_index</a></div><div class="ttdeci">int sm_search_routing_event_name_index(const char *value)</div><div class="ttdef"><b>Definition:</b> <a href="sm-helper_8c_source.html#l00143">sm-helper.c:143</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_fc265b39262ea2713c037617d421974d.html">R:</a></li><li class="navelem"><a class="el" href="dir_c0f9ac54811231ea41ecdb457a109fa8.html">SoundManagerBinding</a></li><li class="navelem"><a class="el" href="dir_0edebbbd890f462231084d11aa59ffa6.html">src</a></li><li class="navelem"><a class="el" href="soundmanager_8c.html">soundmanager.c</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>