OSDN Git Service

Use Bind in BTA_JvL2capWriteFixed
authorJakub Pawlowski <jpawlowski@google.com>
Sat, 28 Oct 2017 00:29:04 +0000 (17:29 -0700)
committerJakub Pawlowski <jpawlowski@google.com>
Sat, 28 Oct 2017 02:58:27 +0000 (19:58 -0700)
Bug: 68359837
Test: compilation testPlease enter the commit message for your changes. Lines starting
Change-Id: I4774fc9e4a7c7776a2d346613d1e0d5ea2e14b04

bta/jv/bta_jv_act.cc
bta/jv/bta_jv_api.cc
bta/jv/bta_jv_int.h
bta/jv/bta_jv_main.cc

index 8875828..8c9aa5f 100644 (file)
@@ -1227,37 +1227,28 @@ void bta_jv_l2cap_write(uint32_t handle, uint32_t req_id, uint8_t* p_data,
   p_cb->p_cback(BTA_JV_L2CAP_WRITE_EVT, &bta_jv, user_id);
 }
 
-/*******************************************************************************
- *
- * Function     bta_jv_l2cap_write_fixed
- *
- * Description  Write data to an L2CAP connection using Fixed channels
- *
- * Returns      void
- *
- ******************************************************************************/
-void bta_jv_l2cap_write_fixed(tBTA_JV_MSG* p_data) {
+/* Write data to an L2CAP connection using Fixed channels */
+void bta_jv_l2cap_write_fixed(uint16_t channel, const RawAddress& addr,
+                              uint32_t req_id, uint8_t* p_data, uint16_t len,
+                              uint32_t user_id, tBTA_JV_L2CAP_CBACK* p_cback) {
   tBTA_JV_L2CAP_WRITE_FIXED evt_data;
-  tBTA_JV_API_L2CAP_WRITE_FIXED* ls = &(p_data->l2cap_write_fixed);
-  BT_HDR* msg =
-      (BT_HDR*)osi_malloc(sizeof(BT_HDR) + ls->len + L2CAP_MIN_OFFSET);
-
   evt_data.status = BTA_JV_FAILURE;
-  evt_data.channel = ls->channel;
-  evt_data.addr = ls->addr;
-  evt_data.req_id = ls->req_id;
-  evt_data.p_data = ls->p_data;
+  evt_data.channel = channel;
+  evt_data.addr = addr;
+  evt_data.req_id = req_id;
+  evt_data.p_data = p_data;
   evt_data.len = 0;
 
-  memcpy(((uint8_t*)(msg + 1)) + L2CAP_MIN_OFFSET, ls->p_data, ls->len);
-  msg->len = ls->len;
+  BT_HDR* msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR) + len + L2CAP_MIN_OFFSET);
+  memcpy(((uint8_t*)(msg + 1)) + L2CAP_MIN_OFFSET, p_data, len);
+  msg->len = len;
   msg->offset = L2CAP_MIN_OFFSET;
 
-  L2CA_SendFixedChnlData(ls->channel, ls->addr, msg);
+  L2CA_SendFixedChnlData(channel, addr, msg);
 
   tBTA_JV bta_jv;
   bta_jv.l2c_write_fixed = evt_data;
-  ls->p_cback(BTA_JV_L2CAP_WRITE_FIXED_EVT, &bta_jv, ls->user_id);
+  p_cback(BTA_JV_L2CAP_WRITE_FIXED_EVT, &bta_jv, user_id);
 }
 
 /*******************************************************************************
index b096490..55af9a1 100644 (file)
@@ -572,23 +572,10 @@ tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, const RawAddress& addr,
                                      tBTA_JV_L2CAP_CBACK* p_cback,
                                      uint8_t* p_data, uint16_t len,
                                      uint32_t user_id) {
-  tBTA_JV_API_L2CAP_WRITE_FIXED* p_msg =
-      (tBTA_JV_API_L2CAP_WRITE_FIXED*)osi_malloc(
-          sizeof(tBTA_JV_API_L2CAP_WRITE_FIXED));
-
   APPL_TRACE_API("%s", __func__);
 
-  p_msg->hdr.event = BTA_JV_API_L2CAP_WRITE_FIXED_EVT;
-  p_msg->channel = channel;
-  p_msg->addr = addr;
-  p_msg->req_id = req_id;
-  p_msg->p_data = p_data;
-  p_msg->p_cback = p_cback;
-  p_msg->len = len;
-  p_msg->user_id = user_id;
-
-  bta_sys_sendmsg(p_msg);
-
+  do_in_bta_thread(FROM_HERE, Bind(&bta_jv_l2cap_write_fixed, channel, addr,
+                                   req_id, p_data, len, user_id, p_cback));
   return BTA_JV_SUCCESS;
 }
 
index 00500f8..57d484f 100644 (file)
@@ -47,7 +47,6 @@ enum {
   BTA_JV_API_RFCOMM_WRITE_EVT,
   BTA_JV_API_SET_PM_PROFILE_EVT,
   BTA_JV_API_PM_STATE_CHANGE_EVT,
-  BTA_JV_API_L2CAP_WRITE_FIXED_EVT,
   BTA_JV_MAX_INT_EVT
 };
 
@@ -143,18 +142,6 @@ typedef struct {
   uint32_t l2cap_socket_id;
 } tBTA_JV_API_L2CAP_READ;
 
-/* data type for BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
-typedef struct {
-  BT_HDR hdr;
-  uint16_t channel;
-  RawAddress addr;
-  uint32_t req_id;
-  tBTA_JV_L2CAP_CBACK* p_cback;
-  uint8_t* p_data;
-  uint16_t len;
-  uint32_t user_id;
-} tBTA_JV_API_L2CAP_WRITE_FIXED;
-
 /* data type for BTA_JV_API_RFCOMM_CONNECT_EVT */
 typedef struct {
   BT_HDR hdr;
@@ -225,7 +212,6 @@ typedef union {
   tBTA_JV_API_PM_STATE_CHANGE change_pm_state;
   tBTA_JV_API_RFCOMM_CLOSE rfcomm_close;
   tBTA_JV_API_RFCOMM_SERVER rfcomm_server;
-  tBTA_JV_API_L2CAP_WRITE_FIXED l2cap_write_fixed;
 } tBTA_JV_MSG;
 
 /* JV control block */
@@ -308,7 +294,10 @@ extern void bta_jv_l2cap_start_server_le(uint16_t local_chan,
                                          tBTA_JV_L2CAP_CBACK* p_cback,
                                          uint32_t l2cap_socket_id);
 extern void bta_jv_l2cap_stop_server_le(uint16_t local_chan);
-extern void bta_jv_l2cap_write_fixed(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_write_fixed(uint16_t channel, const RawAddress& addr,
+                                     uint32_t req_id, uint8_t* p_data,
+                                     uint16_t len, uint32_t user_id,
+                                     tBTA_JV_L2CAP_CBACK* p_cback);
 extern void bta_jv_l2cap_close_fixed(uint32_t handle);
 
 #endif /* BTA_JV_INT_H */
index 5bc5a57..fb2b42c 100644 (file)
@@ -50,7 +50,6 @@ const tBTA_JV_ACTION bta_jv_action[] = {
     bta_jv_rfcomm_write,          /* BTA_JV_API_RFCOMM_WRITE_EVT */
     bta_jv_set_pm_profile,        /* BTA_JV_API_SET_PM_PROFILE_EVT */
     bta_jv_change_pm_state,       /* BTA_JV_API_PM_STATE_CHANGE_EVT */
-    bta_jv_l2cap_write_fixed,     /* BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
 };
 
 /*******************************************************************************