---
 drivers/hfpmodem/handsfree.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/hfpmodem/handsfree.c b/drivers/hfpmodem/handsfree.c
index 9b7b986..a3e7978 100644
--- a/drivers/hfpmodem/handsfree.c
+++ b/drivers/hfpmodem/handsfree.c
@@ -43,6 +43,7 @@
 
 struct hf_data {
        GAtChat *chat;
+       unsigned int vendor;
 };
 
 static gboolean hfp_handsfree_register(gpointer user_data)
@@ -54,6 +55,19 @@ static gboolean hfp_handsfree_register(gpointer user_data)
        return FALSE;
 }
 
+static void bsir_notify(GAtResult *result, gpointer user_data)
+{
+       struct ofono_handsfree *hf = user_data;
+       struct hf_data *hd = ofono_handsfree_get_data(hf);
+       int value;
+
+       if (at_util_parse_reg_unsolicited(result, "+BSIR:", &value,
+                               NULL, NULL, NULL, hd->vendor) == FALSE)
+               return;
+
+       ofono_handsfree_set_inband_ringing(hf, (ofono_bool_t) value);
+}
+
 static int hfp_handsfree_probe(struct ofono_handsfree *hf,
                                unsigned int vendor, void *data)
 {
@@ -63,9 +77,12 @@ static int hfp_handsfree_probe(struct ofono_handsfree *hf,
        DBG("");
        hd = g_new0(struct hf_data, 1);
        hd->chat = g_at_chat_clone(info->chat);
+       hd->vendor = vendor;
 
        ofono_handsfree_set_data(hf, hd);
 
+       g_at_chat_register(hd->chat, "+BSIR:", bsir_notify, FALSE, hf, NULL);
+
        g_idle_add(hfp_handsfree_register, hf);
 
        return 0;
-- 
1.7.6

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

Reply via email to