mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-01 07:37:52 +00:00
nimble/l2cap: Change API to retrieve L2CAP channel info
Remove helpers which where used only by the test code (hopefully) with nicer helper which gives us more info.
This commit is contained in:
@@ -754,6 +754,7 @@ rx_stress_10_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
static int data_len = 1000;
|
||||
static int send_cnt = 0;
|
||||
static bool stalled = false;
|
||||
struct ble_l2cap_chan_info chan_info;
|
||||
|
||||
switch (event->type) {
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED:
|
||||
@@ -762,15 +763,17 @@ rx_stress_10_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ble_l2cap_get_chan_info(event->connect.chan, &chan_info);
|
||||
|
||||
MODLOG_DFLT(INFO,
|
||||
"LE COC connected, conn: %d, chan: 0x%08lx, scid: 0x%04x, "
|
||||
"dcid: 0x%04x, our_mtu: 0x%04x, peer_mtu: 0x%04x\n",
|
||||
event->connect.conn_handle,
|
||||
(uint32_t) event->connect.chan,
|
||||
ble_l2cap_get_scid(event->connect.chan),
|
||||
ble_l2cap_get_dcid(event->connect.chan),
|
||||
ble_l2cap_get_our_mtu(event->connect.chan),
|
||||
ble_l2cap_get_peer_mtu(event->connect.chan));
|
||||
chan_info.scid,
|
||||
chan_info.dcid,
|
||||
chan_info.our_l2cap_mtu,
|
||||
chan_info.peer_l2cap_mtu);
|
||||
|
||||
struct ble_l2cap_sig_update_params params = {
|
||||
.itvl_min = 0x0006,//BLE_GAP_INITIAL_CONN_ITVL_MIN
|
||||
|
||||
@@ -1020,6 +1020,7 @@ tx_stress_10_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
{
|
||||
static int i = 0;
|
||||
int64_t us = 0;
|
||||
struct ble_l2cap_chan_info chan_info;
|
||||
|
||||
switch (event->type) {
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED:
|
||||
@@ -1028,15 +1029,17 @@ tx_stress_10_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
MODLOG_DFLT(INFO, "Established L2CAP connection\n");
|
||||
tx_stress_ctx->chan = event->connect.chan;
|
||||
|
||||
ble_l2cap_get_chan_info(event->connect.chan, &chan_info);
|
||||
|
||||
MODLOG_DFLT(INFO,
|
||||
"LE COC connected, conn: %d, chan: 0x%08lx, scid: 0x%04x, "
|
||||
"dcid: 0x%04x, our_mtu: 0x%04x, peer_mtu: 0x%04x\n",
|
||||
event->connect.conn_handle,
|
||||
(uint32_t) event->connect.chan,
|
||||
ble_l2cap_get_scid(event->connect.chan),
|
||||
ble_l2cap_get_dcid(event->connect.chan),
|
||||
ble_l2cap_get_our_mtu(event->connect.chan),
|
||||
ble_l2cap_get_peer_mtu(event->connect.chan));
|
||||
chan_info.scid,
|
||||
chan_info.dcid,
|
||||
chan_info.our_l2cap_mtu,
|
||||
chan_info.peer_l2cap_mtu);
|
||||
|
||||
tx_stress_10_l2cap_send_req();
|
||||
}
|
||||
|
||||
+10
-8
@@ -2213,6 +2213,7 @@ static int
|
||||
btshell_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
{
|
||||
int accept_response;
|
||||
struct ble_l2cap_chan_info chan_info;
|
||||
|
||||
switch(event->type) {
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED:
|
||||
@@ -2221,14 +2222,15 @@ btshell_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
console_printf("LE COC connected, conn: %d, chan: 0x%08lx, scid: 0x%04x, "
|
||||
"dcid: 0x%04x, our_mtu: 0x%04x, peer_mtu: 0x%04x\n",
|
||||
event->connect.conn_handle,
|
||||
(uint32_t) event->connect.chan,
|
||||
ble_l2cap_get_scid(event->connect.chan),
|
||||
ble_l2cap_get_dcid(event->connect.chan),
|
||||
ble_l2cap_get_our_mtu(event->connect.chan),
|
||||
ble_l2cap_get_peer_mtu(event->connect.chan));
|
||||
if (ble_l2cap_get_chan_info(event->connect.chan, &chan_info)) {
|
||||
assert(0);
|
||||
}
|
||||
|
||||
console_printf("LE COC connected, conn: %d, chan: 0x%08lx, psm: 0x%02x, scid: 0x%04x, "
|
||||
"dcid: 0x%04x, our_mps: %d, our_mtu: %d, peer_mps: 0x%d, peer_mtu: %d\n",
|
||||
event->connect.conn_handle, (uint32_t) event->connect.chan,
|
||||
chan_info.psm, chan_info.scid, chan_info.dcid,
|
||||
chan_info.our_l2cap_mtu, chan_info.our_coc_mtu, chan_info.peer_l2cap_mtu, chan_info.peer_coc_mtu);
|
||||
|
||||
btshell_l2cap_coc_add(event->connect.conn_handle,
|
||||
event->connect.chan);
|
||||
|
||||
@@ -207,6 +207,8 @@ static int accept_cb(uint16_t conn_handle, uint16_t peer_mtu,
|
||||
static int
|
||||
tester_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
{
|
||||
struct ble_l2cap_chan_info chan_info;
|
||||
|
||||
switch (event->type) {
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED:
|
||||
if (event->connect.status) {
|
||||
@@ -216,14 +218,16 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ble_l2cap_get_chan_info(event->connect.chan, &chan_info);
|
||||
|
||||
console_printf("LE COC connected, conn: %d, chan: 0x%08lx, scid: 0x%04x, "
|
||||
"dcid: 0x%04x, our_mtu: 0x%04x, peer_mtu: 0x%04x\n",
|
||||
event->connect.conn_handle,
|
||||
(uint32_t) event->connect.chan,
|
||||
ble_l2cap_get_scid(event->connect.chan),
|
||||
ble_l2cap_get_dcid(event->connect.chan),
|
||||
ble_l2cap_get_our_mtu(event->connect.chan),
|
||||
ble_l2cap_get_peer_mtu(event->connect.chan));
|
||||
chan_info.scid,
|
||||
chan_info.dcid,
|
||||
chan_info.our_l2cap_mtu,
|
||||
chan_info.peer_l2cap_mtu);
|
||||
|
||||
connected_cb(event->connect.conn_handle,
|
||||
event->connect.chan, arg);
|
||||
|
||||
@@ -199,8 +199,19 @@ struct ble_l2cap_event {
|
||||
};
|
||||
};
|
||||
|
||||
struct ble_l2cap_chan_info {
|
||||
uint16_t scid;
|
||||
uint16_t dcid;
|
||||
uint16_t our_l2cap_mtu;
|
||||
uint16_t peer_l2cap_mtu;
|
||||
uint16_t psm;
|
||||
uint16_t our_coc_mtu;
|
||||
uint16_t peer_coc_mtu;
|
||||
};
|
||||
|
||||
typedef int ble_l2cap_event_fn(struct ble_l2cap_event *event, void *arg);
|
||||
|
||||
|
||||
uint16_t ble_l2cap_get_conn_handle(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_create_server(uint16_t psm, uint16_t mtu,
|
||||
ble_l2cap_event_fn *cb, void *cb_arg);
|
||||
@@ -211,10 +222,7 @@ int ble_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu,
|
||||
int ble_l2cap_disconnect(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx);
|
||||
int ble_l2cap_recv_ready(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_rx);
|
||||
int ble_l2cap_get_scid(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_get_dcid(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_get_our_mtu(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_get_peer_mtu(struct ble_l2cap_chan *chan);
|
||||
int ble_l2cap_get_chan_info(struct ble_l2cap_chan *chan, struct ble_l2cap_chan_info *chan_info);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -155,7 +155,30 @@ ble_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu,
|
||||
return ble_l2cap_sig_coc_connect(conn_handle, psm, mtu, sdu_rx, cb, cb_arg);
|
||||
}
|
||||
|
||||
int ble_l2cap_disconnect(struct ble_l2cap_chan *chan)
|
||||
int
|
||||
ble_l2cap_get_chan_info(struct ble_l2cap_chan *chan, struct ble_l2cap_chan_info *chan_info)
|
||||
{
|
||||
if (!chan || !chan_info) {
|
||||
return BLE_HS_EINVAL;
|
||||
}
|
||||
|
||||
memset(chan_info, 0, sizeof(*chan_info));
|
||||
chan_info->dcid = chan->dcid;
|
||||
chan_info->scid = chan->scid;
|
||||
chan_info->our_l2cap_mtu = chan->my_mtu;
|
||||
chan_info->peer_l2cap_mtu = chan->peer_mtu;
|
||||
|
||||
#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM)
|
||||
chan_info->psm = chan->psm;
|
||||
chan_info->our_coc_mtu = chan->coc_rx.mtu;
|
||||
chan_info->peer_coc_mtu = chan->coc_tx.mtu;
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_disconnect(struct ble_l2cap_chan *chan)
|
||||
{
|
||||
return ble_l2cap_sig_disconnect(chan);
|
||||
}
|
||||
|
||||
@@ -588,46 +588,6 @@ ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx)
|
||||
return ble_l2cap_coc_continue_tx(chan);
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_get_scid(struct ble_l2cap_chan *chan)
|
||||
{
|
||||
if (!chan) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return chan->scid;
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_get_dcid(struct ble_l2cap_chan *chan)
|
||||
{
|
||||
if (!chan) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return chan->dcid;
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_get_our_mtu(struct ble_l2cap_chan *chan)
|
||||
{
|
||||
if (!chan) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return chan->my_mtu;
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_get_peer_mtu(struct ble_l2cap_chan *chan)
|
||||
{
|
||||
if (!chan) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return chan->peer_mtu;
|
||||
}
|
||||
|
||||
int
|
||||
ble_l2cap_coc_init(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user