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

Commit 21c7378b authored by Zach Johnson's avatar Zach Johnson
Browse files

Encapsulate thread_evt_cb

Bug: 159815595
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: Ifcb79538d02f66bab11241b19ad4735f514b1dc4
parent 9de212dc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -213,5 +213,6 @@ void invoke_bond_state_changed_cb(bt_status_t status, RawAddress bd_addr,
                                  bt_bond_state_t state);
void invoke_acl_state_changed_cb(bt_status_t status, RawAddress bd_addr,
                                 bt_acl_state_t state);
void invoke_thread_evt_cb(bt_cb_thread_evt event);

#endif /* BTIF_COMMON_H */
+12 −0
Original line number Diff line number Diff line
@@ -722,3 +722,15 @@ void invoke_acl_state_changed_cb(bt_status_t status, RawAddress bd_addr,
          },
          status, bd_addr, state));
}

void invoke_thread_evt_cb(bt_cb_thread_evt event) {
  do_in_jni_thread(FROM_HERE, base::BindOnce(
                                  [](bt_cb_thread_evt event) {
                                    HAL_CBACK(bt_hal_cbacks, thread_evt_cb,
                                              event);
                                    if (event == DISASSOCIATE_JVM) {
                                      bt_hal_cbacks = NULL;
                                    }
                                  },
                                  event));
}
+2 −16
Original line number Diff line number Diff line
@@ -135,9 +135,6 @@ static uid_set_t* uid_set;
/*******************************************************************************
 *  Static functions
 ******************************************************************************/
static void btif_jni_associate();
static void btif_jni_disassociate();

/* sends message to btif task */
static void btif_sendmsg(void* p_msg);

@@ -323,7 +320,7 @@ bt_status_t btif_init_bluetooth() {
  LOG_INFO("%s entered", __func__);
  exit_manager = new base::AtExitManager();
  jni_thread.StartUp();
  jni_thread.DoInThread(FROM_HERE, base::Bind(btif_jni_associate));
  invoke_thread_evt_cb(ASSOCIATE_JVM);
  LOG_INFO("%s finished", __func__);
  return BT_STATUS_SUCCESS;
}
@@ -397,7 +394,7 @@ void btif_enable_bluetooth_evt() {
bt_status_t btif_cleanup_bluetooth() {
  LOG_INFO("%s entered", __func__);
  btif_dm_cleanup();
  jni_thread.DoInThread(FROM_HERE, base::BindOnce(btif_jni_disassociate));
  invoke_thread_evt_cb(DISASSOCIATE_JVM);
  btif_queue_release();
  jni_thread.ShutDown();
  delete exit_manager;
@@ -891,14 +888,3 @@ bt_status_t btif_disable_service(tBTA_SERVICE_ID service_id) {

  return BT_STATUS_SUCCESS;
}

static void btif_jni_associate() {
  BTIF_TRACE_DEBUG("%s Associating thread to JVM", __func__);
  HAL_CBACK(bt_hal_cbacks, thread_evt_cb, ASSOCIATE_JVM);
}

static void btif_jni_disassociate() {
  BTIF_TRACE_DEBUG("%s Disassociating thread from JVM", __func__);
  HAL_CBACK(bt_hal_cbacks, thread_evt_cb, DISASSOCIATE_JVM);
  bt_hal_cbacks = NULL;
}