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

Commit ee7750ec authored by Himanshu Rawat's avatar Himanshu Rawat
Browse files

Convert AG state from int to enum

Test: mmm  packages/modules/Bluetooth
Flag: EXEMPT logging changes
Bug: 339906876
Change-Id: I101773a4c46efb39bb74ed221675ddda250611e3
parent 94241595
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -334,7 +334,7 @@ void bta_ag_disc_fail(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& /* data */) {
 ******************************************************************************/
void bta_ag_open_fail(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) {
  /* call open cback w. failure */
  log::debug("state [0x{:02x}]", p_scb->state);
  log::debug("state {}", bta_ag_state_str(p_scb->state));
  bta_ag_cback_open(p_scb, data.api_open.bd_addr, BTA_AG_FAIL_RESOURCES);
}

+11 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <bluetooth/log.h>

#include <cstdint>
#include <string>

#include "bta/ag/bta_ag_at.h"
#include "bta/include/bta_ag_api.h"
@@ -238,6 +239,14 @@ typedef enum {
  BTA_AG_SCO_APTX_SWB_SETTINGS_UNKNOWN = 0xFFFF,
} tBTA_AG_SCO_APTX_SWB_SETTINGS;

/* state machine states */
typedef enum {
  BTA_AG_INIT_ST,
  BTA_AG_OPENING_ST,
  BTA_AG_OPEN_ST,
  BTA_AG_CLOSING_ST
} tBTA_AG_STATE;

/* type for each service control block */
struct tBTA_AG_SCB {
  char clip[BTA_AG_AT_MAX_LEN + 1];     /* number string used for CLIP */
@@ -264,7 +273,7 @@ struct tBTA_AG_SCB {
  bool inband_enabled;      /* set to true if inband ring enabled */
  bool nrec_enabled;        /* noise reduction & echo canceling */
  bool svc_conn;            /* set to true when service level connection up */
  uint8_t state;            /* state machine state */
  tBTA_AG_STATE state;      /* state machine state */
  uint8_t conn_service;     /* connected service */
  uint8_t peer_scn;         /* peer scn */
  uint8_t app_id;           /* application id */
@@ -388,6 +397,7 @@ void bta_ag_sm_execute_by_handle(uint16_t handle, uint16_t event,
void bta_ag_collision_cback(tBTA_SYS_CONN_STATUS status, tBTA_SYS_ID id,
                            uint8_t app_id, const RawAddress& peer_addr);
void bta_ag_resume_open(tBTA_AG_SCB* p_scb);
const std::string bta_ag_state_str(tBTA_AG_STATE state);

/* SDP functions */
bool bta_ag_add_record(uint16_t service_uuid, const char* p_service_name,
+22 −19
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "bta/ag/bta_ag_int.h"
#include "bta/include/bta_hfp_api.h"
#include "internal_include/bt_target.h"
#include "macros.h"
#include "osi/include/alarm.h"
#include "osi/include/compat.h"
#include "stack/include/bt_hdr.h"
@@ -42,9 +43,6 @@ using namespace bluetooth;
/*****************************************************************************
 * Constants and types
 ****************************************************************************/
/* state machine states */
enum { BTA_AG_INIT_ST, BTA_AG_OPENING_ST, BTA_AG_OPEN_ST, BTA_AG_CLOSING_ST };

#define CASE_RETURN_STR(const) \
  case const:                  \
    return #const;
@@ -108,14 +106,14 @@ static const char* bta_ag_evt_str(uint16_t event) {
  }
}

static const char* bta_ag_state_str(uint8_t state) {
const std::string bta_ag_state_str(tBTA_AG_STATE state) {
  switch (state) {
    CASE_RETURN_STR(BTA_AG_INIT_ST)
    CASE_RETURN_STR(BTA_AG_OPENING_ST)
    CASE_RETURN_STR(BTA_AG_OPEN_ST)
    CASE_RETURN_STR(BTA_AG_CLOSING_ST)
    CASE_RETURN_STRING(BTA_AG_INIT_ST);
    CASE_RETURN_STRING(BTA_AG_OPENING_ST);
    CASE_RETURN_STRING(BTA_AG_OPEN_ST);
    CASE_RETURN_STRING(BTA_AG_CLOSING_ST);
    default:
      return "Unknown AG State";
      RETURN_UNKNOWN_TYPE_STRING(tBTA_AG_STATE, state);
  }
}

@@ -394,7 +392,7 @@ void bta_ag_resume_open(tBTA_AG_SCB* p_scb) {
    bta_ag_sm_execute(p_scb, BTA_AG_API_OPEN_EVT, open_data);
  } else {
    log::verbose("device {} is already in state {}", p_scb->peer_addr,
                 p_scb->state);
                 bta_ag_state_str(p_scb->state));
  }
}

@@ -584,7 +582,8 @@ static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
          bta_ag_free_db(p_scb, data);
          break;
        default:
          log::error("unknown event {} at state {}", event, p_scb->state);
          log::error("unknown event {} at state {}", event,
                     bta_ag_state_str(p_scb->state));
          break;
      }
      break;
@@ -633,7 +632,8 @@ static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
          bta_ag_handle_collision(p_scb, data);
          break;
        default:
          log::error("unknown event {} at state {}", event, p_scb->state);
          log::error("unknown event {} at state {}", event,
                     bta_ag_state_str(p_scb->state));
          break;
      }
      break;
@@ -690,7 +690,8 @@ static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
          bta_ag_start_close(p_scb, data);
          break;
        default:
          log::error("unknown event {} at state {}", event, p_scb->state);
          log::error("unknown event {} at state {}", event,
                     bta_ag_state_str(p_scb->state));
          break;
      }
      break;
@@ -722,7 +723,8 @@ static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
          bta_ag_free_db(p_scb, data);
          break;
        default:
          log::error("unknown event {} at state {}", event, p_scb->state);
          log::error("unknown event {} at state {}", event,
                     bta_ag_state_str(p_scb->state));
          break;
      }
      break;
@@ -742,14 +744,15 @@ static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
                       const tBTA_AG_DATA& data) {
  uint16_t previous_event = event;
  uint8_t previous_state = p_scb->state;
  tBTA_AG_STATE previous_state = p_scb->state;

  log::debug(
      "Execute AG event handle:0x{:04x} bd_addr:{} state:{}[0x{:02x}] "
      "event:{}[0x{:04x}] result:{}[0x{:02x}]",
      bta_ag_scb_to_idx(p_scb), p_scb->peer_addr,
      bta_ag_state_str(p_scb->state), p_scb->state, bta_ag_evt_str(event),
      event, bta_ag_res_str(data.api_result.result), data.api_result.result);
      bta_ag_state_str(p_scb->state), static_cast<uint64_t>(p_scb->state),
      bta_ag_evt_str(event), event, bta_ag_res_str(data.api_result.result),
      data.api_result.result);

  bta_ag_better_state_machine(p_scb, event, data);

@@ -759,8 +762,8 @@ void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
        "state_change:{}[0x{:02x}]->{}[0x{:02x}] event:{}[0x{:04x}] "
        "result:{}[0x{:02x}]",
        bta_ag_scb_to_idx(p_scb), p_scb->peer_addr,
        bta_ag_state_str(previous_state), previous_state,
        bta_ag_state_str(p_scb->state), p_scb->state,
        bta_ag_state_str(previous_state), static_cast<uint64_t>(previous_state),
        bta_ag_state_str(p_scb->state), static_cast<uint64_t>(p_scb->state),
        bta_ag_evt_str(previous_event), previous_event,
        bta_ag_res_str(data.api_result.result), data.api_result.result);
  }
+1 −1
Original line number Diff line number Diff line
@@ -86,7 +86,7 @@ static void bta_ag_port_cback(uint32_t /* code */, uint16_t port_handle,
    if (!bta_ag_scb_open(p_scb)) {
      log::error(
          "rfcomm data on an unopened control block {} peer_addr {} state {}",
          handle, p_scb->peer_addr, p_scb->state);
          handle, p_scb->peer_addr, bta_ag_state_str(p_scb->state));
    }
    do_in_main_thread(
        FROM_HERE, base::BindOnce(&bta_ag_sm_execute_by_handle, handle,
+6 −6
Original line number Diff line number Diff line
@@ -197,12 +197,12 @@ static void bta_ag_sco_disc_cback(uint16_t sco_idx) {

  log::debug("sco_idx: 0x{:x} sco.state:{}", sco_idx,
             sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.sco.state)));
  log::debug("scb[0] in_use:{} sco_idx: 0x{:x} sco state:{}",
  log::debug("scb[0] in_use:{} sco_idx: 0x{:x} ag state:{}",
             bta_ag_cb.scb[0].in_use, bta_ag_cb.scb[0].sco_idx,
             sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[0].state)));
  log::debug("scb[1] in_use:{} sco_idx:0x{:x} sco state:{}",
             bta_ag_state_str(bta_ag_cb.scb[0].state));
  log::debug("scb[1] in_use:{} sco_idx:0x{:x} ag state:{}",
             bta_ag_cb.scb[1].in_use, bta_ag_cb.scb[1].sco_idx,
             sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[1].state)));
             bta_ag_state_str(bta_ag_cb.scb[1].state));

  /* match callback to scb */
  if (bta_ag_cb.sco.p_curr_scb != nullptr && bta_ag_cb.sco.p_curr_scb->in_use) {
@@ -245,7 +245,7 @@ static void bta_ag_sco_disc_cback(uint16_t sco_idx) {
         * |BTA_AG_OPEN_ST|, which has the same value as |BTA_AG_SCO_CODEC_ST|
         */
        if (!com::android::bluetooth::flags::fix_hfp_qual_1_9()) {
          bta_ag_cb.sco.p_curr_scb->state = BTA_AG_SCO_CODEC_ST;
          bta_ag_cb.sco.p_curr_scb->state = (tBTA_AG_STATE)BTA_AG_SCO_CODEC_ST;
        }
        if (bta_ag_cb.sco.p_curr_scb->inuse_codec == UUID_CODEC_LC3) {
          if (bta_ag_cb.sco.p_curr_scb->codec_lc3_settings ==
@@ -292,7 +292,7 @@ static void bta_ag_sco_disc_cback(uint16_t sco_idx) {
          bta_ag_cb.sco.p_curr_scb->retransmission_effort_retries == 0) {
        bta_ag_cb.sco.p_curr_scb->retransmission_effort_retries++;
        if (!com::android::bluetooth::flags::fix_hfp_qual_1_9()) {
          bta_ag_cb.sco.p_curr_scb->state = BTA_AG_SCO_CODEC_ST;
          bta_ag_cb.sco.p_curr_scb->state = (tBTA_AG_STATE)BTA_AG_SCO_CODEC_ST;
        }
        log::warn("eSCO/SCO failed to open, retry with retransmission_effort");
      } else {