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

Commit 31d20e8a authored by Zach Johnson's avatar Zach Johnson Committed by Gerrit Code Review
Browse files

Merge changes I5719d43c,Ia756d0fa,Iba08e90a,Ia5d1b195,I678011f4, ...

* changes:
  Replace unreadable AG state machine
  good riddance AV stream state machine
  Replace AV non state machine function table
  Replace BTA AV state machine
  Flatten bta_hd_sm_execute
  Remove unused parameter from bta_hd_vc_unplug_act
  Remove unused parameter from bta_hd_disconnect_act
  Remove unused parameter from bta_hd_unregister_act
  Replace unreadable HD state machine
  Replace HH unreadable state machine
  BTA_HH_LE_INCLUDED is always true
  Remove unreferenced mce file & headers
  btif_mce_get_interface is never called
  Callbacks are never used
  Remove MCE code that now no longer does anything
  BTA_MceGetRemoteMasInstances does nothing
  bta_mce_get_remote_mas_instances is never referenced
  bta_mce_enable is never referenced
  bta_mce_sm_execute is never referenced
  Remove now unused BTA_MceEnable
  btif_mce_execute_service is never called
  booleans are a thing for a reason
  Simplify BTA_SdpCreate/RemoveRecordByUser
  Simplfy BTA_SdpSearch
  simplify BTA_SdpEnable
  Burninate SDP "state machine"
parents f6cfcc36 c6c96ee1
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -91,10 +91,6 @@ cc_library_static {
        "jv/bta_jv_act.cc",
        "jv/bta_jv_api.cc",
        "jv/bta_jv_cfg.cc",
        "mce/bta_mce_act.cc",
        "mce/bta_mce_api.cc",
        "mce/bta_mce_cfg.cc",
        "mce/bta_mce_main.cc",
        "pan/bta_pan_act.cc",
        "pan/bta_pan_api.cc",
        "pan/bta_pan_ci.cc",
+1 −5
Original line number Diff line number Diff line
@@ -72,10 +72,6 @@ static_library("bta") {
    "jv/bta_jv_act.cc",
    "jv/bta_jv_api.cc",
    "jv/bta_jv_cfg.cc",
    "mce/bta_mce_act.cc",
    "mce/bta_mce_api.cc",
    "mce/bta_mce_cfg.cc",
    "mce/bta_mce_main.cc",
    "pan/bta_pan_act.cc",
    "pan/bta_pan_api.cc",
    "pan/bta_pan_ci.cc",
+158 −206
Original line number Diff line number Diff line
@@ -37,46 +37,6 @@
/* state machine states */
enum { BTA_AG_INIT_ST, BTA_AG_OPENING_ST, BTA_AG_OPEN_ST, BTA_AG_CLOSING_ST };

/* state machine action enumeration list */
enum {
  BTA_AG_REGISTER,
  BTA_AG_DEREGISTER,
  BTA_AG_START_OPEN,
  BTA_AG_RFC_DO_OPEN,
  BTA_AG_RFC_DO_CLOSE,
  BTA_AG_START_DEREG,
  BTA_AG_START_CLOSE,
  BTA_AG_RFC_OPEN,
  BTA_AG_OPEN_FAIL,
  BTA_AG_RFC_ACP_OPEN,
  BTA_AG_RFC_CLOSE,
  BTA_AG_RFC_FAIL,
  BTA_AG_RFC_DATA,
  BTA_AG_DISC_INT_RES,
  BTA_AG_DISC_FAIL,
  BTA_AG_DISC_ACP_RES,
  BTA_AG_FREE_DB,
  BTA_AG_SCO_CONN_OPEN,
  BTA_AG_SCO_CONN_CLOSE,
  BTA_AG_SCO_LISTEN,
  BTA_AG_SCO_OPEN,
  BTA_AG_SCO_CLOSE,
  BTA_AG_SCO_SHUTDOWN,
  BTA_AG_POST_SCO_OPEN,
  BTA_AG_POST_SCO_CLOSE,
  BTA_AG_SVC_CONN_OPEN,
  BTA_AG_RESULT,
  BTA_AG_SETCODEC,
  BTA_AG_SEND_RING,
  BTA_AG_HANDLE_COLLISION,
  BTA_AG_NUM_ACTIONS
};

#define BTA_AG_IGNORE BTA_AG_NUM_ACTIONS

/* type for action functions */
typedef void (*tBTA_AG_ACTION)(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data);

#define CASE_RETURN_STR(const) \
  case const:                  \
    return #const;
@@ -151,155 +111,6 @@ static const char* bta_ag_state_str(uint8_t state) {
  }
}

/* action functions */
const tBTA_AG_ACTION bta_ag_action[] = {
    bta_ag_register,       bta_ag_deregister,    bta_ag_start_open,
    bta_ag_rfc_do_open,    bta_ag_rfc_do_close,  bta_ag_start_dereg,
    bta_ag_start_close,    bta_ag_rfc_open,      bta_ag_open_fail,
    bta_ag_rfc_acp_open,   bta_ag_rfc_close,     bta_ag_rfc_fail,
    bta_ag_rfc_data,       bta_ag_disc_int_res,  bta_ag_disc_fail,
    bta_ag_disc_acp_res,   bta_ag_free_db,       bta_ag_sco_conn_open,
    bta_ag_sco_conn_close, bta_ag_sco_listen,    bta_ag_sco_open,
    bta_ag_sco_close,      bta_ag_sco_shutdown,  bta_ag_post_sco_open,
    bta_ag_post_sco_close, bta_ag_svc_conn_open, bta_ag_result,
    bta_ag_setcodec,       bta_ag_send_ring,     bta_ag_handle_collision};

static_assert(sizeof(bta_ag_action) / sizeof(tBTA_AG_ACTION) ==
                  BTA_AG_NUM_ACTIONS,
              "bta_ag_action must handle all actions");

/* state table information */
#define BTA_AG_ACTIONS 2    /* number of actions */
#define BTA_AG_NEXT_STATE 2 /* position of next state */
#define BTA_AG_NUM_COLS 3   /* number of columns in state tables */

/* state table for init state */
const uint8_t bta_ag_st_init[][BTA_AG_NUM_COLS] = {
    /* Event                    Action 1                Action 2 Next state */
    /* API_REGISTER_EVT */ {BTA_AG_REGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_DEREGISTER_EVT */ {BTA_AG_DEREGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_OPEN_EVT */ {BTA_AG_START_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_OPEN_EVT */ {BTA_AG_RFC_ACP_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
    /* RFC_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* COLLISION_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST}};

/* state table for opening state */
const uint8_t bta_ag_st_opening[][BTA_AG_NUM_COLS] = {
    /* Event                    Action 1                Action 2 Next state */
    /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_DEREGISTER_EVT */
    {BTA_AG_RFC_DO_CLOSE, BTA_AG_START_DEREG, BTA_AG_CLOSING_ST},
    /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_CLOSE_EVT */ {BTA_AG_RFC_DO_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* RFC_OPEN_EVT */ {BTA_AG_RFC_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
    /* RFC_CLOSE_EVT */ {BTA_AG_RFC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* SCO_CLOSE_EVT */
    {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* DISC_ACP_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* DISC_INT_RES_EVT */
    {BTA_AG_DISC_INT_RES, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* DISC_OK_EVT */ {BTA_AG_RFC_DO_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* DISC_FAIL_EVT */ {BTA_AG_DISC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
    /* COLLISION_EVT */
    {BTA_AG_HANDLE_COLLISION, BTA_AG_IGNORE, BTA_AG_INIT_ST}};

/* state table for open state */
const uint8_t bta_ag_st_open[][BTA_AG_NUM_COLS] = {
    /* Event                    Action 1                Action 2 Next state */
    /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* API_DEREGISTER_EVT */
    {BTA_AG_START_CLOSE, BTA_AG_START_DEREG, BTA_AG_CLOSING_ST},
    /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* API_CLOSE_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_AUDIO_OPEN_EVT */ {BTA_AG_SCO_OPEN, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* API_AUDIO_CLOSE_EVT */ {BTA_AG_SCO_CLOSE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* API_RESULT_EVT */ {BTA_AG_RESULT, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* API_SETCODEC_EVT */ {BTA_AG_SETCODEC, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* RFC_DATA_EVT */ {BTA_AG_RFC_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* SCO_OPEN_EVT */
    {BTA_AG_SCO_CONN_OPEN, BTA_AG_POST_SCO_OPEN, BTA_AG_OPEN_ST},
    /* SCO_CLOSE_EVT */
    {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE, BTA_AG_OPEN_ST},
    /* DISC_ACP_RES_EVT */ {BTA_AG_DISC_ACP_RES, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* RING_TOUT_EVT */ {BTA_AG_SEND_RING, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
    /* SVC_TOUT_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* COLLISION_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST}};

/* state table for closing state */
const uint8_t bta_ag_st_closing[][BTA_AG_NUM_COLS] = {
    /* Event                    Action 1                Action 2 Next state */
    /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_DEREGISTER_EVT */
    {BTA_AG_START_DEREG, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* SCO_CLOSE_EVT */
    {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE, BTA_AG_CLOSING_ST},
    /* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* DISC_INT_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
    /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
    /* COLLISION_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST}};

constexpr size_t BTA_AG_NUM_EVENTS =
    BTA_AG_MAX_EVT - BTA_SYS_EVT_START(BTA_ID_AG);
static_assert(sizeof(bta_ag_st_init) / BTA_AG_NUM_COLS == BTA_AG_NUM_EVENTS,
              "bta_ag_st_init must handle all AG events");
static_assert(sizeof(bta_ag_st_opening) / BTA_AG_NUM_COLS == BTA_AG_NUM_EVENTS,
              "bta_ag_st_opening must handle all AG events");
static_assert(sizeof(bta_ag_st_open) / BTA_AG_NUM_COLS == BTA_AG_NUM_EVENTS,
              "bta_ag_st_open must handle all AG events");
static_assert(sizeof(bta_ag_st_closing) / BTA_AG_NUM_COLS == BTA_AG_NUM_EVENTS,
              "bta_ag_st_closing must handle all AG events");

/* type for state table */
typedef const uint8_t (*tBTA_AG_ST_TBL)[BTA_AG_NUM_COLS];

/* state table */
const tBTA_AG_ST_TBL bta_ag_st_tbl[] = {bta_ag_st_init, bta_ag_st_opening,
                                        bta_ag_st_open, bta_ag_st_closing};

/*****************************************************************************
 * Global data
 ****************************************************************************/
@@ -714,6 +525,163 @@ void bta_ag_api_result(uint16_t handle, tBTA_AG_RES result,
  }
}

static void bta_ag_better_state_machine(tBTA_AG_SCB* p_scb, uint16_t event,
                                        const tBTA_AG_DATA& data) {
  switch (p_scb->state) {
    case BTA_AG_INIT_ST:
      switch (event) {
        case BTA_AG_API_REGISTER_EVT:
          bta_ag_register(p_scb, data);
          break;
        case BTA_AG_API_DEREGISTER_EVT:
          bta_ag_deregister(p_scb, data);
          break;
        case BTA_AG_API_OPEN_EVT:
          p_scb->state = BTA_AG_OPENING_ST;
          bta_ag_start_open(p_scb, data);
          break;
        case BTA_AG_RFC_OPEN_EVT:
          p_scb->state = BTA_AG_OPEN_ST;
          bta_ag_rfc_acp_open(p_scb, data);
          bta_ag_sco_listen(p_scb, data);
          break;
        case BTA_AG_SCO_OPEN_EVT:
          bta_ag_sco_conn_open(p_scb, data);
          break;
        case BTA_AG_SCO_CLOSE_EVT:
          bta_ag_sco_conn_close(p_scb, data);
          break;
        case BTA_AG_DISC_ACP_RES_EVT:
          bta_ag_free_db(p_scb, data);
          break;
      }
      break;
    case BTA_AG_OPENING_ST:
      switch (event) {
        case BTA_AG_API_DEREGISTER_EVT:
          p_scb->state = BTA_AG_CLOSING_ST;
          bta_ag_rfc_do_close(p_scb, data);
          bta_ag_start_dereg(p_scb, data);
          break;
        case BTA_AG_API_OPEN_EVT:
          bta_ag_open_fail(p_scb, data);
          break;
        case BTA_AG_API_CLOSE_EVT:
          p_scb->state = BTA_AG_CLOSING_ST;
          bta_ag_rfc_do_close(p_scb, data);
          break;
        case BTA_AG_RFC_OPEN_EVT:
          p_scb->state = BTA_AG_OPEN_ST;
          bta_ag_rfc_open(p_scb, data);
          break;
        case BTA_AG_RFC_CLOSE_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_rfc_fail(p_scb, data);
          break;
        case BTA_AG_SCO_OPEN_EVT:
          bta_ag_sco_conn_open(p_scb, data);
          break;
        case BTA_AG_SCO_CLOSE_EVT:
          bta_ag_sco_conn_close(p_scb, data);
          break;
        case BTA_AG_DISC_INT_RES_EVT:
          bta_ag_disc_int_res(p_scb, data);
          break;
        case BTA_AG_DISC_OK_EVT:
          bta_ag_rfc_do_open(p_scb, data);
          break;
        case BTA_AG_DISC_FAIL_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_disc_fail(p_scb, data);
          break;
        case BTA_AG_COLLISION_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_handle_collision(p_scb, data);
          break;
      }
      break;
    case BTA_AG_OPEN_ST:
      switch (event) {
        case BTA_AG_API_DEREGISTER_EVT:
          p_scb->state = BTA_AG_CLOSING_ST;
          bta_ag_start_close(p_scb, data);
          bta_ag_start_dereg(p_scb, data);
          break;
        case BTA_AG_API_OPEN_EVT:
          bta_ag_open_fail(p_scb, data);
          break;
        case BTA_AG_API_CLOSE_EVT:
          p_scb->state = BTA_AG_CLOSING_ST;
          bta_ag_start_close(p_scb, data);
          break;
        case BTA_AG_API_AUDIO_OPEN_EVT:
          bta_ag_sco_open(p_scb, data);
          break;
        case BTA_AG_API_AUDIO_CLOSE_EVT:
          bta_ag_sco_close(p_scb, data);
          break;
        case BTA_AG_API_RESULT_EVT:
          bta_ag_result(p_scb, data);
          break;
        case BTA_AG_API_SETCODEC_EVT:
          bta_ag_setcodec(p_scb, data);
          break;
        case BTA_AG_RFC_CLOSE_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_rfc_close(p_scb, data);
          break;
        case BTA_AG_RFC_DATA_EVT:
          bta_ag_rfc_data(p_scb, data);
          break;
        case BTA_AG_SCO_OPEN_EVT:
          bta_ag_sco_conn_open(p_scb, data);
          break;
        case BTA_AG_SCO_CLOSE_EVT:
          bta_ag_sco_conn_close(p_scb, data);
          break;
        case BTA_AG_DISC_ACP_RES_EVT:
          bta_ag_disc_acp_res(p_scb, data);
          break;
        case BTA_AG_RING_TIMEOUT_EVT:
          bta_ag_send_ring(p_scb, data);
          break;
        case BTA_AG_SVC_TIMEOUT_EVT:
          p_scb->state = BTA_AG_CLOSING_ST;
          bta_ag_start_close(p_scb, data);
          break;
      }
      break;
    case BTA_AG_CLOSING_ST:
      switch (event) {
        case BTA_AG_API_DEREGISTER_EVT:
          bta_ag_start_dereg(p_scb, data);
          break;
        case BTA_AG_API_OPEN_EVT:
          bta_ag_open_fail(p_scb, data);
          break;
        case BTA_AG_RFC_CLOSE_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_rfc_close(p_scb, data);
          break;
        case BTA_AG_SCO_OPEN_EVT:
          bta_ag_sco_conn_open(p_scb, data);
          break;
        case BTA_AG_SCO_CLOSE_EVT:
          bta_ag_sco_conn_close(p_scb, data);
          bta_ag_post_sco_close(p_scb, data);
          break;
        case BTA_AG_DISC_ACP_RES_EVT:
          bta_ag_free_db(p_scb, data);
          break;
        case BTA_AG_DISC_INT_RES_EVT:
          p_scb->state = BTA_AG_INIT_ST;
          bta_ag_free_db(p_scb, data);
          break;
      }
      break;
  }
}

/*******************************************************************************
 *
 * Function         bta_ag_sm_execute
@@ -726,9 +694,6 @@ void bta_ag_api_result(uint16_t handle, tBTA_AG_RES result,
 ******************************************************************************/
void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
                       const tBTA_AG_DATA& data) {
  tBTA_AG_ST_TBL state_table;
  uint8_t action;
  int i;
  uint16_t previous_event = event;
  uint8_t previous_state = p_scb->state;

@@ -745,21 +710,8 @@ void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
    return;
  }

  /* look up the state table for the current state */
  state_table = bta_ag_st_tbl[p_scb->state];

  /* set next state */
  p_scb->state = state_table[event][BTA_AG_NEXT_STATE];
  bta_ag_better_state_machine(p_scb, event, data);

  /* execute action functions */
  for (i = 0; i < BTA_AG_ACTIONS; i++) {
    action = state_table[event][i];
    if (action != BTA_AG_IGNORE) {
      (*bta_ag_action[action])(p_scb, data);
    } else {
      break;
    }
  }
  if (p_scb->state != previous_state) {
    APPL_TRACE_EVENT(
        "%s: handle=0x%04x, bd_addr=%s, state_change[%s(0x%02x)]->[%s(0x%02x)],"
+1 −58
Original line number Diff line number Diff line
@@ -77,8 +77,6 @@

static void bta_av_offload_codec_builder(tBTA_AV_SCB* p_scb,
                                         tBT_A2DP_OFFLOAD* p_a2dp_offload);
static void bta_av_st_rc_timer(tBTA_AV_SCB* p_scb,
                               UNUSED_ATTR tBTA_AV_DATA* p_data);

/* state machine states */
enum {
@@ -104,60 +102,6 @@ const tBTA_AV_CO_FUNCTS bta_av_a2dp_cos = {bta_av_co_audio_init,
                                           bta_av_co_audio_update_mtu,
                                           bta_av_co_content_protect_is_active};

/* ssm action functions for audio stream */
const tBTA_AV_SACT bta_av_a2dp_action[] = {
    bta_av_do_disc_a2dp,    /* BTA_AV_DO_DISC  */
    bta_av_cleanup,         /* BTA_AV_CLEANUP */
    bta_av_free_sdb,        /* BTA_AV_FREE_SDB */
    bta_av_config_ind,      /* BTA_AV_CONFIG_IND */
    bta_av_disconnect_req,  /* BTA_AV_DISCONNECT_REQ */
    bta_av_security_req,    /* BTA_AV_SECURITY_REQ */
    bta_av_security_rsp,    /* BTA_AV_SECURITY_RSP */
    bta_av_setconfig_rsp,   /* BTA_AV_SETCONFIG_RSP */
    bta_av_st_rc_timer,     /* BTA_AV_ST_RC_TIMER */
    bta_av_str_opened,      /* BTA_AV_STR_OPENED */
    bta_av_security_ind,    /* BTA_AV_SECURITY_IND */
    bta_av_security_cfm,    /* BTA_AV_SECURITY_CFM */
    bta_av_do_close,        /* BTA_AV_DO_CLOSE */
    bta_av_connect_req,     /* BTA_AV_CONNECT_REQ */
    bta_av_sdp_failed,      /* BTA_AV_SDP_FAILED */
    bta_av_disc_results,    /* BTA_AV_DISC_RESULTS */
    bta_av_disc_res_as_acp, /* BTA_AV_DISC_RES_AS_ACP */
    bta_av_open_failed,     /* BTA_AV_OPEN_FAILED */
    bta_av_getcap_results,  /* BTA_AV_GETCAP_RESULTS */
    bta_av_setconfig_rej,   /* BTA_AV_SETCONFIG_REJ */
    bta_av_discover_req,    /* BTA_AV_DISCOVER_REQ */
    bta_av_conn_failed,     /* BTA_AV_CONN_FAILED */
    bta_av_do_start,        /* BTA_AV_DO_START */
    bta_av_str_stopped,     /* BTA_AV_STR_STOPPED */
    bta_av_reconfig,        /* BTA_AV_RECONFIG */
    bta_av_data_path,       /* BTA_AV_DATA_PATH */
    bta_av_start_ok,        /* BTA_AV_START_OK */
    bta_av_start_failed,    /* BTA_AV_START_FAILED */
    bta_av_str_closed,      /* BTA_AV_STR_CLOSED */
    bta_av_clr_cong,        /* BTA_AV_CLR_CONG */
    bta_av_suspend_cfm,     /* BTA_AV_SUSPEND_CFM */
    bta_av_rcfg_str_ok,     /* BTA_AV_RCFG_STR_OK */
    bta_av_rcfg_failed,     /* BTA_AV_RCFG_FAILED */
    bta_av_rcfg_connect,    /* BTA_AV_RCFG_CONNECT */
    bta_av_rcfg_discntd,    /* BTA_AV_RCFG_DISCNTD */
    bta_av_suspend_cont,    /* BTA_AV_SUSPEND_CONT */
    bta_av_rcfg_cfm,        /* BTA_AV_RCFG_CFM */
    bta_av_rcfg_open,       /* BTA_AV_RCFG_OPEN */
    bta_av_security_rej,    /* BTA_AV_SECURITY_REJ */
    bta_av_open_rc,         /* BTA_AV_OPEN_RC */
    bta_av_chk_2nd_start,   /* BTA_AV_CHK_2ND_START */
    bta_av_save_caps,       /* BTA_AV_SAVE_CAPS */
    bta_av_set_use_rc,      /* BTA_AV_SET_USE_RC */
    bta_av_cco_close,       /* BTA_AV_CCO_CLOSE */
    bta_av_switch_role,     /* BTA_AV_SWITCH_ROLE */
    bta_av_role_res,        /* BTA_AV_ROLE_RES */
    bta_av_delay_co,        /* BTA_AV_DELAY_CO */
    bta_av_open_at_inc,     /* BTA_AV_OPEN_AT_INC */
    bta_av_offload_req,     /* BTA_AV_OFFLOAD_REQ */
    bta_av_offload_rsp,     /* BTA_AV_OFFLOAD_RSP */
    NULL};

/* these tables translate AVDT events to SSM events */
static const uint16_t bta_av_stream_evt_ok[] = {
    BTA_AV_STR_DISC_OK_EVT,      /* AVDT_DISCOVER_CFM_EVT */
@@ -314,8 +258,7 @@ static void notify_start_failed(tBTA_AV_SCB* p_scb) {
 * Returns          void
 *
 ******************************************************************************/
static void bta_av_st_rc_timer(tBTA_AV_SCB* p_scb,
                               UNUSED_ATTR tBTA_AV_DATA* p_data) {
void bta_av_st_rc_timer(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
  APPL_TRACE_DEBUG("%s: rc_handle:%d, use_rc: %d", __func__, p_scb->rc_handle,
                   p_scb->use_rc);
  /* for outgoing RC connection as INT/CT */
+0 −3
Original line number Diff line number Diff line
@@ -150,7 +150,6 @@ const tBTA_AV_CFG bta_av_cfg = {
                                 for company id */
    bta_av_meta_caps_evt_ids, /* the the metadata Get Capabilities
                                 response for event id */
    NULL,                     /* the action function table for audio stream */
    BTA_AV_RC_CT_NAME,        /* Default AVRCP controller name */
    BTA_AV_RC_TG_NAME         /* Default AVRCP target name */
};
@@ -176,7 +175,6 @@ const tBTA_AV_CFG bta_avk_cfg = {
                                  for company id */
    bta_avk_meta_caps_evt_ids, /* the the metadata Get Capabilities
                                  response for event id */
    NULL,                      /* the action function table for audio stream */
    {0},                       /* Default AVRCP controller name */
    {0},                       /* Default AVRCP target name */
};
@@ -202,7 +200,6 @@ const tBTA_AV_CFG bta_av_cfg_compatibility = {
    bta_av_meta_caps_evt_ids_avrcp13, /* the the metadata Get Capabilities
                                         response for event id, compatible
                                         with AVRCP1.3 */
    NULL,              /* the action function table for audio stream */
    BTA_AV_RC_CT_NAME, /* Default AVRCP controller name */
    BTA_AV_RC_TG_NAME  /* Default AVRCP target name */
};
Loading