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

Commit 04cfd426 authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Use Bind in BTA_JvL2capWriteFixed

Bug: 68359837
Test: compilation testPlease enter the commit message for your changes. Lines starting
Change-Id: I4774fc9e4a7c7776a2d346613d1e0d5ea2e14b04
parent 66c7584d
Loading
Loading
Loading
Loading
+13 −22
Original line number Diff line number Diff line
@@ -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);
}

/*******************************************************************************
+2 −15
Original line number Diff line number Diff line
@@ -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;
}

+4 −15
Original line number Diff line number Diff line
@@ -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 */
+0 −1
Original line number Diff line number Diff line
@@ -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 */
};

/*******************************************************************************