OSDN Git Service

Remove additional usages of UINT_TO_PTR
authorAjay Panicker <apanicke@google.com>
Wed, 23 Nov 2016 04:28:21 +0000 (20:28 -0800)
committerAjay Panicker <apanicke@google.com>
Thu, 8 Dec 2016 20:39:49 +0000 (20:39 +0000)
Bug: 32995283
Test: TestTracker/69659
Change-Id: If37b8bcf30f098f6fc2c4dff82118a9f47a125a3

bta/include/bta_jv_api.h
bta/include/bta_jv_co.h
bta/jv/bta_jv_act.cc
bta/jv/bta_jv_api.cc
bta/jv/bta_jv_int.h
btif/src/btif_sock_rfc.cc

index 8d06297..aee0108 100644 (file)
@@ -375,8 +375,8 @@ typedef union {
 typedef void(tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id);
 
 /* JAVA RFCOMM interface callback */
-typedef void*(tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
-                                    void* user_data);
+typedef uint32_t(tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
+                                       uint32_t rfcomm_slot_id);
 
 /* JAVA L2CAP interface callback */
 typedef void(tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
@@ -493,7 +493,7 @@ tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, uint16_t num_uuid,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvCreateRecordByUser(void* user_data);
+tBTA_JV_STATUS BTA_JvCreateRecordByUser(uint32_t rfcomm_slot_id);
 
 /*******************************************************************************
  *
@@ -733,7 +733,7 @@ tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR* addr,
 tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
                                    uint8_t remote_scn, BD_ADDR peer_bd_addr,
                                    tBTA_JV_RFCOMM_CBACK* p_cback,
-                                   void* user_data);
+                                   uint32_t rfcomm_slot_id);
 
 /*******************************************************************************
  *
@@ -745,7 +745,7 @@ tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data);
+tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, uint32_t rfcomm_slot_id);
 
 /*******************************************************************************
  *
@@ -765,7 +765,7 @@ tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data);
 tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
                                        uint8_t local_scn, uint8_t max_session,
                                        tBTA_JV_RFCOMM_CBACK* p_cback,
-                                       void* user_data);
+                                       uint32_t rfcomm_slot_id);
 
 /*******************************************************************************
  *
@@ -778,7 +778,7 @@ tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, void* user_data);
+tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, uint32_t rfcomm_slot_id);
 
 /*******************************************************************************
  *
index ce9ab1c..f1f57c7 100644 (file)
@@ -45,9 +45,9 @@ extern "C" {
  *
  ******************************************************************************/
 
-extern int bta_co_rfc_data_incoming(void* user_data, BT_HDR* p_buf);
-extern int bta_co_rfc_data_outgoing_size(void* user_data, int* size);
-extern int bta_co_rfc_data_outgoing(void* user_data, uint8_t* buf,
+extern int bta_co_rfc_data_incoming(uint32_t rfcomm_slot_id, BT_HDR* p_buf);
+extern int bta_co_rfc_data_outgoing_size(uint32_t rfcomm_slot_id, int* size);
+extern int bta_co_rfc_data_outgoing(uint32_t rfcomm_slot_id, uint8_t* buf,
                                     uint16_t size);
 
 extern int bta_co_l2cap_data_incoming(void* user_data, BT_HDR* p_buf);
index 541a31b..dccb37a 100644 (file)
@@ -265,8 +265,8 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
   APPL_TRACE_DEBUG(
       "bta_jv_free_sr_rfc_cb: max_sess:%d, curr_sess:%d, p_pcb:%p, user:"
       "%p, state:%d, jv handle: 0x%x",
-      p_cb->max_sess, p_cb->curr_sess, p_pcb, p_pcb->user_data, p_pcb->state,
-      p_pcb->handle);
+      p_cb->max_sess, p_cb->curr_sess, p_pcb, p_pcb->rfcomm_slot_id,
+      p_pcb->state, p_pcb->handle);
 
   if (p_cb->curr_sess <= 0) return BTA_JV_SUCCESS;
 
@@ -276,7 +276,7 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
       APPL_TRACE_WARNING(
           "bta_jv_free_sr_rfc_cb: return on closing, port state:%d, "
           "scn:%d, p_pcb:%p, user_data:%p",
-          p_pcb->state, p_cb->scn, p_pcb, p_pcb->user_data);
+          p_pcb->state, p_cb->scn, p_pcb, p_pcb->rfcomm_slot_id);
       status = BTA_JV_FAILURE;
       return status;
     case BTA_JV_ST_CL_OPEN:
@@ -284,7 +284,7 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
       APPL_TRACE_DEBUG(
           "bta_jv_free_sr_rfc_cb: state: %d, scn:%d,"
           " user_data:%p",
-          p_pcb->state, p_cb->scn, p_pcb->user_data);
+          p_pcb->state, p_cb->scn, p_pcb->rfcomm_slot_id);
       p_pcb->state = BTA_JV_ST_CL_CLOSING;
       break;
     case BTA_JV_ST_SR_LISTEN:
@@ -293,21 +293,21 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
       APPL_TRACE_DEBUG(
           "bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_LISTEN, scn:%d,"
           " user_data:%p",
-          p_cb->scn, p_pcb->user_data);
+          p_cb->scn, p_pcb->rfcomm_slot_id);
       break;
     case BTA_JV_ST_SR_OPEN:
       p_pcb->state = BTA_JV_ST_SR_CLOSING;
       APPL_TRACE_DEBUG(
           "bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_OPEN, scn:%d,"
           " user_data:%p",
-          p_cb->scn, p_pcb->user_data);
+          p_cb->scn, p_pcb->rfcomm_slot_id);
       break;
     default:
       APPL_TRACE_WARNING(
           "bta_jv_free_sr_rfc_cb():failed, ignore port state:%d, scn:"
           "%d, p_pcb:%p, jv handle: 0x%x, port_handle: %d, user_data:%p",
           p_pcb->state, p_cb->scn, p_pcb, p_pcb->handle, p_pcb->port_handle,
-          p_pcb->user_data);
+          p_pcb->rfcomm_slot_id);
       status = BTA_JV_FAILURE;
       break;
   }
@@ -334,7 +334,7 @@ static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
 
     // Initialize congestion flags
     p_pcb->cong = false;
-    p_pcb->user_data = 0;
+    p_pcb->rfcomm_slot_id = 0;
     int si = BTA_JV_RFC_HDL_TO_SIDX(p_pcb->handle);
     if (0 <= si && si < BTA_JV_MAX_RFC_SR_SESSION) p_cb->rfc_hdl[si] = 0;
     p_pcb->handle = 0;
@@ -810,9 +810,9 @@ static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u) {
  * Returns      void
  *
  ******************************************************************************/
-static void bta_jv_start_discovery_cback(uint16_t result,
-                                         void* rfcomm_slot_id) {
+static void bta_jv_start_discovery_cback(uint16_t result, void* user_data) {
   tBTA_JV_STATUS status;
+  uint32_t* p_rfcomm_slot_id = static_cast<uint32_t*>(user_data);
 
   APPL_TRACE_DEBUG("bta_jv_start_discovery_cback res: 0x%x", result);
 
@@ -839,7 +839,8 @@ static void bta_jv_start_discovery_cback(uint16_t result,
 
     dcomp.status = status;
     bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV*)&dcomp,
-                         PTR_TO_UINT(rfcomm_slot_id));
+                         *p_rfcomm_slot_id);
+    osi_free(p_rfcomm_slot_id);
   }
 }
 
@@ -881,10 +882,13 @@ void bta_jv_start_discovery(tBTA_JV_MSG* p_data) {
   bta_jv_cb.uuid = p_data->start_discovery.uuid_list[0];
 
   bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_YES;
+
+  uint32_t* rfcomm_slot_id = (uint32_t*)osi_malloc(sizeof(uint32_t));
+  *rfcomm_slot_id = p_data->start_discovery.rfcomm_slot_id;
+
   if (!SDP_ServiceSearchAttributeRequest2(
           p_data->start_discovery.bd_addr, p_bta_jv_cfg->p_sdp_db,
-          bta_jv_start_discovery_cback,
-          UINT_TO_PTR(p_data->start_discovery.rfcomm_slot_id))) {
+          bta_jv_start_discovery_cback, (void*)rfcomm_slot_id)) {
     bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_NONE;
     /* failed to start SDP. report the failure right away */
     if (bta_jv_cb.p_dm_cback)
@@ -913,7 +917,7 @@ void bta_jv_create_record(tBTA_JV_MSG* p_data) {
     // callback user immediately to create his own sdp record in stack thread
     // context
     bta_jv_cb.p_dm_cback(BTA_JV_CREATE_RECORD_EVT, (tBTA_JV*)&evt_data,
-                         PTR_TO_UINT(cr->user_data));
+                         cr->rfcomm_slot_id);
 }
 
 /*******************************************************************************
@@ -1395,11 +1399,11 @@ static int bta_jv_port_data_co_cback(uint16_t port_handle, uint8_t* buf,
   if (p_pcb != NULL) {
     switch (type) {
       case DATA_CO_CALLBACK_TYPE_INCOMING:
-        return bta_co_rfc_data_incoming(p_pcb->user_data, (BT_HDR*)buf);
+        return bta_co_rfc_data_incoming(p_pcb->rfcomm_slot_id, (BT_HDR*)buf);
       case DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE:
-        return bta_co_rfc_data_outgoing_size(p_pcb->user_data, (int*)buf);
+        return bta_co_rfc_data_outgoing_size(p_pcb->rfcomm_slot_id, (int*)buf);
       case DATA_CO_CALLBACK_TYPE_OUTGOING:
-        return bta_co_rfc_data_outgoing(p_pcb->user_data, buf, len);
+        return bta_co_rfc_data_outgoing(p_pcb->rfcomm_slot_id, buf, len);
       default:
         APPL_TRACE_ERROR("unknown callout type:%d", type);
         break;
@@ -1440,7 +1444,7 @@ static void bta_jv_port_mgmt_cl_cback(uint32_t code, uint16_t port_handle) {
     evt_data.rfc_open.status = BTA_JV_SUCCESS;
     bdcpy(evt_data.rfc_open.rem_bda, rem_bda);
     p_pcb->state = BTA_JV_ST_CL_OPEN;
-    p_cb->p_cback(BTA_JV_RFCOMM_OPEN_EVT, &evt_data, p_pcb->user_data);
+    p_cb->p_cback(BTA_JV_RFCOMM_OPEN_EVT, &evt_data, p_pcb->rfcomm_slot_id);
   } else {
     evt_data.rfc_close.handle = p_cb->handle;
     evt_data.rfc_close.status = BTA_JV_FAILURE;
@@ -1452,7 +1456,7 @@ static void bta_jv_port_mgmt_cl_cback(uint32_t code, uint16_t port_handle) {
     // p_pcb->state = BTA_JV_ST_NONE;
     // p_pcb->cong = false;
     p_cback = p_cb->p_cback;
-    p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, p_pcb->user_data);
+    p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, p_pcb->rfcomm_slot_id);
     // bta_jv_free_rfc_cb(p_cb, p_pcb);
   }
 }
@@ -1479,7 +1483,7 @@ static void bta_jv_port_event_cl_cback(uint32_t code, uint16_t port_handle) {
       port_handle, p_cb->handle);
   if (code & PORT_EV_RXCHAR) {
     evt_data.data_ind.handle = p_cb->handle;
-    p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, p_pcb->user_data);
+    p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, p_pcb->rfcomm_slot_id);
   }
 
   if (code & PORT_EV_FC) {
@@ -1487,7 +1491,7 @@ static void bta_jv_port_event_cl_cback(uint32_t code, uint16_t port_handle) {
     evt_data.rfc_cong.cong = p_pcb->cong;
     evt_data.rfc_cong.handle = p_cb->handle;
     evt_data.rfc_cong.status = BTA_JV_SUCCESS;
-    p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, p_pcb->user_data);
+    p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, p_pcb->rfcomm_slot_id);
   }
 
   if (code & PORT_EV_TXEMPTY) {
@@ -1545,7 +1549,7 @@ void bta_jv_rfcomm_connect(tBTA_JV_MSG* p_data) {
       p_cb->sec_id = sec_id;
       p_cb->scn = 0;
       p_pcb->state = BTA_JV_ST_CL_OPENING;
-      p_pcb->user_data = cc->user_data;
+      p_pcb->rfcomm_slot_id = cc->rfcomm_slot_id;
       evt_data.use_co = true;
 
       PORT_SetEventCallback(handle, bta_jv_port_event_cl_cback);
@@ -1564,14 +1568,15 @@ void bta_jv_rfcomm_connect(tBTA_JV_MSG* p_data) {
       APPL_TRACE_ERROR("run out of rfc control block");
     }
   }
-  cc->p_cback(BTA_JV_RFCOMM_CL_INIT_EVT, (tBTA_JV*)&evt_data, cc->user_data);
+  cc->p_cback(BTA_JV_RFCOMM_CL_INIT_EVT, (tBTA_JV*)&evt_data,
+              cc->rfcomm_slot_id);
   if (evt_data.status == BTA_JV_FAILURE) {
     if (sec_id) bta_jv_free_sec_id(&sec_id);
     if (handle) RFCOMM_RemoveConnection(handle);
   }
 }
 
-static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB** cb,
+static int find_rfc_pcb(uint32_t rfcomm_slot_id, tBTA_JV_RFC_CB** cb,
                         tBTA_JV_PCB** pcb) {
   *cb = NULL;
   *pcb = NULL;
@@ -1579,7 +1584,7 @@ static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB** cb,
   for (i = 0; i < MAX_RFC_PORTS; i++) {
     uint32_t rfc_handle = bta_jv_cb.port_cb[i].handle & BTA_JV_RFC_HDL_MASK;
     rfc_handle &= ~BTA_JV_RFCOMM_MASK;
-    if (rfc_handle && bta_jv_cb.port_cb[i].user_data == user_data) {
+    if (rfc_handle && bta_jv_cb.port_cb[i].rfcomm_slot_id == rfcomm_slot_id) {
       *pcb = &bta_jv_cb.port_cb[i];
       *cb = &bta_jv_cb.rfc_cb[rfc_handle - 1];
       APPL_TRACE_DEBUG(
@@ -1590,7 +1595,7 @@ static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB** cb,
     }
   }
   APPL_TRACE_DEBUG("find_rfc_pcb: cannot find rfc_cb from user data: %u",
-                   PTR_TO_UINT(user_data));
+                   rfcomm_slot_id);
   return 0;
 }
 
@@ -1613,8 +1618,7 @@ void bta_jv_rfcomm_close(tBTA_JV_MSG* p_data) {
     return;
   }
 
-  void* user_data = cc->user_data;
-  if (!find_rfc_pcb(user_data, &p_cb, &p_pcb)) return;
+  if (!find_rfc_pcb(cc->rfcomm_slot_id, &p_cb, &p_pcb)) return;
   bta_jv_free_rfc_cb(p_cb, p_pcb);
   APPL_TRACE_DEBUG("bta_jv_rfcomm_close: sec id in use:%d, rfc_cb in use:%d",
                    get_sec_id_used(), get_rfc_cb_used());
@@ -1643,11 +1647,11 @@ static void bta_jv_port_mgmt_sr_cback(uint32_t code, uint16_t port_handle) {
                      p_cb, p_cb ? p_cb->p_cback : NULL);
     return;
   }
-  void* user_data = p_pcb->user_data;
+  uint32_t rfcomm_slot_id = p_pcb->rfcomm_slot_id;
   APPL_TRACE_DEBUG(
       "bta_jv_port_mgmt_sr_cback code=%d port_handle:0x%x handle:0x%x, "
       "p_pcb:%p, user:%d",
-      code, port_handle, p_cb->handle, p_pcb, p_pcb->user_data);
+      code, port_handle, p_cb->handle, p_pcb, p_pcb->rfcomm_slot_id);
 
   PORT_CheckConnection(port_handle, rem_bda, &lcid);
   int failed = true;
@@ -1658,8 +1662,8 @@ static void bta_jv_port_mgmt_sr_cback(uint32_t code, uint16_t port_handle) {
     tBTA_JV_PCB* p_pcb_new_listen = bta_jv_add_rfc_port(p_cb, p_pcb);
     if (p_pcb_new_listen) {
       evt_data.rfc_srv_open.new_listen_handle = p_pcb_new_listen->handle;
-      p_pcb_new_listen->user_data =
-          p_cb->p_cback(BTA_JV_RFCOMM_SRV_OPEN_EVT, &evt_data, user_data);
+      p_pcb_new_listen->rfcomm_slot_id =
+          p_cb->p_cback(BTA_JV_RFCOMM_SRV_OPEN_EVT, &evt_data, rfcomm_slot_id);
       APPL_TRACE_DEBUG("PORT_SUCCESS: curr_sess:%d, max_sess:%d",
                        p_cb->curr_sess, p_cb->max_sess);
       failed = false;
@@ -1682,7 +1686,7 @@ static void bta_jv_port_mgmt_sr_cback(uint32_t code, uint16_t port_handle) {
       evt_data.rfc_close.status = BTA_JV_SUCCESS;
     }
     // p_pcb->state = BTA_JV_ST_NONE;
-    p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, user_data);
+    p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, rfcomm_slot_id);
     // bta_jv_free_rfc_cb(p_cb, p_pcb);
 
     APPL_TRACE_DEBUG(
@@ -1711,7 +1715,7 @@ static void bta_jv_port_event_sr_cback(uint32_t code, uint16_t port_handle) {
       "bta_jv_port_event_sr_cback code=x%x port_handle:%d handle:%d", code,
       port_handle, p_cb->handle);
 
-  void* user_data = p_pcb->user_data;
+  uint32_t user_data = p_pcb->rfcomm_slot_id;
   if (code & PORT_EV_RXCHAR) {
     evt_data.data_ind.handle = p_cb->handle;
     p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, user_data);
@@ -1786,7 +1790,7 @@ static tBTA_JV_PCB* bta_jv_add_rfc_port(tBTA_JV_RFC_CB* p_cb,
         p_pcb = &bta_jv_cb.port_cb[p_cb->rfc_hdl[si] - 1];
         p_pcb->state = BTA_JV_ST_SR_LISTEN;
         p_pcb->port_handle = p_cb->rfc_hdl[si];
-        p_pcb->user_data = p_pcb_open->user_data;
+        p_pcb->rfcomm_slot_id = p_pcb_open->rfcomm_slot_id;
 
         PORT_ClearKeepHandleFlag(p_pcb->port_handle);
         PORT_SetEventCallback(p_pcb->port_handle, bta_jv_port_event_sr_cback);
@@ -1871,7 +1875,7 @@ void bta_jv_rfcomm_start_server(tBTA_JV_MSG* p_data) {
     p_cb->sec_id = sec_id;
     p_cb->scn = rs->local_scn;
     p_pcb->state = BTA_JV_ST_SR_LISTEN;
-    p_pcb->user_data = rs->user_data;
+    p_pcb->rfcomm_slot_id = rs->rfcomm_slot_id;
     evt_data.status = BTA_JV_SUCCESS;
     evt_data.handle = p_cb->handle;
     evt_data.sec_id = sec_id;
@@ -1887,7 +1891,7 @@ void bta_jv_rfcomm_start_server(tBTA_JV_MSG* p_data) {
     PORT_SetState(handle, &port_state);
   } while (0);
 
-  rs->p_cback(BTA_JV_RFCOMM_START_EVT, (tBTA_JV*)&evt_data, rs->user_data);
+  rs->p_cback(BTA_JV_RFCOMM_START_EVT, (tBTA_JV*)&evt_data, rs->rfcomm_slot_id);
   if (evt_data.status == BTA_JV_SUCCESS) {
     PORT_SetDataCOCallback(handle, bta_jv_port_data_co_cback);
   } else {
@@ -1915,8 +1919,8 @@ void bta_jv_rfcomm_stop_server(tBTA_JV_MSG* p_data) {
     APPL_TRACE_ERROR("bta_jv_rfcomm_stop_server, jv handle is null");
     return;
   }
-  void* user_data = ls->user_data;
-  if (!find_rfc_pcb(user_data, &p_cb, &p_pcb)) return;
+
+  if (!find_rfc_pcb(ls->rfcomm_slot_id, &p_cb, &p_pcb)) return;
   APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server: p_pcb:%p, p_pcb->port_handle:%d",
                    p_pcb, p_pcb->port_handle);
   bta_jv_free_rfc_cb(p_cb, p_pcb);
@@ -1963,7 +1967,7 @@ void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data) {
 
   if (p_cb->p_cback) {
     p_cb->p_cback(BTA_JV_RFCOMM_WRITE_EVT, (tBTA_JV*)&evt_data,
-                  p_pcb->user_data);
+                  p_pcb->rfcomm_slot_id);
   } else {
     APPL_TRACE_ERROR("%s No JV callback set", __func__);
   }
index 7c80a99..4633a28 100644 (file)
@@ -245,14 +245,14 @@ tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, uint16_t num_uuid,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvCreateRecordByUser(void* user_data) {
+tBTA_JV_STATUS BTA_JvCreateRecordByUser(uint32_t rfcomm_slot_id) {
   tBTA_JV_API_CREATE_RECORD* p_msg =
       (tBTA_JV_API_CREATE_RECORD*)osi_malloc(sizeof(tBTA_JV_API_CREATE_RECORD));
 
   APPL_TRACE_API("%s", __func__);
 
   p_msg->hdr.event = BTA_JV_API_CREATE_RECORD_EVT;
-  p_msg->user_data = user_data;
+  p_msg->rfcomm_slot_id = rfcomm_slot_id;
 
   bta_sys_sendmsg(p_msg);
 
@@ -765,7 +765,7 @@ tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR* addr,
 tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
                                    uint8_t remote_scn, BD_ADDR peer_bd_addr,
                                    tBTA_JV_RFCOMM_CBACK* p_cback,
-                                   void* user_data) {
+                                   uint32_t rfcomm_slot_id) {
   APPL_TRACE_API("%s", __func__);
 
   if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
@@ -778,7 +778,7 @@ tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
   p_msg->remote_scn = remote_scn;
   memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
   p_msg->p_cback = p_cback;
-  p_msg->user_data = user_data;
+  p_msg->rfcomm_slot_id = rfcomm_slot_id;
 
   bta_sys_sendmsg(p_msg);
 
@@ -795,7 +795,7 @@ tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data) {
+tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, uint32_t rfcomm_slot_id) {
   tBTA_JV_STATUS status = BTA_JV_FAILURE;
   uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
   uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
@@ -810,7 +810,7 @@ tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data) {
     p_msg->handle = handle;
     p_msg->p_cb = &bta_jv_cb.rfc_cb[hi];
     p_msg->p_pcb = &bta_jv_cb.port_cb[p_msg->p_cb->rfc_hdl[si] - 1];
-    p_msg->user_data = user_data;
+    p_msg->rfcomm_slot_id = rfcomm_slot_id;
 
     bta_sys_sendmsg(p_msg);
 
@@ -838,7 +838,7 @@ tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data) {
 tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
                                        uint8_t local_scn, uint8_t max_session,
                                        tBTA_JV_RFCOMM_CBACK* p_cback,
-                                       void* user_data) {
+                                       uint32_t rfcomm_slot_id) {
   APPL_TRACE_API("%s", __func__);
 
   if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
@@ -857,7 +857,7 @@ tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
   p_msg->local_scn = local_scn;
   p_msg->max_session = max_session;
   p_msg->p_cback = p_cback;
-  p_msg->user_data = user_data;  // caller's private data
+  p_msg->rfcomm_slot_id = rfcomm_slot_id;  // caller's private data
 
   bta_sys_sendmsg(p_msg);
 
@@ -875,7 +875,8 @@ tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
  *                  BTA_JV_FAILURE, otherwise.
  *
  ******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, void* user_data) {
+tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle,
+                                      uint32_t rfcomm_slot_id) {
   tBTA_JV_API_RFCOMM_SERVER* p_msg =
       (tBTA_JV_API_RFCOMM_SERVER*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_SERVER));
 
@@ -883,7 +884,7 @@ tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, void* user_data) {
 
   p_msg->hdr.event = BTA_JV_API_RFCOMM_STOP_SERVER_EVT;
   p_msg->handle = handle;
-  p_msg->user_data = user_data;  // caller's private data
+  p_msg->rfcomm_slot_id = rfcomm_slot_id;  // caller's private data
 
   bta_sys_sendmsg(p_msg);
 
index 1ea9891..6b445ab 100644 (file)
@@ -131,11 +131,11 @@ typedef struct {
 
 /* port control block */
 typedef struct {
-  uint32_t handle;        /* the rfcomm session handle at jv */
-  uint16_t port_handle;   /* port handle */
-  tBTA_JV_STATE state;    /* the state of this control block */
-  uint8_t max_sess;       /* max sessions */
-  void* user_data;        /* piggyback caller's private data*/
+  uint32_t handle;      /* the rfcomm session handle at jv */
+  uint16_t port_handle; /* port handle */
+  tBTA_JV_STATE state;  /* the state of this control block */
+  uint8_t max_sess;     /* max sessions */
+  uint32_t rfcomm_slot_id;
   bool cong;              /* true, if congested */
   tBTA_JV_PM_CB* p_pm_cb; /* ptr to pm control block, NULL: unused */
 } tBTA_JV_PCB;
@@ -240,7 +240,7 @@ typedef struct {
   uint8_t remote_scn;
   BD_ADDR peer_bd_addr;
   tBTA_JV_RFCOMM_CBACK* p_cback;
-  void* user_data;
+  uint32_t rfcomm_slot_id;
 } tBTA_JV_API_RFCOMM_CONNECT;
 
 /* data type for BTA_JV_API_RFCOMM_SERVER_EVT */
@@ -252,7 +252,7 @@ typedef struct {
   uint8_t max_session;
   uint32_t handle;
   tBTA_JV_RFCOMM_CBACK* p_cback;
-  void* user_data;
+  uint32_t rfcomm_slot_id;
 } tBTA_JV_API_RFCOMM_SERVER;
 
 /* data type for BTA_JV_API_SET_PM_PROFILE_EVT */
@@ -287,13 +287,13 @@ typedef struct {
   uint32_t handle;
   tBTA_JV_RFC_CB* p_cb;
   tBTA_JV_PCB* p_pcb;
-  void* user_data;
+  uint32_t rfcomm_slot_id;
 } tBTA_JV_API_RFCOMM_CLOSE;
 
 /* data type for BTA_JV_API_CREATE_RECORD_EVT */
 typedef struct {
   BT_HDR hdr;
-  void* user_data;
+  uint32_t rfcomm_slot_id;
 } tBTA_JV_API_CREATE_RECORD;
 
 /* data type for BTA_JV_API_ADD_ATTRIBUTE_EVT */
index 348f277..7ad5fb1 100644 (file)
@@ -106,7 +106,8 @@ static uid_set_t* uid_set = NULL;
 static rfc_slot_t* find_free_slot(void);
 static void cleanup_rfc_slot(rfc_slot_t* rs);
 static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id);
-static void* rfcomm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, void* user_data);
+static uint32_t rfcomm_cback(tBTA_JV_EVT event, tBTA_JV* p_data,
+                             uint32_t rfcomm_slot_id);
 static bool send_app_scn(rfc_slot_t* rs);
 
 static bool is_init_done(void) { return pth != -1; }
@@ -351,9 +352,9 @@ bt_status_t btsock_rfc_connect(const bt_bdaddr_t* bd_addr,
   }
 
   if (is_uuid_empty(service_uuid)) {
-    tBTA_JV_STATUS ret = BTA_JvRfcommConnect(
-        slot->security, slot->role, slot->scn, slot->addr.address, rfcomm_cback,
-        (void*)(uintptr_t)slot->id);
+    tBTA_JV_STATUS ret =
+        BTA_JvRfcommConnect(slot->security, slot->role, slot->scn,
+                            slot->addr.address, rfcomm_cback, slot->id);
     if (ret != BTA_JV_SUCCESS) {
       LOG_ERROR(LOG_TAG, "%s unable to initiate RFCOMM connection: %d",
                 __func__, ret);
@@ -403,7 +404,7 @@ static void free_rfc_slot_scn(rfc_slot_t* slot) {
   if (slot->scn <= 0) return;
 
   if (slot->f.server && !slot->f.closing && slot->rfc_handle) {
-    BTA_JvRfcommStopServer(slot->rfc_handle, (void*)(uintptr_t)slot->id);
+    BTA_JvRfcommStopServer(slot->rfc_handle, slot->id);
     slot->rfc_handle = 0;
   }
 
@@ -429,7 +430,7 @@ static void cleanup_rfc_slot(rfc_slot_t* slot) {
   }
 
   if (slot->rfc_handle && !slot->f.closing && !slot->f.server) {
-    BTA_JvRfcommClose(slot->rfc_handle, (void*)(uintptr_t)slot->id);
+    BTA_JvRfcommClose(slot->rfc_handle, slot->id);
     slot->rfc_handle = 0;
   }
 
@@ -581,43 +582,43 @@ static void on_rfc_outgoing_congest(tBTA_JV_RFCOMM_CONG* p, uint32_t id) {
   }
 }
 
-static void* rfcomm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, void* user_data) {
-  void* new_user_data = NULL;
+static uint32_t rfcomm_cback(tBTA_JV_EVT event, tBTA_JV* p_data,
+                             uint32_t rfcomm_slot_id) {
+  uint32_t id = 0;
 
   switch (event) {
     case BTA_JV_RFCOMM_START_EVT:
-      on_srv_rfc_listen_started(&p_data->rfc_start, (uintptr_t)user_data);
+      on_srv_rfc_listen_started(&p_data->rfc_start, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_CL_INIT_EVT:
-      on_cl_rfc_init(&p_data->rfc_cl_init, (uintptr_t)user_data);
+      on_cl_rfc_init(&p_data->rfc_cl_init, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_OPEN_EVT:
       BTA_JvSetPmProfile(p_data->rfc_open.handle, BTA_JV_PM_ID_1,
                          BTA_JV_CONN_OPEN);
-      on_cli_rfc_connect(&p_data->rfc_open, (uintptr_t)user_data);
+      on_cli_rfc_connect(&p_data->rfc_open, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_SRV_OPEN_EVT:
       BTA_JvSetPmProfile(p_data->rfc_srv_open.handle, BTA_JV_PM_ALL,
                          BTA_JV_CONN_OPEN);
-      new_user_data = (void*)(uintptr_t)on_srv_rfc_connect(
-          &p_data->rfc_srv_open, (uintptr_t)user_data);
+      id = on_srv_rfc_connect(&p_data->rfc_srv_open, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_CLOSE_EVT:
-      APPL_TRACE_DEBUG("BTA_JV_RFCOMM_CLOSE_EVT: user_data:%d",
-                       (uintptr_t)user_data);
-      on_rfc_close(&p_data->rfc_close, (uintptr_t)user_data);
+      APPL_TRACE_DEBUG("BTA_JV_RFCOMM_CLOSE_EVT: rfcomm_slot_id:%d",
+                       rfcomm_slot_id);
+      on_rfc_close(&p_data->rfc_close, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_WRITE_EVT:
-      on_rfc_write_done(&p_data->rfc_write, (uintptr_t)user_data);
+      on_rfc_write_done(&p_data->rfc_write, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_CONG_EVT:
-      on_rfc_outgoing_congest(&p_data->rfc_cong, (uintptr_t)user_data);
+      on_rfc_outgoing_congest(&p_data->rfc_cong, rfcomm_slot_id);
       break;
 
     case BTA_JV_RFCOMM_DATA_IND_EVT:
@@ -626,10 +627,10 @@ static void* rfcomm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, void* user_data) {
 
     default:
       LOG_ERROR(LOG_TAG, "%s unhandled event %d, slot id: %zi", __func__, event,
-                (uintptr_t)user_data);
+                rfcomm_slot_id);
       break;
   }
-  return new_user_data;
+  return id;
 }
 
 static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id) {
@@ -661,7 +662,7 @@ static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id) {
           if (rs->is_service_uuid_valid == true) {
             // We already have data for SDP record, create it (RFC-only
             // profiles)
-            BTA_JvCreateRecordByUser(UINT_TO_PTR(rs->id));
+            BTA_JvCreateRecordByUser(rs->id);
           } else {
             APPL_TRACE_DEBUG(
                 "is_service_uuid_valid==false - don't set SDP-record, "
@@ -669,8 +670,7 @@ static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id) {
                 rs->id);
             // now start the rfcomm server after sdp & channel # assigned
             BTA_JvRfcommStartServer(rs->security, rs->role, rs->scn,
-                                    MAX_RFC_SESSION, rfcomm_cback,
-                                    UINT_TO_PTR(rs->id));
+                                    MAX_RFC_SESSION, rfcomm_cback, rs->id);
           }
         }
       } else if (rs) {
@@ -693,8 +693,7 @@ static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id) {
       if (slot && create_server_sdp_record(slot)) {
         // Start the rfcomm server after sdp & channel # assigned.
         BTA_JvRfcommStartServer(slot->security, slot->role, slot->scn,
-                                MAX_RFC_SESSION, rfcomm_cback,
-                                (void*)(uintptr_t)slot->id);
+                                MAX_RFC_SESSION, rfcomm_cback, slot->id);
       } else if (slot) {
         APPL_TRACE_ERROR("jv_dm_cback: cannot start server, slot found:%p",
                          slot);
@@ -712,8 +711,7 @@ static void jv_dm_cback(tBTA_JV_EVT event, tBTA_JV* p_data, uint32_t id) {
           // number to connect to.
           if (BTA_JvRfcommConnect(slot->security, slot->role,
                                   p_data->disc_comp.scn, slot->addr.address,
-                                  rfcomm_cback, (void*)(uintptr_t)slot->id) ==
-              BTA_JV_SUCCESS) {
+                                  rfcomm_cback, slot->id) == BTA_JV_SUCCESS) {
             slot->scn = p_data->disc_comp.scn;
             slot->f.doing_sdp_request = false;
             if (!send_app_scn(slot)) cleanup_rfc_slot(slot);
@@ -856,11 +854,10 @@ void btsock_rfc_signaled(UNUSED_ATTR int fd, int flags, uint32_t user_id) {
   }
 }
 
-int bta_co_rfc_data_incoming(void* user_data, BT_HDR* p_buf) {
+int bta_co_rfc_data_incoming(uint32_t id, BT_HDR* p_buf) {
   int app_uid = -1;
   uint64_t bytes_rx = 0;
   int ret = 0;
-  uint32_t id = (uintptr_t)user_data;
   std::unique_lock<std::recursive_mutex> lock(slot_lock);
   rfc_slot_t* slot = find_rfc_slot_by_id(id);
   if (!slot) return 0;
@@ -896,8 +893,7 @@ int bta_co_rfc_data_incoming(void* user_data, BT_HDR* p_buf) {
   return ret;  // Return 0 to disable data flow.
 }
 
-int bta_co_rfc_data_outgoing_size(void* user_data, int* size) {
-  uint32_t id = (uintptr_t)user_data;
+int bta_co_rfc_data_outgoing_size(uint32_t id, int* size) {
   *size = 0;
   std::unique_lock<std::recursive_mutex> lock(slot_lock);
   rfc_slot_t* slot = find_rfc_slot_by_id(id);
@@ -914,9 +910,8 @@ int bta_co_rfc_data_outgoing_size(void* user_data, int* size) {
   return true;
 }
 
-int bta_co_rfc_data_outgoing(void* user_data, uint8_t* buf, uint16_t size) {
+int bta_co_rfc_data_outgoing(uint32_t id, uint8_t* buf, uint16_t size) {
   std::unique_lock<std::recursive_mutex> lock(slot_lock);
-  uint32_t id = (uintptr_t)user_data;
   rfc_slot_t* slot = find_rfc_slot_by_id(id);
   if (!slot) return false;