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

Commit 758055f8 authored by Pomai Ahlo's avatar Pomai Ahlo Committed by Gerrit Code Review
Browse files

Merge changes I8ae504b1,If17c0d67,I5035cf6a,Ic4eccc9d,Iaddb6841, ... into main

* changes:
  RFCOMM SM logs[7/7] rename index to handle
  RFCOMM SM logs[6/7] PORT events to string
  RFCOMM SM logs[5/7] MX event to string
  RFCOMM SM logs[4/7] Cleanup docs
  RFCOMM SM logs[3/7] Remove redundant logs
  RFCOMM SM logs[2/7] PORT state to string
  RFCOMM SM logs[1/7] MX state to string
parents 2a6a5951 3ecf515f
Loading
Loading
Loading
Loading
+3 −18
Original line number Diff line number Diff line
@@ -22,13 +22,8 @@

#include "macros.h"

/*
 * Events that can be received by multiplexer as well as port state machines
 */
// Events that can be received by both multiplexer or port state machines
enum tRFC_EVENT : uint16_t {
  /*
   * Events that can be received by multiplexer as well as port state machines
   */
  RFC_EVENT_SABME = 0,
  RFC_EVENT_UA = 1,
  RFC_EVENT_DM = 2,
@@ -38,13 +33,8 @@ enum tRFC_EVENT : uint16_t {
  RFC_EVENT_BAD_FRAME = 50,
};

/*
 * Multiplexer events
 */
// Multiplexer events
enum tRFC_MX_EVENT : uint16_t {
  /*
   * Multiplexer events
   */
  RFC_MX_EVENT_SABME = RFC_EVENT_SABME,
  RFC_MX_EVENT_UA = RFC_EVENT_UA,
  RFC_MX_EVENT_DM = RFC_EVENT_DM,
@@ -62,13 +52,8 @@ enum tRFC_MX_EVENT : uint16_t {
  RFC_MX_EVENT_DISC_IND = 14,
};

/*
 * Port events
 */
// Port events
enum tRFC_PORT_EVENT : uint16_t {
  /*
   * Port events
   */
  RFC_PORT_EVENT_SABME = RFC_EVENT_SABME,
  RFC_PORT_EVENT_UA = RFC_EVENT_UA,
  RFC_PORT_EVENT_DM = RFC_EVENT_DM,
+36 −28
Original line number Diff line number Diff line
@@ -67,8 +67,8 @@ static void rfc_mx_conf_cnf(tRFC_MCB* p_mcb, uint16_t result);
void rfc_mx_sm_execute(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
  log::assert_that(p_mcb != nullptr, "NULL mcb for event {}", event);

  log::info("RFCOMM peer:{} event:{} state:{}", p_mcb->bd_addr, event,
            rfcomm_mx_state_text(static_cast<tRFC_MX_STATE>(p_mcb->state)));
  log::info("RFCOMM peer:{} event:{} state:{}", p_mcb->bd_addr, rfcomm_mx_event_text(event),
            rfcomm_mx_state_text(p_mcb->state));

  switch (p_mcb->state) {
    case RFC_MX_STATE_IDLE:
@@ -100,7 +100,8 @@ void rfc_mx_sm_execute(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
      break;

    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
}

@@ -160,10 +161,12 @@ void rfc_mx_sm_state_idle(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_data
      return;

    default:
      log::error("Mx error state {} event {}", p_mcb->state, event);
      log::error("Mx error state {} event {}", rfcomm_mx_state_text(p_mcb->state),
                 rfcomm_mx_event_text(event));
      return;
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -177,10 +180,10 @@ void rfc_mx_sm_state_idle(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_data
 *
 ******************************************************************************/
void rfc_mx_sm_state_wait_conn_cnf(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
  log::verbose("evt {}", event);
  switch (event) {
    case RFC_MX_EVENT_START_REQ:
      log::error("Mx error state {} event {}", p_mcb->state, event);
      log::error("Mx error state:{} event:{}", rfcomm_mx_state_text(p_mcb->state),
                 rfcomm_mx_event_text(event));
      return;

    /* There is some new timing so that Config Ind comes before security is
@@ -217,8 +220,8 @@ void rfc_mx_sm_state_wait_conn_cnf(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p
        uint16_t i;
        uint8_t handle;

        log::verbose("RFCOMM MX retry as acceptor in collision case - evt:{} in state:{}", event,
                     p_mcb->state);
        log::verbose("RFCOMM MX retry as acceptor in collision case - evt:{} in state:{}",
                     rfcomm_mx_event_text(event), rfcomm_mx_state_text(p_mcb->state));

        rfc_save_lcid_mcb(NULL, p_mcb->lcid);
        p_mcb->lcid = p_mcb->pending_lcid;
@@ -243,9 +246,11 @@ void rfc_mx_sm_state_wait_conn_cnf(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p
      }
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -259,7 +264,6 @@ void rfc_mx_sm_state_wait_conn_cnf(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p
 *
 ******************************************************************************/
void rfc_mx_sm_state_configure(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
  log::verbose("event {}", event);
  switch (event) {
    case RFC_MX_EVENT_START_REQ:
    case RFC_MX_EVENT_CONN_CNF:
@@ -291,9 +295,11 @@ void rfc_mx_sm_state_configure(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_dat
      PORT_StartCnf(p_mcb, RFCOMM_ERROR);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -307,7 +313,6 @@ void rfc_mx_sm_state_configure(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_dat
 *
 ******************************************************************************/
void rfc_mx_sm_sabme_wait_ua(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_data */) {
  log::verbose("event {}", event);
  switch (event) {
    case RFC_MX_EVENT_START_REQ:
    case RFC_MX_EVENT_CONN_CNF:
@@ -355,9 +360,11 @@ void rfc_mx_sm_sabme_wait_ua(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_da
      PORT_StartCnf(p_mcb, RFCOMM_ERROR);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -371,7 +378,6 @@ void rfc_mx_sm_sabme_wait_ua(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_da
 *
 ******************************************************************************/
void rfc_mx_sm_state_wait_sabme(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
  log::verbose("event {}", event);
  switch (event) {
    case RFC_MX_EVENT_DISC_IND:
      p_mcb->state = RFC_MX_STATE_IDLE;
@@ -423,9 +429,11 @@ void rfc_mx_sm_state_wait_sabme(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_da
      return;

    default:
      log::warn("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
      log::warn("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -439,8 +447,6 @@ void rfc_mx_sm_state_wait_sabme(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_da
 *
 ******************************************************************************/
void rfc_mx_sm_state_connected(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_data */) {
  log::verbose("event {}", event);

  switch (event) {
    case RFC_MX_EVENT_TIMEOUT:
    case RFC_MX_EVENT_CLOSE_REQ:
@@ -468,9 +474,11 @@ void rfc_mx_sm_state_connected(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_
      PORT_CloseInd(p_mcb);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

/*******************************************************************************
@@ -485,8 +493,6 @@ void rfc_mx_sm_state_connected(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* /* p_
 ******************************************************************************/
void rfc_mx_sm_state_disc_wait_ua(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_data) {
  BT_HDR* p_buf;

  log::verbose("event {}", event);
  switch (event) {
    case RFC_MX_EVENT_UA:
    case RFC_MX_EVENT_DM:
@@ -549,9 +555,11 @@ void rfc_mx_sm_state_disc_wait_ua(tRFC_MCB* p_mcb, tRFC_MX_EVENT event, void* p_
    case RFC_MX_EVENT_QOS_VIOLATION_IND:
      break;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_mcb->state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_mx_event_text(event),
                 rfcomm_mx_state_text(p_mcb->state));
  }
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", event, p_mcb->state);
  log::verbose("RFCOMM MX ignored - evt:{} in state:{}", rfcomm_mx_event_text(event),
               rfcomm_mx_state_text(p_mcb->state));
}

void rfc_on_l2cap_error(uint16_t lcid, uint16_t result) {
+45 −41
Original line number Diff line number Diff line
@@ -78,8 +78,8 @@ void rfc_port_sm_execute(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data) {

  // logs for state RFC_STATE_OPENED handled in rfc_port_sm_opened()
  if (p_port->rfc.state != RFC_STATE_OPENED) {
    log::info("bd_addr:{}, index:{}, state:{}, event:{}", p_port->bd_addr, p_port->handle,
              p_port->rfc.state, event);
    log::info("bd_addr:{}, handle:{}, state:{}, event:{}", p_port->bd_addr, p_port->handle,
              rfcomm_port_state_text(p_port->rfc.state), rfcomm_port_event_text(event));
  }
  switch (p_port->rfc.state) {
    case RFC_STATE_CLOSED:
@@ -152,7 +152,7 @@ void rfc_port_sm_state_closed(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data
      return;

    case RFC_PORT_EVENT_DM:
      log::warn("RFC_EVENT_DM, index={}", p_port->handle);
      log::warn("RFC_EVENT_DM, handle:{}", p_port->handle);
      rfc_port_closed(p_port);
      return;

@@ -170,10 +170,11 @@ void rfc_port_sm_state_closed(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data
      log::error("Port error state {} event {}", p_port->rfc.state, event);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_port->rfc.state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_port_event_text(event),
                 rfcomm_port_state_text(p_port->rfc.state));
  }

  log::warn("Port state closed Event ignored {}", event);
  log::warn("Event ignored {}", rfcomm_port_event_text(event));
  return;
}

@@ -191,7 +192,7 @@ void rfc_port_sm_sabme_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_dat
  switch (event) {
    case RFC_PORT_EVENT_OPEN:
    case RFC_PORT_EVENT_ESTABLISH_RSP:
      log::error("Port error state {} event {}", p_port->rfc.state, event);
      log::error("Port error event:{}", event);
      return;

    case RFC_PORT_EVENT_CLOSE:
@@ -202,7 +203,7 @@ void rfc_port_sm_sabme_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_dat
      return;

    case RFC_PORT_EVENT_CLEAR:
      log::warn("RFC_PORT_EVENT_CLEAR, index={}", p_port->handle);
      log::warn("RFC_PORT_EVENT_CLEAR, handle:{}", p_port->handle);
      rfc_port_closed(p_port);
      return;

@@ -241,7 +242,7 @@ void rfc_port_sm_sabme_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_dat
      return;

    case RFC_PORT_EVENT_DM:
      log::warn("RFC_EVENT_DM, index={}", p_port->handle);
      log::warn("RFC_EVENT_DM, handle:{}", p_port->handle);
      p_port->rfc.p_mcb->is_disc_initiator = true;
      PORT_DlcEstablishCnf(p_port->rfc.p_mcb, p_port->dlci, p_port->rfc.p_mcb->peer_l2cap_mtu,
                           RFCOMM_ERROR);
@@ -249,7 +250,7 @@ void rfc_port_sm_sabme_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_dat
      return;

    case RFC_PORT_EVENT_DISC:
      log::warn("RFC_EVENT_DISC, index={}", p_port->handle);
      log::warn("RFC_EVENT_DISC, handle:{}", p_port->handle);
      rfc_send_ua(p_port->rfc.p_mcb, p_port->dlci);
      PORT_DlcEstablishCnf(p_port->rfc.p_mcb, p_port->dlci, p_port->rfc.p_mcb->peer_l2cap_mtu,
                           RFCOMM_ERROR);
@@ -271,9 +272,10 @@ void rfc_port_sm_sabme_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_dat
                           RFCOMM_ERROR);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_port->rfc.state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_port_event_text(event),
                 rfcomm_port_state_text(static_cast<tRFC_PORT_STATE>(p_port->rfc.state)));
  }
  log::warn("Port state sabme_wait_ua Event ignored {}", event);
  log::warn("Event ignored {}", rfcomm_port_event_text(event));
}

/*******************************************************************************
@@ -304,24 +306,25 @@ void rfc_port_sm_term_wait_sec_check(tPORT* p_port, tRFC_PORT_EVENT event, void*
        }
      } else {
        log::debug("Security check succeeded state:{} port_handle:{}",
                   rfcomm_port_state_text(p_port->rfc.state), p_port->handle);
                   rfcomm_port_state_text(static_cast<tRFC_PORT_STATE>(p_port->rfc.state)),
                   p_port->handle);
        PORT_DlcEstablishInd(p_port->rfc.p_mcb, p_port->dlci, p_port->rfc.p_mcb->peer_l2cap_mtu);
      }
      return;

    case RFC_PORT_EVENT_OPEN:
    case RFC_PORT_EVENT_CLOSE:
      log::error("Port error state {} event {}", p_port->rfc.state, event);
      log::error("Port error event {}", rfcomm_port_event_text(event));
      return;

    case RFC_PORT_EVENT_CLEAR:
      log::warn("RFC_PORT_EVENT_CLEAR, index={}", p_port->handle);
      log::warn("RFC_PORT_EVENT_CLEAR, handle:{}", p_port->handle);
      btm_sec_abort_access_req(p_port->rfc.p_mcb->bd_addr);
      rfc_port_closed(p_port);
      return;

    case RFC_PORT_EVENT_DATA:
      log::error("Port error state Term Wait Sec event Data");
      log::error("Port error event {}", rfcomm_port_event_text(event));
      osi_free(p_data);
      return;

@@ -374,9 +377,10 @@ void rfc_port_sm_term_wait_sec_check(tPORT* p_port, tRFC_PORT_EVENT event, void*
      }
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_port->rfc.state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_port_event_text(event),
                 rfcomm_port_state_text(p_port->rfc.state));
  }
  log::warn("Port state term_wait_sec_check Event ignored {}", event);
  log::warn("Event ignored {}", event);
}

/*******************************************************************************
@@ -394,14 +398,14 @@ void rfc_port_sm_orig_wait_sec_check(tPORT* p_port, tRFC_PORT_EVENT event, void*
  switch (event) {
    case RFC_PORT_EVENT_SEC_COMPLETE:
      if (*((tBTM_STATUS*)p_data) != tBTM_STATUS::BTM_SUCCESS) {
        log::error("Security check failed result:{} state:{} port_handle:{}",
        log::error("Security check failed result:{} state:{} handle:{}",
                   btm_status_text(*((tBTM_STATUS*)p_data)),
                   rfcomm_port_state_text(p_port->rfc.state), p_port->handle);
        p_port->rfc.p_mcb->is_disc_initiator = true;
        PORT_DlcEstablishCnf(p_port->rfc.p_mcb, p_port->dlci, 0, RFCOMM_SECURITY_ERR);
        rfc_port_closed(p_port);
      } else {
        log::debug("Security check succeeded state:{} port_handle:{}",
        log::debug("Security check succeeded state:{} handle:{}",
                   rfcomm_port_state_text(p_port->rfc.state), p_port->handle);
        rfc_send_sabme(p_port->rfc.p_mcb, p_port->dlci);
        rfc_port_timer_start(p_port, RFC_PORT_T1_TIMEOUT);
@@ -411,17 +415,17 @@ void rfc_port_sm_orig_wait_sec_check(tPORT* p_port, tRFC_PORT_EVENT event, void*

    case RFC_PORT_EVENT_OPEN:
    case RFC_PORT_EVENT_SABME: /* Peer should not use the same dlci */
      log::error("Port error state {} event {}", p_port->rfc.state, event);
      log::error("Port error event {}", rfcomm_port_event_text(event));
      return;

    case RFC_PORT_EVENT_CLOSE:
      log::warn("RFC_PORT_EVENT_CLOSE, index={}", p_port->handle);
      log::warn("RFC_PORT_EVENT_CLOSE, handle:{}", p_port->handle);
      btm_sec_abort_access_req(p_port->rfc.p_mcb->bd_addr);
      rfc_port_closed(p_port);
      return;

    case RFC_PORT_EVENT_DATA:
      log::error("Port error state Orig Wait Sec event Data");
      log::error("Port error {}", rfcomm_port_event_text(event));
      osi_free(p_data);
      return;

@@ -429,9 +433,10 @@ void rfc_port_sm_orig_wait_sec_check(tPORT* p_port, tRFC_PORT_EVENT event, void*
      osi_free(p_data);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_port->rfc.state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_port_event_text(event),
                 rfcomm_port_state_text(p_port->rfc.state));
  }
  log::warn("Port state orig_wait_sec_check Event ignored {}", event);
  log::warn("Event ignored {}", rfcomm_port_event_text(event));
}

/*******************************************************************************
@@ -467,11 +472,9 @@ void rfc_port_sm_opened(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data) {
      return;

    case RFC_PORT_EVENT_DATA:
      /* Send credits in the frame.  Pass them in the layer specific member of
       * the hdr. */
      /* There might be an initial case when we reduced rx_max and credit_rx is
       * still */
      /* bigger.  Make sure that we do not send 255 */
      // Send credits in the frame.  Pass them in the layer specific member of the hdr.
      // There might be an initial case when we reduced rx_max and credit_rx is still bigger.
      // Make sure that we do not send 255
      log::verbose("RFC_PORT_EVENT_DATA bd_addr:{} handle:{} dlci:{} scn:{}", p_port->bd_addr,
                   p_port->handle, p_port->dlci, p_port->scn);
      if ((p_port->rfc.p_mcb->flow == PORT_FC_CREDIT) &&
@@ -531,11 +534,12 @@ void rfc_port_sm_opened(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data) {
      return;

    default:
      break;
  }
      log::error("Received unexpected event:{} bd_addr:{} handle:{} dlci:{} scn:{}",
                 rfcomm_port_event_text(event), p_port->bd_addr, p_port->handle, p_port->dlci,
                 p_port->scn);
      break;
  }
  log::warn("Event ignored {}", rfcomm_port_event_text(event));
}

/*******************************************************************************
@@ -552,11 +556,11 @@ void rfc_port_sm_disc_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data
  switch (event) {
    case RFC_PORT_EVENT_OPEN:
    case RFC_PORT_EVENT_ESTABLISH_RSP:
      log::error("Port error state {} event {}", p_port->rfc.state, event);
      log::error("Port error event {}", rfcomm_port_event_text(event));
      return;

    case RFC_PORT_EVENT_CLEAR:
      log::warn("RFC_PORT_EVENT_CLEAR, index={}", p_port->handle);
      log::warn("RFC_PORT_EVENT_CLEAR, handle:{}", p_port->handle);
      rfc_port_closed(p_port);
      return;

@@ -569,7 +573,7 @@ void rfc_port_sm_disc_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data
      FALLTHROUGH_INTENDED; /* FALLTHROUGH */

    case RFC_PORT_EVENT_DM:
      log::warn("RFC_EVENT_DM|RFC_EVENT_UA[{}], index={}", event, p_port->handle);
      log::warn("RFC_EVENT_DM|RFC_EVENT_UA[{}], handle:{}", event, p_port->handle);
      if (com::android::bluetooth::flags::rfcomm_always_disc_initiator_in_disc_wait_ua()) {
        // If we got a DM in RFC_STATE_DISC_WAIT_UA, it's likely that both ends
        // attempt to DISC at the same time and both get a DM.
@@ -598,14 +602,15 @@ void rfc_port_sm_disc_wait_ua(tPORT* p_port, tRFC_PORT_EVENT event, void* p_data
      return;

    case RFC_PORT_EVENT_TIMEOUT:
      log::error("RFC_EVENT_TIMEOUT, index={}", p_port->handle);
      log::error("RFC_EVENT_TIMEOUT, handle:{}", p_port->handle);
      rfc_port_closed(p_port);
      return;
    default:
      log::error("Received unexpected event:{} in state:{}", event, p_port->rfc.state);
      log::error("Received unexpected event:{} in state:{}", rfcomm_port_event_text(event),
                 rfcomm_port_state_text(p_port->rfc.state));
  }

  log::warn("Port state disc_wait_ua Event ignored {}", event);
  log::warn("Event ignored {}", rfcomm_port_event_text(event));
}

/*******************************************************************************
@@ -697,15 +702,14 @@ void rfc_process_rpn(tRFC_MCB* p_mcb, bool is_command, bool is_request, MX_FRAME
    return;
  }

  /* If we are not awaiting response just ignore it */
  // If we are not awaiting response just ignore it
  p_port = port_find_mcb_dlci_port(p_mcb, p_frame->dlci);
  if ((p_port == nullptr) || !(p_port->rfc.expected_rsp & (RFC_RSP_RPN | RFC_RSP_RPN_REPLY))) {
    log::warn("ignore DLC parameter negotiation as we are not waiting for any");
    return;
  }

  /* If we sent a request for port parameters to the peer it is replying with */
  /* mask 0. */
  // If we sent a request for port parameters to the peer it is replying with mask 0.
  rfc_port_timer_stop(p_port);

  if (p_port->rfc.expected_rsp & RFC_RSP_RPN_REPLY) {
+2 −6
Original line number Diff line number Diff line
@@ -20,9 +20,7 @@

#include "macros.h"

/*
 * Define states and events for the RFC multiplexer state machine
 */
// Multiplexer states
typedef enum : uint16_t {
  RFC_MX_STATE_IDLE = 0,
  RFC_MX_STATE_WAIT_CONN_CNF = 1,
@@ -33,9 +31,7 @@ typedef enum : uint16_t {
  RFC_MX_STATE_DISC_WAIT_UA = 6,
} tRFC_MX_STATE;

/*
 * Define port states
 */
// Port states
typedef enum : uint8_t {
  RFC_STATE_CLOSED = 0,
  RFC_STATE_SABME_WAIT_UA = 1,