This patch adds a function to monitor when the AG sends a new codec
before establishing the SCO connection.
---
 plugins/hfp_hf_bluez5.c | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/plugins/hfp_hf_bluez5.c b/plugins/hfp_hf_bluez5.c
index c63b1a2..2c67a21 100644
--- a/plugins/hfp_hf_bluez5.c
+++ b/plugins/hfp_hf_bluez5.c
@@ -314,9 +314,49 @@ static struct ofono_modem_driver hfp_driver = {
        .post_sim       = hfp_post_sim,
 };
 
+static void bcs_notify(GAtResult *result, gpointer user_data)
+{
+       struct hfp *hfp = user_data;
+       struct hfp_slc_info *info = &hfp->info;
+       GAtResultIter iter;
+       char str[32];
+       int value;
+
+       g_at_result_iter_init(&iter, result);
+
+       if (!g_at_result_iter_next(&iter, "+BCS:"))
+               return;
+
+       if (!g_at_result_iter_next_number(&iter, &value))
+               return;
+
+       if (ofono_handsfree_card_set_codec(hfp->card, value) == FALSE) {
+               /* Unsupported codec, re-send our codecs */
+               if (ofono_handsfree_audio_has_wideband())
+                       sprintf(str, "AT+BAC=%d,%d", HFP_CODEC_CVSD,
+                                                       HFP_CODEC_MSBC);
+               else
+                       sprintf(str, "AT+BAC=%d", HFP_CODEC_CVSD);
+
+               goto done;
+       }
+
+       /* Confirm the codec */
+       sprintf(str, "AT+BCS=%d", value);
+
+done:
+       g_at_chat_send(info->chat, str, NULL, NULL, NULL, NULL);
+}
+
 static int hfp16_card_probe(struct ofono_handsfree_card *card,
                                        unsigned int vendor, void *data)
 {
+       struct hfp *hfp = data;
+       struct hfp_slc_info *info = &hfp->info;
+
+       g_at_chat_register(info->chat, "+BCS:", bcs_notify, FALSE,
+                                                               hfp, NULL);
+
        return 0;
 }
 
-- 
1.8.2

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to