diff --git a/android/handsfree-client.c b/android/handsfree-client.c
index fd68d78..9818a47 100644
--- a/android/handsfree-client.c
+++ b/android/handsfree-client.c
HAL_EV_HF_CLIENT_AUDIO_STATE, sizeof(ev), &ev);
}
+static void bcc_cb(enum hfp_result result, enum hfp_error cme_err,
+ void *user_data)
+{
+ struct device *dev = user_data;
+
+ if (result != HFP_RESULT_OK)
+ set_audio_state(dev, HAL_HF_CLIENT_AUDIO_STATE_DISCONNECTED);
+}
+
+static bool codec_negotiation_supported(struct device *dev)
+{
+ return (dev->features & HFP_AG_FEAT_CODEC) &&
+ (hfp_hf_features & HFP_HF_FEAT_CODEC);
+}
+
static bool connect_sco(struct device *dev)
{
- /* TODO: handle codec negotiation */
+ if (codec_negotiation_supported(dev))
+ return hfp_hf_send_command(dev->hf, bcc_cb, dev,
+ "AT+BCC");
return bt_sco_connect(sco, &dev->bdaddr, BT_VOICE_CVSD_16BIT);
}
struct hal_ev_hf_client_command_complete ev;
DBG("");
-
memset(&ev, 0, sizeof(ev));
switch (result) {
dev->features = feat;
}
-static bool codec_negotiation_supported(struct device *dev)
-{
- return (dev->features & HFP_AG_FEAT_CODEC) &&
- (hfp_hf_features & HFP_HF_FEAT_CODEC);
-}
-
static void slc_brsf_resp(enum hfp_result result, enum hfp_error cme_err,
void *user_data)
{