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

Commit d81a2e3e authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Only RFCOMM Uses btm_sec_mx_access_request

Bug: 159815595
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: I992a5477f71e630531d29c720f51e8473a551eff
parent 7b1c3efd
Loading
Loading
Loading
Loading
+17 −21
Original line number Diff line number Diff line
@@ -1785,9 +1785,8 @@ tBTM_STATUS btm_sec_l2cap_access_req(const RawAddress& bd_addr, uint16_t psm,
 * Returns          BTM_CMD_STARTED
 *
 ******************************************************************************/
tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
                                      bool is_originator, uint32_t mx_proto_id,
                                      uint32_t mx_chan_id,
tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr,
                                      bool is_originator, uint32_t mx_chan_id,
                                      tBTM_SEC_CALLBACK* p_callback,
                                      void* p_ref_data) {
  tBTM_SEC_DEV_REC* p_dev_rec;
@@ -1798,8 +1797,8 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
                             L2CAP connection */
  if (bluetooth::shim::is_gd_shim_enabled()) {
    return bluetooth::shim::btm_sec_mx_access_request(
        bd_addr, psm, is_originator, mx_proto_id, mx_chan_id, p_callback,
        p_ref_data);
        bd_addr, BT_PSM_RFCOMM, is_originator, BTM_SEC_PROTO_RFCOMM, mx_chan_id,
        p_callback, p_ref_data);
  }

  BTM_TRACE_DEBUG("%s() is_originator: %d", __func__, is_originator);
@@ -1807,8 +1806,8 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
  p_dev_rec = btm_find_or_alloc_dev(bd_addr);

  /* Find the service record for the PSM */
  p_serv_rec =
      btm_sec_find_mx_serv(is_originator, psm, mx_proto_id, mx_chan_id);
  p_serv_rec = btm_sec_find_mx_serv(is_originator, BT_PSM_RFCOMM,
                                    BTM_SEC_PROTO_RFCOMM, mx_chan_id);

  /* If there is no application registered with this PSM do not allow connection
   */
@@ -1816,9 +1815,8 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
    if (p_callback)
      (*p_callback)(&bd_addr, transport, p_ref_data, BTM_MODE_UNSUPPORTED);

    BTM_TRACE_ERROR(
        "Security Manager: MX service not found PSM:%d Proto:%d SCN:%d", psm,
        mx_proto_id, mx_chan_id);
    BTM_TRACE_ERROR("Security Manager: MX service not found SCN:%d",
                    mx_chan_id);
    return BTM_NO_RESOURCES;
  }

@@ -1829,9 +1827,8 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
  /* we will process one after another */
  if ((p_dev_rec->p_callback) ||
      (btm_cb.pairing_state != BTM_PAIR_STATE_IDLE)) {
    BTM_TRACE_EVENT("%s() service PSM:%d Proto:%d SCN:%d delayed  state: %s",
                    __func__, psm, mx_proto_id, mx_chan_id,
                    btm_pair_state_descr(btm_cb.pairing_state));
    BTM_TRACE_EVENT("%s() service SCN:%d delayed  state: %s", __func__,
                    mx_chan_id, btm_pair_state_descr(btm_cb.pairing_state));

    rc = BTM_CMD_STARTED;

@@ -1883,8 +1880,9 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
    }
    if (rc == BTM_CMD_STARTED) {
      BTM_TRACE_EVENT("%s: call btm_sec_queue_mx_request", __func__);
      btm_sec_queue_mx_request(bd_addr, psm, is_originator, mx_proto_id,
                               mx_chan_id, p_callback, p_ref_data);
      btm_sec_queue_mx_request(bd_addr, BT_PSM_RFCOMM, is_originator,
                               BTM_SEC_PROTO_RFCOMM, mx_chan_id, p_callback,
                               p_ref_data);
    } else /* rc == BTM_SUCCESS */
    {
      /* access granted */
@@ -1950,11 +1948,10 @@ tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
  p_dev_rec->p_ref_data = p_ref_data;

  BTM_TRACE_EVENT(
      "%s() proto_id:%d chan_id:%d State:%d Flags:0x%x Required:0x%x Service "
      "%s() chan_id:%d State:%d Flags:0x%x Required:0x%x Service "
      "ID:%d",
      __func__, mx_proto_id, mx_chan_id, p_dev_rec->sec_state,
      p_dev_rec->sec_flags, p_dev_rec->security_required,
      p_dev_rec->p_cur_service->service_id);
      __func__, mx_chan_id, p_dev_rec->sec_state, p_dev_rec->sec_flags,
      p_dev_rec->security_required, p_dev_rec->p_cur_service->service_id);

  rc = btm_sec_execute_procedure(p_dev_rec);
  if (rc != BTM_CMD_STARTED) {
@@ -2137,8 +2134,7 @@ void btm_sec_check_pending_reqs(void) {
              "%s PSM:0x%04x Is_Orig:%u mx_proto_id:%u mx_chan_id:%u", __func__,
              p_e->psm, p_e->is_orig, p_e->mx_proto_id, p_e->mx_chan_id);

          btm_sec_mx_access_request(p_e->bd_addr, p_e->psm, p_e->is_orig,
                                    p_e->mx_proto_id, p_e->mx_chan_id,
          btm_sec_mx_access_request(p_e->bd_addr, p_e->is_orig, p_e->mx_chan_id,
                                    p_e->p_callback, p_e->p_ref_data);
        } else {
          BTM_SetEncryption(p_e->bd_addr, p_e->transport, p_e->p_callback,
+2 −3
Original line number Diff line number Diff line
@@ -424,9 +424,8 @@ tBTM_STATUS btm_sec_l2cap_access_req(const RawAddress& bd_addr, uint16_t psm,
 * Returns          BTM_CMD_STARTED
 *
 ******************************************************************************/
tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
                                      bool is_originator, uint32_t mx_proto_id,
                                      uint32_t mx_chan_id,
tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr,
                                      bool is_originator, uint32_t mx_chan_id,
                                      tBTM_SEC_CALLBACK* p_callback,
                                      void* p_ref_data);

+4 −5
Original line number Diff line number Diff line
@@ -120,9 +120,9 @@ void rfc_port_sm_state_closed(tPORT* p_port, uint16_t event, void* p_data) {
  switch (event) {
    case RFC_EVENT_OPEN:
      p_port->rfc.state = RFC_STATE_ORIG_WAIT_SEC_CHECK;
      btm_sec_mx_access_request(
          p_port->rfc.p_mcb->bd_addr, BT_PSM_RFCOMM, true, BTM_SEC_PROTO_RFCOMM,
          (uint32_t)(p_port->dlci / 2), &rfc_sec_check_complete, p_port);
      btm_sec_mx_access_request(p_port->rfc.p_mcb->bd_addr, true,
                                (uint32_t)(p_port->dlci / 2),
                                &rfc_sec_check_complete, p_port);
      return;

    case RFC_EVENT_CLOSE:
@@ -142,8 +142,7 @@ void rfc_port_sm_state_closed(tPORT* p_port, uint16_t event, void* p_data) {

      /* Open will be continued after security checks are passed */
      p_port->rfc.state = RFC_STATE_TERM_WAIT_SEC_CHECK;
      btm_sec_mx_access_request(p_port->rfc.p_mcb->bd_addr, BT_PSM_RFCOMM,
                                false, BTM_SEC_PROTO_RFCOMM,
      btm_sec_mx_access_request(p_port->rfc.p_mcb->bd_addr, false,
                                (uint32_t)(p_port->dlci / 2),
                                &rfc_sec_check_complete, p_port);
      return;
+4 −5
Original line number Diff line number Diff line
@@ -30,14 +30,13 @@ void btm_sec_abort_access_req(const RawAddress& bd_addr) {
  btm_security_internal_interface->AbortAccessRequest(bd_addr);
}

tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr, uint16_t psm,
                                      bool is_originator, uint32_t mx_proto_id,
                                      uint32_t mx_chan_id,
tBTM_STATUS btm_sec_mx_access_request(const RawAddress& bd_addr,
                                      bool is_originator, uint32_t mx_chan_id,
                                      tBTM_SEC_CALLBACK* p_callback,
                                      void* p_ref_data) {
  return btm_security_internal_interface->MultiplexingProtocolAccessRequest(
      bd_addr, psm, is_originator, mx_proto_id, mx_chan_id, p_callback,
      p_ref_data);
      bd_addr, BT_PSM_RFCOMM, is_originator, BTM_SEC_PROTO_RFCOMM, mx_chan_id,
      p_callback, p_ref_data);
}

bool BTM_SetSecurityLevel(bool is_originator, const char* p_name,