diff options
author | Szymon Janc <szymon.janc@tieto.com> | 2015-02-09 11:31:35 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2015-02-09 15:12:32 +0100 |
commit | 95b70f30a696f8294a19c1e4af7cfc1776ce551f (patch) | |
tree | aa02413037586bfd1b909af6fd41e73633907ebd /android/handsfree.c | |
parent | 5ffe7b9a5262d0315bf7fb039cfa29a2b4a04e36 (diff) | |
download | bluez-95b70f30a696f8294a19c1e4af7cfc1776ce551f.tar.gz |
android/handsfree: Don't disconnect on unknown command in SLC
When connecting HFP simply reply with ERROR to any command not related
to SLC creation but don't disconnect in such case.
This fix connection issue with Jaguar XF 2009 carkit that sends
AT+CPIN? command before AT+BRSF.
Diffstat (limited to 'android/handsfree.c')
-rw-r--r-- | android/handsfree.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/android/handsfree.c b/android/handsfree.c index 76f565395..4020ed58d 100644 --- a/android/handsfree.c +++ b/android/handsfree.c @@ -315,12 +315,6 @@ static void at_cmd_unknown(const char *command, void *user_data) uint8_t buf[IPC_MTU]; struct hal_ev_handsfree_unknown_at *ev = (void *) buf; - if (dev->state != HAL_EV_HANDSFREE_CONN_STATE_SLC_CONNECTED) { - hfp_gw_send_result(dev->gw, HFP_RESULT_ERROR); - hfp_gw_disconnect(dev->gw); - return; - } - bdaddr2android(&dev->bdaddr, ev->bdaddr); /* copy while string including terminating NULL */ @@ -1147,6 +1141,8 @@ static void at_cmd_ckpd(struct hfp_context *result, enum hfp_gw_cmd_type type, static void register_post_slc_at(struct hf_device *dev) { + hfp_gw_set_command_handler(dev->gw, at_cmd_unknown, dev, NULL); + if (dev->hsp) { hfp_gw_register(dev->gw, at_cmd_ckpd, "+CKPD", dev, NULL); hfp_gw_register(dev->gw, at_cmd_vgs, "+VGS", dev, NULL); @@ -1468,7 +1464,6 @@ static void connect_cb(GIOChannel *chan, GError *err, gpointer user_data) g_io_channel_set_close_on_unref(chan, FALSE); hfp_gw_set_close_on_unref(dev->gw, true); - hfp_gw_set_command_handler(dev->gw, at_cmd_unknown, dev, NULL); hfp_gw_set_disconnect_handler(dev->gw, disconnect_watch, dev, NULL); if (dev->hsp) { |