diff --git a/src/shared/hfp.c b/src/shared/hfp.c
index bc81a07..2342c24 100644
--- a/src/shared/hfp.c
+++ b/src/shared/hfp.c
hfp->callbacks_data);
}
-static void clip_resp(enum hfp_result result, enum hfp_error cme_err,
+static void cmee_resp(enum hfp_result result, enum hfp_error cme_err,
void *user_data)
{
struct hfp_hf *hfp = user_data;
DBG(hfp, "");
if (result != HFP_RESULT_OK) {
- DBG(hfp, "hf: CLIP error: %d", result);
+ DBG(hfp, "hf: CMEE error: %d", result);
goto failed;
}
hfp->callbacks_data);
}
+static void clip_resp(enum hfp_result result, enum hfp_error cme_err,
+ void *user_data)
+{
+ struct hfp_hf *hfp = user_data;
+
+ DBG(hfp, "");
+
+ if (result != HFP_RESULT_OK) {
+ DBG(hfp, "hf: CLIP error: %d", result);
+ goto failed;
+ }
+
+ if (!(hfp->features & HFP_AG_FEAT_EXTENDED_RES_CODE)) {
+ /* Jump to next setup state */
+ cmee_resp(HFP_RESULT_OK, cme_err, user_data);
+ return;
+ }
+
+ if (!hfp_hf_send_command(hfp, cmee_resp, hfp, "AT+CMEE=1")) {
+ DBG(hfp, "hf: Could not send AT+CMEE=1");
+ result = HFP_RESULT_ERROR;
+ goto failed;
+ }
+
+ return;
+
+failed:
+ if (hfp->callbacks->session_ready)
+ hfp->callbacks->session_ready(result, cme_err,
+ hfp->callbacks_data);
+}
+
static void cops_resp(enum hfp_result result, enum hfp_error cme_err,
void *user_data)
{
diff --git a/unit/test-hfp.c b/unit/test-hfp.c
index 3973df5..fc9fb18 100644
--- a/unit/test-hfp.c
+++ b/unit/test-hfp.c
raw_pdu('\r', '\n', '+', 'C', 'O', 'P', 'S', ':', ' ', '0', ',', \
'0', ',', '\"', 'T', 'E', 'S', 'T', '\"', '\r', '\n'), \
frg_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \
+ raw_pdu('\r', '\n', 'O', 'K', '\r', '\n'), \
raw_pdu('\r', '\n', 'O', 'K', '\r', '\n')
static void hf_cmd_complete(enum hfp_result res, enum hfp_error cme_err,