btif_hh_added_device_t added_devices[BTIF_HH_MAX_ADDED_DEV];
btif_hh_device_t* p_curr_dev;
bool service_dereg_active;
+ RawAddress pending_conn_address;
} btif_hh_cb_t;
/*******************************************************************************
BTA_HhSendCtrl(p_dev->dev_handle, BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG);
return BT_STATUS_SUCCESS;
} else {
- BTIF_TRACE_ERROR("%s: Error, device %s not opened.", __func__,
- bd_addr->ToString().c_str());
+ BTIF_TRACE_ERROR("%s: Error, device %s not opened, status = %d", __func__,
+ bd_addr->ToString().c_str(), btif_hh_cb.status);
+ if ((btif_hh_cb.pending_conn_address == *bd_addr) &&
+ (btif_hh_cb.status == BTIF_HH_DEV_CONNECTING)) {
+ btif_hh_cb.status = (BTIF_HH_STATUS)BTIF_HH_DEV_DISCONNECTED;
+ btif_hh_cb.pending_conn_address = RawAddress::kEmpty;
+ }
return BT_STATUS_FAIL;
}
}
pagescan mode, we will do 2 retries to connect before giving up */
tBTA_SEC sec_mask = BTUI_HH_SECURITY;
btif_hh_cb.status = BTIF_HH_DEV_CONNECTING;
+ btif_hh_cb.pending_conn_address = *bd_addr;
BTA_HhOpen(*bd_addr, BTA_HH_PROTO_RPT_MODE, sec_mask);
// TODO(jpawlowski); make cback accept const and remove tmp!
case BTA_HH_OPEN_EVT:
BTIF_TRACE_WARNING("%s: BTA_HH_OPN_EVT: handle=%d, status =%d", __func__,
p_data->conn.handle, p_data->conn.status);
+ btif_hh_cb.pending_conn_address = RawAddress::kEmpty;
if (p_data->conn.status == BTA_HH_OK) {
p_dev = btif_hh_find_connected_dev_by_handle(p_data->conn.handle);
if (p_dev == NULL) {