Burninate SDP "state machine"

yeah it's not a real state machine

first step to cleaning up the object passing

Bug: 159815595
Tag: #refactor
Test: compile & verify basic functions working
Change-Id: I78985e8284cd02ce538954c58c8d51945885c23d
diff --git a/system/bta/sdp/bta_sdp.cc b/system/bta/sdp/bta_sdp.cc
index 1729db8..9893c09 100644
--- a/system/bta/sdp/bta_sdp.cc
+++ b/system/bta/sdp/bta_sdp.cc
@@ -34,39 +34,3 @@
  ****************************************************************************/
 
 tBTA_SDP_CB bta_sdp_cb;
-
-/* state machine action enumeration list */
-#define BTA_SDP_NUM_ACTIONS (BTA_SDP_MAX_INT_EVT & 0x00ff)
-
-/* type for action functions */
-typedef void (*tBTA_SDP_ACTION)(tBTA_SDP_MSG* p_data);
-
-/* action function list */
-const tBTA_SDP_ACTION bta_sdp_action[] = {
-    bta_sdp_enable,        /* BTA_SDP_API_ENABLE_EVT */
-    bta_sdp_search,        /* BTA_SDP_API_SEARCH_EVT */
-    bta_sdp_create_record, /* BTA_SDP_API_CREATE_RECORD_USER_EVT */
-    bta_sdp_remove_record, /* BTA_SDP_API_REMOVE_RECORD_USER_EVT */
-};
-
-/*******************************************************************************
- * Function         bta_sdp_sm_execute
- *
- * Description      State machine event handling function for SDP search
- *
- * Returns          void
- ******************************************************************************/
-bool bta_sdp_sm_execute(BT_HDR* p_msg) {
-  if (p_msg == NULL) return false;
-
-  bool ret = false;
-  uint16_t action = (p_msg->event & 0x00ff);
-
-  /* execute action functions */
-  if (action < BTA_SDP_NUM_ACTIONS) {
-    (*bta_sdp_action[action])((tBTA_SDP_MSG*)p_msg);
-    ret = true;
-  }
-
-  return (ret);
-}
diff --git a/system/bta/sdp/bta_sdp_act.cc b/system/bta/sdp/bta_sdp_act.cc
index e0311d8..aa23bcb 100644
--- a/system/bta/sdp/bta_sdp_act.cc
+++ b/system/bta/sdp/bta_sdp_act.cc
@@ -400,13 +400,14 @@
  * Returns      void
  *
  ******************************************************************************/
-void bta_sdp_enable(tBTA_SDP_MSG* p_data) {
+void bta_sdp_enable(tBTA_SDP_API_ENABLE* p_data) {
   APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
   tBTA_SDP_STATUS status = BTA_SDP_SUCCESS;
-  bta_sdp_cb.p_dm_cback = p_data->enable.p_cback;
+  bta_sdp_cb.p_dm_cback = p_data->p_cback;
   tBTA_SDP bta_sdp;
   bta_sdp.status = status;
   bta_sdp_cb.p_dm_cback(BTA_SDP_ENABLE_EVT, &bta_sdp, NULL);
+  osi_free(p_data);
 }
 
 /*******************************************************************************
@@ -418,7 +419,7 @@
  * Returns      void
  *
  ******************************************************************************/
-void bta_sdp_search(tBTA_SDP_MSG* p_data) {
+void bta_sdp_search(tBTA_SDP_API_SEARCH* p_data) {
   if (p_data == NULL) {
     APPL_TRACE_DEBUG("SDP control block handle is null");
     return;
@@ -427,7 +428,7 @@
 
   APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
 
-  const Uuid& uuid = p_data->get_search.uuid;
+  const Uuid& uuid = p_data->uuid;
   if (bta_sdp_cb.sdp_active != BTA_SDP_ACTIVE_NONE) {
     /* SDP is still in progress */
     status = BTA_SDP_BUSY;
@@ -435,17 +436,18 @@
       tBTA_SDP_SEARCH_COMP result;
       memset(&result, 0, sizeof(result));
       result.uuid = uuid;
-      result.remote_addr = p_data->get_search.bd_addr;
+      result.remote_addr = p_data->bd_addr;
       result.status = status;
       tBTA_SDP bta_sdp;
       bta_sdp.sdp_search_comp = result;
       bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, &bta_sdp, NULL);
     }
+    osi_free(p_data);
     return;
   }
 
   bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_YES;
-  bta_sdp_cb.remote_addr = p_data->get_search.bd_addr;
+  bta_sdp_cb.remote_addr = p_data->bd_addr;
 
   /* initialize the search for the uuid */
   APPL_TRACE_DEBUG("%s init discovery with UUID: %s", __func__,
@@ -456,8 +458,8 @@
   Uuid* bta_sdp_search_uuid = (Uuid*)osi_malloc(sizeof(Uuid));
   *bta_sdp_search_uuid = uuid;
   if (!SDP_ServiceSearchAttributeRequest2(
-          p_data->get_search.bd_addr, p_bta_sdp_cfg->p_sdp_db,
-          bta_sdp_search_cback, (void*)bta_sdp_search_uuid)) {
+          p_data->bd_addr, p_bta_sdp_cfg->p_sdp_db, bta_sdp_search_cback,
+          (void*)bta_sdp_search_uuid)) {
     bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE;
 
     /* failed to start SDP. report the failure right away */
@@ -465,7 +467,7 @@
       tBTA_SDP_SEARCH_COMP result;
       memset(&result, 0, sizeof(result));
       result.uuid = uuid;
-      result.remote_addr = p_data->get_search.bd_addr;
+      result.remote_addr = p_data->bd_addr;
       result.status = status;
       tBTA_SDP bta_sdp;
       bta_sdp.sdp_search_comp = result;
@@ -475,6 +477,7 @@
   /*
   else report the result when the cback is called
   */
+  osi_free(p_data);
 }
 
 /*******************************************************************************
@@ -486,11 +489,11 @@
  * Returns      void
  *
  ******************************************************************************/
-void bta_sdp_create_record(tBTA_SDP_MSG* p_data) {
-  APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
+void bta_sdp_create_record(tBTA_SDP_API_RECORD_USER* p_data) {
   if (bta_sdp_cb.p_dm_cback)
     bta_sdp_cb.p_dm_cback(BTA_SDP_CREATE_RECORD_USER_EVT, NULL,
-                          p_data->record.user_data);
+                          p_data->user_data);
+  osi_free(p_data);
 }
 
 /*******************************************************************************
@@ -502,9 +505,9 @@
  * Returns      void
  *
  ******************************************************************************/
-void bta_sdp_remove_record(tBTA_SDP_MSG* p_data) {
-  APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
+void bta_sdp_remove_record(tBTA_SDP_API_RECORD_USER* p_data) {
   if (bta_sdp_cb.p_dm_cback)
     bta_sdp_cb.p_dm_cback(BTA_SDP_REMOVE_RECORD_USER_EVT, NULL,
-                          p_data->record.user_data);
+                          p_data->user_data);
+  osi_free(p_data);
 }
diff --git a/system/bta/sdp/bta_sdp_api.cc b/system/bta/sdp/bta_sdp_api.cc
index 17e449c..4fa9bc1 100644
--- a/system/bta/sdp/bta_sdp_api.cc
+++ b/system/bta/sdp/bta_sdp_api.cc
@@ -31,13 +31,12 @@
 #include "bta_sys.h"
 #include "port_api.h"
 #include "sdp_api.h"
+#include "stack/include/btu.h"
 
 /*****************************************************************************
  *  Constants
  ****************************************************************************/
 
-static const tBTA_SYS_REG bta_sdp_reg = {bta_sdp_sm_execute, NULL};
-
 /*******************************************************************************
  *
  * Function         BTA_SdpEnable
@@ -56,18 +55,15 @@
   tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
 
   APPL_TRACE_API(__func__);
-  if (p_cback && !bta_sys_is_register(BTA_ID_SDP)) {
+  if (p_cback) {
     memset(&bta_sdp_cb, 0, sizeof(tBTA_SDP_CB));
 
-    /* register with BTA system manager */
-    bta_sys_register(BTA_ID_SDP, &bta_sdp_reg);
-
     if (p_cback) {
       tBTA_SDP_API_ENABLE* p_buf =
           (tBTA_SDP_API_ENABLE*)osi_malloc(sizeof(tBTA_SDP_API_ENABLE));
       p_buf->hdr.event = BTA_SDP_API_ENABLE_EVT;
       p_buf->p_cback = p_cback;
-      bta_sys_sendmsg(p_buf);
+      do_in_main_thread(FROM_HERE, base::Bind(bta_sdp_enable, p_buf));
       status = BTA_SDP_SUCCESS;
     }
   }
@@ -98,7 +94,7 @@
   p_msg->bd_addr = bd_addr;
   p_msg->uuid = uuid;
 
-  bta_sys_sendmsg(p_msg);
+  do_in_main_thread(FROM_HERE, base::Bind(bta_sdp_search, p_msg));
 
   return BTA_SDP_SUCCESS;
 }
@@ -124,7 +120,7 @@
   p_msg->hdr.event = BTA_SDP_API_CREATE_RECORD_USER_EVT;
   p_msg->user_data = user_data;
 
-  bta_sys_sendmsg(p_msg);
+  do_in_main_thread(FROM_HERE, base::Bind(bta_sdp_create_record, p_msg));
 
   return BTA_SDP_SUCCESS;
 }
@@ -150,7 +146,7 @@
   p_msg->hdr.event = BTA_SDP_API_REMOVE_RECORD_USER_EVT;
   p_msg->user_data = user_data;
 
-  bta_sys_sendmsg(p_msg);
+  do_in_main_thread(FROM_HERE, base::Bind(bta_sdp_remove_record, p_msg));
 
   return BTA_SDP_SUCCESS;
 }
diff --git a/system/bta/sdp/bta_sdp_int.h b/system/bta/sdp/bta_sdp_int.h
index b6b68fa..bf0fbb0 100644
--- a/system/bta/sdp/bta_sdp_int.h
+++ b/system/bta/sdp/bta_sdp_int.h
@@ -92,9 +92,9 @@
 
 extern bool bta_sdp_sm_execute(BT_HDR* p_msg);
 
-extern void bta_sdp_enable(tBTA_SDP_MSG* p_data);
-extern void bta_sdp_search(tBTA_SDP_MSG* p_data);
-extern void bta_sdp_create_record(tBTA_SDP_MSG* p_data);
-extern void bta_sdp_remove_record(tBTA_SDP_MSG* p_data);
+extern void bta_sdp_enable(tBTA_SDP_API_ENABLE* p_data);
+extern void bta_sdp_search(tBTA_SDP_API_SEARCH* p_data);
+extern void bta_sdp_create_record(tBTA_SDP_API_RECORD_USER* p_data);
+extern void bta_sdp_remove_record(tBTA_SDP_API_RECORD_USER* p_data);
 
 #endif /* BTA_SDP_INT_H */