diff options
| -rw-r--r-- | audio/manager.c | 65 | ||||
| -rw-r--r-- | audio/manager.h | 1 | 
2 files changed, 21 insertions, 45 deletions
| diff --git a/audio/manager.c b/audio/manager.c index a73d7e0c..ae63b997 100644 --- a/audio/manager.c +++ b/audio/manager.c @@ -103,6 +103,7 @@ static GSList *adapters = NULL;  static GSList *devices = NULL;  static struct enabled_interfaces enabled = { +	.hfp		= TRUE,  	.headset	= TRUE,  	.gateway	= FALSE,  	.sink		= TRUE, @@ -124,54 +125,25 @@ static struct audio_adapter *find_adapter(GSList *list, const char *path)  	return NULL;  } -static struct audio_adapter *find_adapter_by_address(GSList *list, -						const bdaddr_t *src) -{ -	GSList *l; - -	for (l = list; l; l = l->next) { -		struct audio_adapter *adapter = l->data; - -		if (bacmp(&adapter->src, src) == 0) -			return adapter; -	} - -	return NULL; -} -  gboolean server_is_enabled(bdaddr_t *src, uint16_t svc)  { -	struct audio_adapter *adp; -	gboolean ret; - -	adp = find_adapter_by_address(adapters, src); -	if (!adp) -		return FALSE; -  	switch (svc) {  	case HEADSET_SVCLASS_ID: -		ret = (adp->hsp_ag_server != NULL); -		break; +		return enabled.headset;  	case HEADSET_AGW_SVCLASS_ID: -		ret = (adp->hsp_hs_server != NULL); -		break; +		return enabled.gateway;  	case HANDSFREE_SVCLASS_ID: -		ret = (adp->hfp_ag_server != NULL); -		break; +		return enabled.headset && enabled.hfp;  	case HANDSFREE_AGW_SVCLASS_ID: -		ret = FALSE; -		break; +		return  FALSE;  	case AUDIO_SINK_SVCLASS_ID:  		return enabled.sink;  	case AV_REMOTE_TARGET_SVCLASS_ID:  	case AV_REMOTE_SVCLASS_ID:  		return enabled.control;  	default: -		ret = FALSE; -		break; +		return FALSE;  	} - -	return ret;  }  static void handle_uuid(const char *uuidstr, struct audio_device *device) @@ -523,7 +495,7 @@ static int headset_server_init(struct audio_adapter *adapter)  {  	uint8_t chan = DEFAULT_HS_AG_CHANNEL;  	sdp_record_t *record; -	gboolean hfp = TRUE, master = TRUE; +	gboolean master = TRUE;  	GError *err = NULL;  	uint32_t features, flags; @@ -538,15 +510,6 @@ static int headset_server_init(struct audio_adapter *adapter)  			err = NULL;  		} else  			master = tmp; - -		tmp = g_key_file_get_boolean(config, "Headset", "HFP", -						&err); -		if (err) { -			debug("audio.conf: %s", err->message); -			g_error_free(err); -			err = NULL; -		} else -			hfp = tmp;  	}  	flags = RFCOMM_LM_AUTH | RFCOMM_LM_ENCRYPT; @@ -574,7 +537,7 @@ static int headset_server_init(struct audio_adapter *adapter)  	features = headset_config_init(config); -	if (!hfp) +	if (!enabled.hfp)  		return 0;  	chan = DEFAULT_HF_AG_CHANNEL; @@ -904,6 +867,8 @@ int audio_manager_init(DBusConnection *conn, GKeyFile *conf)  {  	char **list;  	int i; +	gboolean b; +	GError *err;  	connection = dbus_connection_ref(conn); @@ -944,6 +909,16 @@ int audio_manager_init(DBusConnection *conn, GKeyFile *conf)  	}  	g_strfreev(list); +	err = NULL; +	b = g_key_file_get_boolean(config, "Headset", "HFP", +					&err); +	if (err) { +		debug("audio.conf: %s", err->message); +		g_error_free(err); +		err = NULL; +	} else +		enabled.hfp = b; +  proceed:  	if (enabled.headset) {  		telephony_init(); diff --git a/audio/manager.h b/audio/manager.h index 3af580ff..6dfd7ef3 100644 --- a/audio/manager.h +++ b/audio/manager.h @@ -23,6 +23,7 @@   */  struct enabled_interfaces { +	gboolean hfp;  	gboolean headset;  	gboolean gateway;  	gboolean sink; | 
