summaryrefslogtreecommitdiffstats
path: root/src/soundmanager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soundmanager.c')
-rw-r--r--src/soundmanager.c211
1 files changed, 106 insertions, 105 deletions
diff --git a/src/soundmanager.c b/src/soundmanager.c
index 3719ff9..3677830 100644
--- a/src/soundmanager.c
+++ b/src/soundmanager.c
@@ -83,35 +83,35 @@ static struct afb_event ev_async_connect;
static struct afb_event ev_async_disconnect;
static struct afb_event ev_async_set_source_state;
-#define _SOURCE_ID "sourceID"
-#define _SINK_ID "sinkID"
-#define _SINK_NAME "sinkName"
-#define _MAIN_CONNECTION_ID "mainConnectionID"
-#define _DELAY "delay"
-#define _CONNECTION_STATE "connectionState"
-#define _CONNECTION_ID "connectionID"
-#define _VOLUME "volume"
-#define _VOLUME_STEP "volumeStep"
-#define _INTERRUPT "interrupt"
-#define _MUTE_STATE "muteState"
-
-#define _DOMAIN_ID "domainID"
-#define _HANDLE "handle"
-#define _APPNAME "appname"
-#define _RAMP "ramp"
-#define _TIME "time"
-#define _SOURCE_STATE "sourceState"
-#define _SOURCE_CLASS_ID "sourceClassID"
-#define _SINK_CLASS_ID "sinkClassID"
-#define _ERROR "error"
-#define _SINK_DATA "sinkData"
-#define _SOURCE_DATA "sourceData"
-#define _INTERRUPT_STATE "interruptState"
-#define _AVAILABILITY "availability"
-#define _AVAILABILITY_REASON "availabilityReason"
-#define _LIST_VOLUMES "listVolumes"
-#define _PAYLOAD "payload"
-#define _CONNECTION_FORMAT "connectionFormat"
+#define KEY_SOURCE_ID "sourceID"
+#define KEY_SINK_ID "sinkID"
+#define KEY_SINK_NAME "sinkName"
+#define KEY_MAIN_CONNECTION_ID "mainConnectionID"
+#define KEY_DELAY "delay"
+#define KEY_CONNECTION_STATE "connectionState"
+#define KEY_CONNECTION_ID "connectionID"
+#define KEY_VOLUME "volume"
+#define KEY_VOLUME_STEP "volumeStep"
+#define KEY_INTERRUPT "interrupt"
+#define KEY_MUTE_STATE "muteState"
+
+#define KEY_DOMAIN_ID "domainID"
+#define KEY_HANDLE "handle"
+#define KEY_APPNAME "appname"
+#define KEY_RAMP "ramp"
+#define KEY_TIME "time"
+#define KEY_SOURCE_STATE "sourceState"
+#define KEY_SOURCE_CLASS_ID "sourceClassID"
+#define KEY_SINK_CLASS_ID "sinkClassID"
+#define KEY_ERROR "error"
+#define KEY_SINK_DATA "sinkData"
+#define KEY_SOURCE_DATA "sourceData"
+#define KEY_INTERRUPT_STATE "interruptState"
+#define KEY_AVAILABILITY "availability"
+#define KEY_AVAILABILITY_REASON "availabilityReason"
+#define KEY_LIST_VOLUMES "listVolumes"
+#define KEY_PAYLOAD "payload"
+#define KEY_CONNECTION_FORMAT "connectionFormat"
/*
********** Method of Sound Manager (API) **********
*/
@@ -155,11 +155,11 @@ static void connect (struct afb_req request)
REQ_ERROR req_err2 = REQ_FAIL;
GError *err = NULL;
- req_err1 = get_value_uint16(request, _SOURCE_ID, &source_id);
+ req_err1 = get_value_uint16(request, KEY_SOURCE_ID, &source_id);
/* ToDo: Hardware abstraction for application user is needed.
select appname(speaker) or sourceID(sinkID). If appname is desired, it changes to sourceID(sinkID) */
- const char* default_sink = afb_req_value (request, _SINK_ID);
+ const char* default_sink = afb_req_value (request, KEY_SINK_ID);
if(default_sink != NULL){
if((strlen("default") == strlen(default_sink)) &&
(0 == strncmp("default", default_sink, strlen("default")))){
@@ -167,7 +167,7 @@ static void connect (struct afb_req request)
req_err2 = REQ_OK;
}
else{
- req_err2 = get_value_uint16(request, _SINK_ID, &sink_id);
+ req_err2 = get_value_uint16(request, KEY_SINK_ID, &sink_id);
}
}
@@ -199,7 +199,7 @@ static void connect (struct afb_req request)
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 4,
"error", ret,
- _MAIN_CONNECTION_ID, main_connectionID);
+ KEY_MAIN_CONNECTION_ID, main_connectionID);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -229,12 +229,12 @@ static void disconnect (struct afb_req request)
REQ_ERROR req_err;
GError *err = NULL;
- req_err = get_value_uint16(request, _MAIN_CONNECTION_ID, &id);
- AFB_DEBUG( "requested %s = %d", _MAIN_CONNECTION_ID, id);
+ req_err = get_value_uint16(request, KEY_MAIN_CONNECTION_ID, &id);
+ AFB_DEBUG( "requested %s = %d", KEY_MAIN_CONNECTION_ID, id);
if(req_err != REQ_OK)
{
- afb_req_fail(request,"wrong-request",afb_req_value (request, _MAIN_CONNECTION_ID));
+ afb_req_fail(request,"wrong-request",afb_req_value (request, KEY_MAIN_CONNECTION_ID));
return;
}
audiomanager_commandinterface_call_disconnect_sync(
@@ -252,7 +252,7 @@ static void disconnect (struct afb_req request)
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object_func(res_obj, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res_obj, info); /* return error num as status */
@@ -282,9 +282,9 @@ static void setVolume (struct afb_req request)
REQ_ERROR req_err1, req_err2;
GError *err = NULL;
- req_err1 = get_value_uint16(request, _SINK_ID, &sink_id);
- req_err2 = get_value_int16(request, _VOLUME, &vol);
- AFB_DEBUG( "requested %s = %d, %s = %d",_SINK_ID, sink_id, _VOLUME, vol);
+ req_err1 = get_value_uint16(request, KEY_SINK_ID, &sink_id);
+ req_err2 = get_value_int16(request, KEY_VOLUME, &vol);
+ AFB_DEBUG( "requested %s = %d, %s = %d",KEY_SINK_ID, sink_id, KEY_VOLUME, vol);
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK))
{
afb_req_fail(request,"wrong-request", NULL);
@@ -338,9 +338,9 @@ static void volumeStep (struct afb_req request)
REQ_ERROR req_err1, req_err2;
GError *err = NULL;
- req_err1 = get_value_uint16(request, _SINK_ID, &sink_id);
- req_err2 = get_value_int16(request, _VOLUME_STEP, &vol);
- AFB_DEBUG( "requested %s = %d, %s = %d",_SINK_ID, sink_id, _VOLUME_STEP, vol);
+ req_err1 = get_value_uint16(request, KEY_SINK_ID, &sink_id);
+ req_err2 = get_value_int16(request, KEY_VOLUME_STEP, &vol);
+ AFB_DEBUG( "requested %s = %d, %s = %d",KEY_SINK_ID, sink_id, KEY_VOLUME_STEP, vol);
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK))
{
afb_req_fail(request,"wrong-request", NULL);
@@ -394,9 +394,10 @@ static void setSinkMuteState(struct afb_req request)
REQ_ERROR req_err1, req_err2;
GError *err = NULL;
- req_err1 = get_value_uint16(request, _SINK_ID, &sink_id);
- req_err2 = get_value_int16(request, _MUTE_STATE, &mute);
- AFB_DEBUG( "requested %s = %d, %s = %d",_SINK_ID, sink_id, _MUTE_STATE, mute);
+ req_err1 = get_value_uint16(request, KEY_SINK_ID, &sink_id);
+ req_err2 = get_value_int16(request, KEY_MUTE_STATE, &mute);
+ AFB_DEBUG( "requested %s = %d, %s = %d",KEY_SINK_ID, sink_id, KEY_MUTE_STATE, mute);
+
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK))
{
afb_req_fail(request,"wrong-request", NULL);
@@ -485,11 +486,11 @@ static void getListMainConnections(struct afb_req request)
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj,10,
- _MAIN_CONNECTION_ID, mcid,
- _SOURCE_ID, srcid,
- _SINK_ID, sinkid,
- _DELAY, delay,
- _CONNECTION_STATE, constate
+ KEY_MAIN_CONNECTION_ID, mcid,
+ KEY_SOURCE_ID, srcid,
+ KEY_SINK_ID, sinkid,
+ KEY_DELAY, delay,
+ KEY_CONNECTION_STATE, constate
);
json_object_array_add(array_res,res_obj);
}
@@ -558,18 +559,18 @@ static void getListMainSinks(struct afb_req request)
g_variant_get(
child,"(qs(nn)nnq)",
&sinkid, &sinkname, &av, &avr, &volume, &mutestate, &sinkclassid);
- AFB_DEBUG( "sinkID: %d, sinkName: %s, availability: %d, available_reason: %d, volume: %d, muteState: %d, sinkClassID: %d",
+ AFB_DEBUG( "sinkID: %d, sinkName: %s, availability: %d, availableReason: %d, volume: %d, muteState: %d, sinkClassID: %d",
sinkid, sinkname, av, avr, volume, mutestate, sinkclassid);
struct json_object* res_obj = json_object_new_object();
- sm_add_object_to_json_object(res_obj,2,_SINK_ID, sinkid);
- json_object_object_add(res_obj, _SINK_NAME, json_object_new_string(sinkname));
+ sm_add_object_to_json_object(res_obj,2,KEY_SINK_ID, sinkid);
+ json_object_object_add(res_obj, KEY_SINK_NAME, json_object_new_string(sinkname));
sm_add_object_to_json_object(res_obj,10,
- _AVAILABILITY, av,
- _AVAILABILITY_REASON, avr,
- _VOLUME, volume,
- _MUTE_STATE, mutestate,
- _SINK_CLASS_ID, sinkclassid);
+ KEY_AVAILABILITY, av,
+ KEY_AVAILABILITY_REASON, avr,
+ KEY_VOLUME, volume,
+ KEY_MUTE_STATE, mutestate,
+ KEY_SINK_CLASS_ID, sinkclassid);
json_object_array_add(array_res,res_obj);
g_variant_unref(child);
}
@@ -613,9 +614,9 @@ static void ackConnect(struct afb_req request)
REQ_ERROR req_err1, req_err2 , req_err3;
GError *err = NULL;
- req_err1 = get_value_uint16(request, _HANDLE, &handle);
- req_err2 = get_value_uint16(request, _CONNECTION_ID, &connection_id);
- req_err3 = get_value_uint16(request, _ERROR, &error);
+ req_err1 = get_value_uint16(request, KEY_HANDLE, &handle);
+ req_err2 = get_value_uint16(request, KEY_CONNECTION_ID, &connection_id);
+ req_err3 = get_value_uint16(request, KEY_ERROR, &error);
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK) || (req_err3 != REQ_OK))
{
@@ -643,7 +644,7 @@ static void ackConnect(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -674,10 +675,10 @@ static void ackDisconnect(struct afb_req request)
guint16 ret = 0;
REQ_ERROR req_err1, req_err2 , req_err3;
GError *err = NULL;
+ req_err1 = get_value_uint16(request, KEY_HANDLE, &handle);
+ req_err2 = get_value_uint16(request, KEY_CONNECTION_ID, &connection_id);
+ req_err3 = get_value_uint16(request, KEY_ERROR, &error);
- req_err1 = get_value_uint16(request, _HANDLE, &handle);
- req_err2 = get_value_uint16(request, _CONNECTION_ID, &connection_id);
- req_err3 = get_value_uint16(request, _ERROR, &error);
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK) || (req_err3 != REQ_OK))
{
@@ -705,7 +706,7 @@ static void ackDisconnect(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -734,9 +735,9 @@ static void ackSetSourceState(struct afb_req request)
guint16 ret = 0;
REQ_ERROR req_err1, req_err2;
GError *err = NULL;
+ req_err1 = get_value_uint16(request, KEY_HANDLE, &handle);
+ req_err2 = get_value_uint16(request, KEY_ERROR, &error);
- req_err1 = get_value_uint16(request, _HANDLE, &handle);
- req_err2 = get_value_uint16(request, _ERROR, &error);
if((req_err1 != REQ_OK) || (req_err2 != REQ_OK))
{
@@ -759,7 +760,7 @@ static void ackSetSourceState(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -795,10 +796,10 @@ static void registerSource(struct afb_req request)
gint32 source_state; /* i */
gint16 volume; /* n */
- if(REQ_OK != get_value_uint16(request, _SOURCE_ID, &source_id)){
+ if(REQ_OK != get_value_uint16(request, KEY_SOURCE_ID, &source_id)){
source_id = DYNAMIC_SOURCE_ID; /* if 0, dynamic source id will be applied */
}
- REQ_ERROR req_err = get_value_uint16(request, _DOMAIN_ID, &domain_id);
+ REQ_ERROR req_err = get_value_uint16(request, KEY_DOMAIN_ID, &domain_id);
if( req_err != REQ_OK){
if(req_err == REQ_FAIL)
{
@@ -814,20 +815,20 @@ static void registerSource(struct afb_req request)
afb_req_fail(request,"wrong-request", "domainID should be more than 0");
return;
}
- const gchar* name = afb_req_value(request, _APPNAME); /* s */
+ const gchar* name = afb_req_value(request, KEY_APPNAME); /* s */
if(!name)
{
char* info = "Must specify the name. Please input json arg such as {\"appname\":\"radio\"}";
afb_req_fail(request, NULL, info);
return;
}
- if(REQ_OK != get_value_uint16(request, _SOURCE_CLASS_ID, &source_class_id)){
+ if(REQ_OK != get_value_uint16(request, KEY_SOURCE_CLASS_ID, &source_class_id)){
source_class_id = DEFAULT_SOURCE_CLASS_ID; /* BASE */
}
- if(REQ_OK != get_value_int32(request, _SOURCE_STATE, &source_state)){
+ if(REQ_OK != get_value_int32(request, KEY_SOURCE_STATE, &source_state)){
source_state = DEFAULT_SOURCE_STATE; /* SS_OFF */
}
- if(REQ_OK != get_value_int16(request, _VOLUME, &volume)){
+ if(REQ_OK != get_value_int16(request, KEY_VOLUME, &volume)){
volume = DEFAULT_VOLUME;
}
gboolean visible = TRUE; /* b */
@@ -836,7 +837,7 @@ static void registerSource(struct afb_req request)
available.avalilable_reason = 0; /* AR_UNKNOWN */
guint16 interrupt;
- if(REQ_OK != get_value_int16(request, _INTERRUPT, &interrupt)){
+ if(REQ_OK != get_value_int16(request, KEY_INTERRUPT, &interrupt)){
interrupt = DEFAULT_INTERRUPT; /* q IS_OFF */
}
struct sound_property_s sound_property_list; /* a(in) */
@@ -885,8 +886,8 @@ static void registerSource(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 4,
- _ERROR, ret,
- _SOURCE_ID, acquire_source_id);
+ KEY_ERROR, ret,
+ KEY_SOURCE_ID, acquire_source_id);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -911,7 +912,7 @@ static void deregisterSource(struct afb_req request)
GError *err = NULL;
- if(REQ_OK != get_value_uint16(request, _SOURCE_ID, &source_id)){
+ if(REQ_OK != get_value_uint16(request, KEY_SOURCE_ID, &source_id)){
afb_req_fail(request, "wrong-request", NULL);
}
audiomanager_routinginterface_call_deregister_source_sync(
@@ -928,7 +929,7 @@ static void deregisterSource(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
@@ -978,7 +979,7 @@ static void subscribe(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -1027,7 +1028,7 @@ static void unsubscribe(struct afb_req request)
/*create response json object*/
struct json_object *res = json_object_new_object();
sm_add_object_to_json_object_func(res, __FUNCTION__, 2,
- _ERROR, ret);
+ KEY_ERROR, ret);
char *info = get_response_audiomanager_massage_error(ret);
afb_req_success(request, res, info);
}
@@ -1108,11 +1109,11 @@ static void on_new_main_connection(AudiomanagerCommandinterface* interface,
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj,10,
- _MAIN_CONNECTION_ID, mcid,
- _SOURCE_ID, srcid,
- _SINK_ID, sinkid,
- _DELAY, delay,
- _CONNECTION_STATE, constate
+ KEY_MAIN_CONNECTION_ID, mcid,
+ KEY_SOURCE_ID, srcid,
+ KEY_SINK_ID, sinkid,
+ KEY_DELAY, delay,
+ KEY_CONNECTION_STATE, constate
);
AFB_DEBUG("json object :%s:",json_object_to_json_string(res_obj));
@@ -1126,7 +1127,7 @@ static void on_removed_main_connection(
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj, 2,
- _MAIN_CONNECTION_ID, mainConnectionID);
+ KEY_MAIN_CONNECTION_ID, mainConnectionID);
afb_event_push(ev_removed_main_connection, res_obj);
}
@@ -1137,8 +1138,8 @@ static void on_main_connection_state_changed(
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj, 4,
- _CONNECTION_ID, connectionID,
- _CONNECTION_STATE, connectionState);
+ KEY_CONNECTION_ID, connectionID,
+ KEY_CONNECTION_STATE, connectionState);
afb_event_push(ev_main_connection_state_changed, res_obj);
}
@@ -1148,8 +1149,8 @@ static void on_volume_changed(
AFB_DEBUG("%s is called",__FUNCTION__);
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj, 4,
- _SINK_ID, sinkID,
- _VOLUME, volume);
+ KEY_SINK_ID, sinkID,
+ KEY_VOLUME, volume);
afb_event_push(ev_volume_changed, res_obj);
}
@@ -1159,8 +1160,8 @@ static void on_sink_mute_state_changed(
AFB_DEBUG("%s is called",__FUNCTION__);
struct json_object* res_obj = json_object_new_object();
sm_add_object_to_json_object(res_obj, 4,
- _SINK_ID, sinkID,
- _MUTE_STATE, mute);
+ KEY_SINK_ID, sinkID,
+ KEY_MUTE_STATE, mute);
afb_event_push(ev_sink_mute_state_changed, res_obj);
}
@@ -1213,11 +1214,11 @@ static gboolean on_async_connect(
struct json_object* ev_obj = json_object_new_object();
sm_add_object_to_json_object(ev_obj, 10,
- _HANDLE, arg_handle,
- _CONNECTION_ID, arg_connectionID,
- _SOURCE_ID, arg_sourceID,
- _SINK_ID, arg_sinkID,
- _CONNECTION_FORMAT, arg_connectionFormat);
+ KEY_HANDLE, arg_handle,
+ KEY_CONNECTION_ID, arg_connectionID,
+ KEY_SOURCE_ID, arg_sourceID,
+ KEY_SINK_ID, arg_sinkID,
+ KEY_CONNECTION_FORMAT, arg_connectionFormat);
afb_event_push(ev_async_connect, ev_obj);
/* GError must be initialized here because it is same as grobal errno,
@@ -1246,8 +1247,8 @@ static gboolean on_async_disconnect(
AFB_DEBUG( "%s called", __FUNCTION__);
struct json_object* ev_obj = json_object_new_object();
sm_add_object_to_json_object(ev_obj, 4,
- _HANDLE, arg_handle,
- _CONNECTION_ID, arg_connectionID);
+ KEY_HANDLE, arg_handle,
+ KEY_CONNECTION_ID, arg_connectionID);
afb_event_push(ev_async_disconnect, ev_obj);
GError* err = NULL;
audiomanager_routinginterface_call_ack_disconnect_sync(
@@ -1315,9 +1316,9 @@ static gboolean on_async_set_source_state(
struct json_object* ev_obj = json_object_new_object();
char* ss_key = get_source_state_key(arg_sourceState);
sm_add_object_to_json_object(ev_obj, 4,
- _HANDLE, arg_handle,
- _SOURCE_ID, arg_sourceID);
- json_object_object_add(ev_obj, _SOURCE_STATE, json_object_new_string(ss_key));
+ KEY_HANDLE, arg_handle,
+ KEY_SOURCE_ID, arg_sourceID);
+ json_object_object_add(ev_obj, KEY_SOURCE_STATE, json_object_new_string(ss_key));
afb_event_push(ev_async_set_source_state, ev_obj);
/* Applications must return ackSetSourceState to look sourceID, then Sound Manager doen't return ackSetSourceState */
/*audiomanager_routinginterface_call_ack_set_source_state_sync(