All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.