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

Commit da20887b authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Use Bind in BTA_JvGetChannelId

Bug: 68359837
Test: compilation test
Change-Id: I9da50222561da8410cdffa2e8b4c695cd2488841
parent 225b0dc9
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -662,22 +662,15 @@ static void bta_jv_set_free_psm(uint16_t psm) {
  }
}

/*******************************************************************************
 *
 * Function     bta_jv_get_channel_id
 *
 * Description  Obtain a free SCN (Server Channel Number)
 *              (RFCOMM channel or L2CAP PSM)
 *
 * Returns      void
 *
 ******************************************************************************/
void bta_jv_get_channel_id(tBTA_JV_MSG* p_data) {
/** Obtain a free SCN (Server Channel Number) (RFCOMM channel or L2CAP PSM) */
void bta_jv_get_channel_id(
    int32_t type /* One of BTA_JV_CONN_TYPE_ */,
    int32_t channel /* optionally request a specific channel */,
    uint32_t l2cap_socket_id, uint32_t rfcomm_slot_id) {
  uint16_t psm = 0;

  switch (p_data->alloc_channel.type) {
  switch (type) {
    case BTA_JV_CONN_TYPE_RFCOMM: {
      int32_t channel = p_data->alloc_channel.channel;
      uint8_t scn = 0;
      if (channel > 0) {
        if (!BTM_TryAllocateSCN(channel)) {
@@ -698,8 +691,7 @@ void bta_jv_get_channel_id(tBTA_JV_MSG* p_data) {
      if (bta_jv_cb.p_dm_cback) {
        tBTA_JV bta_jv;
        bta_jv.scn = scn;
        bta_jv_cb.p_dm_cback(BTA_JV_GET_SCN_EVT, &bta_jv,
                             p_data->alloc_channel.rfcomm_slot_id);
        bta_jv_cb.p_dm_cback(BTA_JV_GET_SCN_EVT, &bta_jv, rfcomm_slot_id);
      }
      return;
    }
@@ -719,8 +711,7 @@ void bta_jv_get_channel_id(tBTA_JV_MSG* p_data) {
  if (bta_jv_cb.p_dm_cback) {
    tBTA_JV bta_jv;
    bta_jv.psm = psm;
    bta_jv_cb.p_dm_cback(BTA_JV_GET_PSM_EVT, &bta_jv,
                         p_data->alloc_channel.l2cap_socket_id);
    bta_jv_cb.p_dm_cback(BTA_JV_GET_PSM_EVT, &bta_jv, l2cap_socket_id);
  }
}

+5 −14
Original line number Diff line number Diff line
@@ -138,26 +138,17 @@ bool BTA_JvIsEncrypted(const RawAddress& bd_addr) {
 *
 ******************************************************************************/
tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, uint32_t id, int32_t channel) {
  tBTA_JV_API_ALLOC_CHANNEL* p_msg =
      (tBTA_JV_API_ALLOC_CHANNEL*)osi_malloc(sizeof(tBTA_JV_API_ALLOC_CHANNEL));

  APPL_TRACE_API("%s", __func__);

  p_msg->hdr.event = BTA_JV_API_GET_CHANNEL_EVT;
  p_msg->type = conn_type;
  p_msg->channel = channel;
  if (conn_type == BTA_JV_CONN_TYPE_RFCOMM) {
    p_msg->rfcomm_slot_id = id;
  } else if (conn_type == BTA_JV_CONN_TYPE_L2CAP ||
             conn_type == BTA_JV_CONN_TYPE_L2CAP_LE) {
    p_msg->l2cap_socket_id = id;
  } else {
  if (conn_type != BTA_JV_CONN_TYPE_RFCOMM &&
      conn_type != BTA_JV_CONN_TYPE_L2CAP &&
      conn_type != BTA_JV_CONN_TYPE_L2CAP_LE) {
    APPL_TRACE_ERROR("%s: Invalid connection type");
    return BTA_JV_FAILURE;
  }

  bta_sys_sendmsg(p_msg);

  do_in_bta_thread(FROM_HERE,
                   Bind(&bta_jv_get_channel_id, conn_type, channel, id, id));
  return BTA_JV_SUCCESS;
}

+4 −12
Original line number Diff line number Diff line
@@ -36,8 +36,7 @@

enum {
  /* these events are handled by the state machine */
  BTA_JV_API_GET_CHANNEL_EVT = BTA_SYS_EVT_START(BTA_ID_JV),
  BTA_JV_API_FREE_SCN_EVT,
  BTA_JV_API_FREE_SCN_EVT = BTA_SYS_EVT_START(BTA_ID_JV),
  BTA_JV_API_START_DISCOVERY_EVT,
  BTA_JV_API_CREATE_RECORD_EVT,
  BTA_JV_API_DELETE_RECORD_EVT,
@@ -304,20 +303,11 @@ typedef struct {
  uint16_t scn;
} tBTA_JV_API_FREE_CHANNEL;

/* data type for BTA_JV_API_ALLOC_CHANNEL_EVT */
typedef struct {
  BT_HDR hdr;
  int32_t type;    /* One of BTA_JV_CONN_TYPE_ */
  int32_t channel; /* optionally request a specific channel */
  uint32_t l2cap_socket_id;
  uint32_t rfcomm_slot_id;
} tBTA_JV_API_ALLOC_CHANNEL;
/* union of all data types */
typedef union {
  /* GKI event buffer header */
  BT_HDR hdr;
  tBTA_JV_API_START_DISCOVERY start_discovery;
  tBTA_JV_API_ALLOC_CHANNEL alloc_channel;
  tBTA_JV_API_FREE_CHANNEL free_channel;
  tBTA_JV_API_CREATE_RECORD create_record;
  tBTA_JV_API_ADD_ATTRIBUTE add_attr;
@@ -372,7 +362,9 @@ extern bool bta_jv_sm_execute(BT_HDR* p_msg);

extern void bta_jv_enable(tBTA_JV_DM_CBACK* p_cback);
extern void bta_jv_disable();
extern void bta_jv_get_channel_id(tBTA_JV_MSG* p_data);
extern void bta_jv_get_channel_id(int32_t type, int32_t channel,
                                  uint32_t l2cap_socket_id,
                                  uint32_t rfcomm_slot_id);
extern void bta_jv_free_scn(tBTA_JV_MSG* p_data);
extern void bta_jv_start_discovery(tBTA_JV_MSG* p_data);
extern void bta_jv_create_record(tBTA_JV_MSG* p_data);
+0 −1
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ typedef void (*tBTA_JV_ACTION)(tBTA_JV_MSG* p_data);

/* action function list */
const tBTA_JV_ACTION bta_jv_action[] = {
    bta_jv_get_channel_id,        /* BTA_JV_API_GET_CHANNEL_EVT */
    bta_jv_free_scn,              /* BTA_JV_API_FREE_SCN_EVT */
    bta_jv_start_discovery,       /* BTA_JV_API_START_DISCOVERY_EVT */
    bta_jv_create_record,         /* BTA_JV_API_CREATE_RECORD_EVT */