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

Commit 3560e0ee authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Use Bind in BTA_JvRfcommWrite

Bug: 68359837
Test: compilation test
Change-Id: I73ba3a1c0b6fa3cbde8a4f2c3a4b378d5dcab0fe
parent 75f2168a
Loading
Loading
Loading
Loading
+11 −21
Original line number Diff line number Diff line
@@ -1745,20 +1745,9 @@ void bta_jv_rfcomm_stop_server(uint32_t handle, uint32_t rfcomm_slot_id) {
      get_sec_id_used(), get_rfc_cb_used());
}

/*******************************************************************************
 *
 * Function     bta_jv_rfcomm_write
 *
 * Description  write data to an RFCOMM connection
 *
 * Returns      void
 *
 ******************************************************************************/
void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data) {
  tBTA_JV_API_RFCOMM_WRITE* wc = &(p_data->rfcomm_write);
  tBTA_JV_RFC_CB* p_cb = wc->p_cb;
  tBTA_JV_PCB* p_pcb = wc->p_pcb;

/* write data to an RFCOMM connection */
void bta_jv_rfcomm_write(uint32_t handle, uint32_t req_id, tBTA_JV_RFC_CB* p_cb,
                         tBTA_JV_PCB* p_pcb) {
  if (p_pcb->state == BTA_JV_ST_NONE) {
    APPL_TRACE_ERROR("%s in state BTA_JV_ST_NONE - cannot write", __func__);
    return;
@@ -1766,8 +1755,8 @@ void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data) {

  tBTA_JV_RFCOMM_WRITE evt_data;
  evt_data.status = BTA_JV_FAILURE;
  evt_data.handle = p_cb->handle;
  evt_data.req_id = wc->req_id;
  evt_data.handle = handle;
  evt_data.req_id = req_id;
  evt_data.cong = p_pcb->cong;
  evt_data.len = 0;

@@ -1781,13 +1770,14 @@ void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data) {
  // Update congestion flag
  evt_data.cong = p_pcb->cong;

  if (p_cb->p_cback) {
  if (!p_cb->p_cback) {
    APPL_TRACE_ERROR("%s No JV callback set", __func__);
    return;
  }

  tBTA_JV bta_jv;
  bta_jv.rfc_write = evt_data;
  p_cb->p_cback(BTA_JV_RFCOMM_WRITE_EVT, &bta_jv, p_pcb->rfcomm_slot_id);
  } else {
    APPL_TRACE_ERROR("%s No JV callback set", __func__);
  }
}

/*******************************************************************************
+9 −15
Original line number Diff line number Diff line
@@ -718,29 +718,23 @@ uint16_t BTA_JvRfcommGetPortHdl(uint32_t handle) {
 *
 ******************************************************************************/
tBTA_JV_STATUS BTA_JvRfcommWrite(uint32_t handle, uint32_t req_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);

  APPL_TRACE_API("%s", __func__);

  APPL_TRACE_DEBUG("handle:0x%x, hi:%d, si:%d", handle, hi, si);
  if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
      si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
    tBTA_JV_API_RFCOMM_WRITE* p_msg =
        (tBTA_JV_API_RFCOMM_WRITE*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_WRITE));
    p_msg->hdr.event = BTA_JV_API_RFCOMM_WRITE_EVT;
    p_msg->handle = handle;
    p_msg->req_id = req_id;
    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];
    APPL_TRACE_API("write ok");

    bta_sys_sendmsg(p_msg);
    status = BTA_JV_SUCCESS;
  if (hi >= BTA_JV_MAX_RFC_CONN || !bta_jv_cb.rfc_cb[hi].p_cback ||
      si >= BTA_JV_MAX_RFC_SR_SESSION || !bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
    return BTA_JV_FAILURE;
  }

  return status;
  APPL_TRACE_API("write ok");

  tBTA_JV_RFC_CB* p_cb = &bta_jv_cb.rfc_cb[hi];
  do_in_bta_thread(FROM_HERE, Bind(&bta_jv_rfcomm_write, handle, req_id, p_cb,
                                   &bta_jv_cb.port_cb[p_cb->rfc_hdl[si] - 1]));
  return BTA_JV_SUCCESS;
}

/*******************************************************************************
+2 −15
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@
enum {
  /* these events are handled by the state machine */
  BTA_JV_API_START_DISCOVERY_EVT = BTA_SYS_EVT_START(BTA_ID_JV),
  BTA_JV_API_RFCOMM_WRITE_EVT,
  BTA_JV_API_SET_PM_PROFILE_EVT,
  BTA_JV_API_PM_STATE_CHANGE_EVT,
  BTA_JV_MAX_INT_EVT
@@ -152,24 +151,12 @@ typedef struct {
  tBTA_JV_CONN_STATE state;
} tBTA_JV_API_PM_STATE_CHANGE;

/* data type for BTA_JV_API_RFCOMM_WRITE_EVT */
typedef struct {
  BT_HDR hdr;
  uint32_t handle;
  uint32_t req_id;
  uint8_t* p_data;
  int len;
  tBTA_JV_RFC_CB* p_cb;
  tBTA_JV_PCB* p_pcb;
} tBTA_JV_API_RFCOMM_WRITE;

/* union of all data types */
typedef union {
  /* GKI event buffer header */
  BT_HDR hdr;
  tBTA_JV_API_START_DISCOVERY start_discovery;
  tBTA_JV_API_L2CAP_READ l2cap_read;
  tBTA_JV_API_RFCOMM_WRITE rfcomm_write;
  tBTA_JV_API_SET_PM_PROFILE set_pm;
  tBTA_JV_API_PM_STATE_CHANGE change_pm_state;
} tBTA_JV_MSG;
@@ -248,8 +235,8 @@ extern void bta_jv_rfcomm_start_server(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
                                       tBTA_JV_RFCOMM_CBACK* p_cback,
                                       uint32_t rfcomm_slot_id);
extern void bta_jv_rfcomm_stop_server(uint32_t handle, uint32_t rfcomm_slot_id);
extern void bta_jv_rfcomm_read(tBTA_JV_MSG* p_data);
extern void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data);
extern void bta_jv_rfcomm_write(uint32_t handle, uint32_t req_id,
                                tBTA_JV_RFC_CB* p_cb, tBTA_JV_PCB* p_pcb);
extern void bta_jv_set_pm_profile(tBTA_JV_MSG* p_data);
extern void bta_jv_change_pm_state(tBTA_JV_MSG* p_data);
extern void bta_jv_l2cap_connect_le(uint16_t remote_chan,
+0 −1
Original line number Diff line number Diff line
@@ -42,7 +42,6 @@ typedef void (*tBTA_JV_ACTION)(tBTA_JV_MSG* p_data);
/* action function list */
const tBTA_JV_ACTION bta_jv_action[] = {
    bta_jv_start_discovery,       /* BTA_JV_API_START_DISCOVERY_EVT */
    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 */
};