summaryrefslogtreecommitdiff
path: root/android/handsfree.c
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2015-02-09 11:31:35 +0100
committerSzymon Janc <szymon.janc@tieto.com>2015-02-09 15:12:32 +0100
commit95b70f30a696f8294a19c1e4af7cfc1776ce551f (patch)
treeaa02413037586bfd1b909af6fd41e73633907ebd /android/handsfree.c
parent5ffe7b9a5262d0315bf7fb039cfa29a2b4a04e36 (diff)
downloadbluez-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.c9
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) {