if (sock_cback) sock_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, sock_id);
}
-/*******************************************************************************
- *
- * Function bta_jv_l2cap_connect_le
- *
- * Description makes an le l2cap client connection
- *
- * Returns void
- *
- ******************************************************************************/
-void bta_jv_l2cap_connect_le(tBTA_JV_MSG* p_data) {
- tBTA_JV_API_L2CAP_CONNECT* cc = &(p_data->l2cap_connect);
+/** makes an le l2cap client connection */
+void bta_jv_l2cap_connect_le(uint16_t remote_chan,
+ const RawAddress& peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ uint32_t l2cap_socket_id) {
tBTA_JV evt;
uint32_t id;
char call_init_f = true;
evt.l2c_cl_init.handle = GAP_INVALID_HANDLE;
evt.l2c_cl_init.status = BTA_JV_FAILURE;
- t = fcclient_alloc(cc->remote_chan, false, NULL);
+ t = fcclient_alloc(remote_chan, false, NULL);
if (!t) {
- cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->l2cap_socket_id);
+ p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, l2cap_socket_id);
return;
}
- t->p_cback = cc->p_cback;
- t->l2cap_socket_id = cc->l2cap_socket_id;
- t->remote_addr = cc->peer_bd_addr;
+ t->p_cback = p_cback;
+ t->l2cap_socket_id = l2cap_socket_id;
+ t->remote_addr = peer_bd_addr;
id = t->id;
t->init_called = false;
else
fcclient_free(t);
}
- if (call_init_f)
- cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->l2cap_socket_id);
+ if (call_init_f) p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, l2cap_socket_id);
t->init_called = true;
}
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO* ertm_info,
- uint16_t remote_chan, uint16_t rx_mtu,
- tL2CAP_CFG_INFO* cfg,
+tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE,
+ const tL2CAP_ERTM_INFO*,
+ uint16_t remote_chan, uint16_t,
+ tL2CAP_CFG_INFO*,
const RawAddress& peer_bd_addr,
tBTA_JV_L2CAP_CBACK* p_cback,
uint32_t l2cap_socket_id) {
if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_L2CAP_CONNECT* p_msg =
- (tBTA_JV_API_L2CAP_CONNECT*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CONNECT));
- p_msg->hdr.event = BTA_JV_API_L2CAP_CONNECT_LE_EVT;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->remote_chan = remote_chan;
- p_msg->rx_mtu = rx_mtu;
- if (cfg != NULL) {
- p_msg->has_cfg = true;
- p_msg->cfg = *cfg;
- } else {
- p_msg->has_cfg = false;
- }
- if (ertm_info != NULL) {
- p_msg->has_ertm_info = true;
- p_msg->ertm_info = *ertm_info;
- } else {
- p_msg->has_ertm_info = false;
- }
- p_msg->peer_bd_addr = peer_bd_addr;
- p_msg->p_cback = p_cback;
- p_msg->l2cap_socket_id = l2cap_socket_id;
-
- bta_sys_sendmsg(p_msg);
+ do_in_bta_thread(FROM_HERE, Bind(&bta_jv_l2cap_connect_le, remote_chan,
+ peer_bd_addr, p_cback, l2cap_socket_id));
return BTA_JV_SUCCESS;
}
BTA_JV_API_RFCOMM_WRITE_EVT,
BTA_JV_API_SET_PM_PROFILE_EVT,
BTA_JV_API_PM_STATE_CHANGE_EVT,
- BTA_JV_API_L2CAP_CONNECT_LE_EVT,
BTA_JV_API_L2CAP_START_SERVER_LE_EVT,
BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT,
BTA_JV_API_L2CAP_WRITE_FIXED_EVT,
int curr_sess; /* current sessions count*/
} tBTA_JV_RFC_CB;
-/* data type for BTA_JV_API_L2CAP_CONNECT_EVT & BTA_JV_API_L2CAP_CONNECT_LE_EVT
+/* data type for BTA_JV_API_L2CAP_CONNECT_EVT
*/
typedef struct {
BT_HDR hdr;
extern void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data);
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(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_connect_le(uint16_t remote_chan,
+ const RawAddress& peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ uint32_t l2cap_socket_id);
extern void bta_jv_l2cap_start_server_le(tBTA_JV_MSG* p_data);
extern void bta_jv_l2cap_stop_server_le(tBTA_JV_MSG* p_data);
extern void bta_jv_l2cap_write_fixed(tBTA_JV_MSG* p_data);
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_connect_le, /* BTA_JV_API_L2CAP_CONNECT_LE_EVT */
bta_jv_l2cap_start_server_le, /* BTA_JV_API_L2CAP_START_SERVER_LE_EVT */
bta_jv_l2cap_stop_server_le, /* BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT */
bta_jv_l2cap_write_fixed, /* BTA_JV_API_L2CAP_WRITE_FIXED_EVT */