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

Commit 7cab3e6f authored by Zach Johnson's avatar Zach Johnson
Browse files

Don't use event indirection for bta sys hw events

Bug: 159815595
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: I563dcd0c11483025df50e4afc73601e2f8a69400
parent d01a148d
Loading
Loading
Loading
Loading
+2 −13
Original line number Diff line number Diff line
@@ -271,12 +271,7 @@ void bta_dm_enable(tBTA_DM_SEC_CBACK* p_sec_cback) {
  /* notify BTA DM is now active */
  bta_dm_cb.is_bta_dm_active = true;

  /* send a message to BTA SYS */
  tBTA_SYS_HW_MSG* sys_enable_event =
      (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
  sys_enable_event->hdr.event = BTA_SYS_API_ENABLE_EVT;

  bta_sys_sendmsg(sys_enable_event);
  send_bta_sys_hw_event(BTA_SYS_API_ENABLE_EVT);

  btm_local_io_caps = btif_storage_get_local_io_caps();
}
@@ -2853,18 +2848,12 @@ static bool bta_dm_check_av(uint16_t event) {
 *
 ******************************************************************************/
static void bta_dm_disable_conn_down_timer_cback(UNUSED_ATTR void* data) {
  tBTA_SYS_HW_MSG* sys_enable_event =
      (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));

  /* disable the power managment module */
  bta_dm_disable_pm();

  /* register our callback to SYS HW manager */
  bta_sys_hw_register(bta_dm_sys_hw_cback);

  /* send a message to BTA SYS */
  sys_enable_event->hdr.event = BTA_SYS_API_DISABLE_EVT;
  bta_sys_sendmsg(sys_enable_event);
  send_bta_sys_hw_event(BTA_SYS_API_DISABLE_EVT);

  bta_dm_cb.disabling = false;
}
+1 −5
Original line number Diff line number Diff line
@@ -145,11 +145,6 @@ typedef struct {
  tBTA_SYS_DISABLE* disable;
} tBTA_SYS_REG;

/* data type to send events to BTA SYS HW manager */
typedef struct {
  BT_HDR hdr;
} tBTA_SYS_HW_MSG;

typedef void (*tBTA_SYS_REGISTER)(uint8_t id, const tBTA_SYS_REG* p_reg);

/*****************************************************************************
@@ -208,6 +203,7 @@ extern void bta_sys_set_trace_level(uint8_t level);
extern void bta_sys_register(uint8_t id, const tBTA_SYS_REG* p_reg);
extern void bta_sys_deregister(uint8_t id);
extern bool bta_sys_is_register(uint8_t id);
extern void send_bta_sys_hw_event(tBTA_SYS_HW_EVT event);
extern void bta_sys_sendmsg(void* p_msg);
extern void bta_sys_sendmsg_delayed(void* p_msg, const base::TimeDelta& delay);
extern void bta_sys_start_timer(alarm_t* alarm, uint64_t interval_ms,
+0 −2
Original line number Diff line number Diff line
@@ -94,6 +94,4 @@ void bta_sys_hw_evt_enabled();
void bta_sys_hw_evt_disabled();
void bta_sys_hw_evt_stack_enabled();

bool bta_sys_sm_execute(BT_HDR* p_msg);

#endif /* BTA_SYS_INT_H */
+13 −30
Original line number Diff line number Diff line
@@ -52,8 +52,6 @@ tBTA_SYS_CB bta_sys_cb;
uint8_t appl_trace_level = BT_TRACE_LEVEL_WARNING;  // APPL_INITIAL_TRACE_LEVEL;
uint8_t btif_trace_level = BT_TRACE_LEVEL_WARNING;

static const tBTA_SYS_REG bta_sys_hw_reg = {bta_sys_sm_execute, NULL};

/*******************************************************************************
 *
 * Function         bta_sys_init
@@ -69,9 +67,6 @@ void bta_sys_init(void) {

  appl_trace_level = APPL_INITIAL_TRACE_LEVEL;

  /* register BTA SYS message handler */
  bta_sys_register(BTA_ID_SYS, &bta_sys_hw_reg);

  /* register for BTM notifications */
  BTM_RegisterForDeviceStatusNotif(&bta_sys_hw_btm_cback);

@@ -95,13 +90,12 @@ void bta_sys_set_state(tBTA_SYS_HW_STATE value) { bta_sys_cb.state = value; }
 * Returns          void
 *
 ******************************************************************************/
bool bta_sys_sm_execute(BT_HDR* p_msg) {
  APPL_TRACE_EVENT("bta_sys_sm_execute state:%d, event:0x%x", bta_sys_cb.state,
                   p_msg->event);
static void bta_sys_sm_execute(tBTA_SYS_HW_EVT event) {
  APPL_TRACE_EVENT("bta_sys_sm_execute state:%d, event:0x%x", bta_sys_cb.state);

  switch (bta_sys_cb.state) {
    case BTA_SYS_HW_OFF:
      switch (p_msg->event) {
      switch (event) {
        case BTA_SYS_API_ENABLE_EVT:
          bta_sys_set_state(BTA_SYS_HW_STARTING);
          bta_sys_hw_api_enable();
@@ -117,7 +111,7 @@ bool bta_sys_sm_execute(BT_HDR* p_msg) {
      }
      break;
    case BTA_SYS_HW_STARTING:
      switch (p_msg->event) {
      switch (event) {
        case BTA_SYS_EVT_STACK_ENABLED_EVT:
          bta_sys_set_state(BTA_SYS_HW_ON);
          bta_sys_hw_evt_stack_enabled();
@@ -139,7 +133,7 @@ bool bta_sys_sm_execute(BT_HDR* p_msg) {
      }
      break;
    case BTA_SYS_HW_ON:
      switch (p_msg->event) {
      switch (event) {
        case BTA_SYS_API_ENABLE_EVT:
          bta_sys_hw_api_enable();
          break;
@@ -155,7 +149,7 @@ bool bta_sys_sm_execute(BT_HDR* p_msg) {
      }
      break;
    case BTA_SYS_HW_STOPPING:
      switch (p_msg->event) {
      switch (event) {
        case BTA_SYS_API_ENABLE_EVT:
          bta_sys_set_state(BTA_SYS_HW_STARTING);
          break;
@@ -177,7 +171,10 @@ bool bta_sys_sm_execute(BT_HDR* p_msg) {
    default:
      break;
  }
  return true;
}

void send_bta_sys_hw_event(tBTA_SYS_HW_EVT event) {
  do_in_main_thread(FROM_HERE, base::Bind(bta_sys_sm_execute, event));
}

void bta_sys_hw_register(tBTA_SYS_HW_CBACK* cback) {
@@ -198,22 +195,12 @@ void bta_sys_hw_unregister() { bta_sys_cb.sys_hw_cback = NULL; }
 *
 ******************************************************************************/
void bta_sys_hw_btm_cback(tBTM_DEV_STATUS status) {
  tBTA_SYS_HW_MSG* sys_event =
      (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));

  APPL_TRACE_DEBUG("%s was called with parameter: %i", __func__, status);

  /* send a message to BTA SYS */
  if (status == BTM_DEV_STATUS_UP) {
    sys_event->hdr.event = BTA_SYS_EVT_STACK_ENABLED_EVT;
    send_bta_sys_hw_event(BTA_SYS_EVT_STACK_ENABLED_EVT);
  } else if (status == BTM_DEV_STATUS_DOWN) {
    sys_event->hdr.event = BTA_SYS_ERROR_EVT;
  } else {
    /* BTM_DEV_STATUS_CMD_TOUT is ignored for now. */
    osi_free_and_reset((void**)&sys_event);
    send_bta_sys_hw_event(BTA_SYS_ERROR_EVT);
  }

  if (sys_event) bta_sys_sendmsg(sys_event);
}

/*******************************************************************************
@@ -282,11 +269,7 @@ void bta_sys_hw_api_disable() {
  /* manually update the state of our system */
  bta_sys_cb.state = BTA_SYS_HW_STOPPING;

  tBTA_SYS_HW_MSG* p_msg =
      (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
  p_msg->hdr.event = BTA_SYS_EVT_DISABLED_EVT;

  bta_sys_sendmsg(p_msg);
  send_bta_sys_hw_event(BTA_SYS_EVT_DISABLED_EVT);
}

/*******************************************************************************