Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1181547e authored by Chris Manton's avatar Chris Manton
Browse files

encapsulate tBTM_BOND_TYPE within tBTM_SEC_DEV_REC

Towards readable code

Bug: 163134718
Tag: #refactor
Test: act.py -tc BleCocTest
Test: ble paired 2 phones
Test: classic paired Bose SoundLink
Change-Id: Ia5e04ba5c05783ee6b7458989f1898c50db80584
parent c6deaabd
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ typedef struct {
  bt_bond_state_t state;
  RawAddress static_bdaddr;
  RawAddress bd_addr;
  tBTM_BOND_TYPE bond_type;
  tBTM_SEC_DEV_REC::tBTM_BOND_TYPE bond_type;
  uint8_t pin_code_len;
  uint8_t is_ssp;
  uint8_t auth_req;
@@ -443,7 +443,8 @@ static void bond_state_changed(bt_status_t status, const RawAddress& bd_addr,
    return;
  }

  if (pairing_cb.bond_type == BOND_TYPE_TEMPORARY) state = BT_BOND_STATE_NONE;
  if (pairing_cb.bond_type == tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY)
    state = BT_BOND_STATE_NONE;

  LOG_DEBUG(
      "Bond state changed to state=%d [0:none, 1:bonding, 2:bonded],"
@@ -808,9 +809,9 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ* p_ssp_cfm_req) {
      !(p_ssp_cfm_req->loc_auth_req & BTM_AUTH_BONDS) &&
      !(p_ssp_cfm_req->rmt_auth_req & BTM_AUTH_BONDS) &&
      !(check_cod((RawAddress*)&p_ssp_cfm_req->bd_addr, COD_HID_POINTING)))
    pairing_cb.bond_type = BOND_TYPE_TEMPORARY;
    pairing_cb.bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY;
  else
    pairing_cb.bond_type = BOND_TYPE_PERSISTENT;
    pairing_cb.bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_PERSISTENT;

  btm_set_bond_type_dev(p_ssp_cfm_req->bd_addr, pairing_cb.bond_type);

@@ -821,7 +822,8 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ* p_ssp_cfm_req) {
    /* Pairing consent for JustWorks NOT needed if:
     * 1. Incoming temporary pairing is detected
     */
    if (is_incoming && pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
    if (is_incoming &&
        pairing_cb.bond_type == tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY) {
      BTIF_TRACE_EVENT(
          "%s: Auto-accept JustWorks pairing for temporary incoming", __func__);
      btif_dm_ssp_reply(bd_addr, BT_SSP_VARIANT_CONSENT, true);
@@ -902,7 +904,7 @@ static void btif_dm_auth_cmpl_evt(tBTA_DM_AUTH_CMPL* p_auth_cmpl) {
          (p_auth_cmpl->key_type == HCI_LKEY_TYPE_AUTH_COMB) ||
          (p_auth_cmpl->key_type == HCI_LKEY_TYPE_CHANGED_COMB) ||
          (p_auth_cmpl->key_type == HCI_LKEY_TYPE_AUTH_COMB_P_256) ||
          pairing_cb.bond_type == BOND_TYPE_PERSISTENT) {
          pairing_cb.bond_type == tBTM_SEC_DEV_REC::BOND_TYPE_PERSISTENT) {
        bt_status_t ret;
        BTIF_TRACE_DEBUG("%s: Storing link key. key_type=0x%x, bond_type=%d",
                         __func__, p_auth_cmpl->key_type, pairing_cb.bond_type);
@@ -914,7 +916,7 @@ static void btif_dm_auth_cmpl_evt(tBTA_DM_AUTH_CMPL* p_auth_cmpl) {
        BTIF_TRACE_DEBUG(
            "%s: Temporary key. Not storing. key_type=0x%x, bond_type=%d",
            __func__, p_auth_cmpl->key_type, pairing_cb.bond_type);
        if (pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
        if (pairing_cb.bond_type == tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY) {
          BTIF_TRACE_DEBUG("%s: sending BT_BOND_STATE_NONE for Temp pairing",
                           __func__);
          btif_storage_remove_bonded_device(&bd_addr);
@@ -1435,7 +1437,7 @@ void BTIF_dm_enable() {
  }
  /* clear control blocks */
  memset(&pairing_cb, 0, sizeof(btif_dm_pairing_cb_t));
  pairing_cb.bond_type = BOND_TYPE_PERSISTENT;
  pairing_cb.bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_PERSISTENT;

  /* This function will also trigger the adapter_properties_cb
  ** and bonded_devices_info_cb
@@ -1485,7 +1487,8 @@ static void btif_dm_upstreams_evt(uint16_t event, char* p_param) {
    case BTA_DM_BOND_CANCEL_CMPL_EVT:
      if (is_bonding_or_sdp()) {
        bd_addr = pairing_cb.bd_addr;
        btm_set_bond_type_dev(pairing_cb.bd_addr, BOND_TYPE_UNKNOWN);
        btm_set_bond_type_dev(pairing_cb.bd_addr,
                              tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN);
        bond_state_changed((bt_status_t)p_data->bond_cancel_cmpl.result,
                           bd_addr, BT_BOND_STATE_NONE);
      }
@@ -1500,7 +1503,8 @@ static void btif_dm_upstreams_evt(uint16_t event, char* p_param) {

    case BTA_DM_DEV_UNPAIRED_EVT:
      bd_addr = p_data->link_down.bd_addr;
      btm_set_bond_type_dev(p_data->link_down.bd_addr, BOND_TYPE_UNKNOWN);
      btm_set_bond_type_dev(p_data->link_down.bd_addr,
                            tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN);

/*special handling for HID devices */
#if (defined(BTA_HH_INCLUDED) && (BTA_HH_INCLUDED == TRUE))
@@ -1526,7 +1530,8 @@ static void btif_dm_upstreams_evt(uint16_t event, char* p_param) {

    case BTA_DM_LINK_DOWN_EVT:
      bd_addr = p_data->link_down.bd_addr;
      btm_set_bond_type_dev(p_data->link_down.bd_addr, BOND_TYPE_UNKNOWN);
      btm_set_bond_type_dev(p_data->link_down.bd_addr,
                            tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN);
      btif_av_acl_disconnected(bd_addr);
      BTIF_TRACE_DEBUG(
          "BTA_DM_LINK_DOWN_EVT. Sending BT_ACL_STATE_DISCONNECTED");
@@ -2384,7 +2389,8 @@ static void btif_dm_ble_auth_cmpl_evt(tBTA_DM_AUTH_CMPL* p_auth_cmpl) {
      btif_storage_set_remote_addr_type(&bdaddr, p_auth_cmpl->addr_type);

    /* Test for temporary bonding */
    if (btm_get_bond_type_dev(p_auth_cmpl->bd_addr) == BOND_TYPE_TEMPORARY) {
    if (btm_get_bond_type_dev(p_auth_cmpl->bd_addr) ==
        tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY) {
      BTIF_TRACE_DEBUG("%s: sending BT_BOND_STATE_NONE for Temp pairing",
                       __func__);
      btif_storage_remove_bonded_device(&bdaddr);
@@ -2552,7 +2558,7 @@ void btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ* p_ble_req) {

  bond_state_changed(BT_STATUS_SUCCESS, bd_addr, BT_BOND_STATE_BONDING);

  pairing_cb.bond_type = BOND_TYPE_PERSISTENT;
  pairing_cb.bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_PERSISTENT;
  pairing_cb.is_le_only = true;
  pairing_cb.is_le_nc = false;
  pairing_cb.is_ssp = true;
+6 −5
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ bool BTM_SecAddDevice(const RawAddress& bd_addr, DEV_CLASS dev_class,
     * bond state for an existing device here? This logic should be verified
     * as part of a larger refactor.
     */
    p_dev_rec->bond_type = BOND_TYPE_UNKNOWN;
    p_dev_rec->bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN;
  }

  if (dev_class) memcpy(p_dev_rec->dev_class, dev_class, DEV_CLASS_LEN);
@@ -527,7 +527,7 @@ tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void) {

  // Initialize defaults
  p_dev_rec->sec_flags = BTM_SEC_IN_USE;
  p_dev_rec->bond_type = BOND_TYPE_UNKNOWN;
  p_dev_rec->bond_type = tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN;
  p_dev_rec->timestamp = btm_cb.dev_rec_count++;
  p_dev_rec->rmt_io_caps = BTM_IO_CAP_UNKNOWN;

@@ -544,10 +544,11 @@ tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void) {
 * Returns          The device bond type if known, otherwise BOND_TYPE_UNKNOWN
 *
 ******************************************************************************/
tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr) {
tBTM_SEC_DEV_REC::tBTM_BOND_TYPE btm_get_bond_type_dev(
    const RawAddress& bd_addr) {
  tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr);

  if (p_dev_rec == NULL) return BOND_TYPE_UNKNOWN;
  if (p_dev_rec == NULL) return tBTM_SEC_DEV_REC::BOND_TYPE_UNKNOWN;

  return p_dev_rec->bond_type;
}
@@ -563,7 +564,7 @@ tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr) {
 *
 ******************************************************************************/
bool btm_set_bond_type_dev(const RawAddress& bd_addr,
                           tBTM_BOND_TYPE bond_type) {
                           tBTM_SEC_DEV_REC::tBTM_BOND_TYPE bond_type) {
  tBTM_SEC_DEV_REC* p_dev_rec = btm_find_dev(bd_addr);

  if (p_dev_rec == NULL) return false;
+4 −2
Original line number Diff line number Diff line
@@ -177,7 +177,8 @@ tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
 * Returns          The device bond type if known, otherwise BOND_TYPE_UNKNOWN
 *
 ******************************************************************************/
tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
tBTM_SEC_DEV_REC::tBTM_BOND_TYPE btm_get_bond_type_dev(
    const RawAddress& bd_addr);

/*******************************************************************************
 *
@@ -189,4 +190,5 @@ tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
 * Returns          true on success, otherwise false
 *
 ******************************************************************************/
bool btm_set_bond_type_dev(const RawAddress& bd_addr, tBTM_BOND_TYPE bond_type);
bool btm_set_bond_type_dev(const RawAddress& bd_addr,
                           tBTM_SEC_DEV_REC::tBTM_BOND_TYPE bond_type);
+1 −1
Original line number Diff line number Diff line
@@ -3781,7 +3781,7 @@ void btm_sec_disconnected(uint16_t handle, uint8_t reason) {
          BTM_SEC_16_DIGIT_PIN_AUTHED);

    // Remove temporary key.
    if (p_dev_rec->bond_type == BOND_TYPE_TEMPORARY)
    if (p_dev_rec->bond_type == tBTM_SEC_DEV_REC::BOND_TYPE_TEMPORARY)
      p_dev_rec->sec_flags &= ~(BTM_SEC_LINK_KEY_KNOWN);
  }

+7 −7
Original line number Diff line number Diff line
@@ -110,13 +110,6 @@ typedef struct {
  tBTM_SEC_BLE_KEYS keys;    /* LE device security info in slave rode */
} tBTM_SEC_BLE;

/* Peering bond type */
typedef enum : uint8_t {
  BOND_TYPE_UNKNOWN = 0,
  BOND_TYPE_PERSISTENT = 1,
  BOND_TYPE_TEMPORARY = 2
} tBTM_BOND_TYPE;

enum : uint16_t {
  BTM_SEC_AUTHENTICATED = 0x0002,
  BTM_SEC_ENCRYPTED = 0x0004,
@@ -145,6 +138,13 @@ enum : uint16_t {
 * A record exists for each device authenticated with this device
 */
typedef struct {
  /* Peering bond type */
  typedef enum : uint8_t {
    BOND_TYPE_UNKNOWN = 0,
    BOND_TYPE_PERSISTENT = 1,
    BOND_TYPE_TEMPORARY = 2
  } tBTM_BOND_TYPE;

  uint32_t required_security_flags_for_pairing;
  tBTM_SEC_CALLBACK* p_callback;
  void* p_ref_data;