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

Commit bba6d9b4 authored by Chris Manton's avatar Chris Manton
Browse files

Collapse cancel discovery into existing state machine

Very similar to revert aosp/2474416

Bug: 272117936
Tag: #refactor
Test: Manual test

Change-Id: I68fc09d6f74db389dab7fe377c443ddb8a6cea6d
parent 4546d4a6
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -95,24 +95,12 @@ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) {
 *
 ******************************************************************************/
void BTA_DmSearchCancel(void) {
  bta_dm_search_clear_queue();
  tBTA_DM_API_DISCOVERY_CANCEL* p_msg =
      (tBTA_DM_API_DISCOVERY_CANCEL*)osi_calloc(
          sizeof(tBTA_DM_API_DISCOVERY_CANCEL));

  switch (bta_dm_search_get_state()) {
    case BTA_DM_SEARCH_IDLE:
      bta_dm_search_cancel_notify();
      break;
    case BTA_DM_SEARCH_ACTIVE:
      bta_dm_search_set_state(BTA_DM_SEARCH_CANCELLING);
      bta_dm_search_cancel();
      break;
    case BTA_DM_SEARCH_CANCELLING:
      bta_dm_search_cancel_notify();
      break;
    case BTA_DM_DISCOVER_ACTIVE:
      bta_dm_search_set_state(BTA_DM_SEARCH_CANCELLING);
      bta_dm_search_cancel_notify();
      break;
  }
  p_msg->hdr.event = BTA_DM_API_SEARCH_CANCEL_EVT;
  bta_sys_sendmsg(p_msg);
}

/*******************************************************************************
+6 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
typedef enum : uint16_t {
  /* DM search API events */
  BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
  BTA_DM_API_SEARCH_CANCEL_EVT,
  BTA_DM_API_DISCOVER_EVT,
  BTA_DM_INQUIRY_CMPL_EVT,
  BTA_DM_REMT_NAME_EVT,
@@ -76,6 +77,7 @@ typedef enum : uint16_t {
inline std::string bta_dm_event_text(const tBTA_DM_EVT& event) {
  switch (event) {
    CASE_RETURN_TEXT(BTA_DM_API_SEARCH_EVT);
    CASE_RETURN_TEXT(BTA_DM_API_SEARCH_CANCEL_EVT);
    CASE_RETURN_TEXT(BTA_DM_API_DISCOVER_EVT);
    CASE_RETURN_TEXT(BTA_DM_INQUIRY_CMPL_EVT);
    CASE_RETURN_TEXT(BTA_DM_REMT_NAME_EVT);
@@ -103,6 +105,10 @@ typedef struct {
  tBT_TRANSPORT transport;
} tBTA_DM_API_DISCOVER;

typedef struct {
  BT_HDR_RIGID hdr;
} tBTA_DM_API_DISCOVERY_CANCEL;

typedef struct {
  RawAddress bd_addr;
  bool accept;
+18 −0
Original line number Diff line number Diff line
@@ -73,6 +73,10 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) {
          bta_dm_search_set_state(BTA_DM_DISCOVER_ACTIVE);
          bta_dm_discover(message);
          break;
        case BTA_DM_API_SEARCH_CANCEL_EVT:
          bta_dm_search_clear_queue();
          bta_dm_search_cancel_notify();
          break;
        case BTA_DM_SDP_RESULT_EVT:
          bta_dm_free_sdp_db();
          break;
@@ -101,6 +105,11 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) {
        case BTA_DM_API_DISCOVER_EVT:
          bta_dm_queue_disc(message);
          break;
        case BTA_DM_API_SEARCH_CANCEL_EVT:
          bta_dm_search_clear_queue();
          bta_dm_search_set_state(BTA_DM_SEARCH_CANCELLING);
          bta_dm_search_cancel();
          break;
        default:
          LOG_INFO("Received unexpected event 0x%x in state %d", p_msg->event,
                   bta_dm_search_cb.state);
@@ -114,6 +123,10 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) {
        case BTA_DM_API_DISCOVER_EVT:
          bta_dm_queue_disc(message);
          break;
        case BTA_DM_API_SEARCH_CANCEL_EVT:
          bta_dm_search_clear_queue();
          bta_dm_search_cancel_notify();
          break;
        case BTA_DM_SDP_RESULT_EVT:
        case BTA_DM_REMT_NAME_EVT:
        case BTA_DM_SEARCH_CMPL_EVT:
@@ -155,6 +168,11 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) {
        case BTA_DM_API_DISCOVER_EVT:
          bta_dm_queue_disc(message);
          break;
        case BTA_DM_API_SEARCH_CANCEL_EVT:
          bta_dm_search_clear_queue();
          bta_dm_search_set_state(BTA_DM_SEARCH_CANCELLING);
          bta_dm_search_cancel_notify();
          break;
        case BTA_DM_DISC_CLOSE_TOUT_EVT:
          if (bluetooth::common::init_flags::
                  bta_dm_clear_conn_id_on_client_close_is_enabled()) {