Hi Mikel, On 09/15/2011 11:34 AM, Mikel Astiz wrote: > --- > 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; If you're not planning to use the vendor member for anything then it is better left out. > }; > > 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); > + Just a minor nitpick, but I'd like this to be done in hfp_handsfree_register > g_idle_add(hfp_handsfree_register, hf); > > return 0; Regards, -Denis