HFP 1.7 profile update (1/4)
-> Added AG support for HFP 1.7 version upgrade which
adds new type of indicator called HF(headset) indicators.
-> Added support for two new AT commands AT + BIND and AT + BIEV
which have been appended to Hands-Free SLC sequence.
-> Added support to propagate the above commands and their data to
the upper layers.
Bug: 19983867
Change-Id: I93d5b2af949f9fb99507a954e623cd0927ddc976
(cherry picked from commit e5bed64926d6ae45501617052f90932287da135b)
diff --git a/btif/src/btif_hf.cc b/btif/src/btif_hf.cc
index b38ba82..8c925b8 100644
--- a/btif/src/btif_hf.cc
+++ b/btif/src/btif_hf.cc
@@ -73,6 +73,8 @@
BTA_AG_FEAT_BTRH | \
BTA_AG_FEAT_VREC | \
BTA_AG_FEAT_CODEC |\
+ BTA_AG_FEAT_HF_IND | \
+ BTA_AG_FEAT_ESCO | \
BTA_AG_FEAT_UNAT)
#endif
#else
@@ -84,6 +86,8 @@
BTA_AG_FEAT_EXTERR | \
BTA_AG_FEAT_BTRH | \
BTA_AG_FEAT_VREC | \
+ BTA_AG_FEAT_HF_IND | \
+ BTA_AG_FEAT_ESCO | \
BTA_AG_FEAT_UNAT)
#endif
#endif
@@ -621,6 +625,21 @@
BTHF_WBS_YES : BTHF_WBS_NO, &btif_hf_cb[idx].connected_bda);
break;
+ case BTA_AG_AT_BIND_EVT:
+ if (p_data->val.hdr.status == BTA_AG_SUCCESS)
+ {
+ HAL_CBACK(bt_hf_callbacks, bind_cb,p_data->val.str,
+ &btif_hf_cb[idx].connected_bda);
+ }
+ break;
+
+ case BTA_AG_AT_BIEV_EVT:
+ if (p_data->val.hdr.status == BTA_AG_SUCCESS)
+ {
+ HAL_CBACK(bt_hf_callbacks, biev_cb, (bthf_hf_ind_type_t)p_data->val.lidx, (int)p_data->val.num,
+ &btif_hf_cb[idx].connected_bda);
+ }
+ break;
default:
BTIF_TRACE_WARNING("%s: Unhandled event: %d", __func__, event);
break;
@@ -1107,6 +1126,33 @@
/*******************************************************************************
**
+** Function bind_response
+**
+** Description Send +BIND response
+**
+** Returns bt_status_t
+**
+*******************************************************************************/
+static bt_status_t bind_response(bthf_hf_ind_type_t ind_id, bthf_hf_ind_status_t ind_status,
+ bt_bdaddr_t * bd_addr)
+{
+ CHECK_BTHF_INIT();
+
+ int index = btif_hf_idx_by_bdaddr(bd_addr);
+ if (!is_connected(bd_addr) || index == BTIF_HF_INVALID_IDX)
+ return BT_STATUS_FAIL;
+
+ tBTA_AG_RES_DATA ag_res;
+ memset(&ag_res, 0, sizeof(ag_res));
+ ag_res.ind.id = ind_id;
+ ag_res.ind.on_demand = (ind_status == BTHF_HF_IND_ENABLED);
+
+ BTA_AgResult(btif_hf_cb[index].handle, BTA_AG_BIND_RES, &ag_res);
+ return BT_STATUS_SUCCESS;
+}
+
+/*******************************************************************************
+**
** Function formatted_at_response
**
** Description Pre-formatted AT response, typically in response to unknown AT cmd
@@ -1581,6 +1627,7 @@
phone_state_change,
cleanup,
configure_wbs,
+ bind_response,
};
/*******************************************************************************