Open Source Telephony
 help / color / mirror / Atom feed
* [PATCH 1/2 v2] handsfree-audio: add type for our audio cards
@ 2015-10-05 11:33 Simon Fels
  2015-10-05 11:33 ` [PATCH 2/2 v2] hfp_ag_bluez5: register audio card Simon Fels
  2015-10-05 16:47 ` [PATCH 1/2 v2] handsfree-audio: add type for our audio cards Denis Kenzior
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Fels @ 2015-10-05 11:33 UTC (permalink / raw)
  To: ofono

[-- Attachment #1: Type: text/plain, Size: 4230 bytes --]

When registering audio cards for the handsfree and gateway roles we
need a way for our users to differentiate between both to decide which
of them they start using for their purpose.
---
 doc/handsfree-audio-api.txt |  4 ++++
 include/handsfree-audio.h   | 10 ++++++++--
 plugins/hfp_hf_bluez5.c     |  4 +++-
 src/handsfree-audio.c       | 24 ++++++++++++++++++++++--
 4 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/doc/handsfree-audio-api.txt b/doc/handsfree-audio-api.txt
index 89b5aab..d82035c 100644
--- a/doc/handsfree-audio-api.txt
+++ b/doc/handsfree-audio-api.txt
@@ -89,6 +89,10 @@ Properties	string RemoteAddress [readonly]
 
 			Bluetooth address of the local adapter.
 
+		string Type [readonly]
+
+			Type of the card. Valid values are "gateway" or
+			"handsfree".
 
 Handsfree Audio Agent hierarchy [experimental]
 ===============================
diff --git a/include/handsfree-audio.h b/include/handsfree-audio.h
index bfb8480..0e37dae 100644
--- a/include/handsfree-audio.h
+++ b/include/handsfree-audio.h
@@ -30,6 +30,11 @@ extern "C" {
 
 struct ofono_handsfree_card;
 
+enum ofono_handsfree_card_type {
+	OFONO_HANDSFREE_CARD_TYPE_HANDSFREE,
+	OFONO_HANDSFREE_CARD_TYPE_GATEWAY,
+};
+
 typedef void (*ofono_handsfree_card_connect_cb_t)(
 				const struct ofono_error *error, void *data);
 
@@ -45,8 +50,9 @@ struct ofono_handsfree_card_driver {
 };
 
 struct ofono_handsfree_card *ofono_handsfree_card_create(unsigned int vendor,
-							const char *driver,
-							void *data);
+				enum ofono_handsfree_card_type type,
+				const char *driver,
+				void *data);
 int ofono_handsfree_card_register(struct ofono_handsfree_card *card);
 void ofono_handsfree_card_remove(struct ofono_handsfree_card *card);
 ofono_bool_t ofono_handsfree_card_set_codec(struct ofono_handsfree_card *card,
diff --git a/plugins/hfp_hf_bluez5.c b/plugins/hfp_hf_bluez5.c
index 713c789..6ae98b3 100644
--- a/plugins/hfp_hf_bluez5.c
+++ b/plugins/hfp_hf_bluez5.c
@@ -589,7 +589,9 @@ static DBusMessage *profile_new_connection(DBusConnection *conn,
 	if (version >= HFP_VERSION_1_6)
 		driver = HFP16_HF_DRIVER;
 
-	hfp->card = ofono_handsfree_card_create(0, driver, hfp);
+	hfp->card = ofono_handsfree_card_create(0,
+					OFONO_HANDSFREE_CARD_TYPE_HANDSFREE,
+					driver, hfp);
 	ofono_handsfree_card_set_data(hfp->card, hfp);
 
 	ofono_handsfree_card_set_local(hfp->card, local);
diff --git a/src/handsfree-audio.c b/src/handsfree-audio.c
index c990cc3..8db99e1 100644
--- a/src/handsfree-audio.c
+++ b/src/handsfree-audio.c
@@ -45,6 +45,7 @@
 #define HFP_AUDIO_CARD_INTERFACE	OFONO_SERVICE ".HandsfreeAudioCard"
 
 struct ofono_handsfree_card {
+	enum ofono_handsfree_card_type type;
 	char *remote;
 	char *local;
 	char *path;
@@ -69,6 +70,17 @@ static ofono_bool_t has_wideband = FALSE;
 static int defer_setup = 1;
 static ofono_bool_t transparent_sco = FALSE;
 
+static const char *card_type_to_string(enum ofono_handsfree_card_type type)
+{
+	switch (type) {
+	case OFONO_HANDSFREE_CARD_TYPE_HANDSFREE:
+		return "handsfree";
+	case OFONO_HANDSFREE_CARD_TYPE_GATEWAY:
+		return "gateway";
+	}
+	return "";
+}
+
 static uint16_t codec2setting(uint8_t codec)
 {
 	switch (codec) {
@@ -255,6 +267,12 @@ static int sco_init(void)
 static void card_append_properties(struct ofono_handsfree_card *card,
 					DBusMessageIter *dict)
 {
+	const char *type;
+
+	type = card_type_to_string(card->type);
+	ofono_dbus_dict_append(dict, "Type",
+				DBUS_TYPE_STRING, &type);
+
 	ofono_dbus_dict_append(dict, "RemoteAddress",
 				DBUS_TYPE_STRING, &card->remote);
 
@@ -395,14 +413,16 @@ static const GDBusSignalTable card_signals[] = {
 };
 
 struct ofono_handsfree_card *ofono_handsfree_card_create(unsigned int vendor,
-							const char *driver,
-							void *data)
+					enum ofono_handsfree_card_type type,
+					const char *driver,
+					void *data)
 {
 	struct ofono_handsfree_card *card;
 	GSList *l;
 
 	card = g_new0(struct ofono_handsfree_card, 1);
 
+	card->type = type;
 	card->selected_codec = HFP_CODEC_CVSD;
 
 	card_list = g_slist_prepend(card_list, card);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-05 16:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-05 11:33 [PATCH 1/2 v2] handsfree-audio: add type for our audio cards Simon Fels
2015-10-05 11:33 ` [PATCH 2/2 v2] hfp_ag_bluez5: register audio card Simon Fels
2015-10-05 16:45   ` Denis Kenzior
2015-10-05 16:47 ` [PATCH 1/2 v2] handsfree-audio: add type for our audio cards Denis Kenzior

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox