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

Commit 9e8b99d1 authored by Chris Manton's avatar Chris Manton
Browse files

Proper interface around disconnect_reason

Bug: 163134718
Tag: #refactor
Test: act.py -tc BleCocTest
Test: ble paired 2 phones
Test: classic paired Bose SoundLink

Change-Id: I10d4bc9ae642c16cf5622adf541db999f442a48f
parent 86d8a51d
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -192,15 +192,13 @@ typedef struct {
  friend uint16_t BTM_GetNumAclLinks(void);
  friend uint16_t acl_get_link_supervision_timeout();
  friend uint16_t acl_get_supported_packet_types();
  friend uint16_t btm_get_acl_disc_reason_code(void);
  friend uint8_t acl_get_disconnect_reason();
  friend uint8_t btm_handle_to_acl_index(uint16_t hci_handle);
  friend void BTM_SetDefaultLinkSuperTout(uint16_t timeout);
  friend void BTM_acl_after_controller_started();
  friend void BTM_default_block_role_switch();
  friend void BTM_default_unblock_role_switch();
  friend void acl_initialize_power_mode(const tACL_CONN& p_acl);
  friend void acl_set_disconnect_reason(uint8_t acl_disc_reason);
  friend void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason);
  friend void btm_acl_created(const RawAddress& bda, uint16_t hci_handle,
                              uint8_t link_role, tBT_TRANSPORT transport);
  friend void btm_acl_device_down(void);
@@ -241,6 +239,10 @@ typedef struct {
  uint16_t btm_acl_pkt_types_supported;
  uint16_t btm_def_link_policy;
  uint16_t btm_def_link_super_tout;
  uint8_t acl_disc_reason;
  tHCI_STATUS acl_disc_reason;
  uint8_t pm_pend_link;

 public:
  tHCI_STATUS get_disconnect_reason() const { return acl_disc_reason; }
  void set_disconnect_reason(tHCI_STATUS reason) { acl_disc_reason = reason; }
} tACL_CB;
+6 −6
Original line number Diff line number Diff line
@@ -1262,9 +1262,7 @@ uint16_t BTM_GetNumAclLinks(void) {
 *
 ******************************************************************************/
uint16_t btm_get_acl_disc_reason_code(void) {
  uint8_t res = btm_cb.acl_cb_.acl_disc_reason;
  LOG_WARN("This API should require an address for per ACL basis");
  return res;
  return btm_cb.acl_cb_.get_disconnect_reason();
}

/*******************************************************************************
@@ -2738,10 +2736,12 @@ uint16_t acl_get_link_supervision_timeout() {
  return btm_cb.acl_cb_.btm_def_link_super_tout;
}

uint8_t acl_get_disconnect_reason() { return btm_cb.acl_cb_.acl_disc_reason; }
tHCI_STATUS acl_get_disconnect_reason() {
  return btm_cb.acl_cb_.get_disconnect_reason();
}

void acl_set_disconnect_reason(uint8_t acl_disc_reason) {
  btm_cb.acl_cb_.acl_disc_reason = acl_disc_reason;
void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason) {
  btm_cb.acl_cb_.set_disconnect_reason(acl_disc_reason);
}

bool acl_is_role_switch_allowed() {
+1 −1
Original line number Diff line number Diff line
@@ -647,7 +647,7 @@ void BTM_PINCodeReply(const RawAddress& bd_addr, uint8_t res, uint8_t pin_len,
    btm_cb.security_mode_changed = true;
    btsnd_hcic_write_auth_enable(true);

    acl_set_disconnect_reason(0xff);
    acl_set_disconnect_reason(HCI_ERR_UNDEFINED);

    /* if we rejected incoming connection request, we have to wait
     * HCI_Connection_Complete event */
+3 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include "stack/include/acl_api_types.h"
#include "stack/include/bt_types.h"
#include "stack/include/btm_status.h"
#include "stack/include/hci_error_code.h"
#include "types/raw_address.h"

// Note: From stack/include/btm_api.h
@@ -291,8 +292,8 @@ uint16_t acl_get_hci_handle_for_hcif(const RawAddress& bd_addr,
                                     tBT_TRANSPORT transport);

uint16_t acl_get_link_supervision_timeout();
uint8_t acl_get_disconnect_reason();
void acl_set_disconnect_reason(uint8_t acl_disc_reason);
tHCI_STATUS acl_get_disconnect_reason();
void acl_set_disconnect_reason(tHCI_STATUS acl_disc_reason);

bool acl_is_role_switch_allowed();

+1 −1
Original line number Diff line number Diff line
@@ -332,7 +332,7 @@ bool l2c_link_hci_disc_comp(uint16_t handle, uint8_t reason) {
    /* There can be a case when we rejected PIN code authentication */
    /* otherwise save a new reason */
    if (acl_get_disconnect_reason() != HCI_ERR_HOST_REJECT_SECURITY) {
      acl_set_disconnect_reason(reason);
      acl_set_disconnect_reason(static_cast<tHCI_STATUS>(reason));
    }

    p_lcb->SetDisconnectReason(acl_get_disconnect_reason());