diff options
Diffstat (limited to 'src/soundmanager.c')
-rw-r--r-- | src/soundmanager.c | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/src/soundmanager.c b/src/soundmanager.c index 1e34ce6..0a8a093 100644 --- a/src/soundmanager.c +++ b/src/soundmanager.c @@ -838,7 +838,7 @@ void setStreamState(struct afb_req request){ ********** Callback Function invoked by Audio Manager ********** */ -static void on_new_main_connection(void* closure, int mainConnectioID, +static void on_new_main_connection(int mainConnectioID, int sourceID, int sinkID, int delay, int connectionState) { AFB_DEBUG("%s is called",__FUNCTION__); @@ -850,20 +850,19 @@ static void on_new_main_connection(void* closure, int mainConnectioID, KEY_SINK_ID, sinkID, KEY_DELAY, delay, KEY_CONNECTION_STATE, connectionState); - afb_event_push(ev_new_connection, res_obj); + afb_event_push(ev_new_connection, res_obj); } -static void on_removed_main_connection(void* closure, int mainConnectionID) +static void on_removed_main_connection(int mainConnectionID) { AFB_DEBUG("%s is called",__FUNCTION__); struct json_object* res_obj = json_object_new_object(); - sm_add_object_to_json_object(res_obj, 2, - KEY_MAIN_CONNECTION_ID, mainConnectionID); + json_object_object_add(res_obj, KEY_MAIN_CONNECTION_ID, json_object_new_int(mainConnectionID)); afb_event_push(ev_removed_main_connection, res_obj); } -static void on_main_connection_state_changed(void* closure, int connectionID, int connectionState) +static void on_main_connection_state_changed(int connectionID, int connectionState) { AFB_DEBUG("%s is called",__FUNCTION__); @@ -874,7 +873,7 @@ static void on_main_connection_state_changed(void* closure, int connectionID, in afb_event_push(ev_main_connection_state_changed, res_obj); } -static void on_volume_changed(void* closure, int sinkID, int volume) +static void on_volume_changed(int sinkID, int volume) { AFB_DEBUG("%s is called",__FUNCTION__); struct json_object* res_obj = json_object_new_object(); @@ -884,7 +883,7 @@ static void on_volume_changed(void* closure, int sinkID, int volume) afb_event_push(ev_volume_changed, res_obj); } -static void on_sink_mute_state_changed(void* closure, int sinkID, int mute) +static void on_sink_mute_state_changed(int sinkID, int mute) { AFB_DEBUG("%s is called",__FUNCTION__); struct json_object* res_obj = json_object_new_object(); @@ -897,13 +896,28 @@ static void on_sink_mute_state_changed(void* closure, int sinkID, int mute) /* ********** Callback Function invoked by Audio Manager Routing Interface********** */ -static void on_set_routing_ready(void* closure) +static void on_set_routing_ready(void) { AFB_DEBUG("%s is called",__FUNCTION__); + struct domain_data ddata = { + .domainID = DYNAMIC_DOMAIN_ID, + .name = "SoundManager", + .busname = SOUND_MANAGER_BUS_NAME, + .nodename = "soundmanager", + .early = FALSE, + .complete = TRUE, + .state = DS_CONTROLLED + }; + ErrorCode ec = am_proxy_register_domain(create_domain_data(&ddata) , &SOUNDMANAGER_DOMAIN_ID); + if(!SEND_RESULT_NO_RESP(ec)){ + AFB_WARNING("Failed to registerDomain when asyncAbort"); + return; + } + AFB_NOTICE("Sound Manager re-register domain, the old infomation may be lost"); afb_event_push(ev_set_routing_ready, NULL); } -static void on_set_routing_rundown(void* closure) +static void on_set_routing_rundown(void) { AFB_DEBUG("%s is called",__FUNCTION__); afb_event_push(ev_set_routing_ready, NULL); @@ -918,13 +932,13 @@ static void on_set_routing_rundown(void* closure) * Sound Manager just sends ack to Audio Manager in charge of applications. * */ -static void on_async_abort(void *closure, int handle) +static void on_async_abort(int handle) { AFB_DEBUG( "%s called", __FUNCTION__); /* Nothing To Do. If it is better to implement something, I will implement */ } -static void on_async_connect(void *closure, int handle, int connectionID, +static void on_async_connect(int handle, int connectionID, int sourceID, int sinkID, int connectionFormat) { AFB_DEBUG( "%s called", __FUNCTION__); @@ -939,7 +953,7 @@ static void on_async_connect(void *closure, int handle, int connectionID, afb_event_push(ev_async_connect, ev_obj); } -static void on_async_disconnect(void *closure, int handle, int connectionID) +static void on_async_disconnect(int handle, int connectionID) { AFB_DEBUG( "%s called", __FUNCTION__); struct json_object* ev_obj = json_object_new_object(); @@ -949,13 +963,13 @@ static void on_async_disconnect(void *closure, int handle, int connectionID) afb_event_push(ev_async_disconnect, ev_obj); } -static void on_async_set_sink_volume(void *closure, int handle, int sinkID, +static void on_async_set_sink_volume(int handle, int sinkID, int volume, int ramp, int time) { AFB_DEBUG( "%s called", __FUNCTION__); } -static void on_async_set_source_state(void *closure, int handle, int sourceID, int sourceState) +static void on_async_set_source_state(int handle, int sourceID, int sourceState) { AFB_DEBUG( "%s called", __FUNCTION__); struct pending* pd = get_pending(pending_list, sourceID); @@ -1107,6 +1121,7 @@ int sm_init() am_event callback = { .on_new_main_connection = on_new_main_connection, .on_removed_main_connection = on_removed_main_connection, + .on_main_connection_state_changed = on_main_connection_state_changed, .on_volume_changed = on_volume_changed, .on_sink_mute_state_changed = on_sink_mute_state_changed, .on_set_routing_ready = on_set_routing_ready, @@ -1122,7 +1137,7 @@ int sm_init() .on_async_set_sink_volume = on_async_set_sink_volume, .on_async_set_source_state = on_async_set_source_state }; - ec = open_soundmanager_interface(&instruction); + ec = open_soundmanager_interface(&instruction); if(ec != OK){ AFB_ERROR("Failed to create sound manager interface"); return -1; |