summaryrefslogtreecommitdiffstats
path: root/bindings/samples/HelloWorld.c
blob: c5a79deb4ceca380fabae8021f626680608d6b8a (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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
<!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>
<l
/*
 * Copyright (C) 2015, 2016, 2017 "IoT.bzh"
 * Author "Fulup Ar Foll"
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <pthread.h>

#include <json-c/json.h>

#define AFB_BINDING_VERSION 2
#include <afb/afb-binding.h>

static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

struct event
{
	struct event *next;
	struct afb_event event;
	char tag[1];
};

static struct event *events = 0;

/* searchs the event of tag */
static struct event *event_get(const char *tag)
{
	struct event *e = events;
	while(e && strcmp(e->tag, tag))
		e = e->next;
	return e;
}

/* deletes the event of tag */
static int event_del(const char *tag)
{
	struct event *e, **p;

	/* check exists */
	e = event_get(tag);
	if (!e) return -1;

	/* unlink */
	p = &events;
	while(*p != e) p = &(*p)->next;
	*p = e->next;

	/* destroys */
	afb_event_drop(e->event);
	free(e);
	return 0;
}

/* creates the event of tag */
static int event_add(const char *tag, const char *name)
{
	struct event *e;

	/* check valid tag */
	e = event_get(tag);
	if (e) return -1;

	/* creation */
	e = malloc(strlen(tag) + sizeof *e);
	if (!e) return -1;
	strcpy(e->tag, tag);

	/* make the event */
	e->event = afb_daemon_make_event(name);
	if (!e->event.closure) { free(e); return -1; }

	/* link */
	e->next = events;
	events = e;
	return 0;
}

static int event_subscribe(afb_req request, const char *tag)
{
	struct event *e;
	e = event_get(tag);
	return e ? afb_req_subscribe(request, e->event) : -1;
}

static int event_unsubscribe(afb_req request, const char *tag)
{
	struct event *e;
	e = event_get(tag);
	return e ? afb_req_unsubscribe(request, e->event) : -1;
}

static int event_push(struct json_object *args, const char *tag)
{
	struct event *e;
	e = event_get(tag);
	return e ? afb_event_push(e->event, json_object_get(args)) : -1;
}

static int event_broadcast(struct json_object *args, const char *tag)
{
	struct event *e;
	e = event_get(tag);
	return e ? afb_event_broadcast(e->event, json_object_get(args)) : -1;
}

// Sample Generic Ping Debug API
static void ping(afb_req request, json_object *jresp, const char *tag)
{
	static int pingcount = 0;
	json_object *query = afb_req_json(request);
	afb_req_success_f(request, jresp, "Ping Binder Daemon tag=%s count=%d query=%s", tag, ++pingcount, json_object_to_json_string(query));
}

static void pingSample (afb_req request)
{
	ping(request, json_object_new_string ("Some String"), "pingSample");
}

static void pingFail (afb_req request)
{
	afb_req_fail(request, "failed", "Ping Binder Daemon fails");
}

static void pingNull (afb_req request)
{
	ping(request, NULL, "pingNull");
}

static void pingBug (afb_req request)
{
	ping((afb_req){NULL,NULL}, NULL, "pingBug");
}

static void pingEvent(afb_req request)
{
	json_object *query = afb_req_json(request);
	afb_daemon_broadcast_event("event", json_object_get(query));
	ping(request, json_object_get(query), "event");
}


// For samples https://linuxprograms.wordpress.com/2010/05/20/json-c-libjson-tutorial/
static void pingJson (afb_req request) {
    json_object *jresp, *embed;

    jresp = json_object_new_object();
    json_object_object_add(jresp, "myString", json_object_new_string ("Some String"));
    json_object_object_add(jresp, "myInt", json_object_new_int (1234));

    embed  = json_object_new_object();
    json_object_object_add(embed, "subObjString", json_object_new_string ("Some String"));
    json_object_object_add(embed, "subObjInt", json_object_new_int (5678));

    json_object_object_add(jresp,"eobj", embed);

    ping(request, jresp, "pingJson");
}

static void subcallcb (void *prequest, int status, json_object *object)
{
	afb_req request = afb_req_unstore(prequest);
	if (status < 0)
		afb_req_fail(request, "failed", json_object_to_json_string(object));
	else
		afb_req_success(request, json_object_get(object), NULL);
	afb_req_unref(request);
}

static void subcall (afb_req request)
{
	const char *api = afb_req_value(request, "api");
	const char *verb = afb_req_value(request, "verb");
	const char *args = afb_req_value(request, "args");
	json_object *object = api && verb && args ? json_tokener_parse(args) : NULL;

	if (object == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else
		afb_req_subcall(request, api, verb, object, subcallcb, afb_req_store(request));
}

static void subcallreqcb (void *prequest, int status, json_object *object, afb_req request)
{
	if (status < 0)
		afb_req_fail(request, "failed", json_object_to_json_string(object));
	else
		afb_req_success(request, json_object_get(object), NULL);
}

static void subcallreq (afb_req request)
{
	const char *api = afb_req_value(request, "api");
	const char *verb = afb_req_value(request, "verb");
	const char *args = afb_req_value(request, "args");
	json_object *object = api && verb && args ? json_tokener_parse(args) : NULL;

	if (object == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else
		afb_req_subcall_req(request, api, verb, object, subcallreqcb, NULL);
}

static void subcallsync (afb_req request)
{
	int rc;
	const char *api = afb_req_value(request, "api");
	const char *verb = afb_req_value(request, "verb");
	const char *args = afb_req_value(request, "args");
	json_object *result, *object = api && verb && args ? json_tokener_parse(args) : NULL;

	if (object == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else {
		rc = afb_req_subcall_sync(request, api, verb, object, &result);
		if (rc >= 0)
			afb_req_success(request, result, NULL);
		else {
			afb_req_fail(request, "failed", json_object_to_json_string(result));
			json_object_put(result);
		}
	}
}

static void eventadd (afb_req request)
{
	const char *tag = afb_req_value(request, "tag");
	const char *name = afb_req_value(request, "name");

	pthread_mutex_lock(&mutex);
	if (tag == NULL || name == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else if (0 != event_add(tag, name))
		afb_req_fail(request, "failed", "creation error");
	else
		afb_req_success(request, NULL, NULL);
	pthread_mutex_unlock(&mutex);
}

static void eventdel (afb_req request)
{
	const char *tag = afb_req_value(request, "tag");

	pthread_mutex_lock(&mutex);
	if (tag == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else if (0 != event_del(tag))
		afb_req_fail(request, "failed", "deletion error");
	else
		afb_req_success(request, NULL, NULL);
	pthread_mutex_unlock(&mutex);
}

static void eventsub (afb_req request)
{
	const char *tag = afb_req_value(request, "tag");

	pthread_mutex_lock(&mutex);
	if (tag == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else if (0 != event_subscribe(request, tag))
		afb_req_fail(request, "failed", "subscription error");
	else
		afb_req_success(request, NULL, NULL);
	pthread_mutex_unlock(&mutex);
}

static void eventunsub (afb_req request)
{
	const char *tag = afb_req_value(request, "tag");

	pthread_mutex_lock(&mutex);
	if (tag == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else if (0 != event_unsubscribe(request, tag))
		afb_req_fail(request, "failed", "unsubscription error");
	else
		afb_req_success(request, NULL, NULL);
	pthread_mutex_unlock(&mutex);
}

static void eventpush (afb_req request)
{
	const char *tag = afb_req_value(request, "tag");
	const char *data = afb_req_value(request, "data");
	json_object *object = data ? json_tokener_parse(data) : NULL;

	pthread_mutex_lock(&mutex);
	if (tag == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else if (0 > event_push(object, tag))
		afb_req_fail(request, "failed", "push error");
	else
		afb_req_success(request, NULL, NULL);
	pthread_mutex_unlock(&mutex);
	json_object_put(object);
}

static void callcb (void *prequest, int status, json_object *object)
{
	afb_req request = afb_req_unstore(prequest);
	if (status < 0)
		afb_req_fail(request, "failed", json_object_to_json_string(object));
	else
		afb_req_success(request, json_object_get(object), NULL);
	afb_req_unref(request);
}

static void call (afb_req request)
{
	const char *api = afb_req_value(request, "api");
	const char *verb = afb_req_value(request, "verb");
	const char *args = afb_req_value(request, "args");
	json_object *object = api && verb && args ? json_tokener_parse(args) : NULL;

	if (object == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else
		afb_service_call(api, verb, object, callcb, afb_req_store(request));
}

static void callsync (afb_req request)
{
	int rc;
	const char *api = afb_req_value(request, "api");
	const char *verb = afb_req_value(request, "verb");
	const char *args = afb_req_value(request, "args");
	json_object *result, *object = api && verb && args ? json_tokener_parse(args) : NULL;

	if (object == NULL)
		afb_req_fail(request, "failed", "bad arguments");
	else {
		rc = afb_service_call_sync(api, verb, object, &result);
		if (rc >= 0)
			afb_req_success(request, result, NULL);
		else {
			afb_req_fail(request, "failed", json_object_to_json_string(result));
			json_object_put(result);
		}
	}
}

static void verbose (afb_req request)
{
	int level = 5;
	json_object *query = afb_req_json(request), *l;

	if (json_object_is_type(query,json_type_int))
		level = json_object_get_int(query);
	else if (json_object_object_get_ex(query, "level", &l) && json_object_is_type(l, json_type_int))
		level = json_object_get_int(l);

	if (!json_object_object_get_ex(query,"message",&l))
		l = query;

	AFB_REQ_VERBOSE(request, level, "verbose called for %s", json_object_get_string(l));
	afb_req_success(request, NULL, NULL);
}

static void exitnow (afb_req request)
{
	int code = 0;
	json_object *query = afb_req_json(request), *l;

	if (json_object_is_type(query,json_type_int))
		code = json_object_get_int(query);
	else if (json_object_object_get_ex(query, "code", &l) && json_object_is_type(l, json_type_int))
		code = json_object_get_int(l);

	if (!json_object_object_get_ex(query,"reason",&l))
		l = NULL;

	AFB_REQ_NOTICE(request, "in phase of exiting with code %d, reason: %s", code, l ? json_object_get_string(l) : "unknown");
	afb_req_success(request, NULL, NULL);
	exit(code);
}

static void broadcast(afb_req request)
{
	const char *tag = afb_req_value(request, "tag");
	const char *name = afb_req_value(request, "name");
	const char *data = afb_req_value(request, "data");
	json_object *object = data ? json_tokener_parse(data) : NULL;

	if (tag != NULL) {
		pthread_mutex_lock(&mutex);
		if (0 > event_broadcast(object, tag))
			afb_req_fail(request, "failed", "broadcast error");
		else
			afb_req_success(request, NULL, NULL);
		pthread_mutex_unlock(&mutex);
	} else if (name != NULL) {
		if (0 > afb_daemon_broadcast_event(name, object))
			afb_req_fail(request, "failed", "broadcast error");
		else
			afb_req_success(request, NULL, NULL);
	} else {
		afb_req_fail(request, "failed", "bad arguments");
	}
	json_object_put(object);
}

static void hasperm (afb_req request)
{
	const char *perm = afb_req_value(request, "perm");
	if (afb_req_has_permission(request, perm))
		afb_req_success_f(request, NULL, "permission %s granted", perm?:"(null)");
	else
		afb_req_fail_f(request, "not-granted", "permission %s NOT granted", perm?:"(null)");
}

static void appid (afb_req request)
{
	char *aid = afb_req_get_application_id(request);
	afb_req_success_f(request, aid ? json_object_new_string(aid) : NULL, "application is %s", aid?:"?");
	free(aid);
}

static int preinit()
{
	AFB_NOTICE("hello binding comes to live");
	return 0;
}

static int init()
{
	AFB_NOTICE("hello binding starting");
	return 0;
}

static void onevent(const char *event, struct json_object *object)
{
	AFB_NOTICE("received event %s(%s)", event, json_object_to_json_string(object));
}

// NOTE: this sample does not use session to keep test a basic as possible
//       in real application most APIs should be protected with AFB_SESSION_CHECK
static const afb_verb_v2 verbs[]= {
  { .verb="ping",        .callback=pingSample },
  { .verb="pingfail",    .callback=pingFail },
  { .verb="pingnull",    .callback=pingNull },
  { .verb="pingbug",     .callback=pingBug },
  { .verb="pingJson",    .callback=pingJson },
  { .verb="pingevent",   .callback=pingEvent },
  { .verb="subcall",     .callback=subcall },
  { .verb="subcallreq",  .callback=subcallreq },
  { .verb="subcallsync", .callback=subcallsync },
  { .verb="eventadd",    .callback=eventadd },
  { .verb="eventdel",    .callback=eventdel },
  { .verb="eventsub",    .callback=eventsub },
  { .verb="eventunsub",  .callback=eventunsub },
  { .verb="eventpush",   .callback=eventpush },
  { .verb="call",        .callback=call },
  { .verb="callsync",    .callback=callsync },
  { .verb="verbose",     .callback=verbose },
  { .verb="broadcast",   .callback=broadcast },
  { .verb="hasperm",     .callback=hasperm },
  { .verb="appid",       .callback=appid },
  { .verb="exit",        .callback=exitnow },
  { .verb=NULL}
};

const afb_binding_v2 afbBindingV2 = {
	.api = "hello",
	.specification = NULL,
	.verbs = verbs,
	.preinit = preinit,
	.init = init,
	.onevent = onevent
};
span><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>