From: Jakub Pawlowski Date: Thu, 25 Oct 2018 21:04:14 +0000 (+0200) Subject: Split gatt_update_auto_connect_dev into separate add/remove functions X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=80c28c6edaf2f18377c45cc616b297a2c0e29062;p=android-x86%2Fsystem-bt.git Split gatt_update_auto_connect_dev into separate add/remove functions Test: compilation, no functional changes Change-Id: I58b5d565753e0c1b99a3b06b27074b593f3b903b --- diff --git a/stack/gatt/gatt_api.cc b/stack/gatt/gatt_api.cc index 2d37e9d86..e1ac2f7c1 100644 --- a/stack/gatt/gatt_api.cc +++ b/stack/gatt/gatt_api.cc @@ -1124,7 +1124,7 @@ bool GATT_Connect(tGATT_IF gatt_if, const RawAddress& bd_addr, bool is_direct, initiating_phys); else { if (transport == BT_TRANSPORT_LE) - status = gatt_update_auto_connect_dev(gatt_if, true, bd_addr); + status = gatt_auto_connect_dev_add(p_reg, bd_addr); else { LOG(ERROR) << "Unsupported transport for background connection"; } @@ -1152,9 +1152,13 @@ bool GATT_CancelConnect(tGATT_IF gatt_if, const RawAddress& bd_addr, bool is_direct) { LOG(INFO) << __func__ << ": gatt_if=" << +gatt_if; - if (gatt_if && !gatt_get_regcb(gatt_if)) { - LOG(ERROR) << "gatt_if=" << +gatt_if << " is not registered"; - return false; + tGATT_REG* p_reg; + if (gatt_if) { + p_reg = gatt_get_regcb(gatt_if); + if (!p_reg) { + LOG(ERROR) << "gatt_if=" << +gatt_if << " is not registered"; + return false; + } } if (is_direct) { @@ -1183,7 +1187,7 @@ bool GATT_CancelConnect(tGATT_IF gatt_if, const RawAddress& bd_addr, } // is not direct - if (gatt_if) return gatt_remove_bg_dev_for_app(gatt_if, bd_addr); + if (gatt_if) return gatt_auto_connect_dev_remove(p_reg, bd_addr); if (!gatt_clear_bg_dev_for_addr(bd_addr)) { LOG(ERROR) diff --git a/stack/gatt/gatt_int.h b/stack/gatt/gatt_int.h index 50529188d..060b3176a 100644 --- a/stack/gatt/gatt_int.h +++ b/stack/gatt/gatt_int.h @@ -473,11 +473,11 @@ extern tGATT_HDL_LIST_ELEM* gatt_find_hdl_buffer_by_handle(uint16_t handle); extern tGATTS_SRV_CHG* gatt_add_srv_chg_clt(tGATTS_SRV_CHG* p_srv_chg); /* for background connection */ -extern bool gatt_update_auto_connect_dev(tGATT_IF gatt_if, bool add, +extern bool gatt_auto_connect_dev_add(tGATT_REG* p_reg, + const RawAddress& bd_addr); +extern bool gatt_auto_connect_dev_remove(tGATT_REG* p_reg, const RawAddress& bd_addr); extern bool gatt_is_bg_dev_for_app(tGATT_BG_CONN_DEV* p_dev, tGATT_IF gatt_if); -extern bool gatt_remove_bg_dev_for_app(tGATT_IF gatt_if, - const RawAddress& bd_addr); extern uint8_t gatt_clear_bg_dev_for_addr(const RawAddress& bd_addr); extern tGATT_BG_CONN_DEV* gatt_find_bg_dev(const RawAddress& remote_bda); extern void gatt_deregister_bgdev_list(tGATT_IF gatt_if); diff --git a/stack/gatt/gatt_utils.cc b/stack/gatt/gatt_utils.cc index d92f42347..25095a94e 100644 --- a/stack/gatt/gatt_utils.cc +++ b/stack/gatt/gatt_utils.cc @@ -1359,16 +1359,6 @@ bool gatt_add_bg_dev_list(tGATT_REG* p_reg, const RawAddress& bd_addr) { return true; } -/** Remove the application interface for the specified background device */ -bool gatt_remove_bg_dev_for_app(tGATT_IF gatt_if, const RawAddress& bd_addr) { - tGATT_TCB* p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); - bool status; - - if (p_tcb) gatt_update_app_use_link_flag(gatt_if, p_tcb, false, false); - status = gatt_update_auto_connect_dev(gatt_if, false, bd_addr); - return status; -} - /** Removes all registrations for background connection for given device. * Returns true if anything was removed, false otherwise */ uint8_t gatt_clear_bg_dev_for_addr(const RawAddress& bd_addr) { @@ -1397,6 +1387,7 @@ bool gatt_remove_bg_dev_from_list(tGATT_REG* p_reg, const RawAddress& bd_addr) { gatt_cb.bgconn_dev.erase(dev_it); return true; } + /** deregister all related back ground connetion device. */ void gatt_deregister_bgdev_list(tGATT_IF gatt_if) { auto it = gatt_cb.bgconn_dev.begin(); @@ -1414,48 +1405,33 @@ void gatt_deregister_bgdev_list(tGATT_IF gatt_if) { } } -/******************************************************************************* - * - * Function gatt_reset_bgdev_list - * - * Description reset bg device list - * - * Returns pointer to the device record - * - ******************************************************************************/ +/** reset bg device list */ void gatt_reset_bgdev_list(void) { gatt_cb.bgconn_dev.clear(); } -/******************************************************************************* - * - * Function gatt_update_auto_connect_dev - * - * Description This function add or remove a device for background - * connection procedure. + +/** + * This function add a device for background connection procedure. * - * Parameters gatt_if: Application ID. - * add: add peer device + * Parameters p_reg: application record, * bd_addr: peer device address. * * Returns true if connection started; false otherwise. - * - ******************************************************************************/ -bool gatt_update_auto_connect_dev(tGATT_IF gatt_if, bool add, - const RawAddress& bd_addr) { - tGATT_TCB* p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); - + */ +bool gatt_auto_connect_dev_add(tGATT_REG* p_reg, const RawAddress& bd_addr) { VLOG(1) << __func__; - /* Make sure app is registered */ - tGATT_REG* p_reg = gatt_get_regcb(gatt_if); - if (!p_reg) { - LOG(ERROR) << __func__ << " gatt_if is not registered " << +gatt_if; - return false; - } - if (!add) return gatt_remove_bg_dev_from_list(p_reg, bd_addr); + tGATT_TCB* p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); bool ret = gatt_add_bg_dev_list(p_reg, bd_addr); if (ret && p_tcb != NULL) { /* if a connected device, update the link holding number */ - gatt_update_app_use_link_flag(gatt_if, p_tcb, true, true); + gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, true, true); } return ret; } + +/** Remove the application interface for the specified background device */ +bool gatt_auto_connect_dev_remove(tGATT_REG* p_reg, const RawAddress& bd_addr) { + tGATT_TCB* p_tcb = gatt_find_tcb_by_addr(bd_addr, BT_TRANSPORT_LE); + if (p_tcb) gatt_update_app_use_link_flag(p_reg->gatt_if, p_tcb, false, false); + return gatt_remove_bg_dev_from_list(p_reg, bd_addr); +}