diff options
Diffstat (limited to 'stack')
-rw-r--r-- | stack/include/l2c_api.h | 8 | ||||
-rw-r--r-- | stack/l2cap/l2c_api.c | 13 |
2 files changed, 21 insertions, 0 deletions
diff --git a/stack/include/l2c_api.h b/stack/include/l2c_api.h index f2b8b3b0c..1aa90b302 100644 --- a/stack/include/l2c_api.h +++ b/stack/include/l2c_api.h @@ -24,6 +24,8 @@ #ifndef L2C_API_H #define L2C_API_H +#include <stdbool.h> + #include "bt_target.h" #include "l2cdefs.h" #include "hcidefs.h" @@ -515,6 +517,12 @@ extern BOOLEAN L2CA_Ping (BD_ADDR p_bd_addr, tL2CA_ECHO_RSP_CB *p_cb); *******************************************************************************/ extern BOOLEAN L2CA_Echo (BD_ADDR p_bd_addr, BT_HDR *p_data, tL2CA_ECHO_DATA_CB *p_callback); +// Given a local channel identifier, |lcid|, this function returns the bound remote +// channel identifier, |rcid|, and the ACL link handle, |handle|. If |lcid| is not +// known or is invalid, this function returns false and does not modify the values +// pointed at by |rcid| and |handle|. |rcid| and |handle| may be NULL. +bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle); + /******************************************************************************* ** ** Function L2CA_SetIdleTimeout diff --git a/stack/l2cap/l2c_api.c b/stack/l2cap/l2c_api.c index 36f42f56c..7b6da3321 100644 --- a/stack/l2cap/l2c_api.c +++ b/stack/l2cap/l2c_api.c @@ -710,6 +710,19 @@ BOOLEAN L2CA_Echo (BD_ADDR p_bd_addr, BT_HDR *p_data, tL2CA_ECHO_DATA_CB *p_cal } +bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle) { + tL2C_CCB *control_block = l2cu_find_ccb_by_cid(NULL, lcid); + if (!control_block) + return false; + + if (rcid) + *rcid = control_block->remote_cid; + if (handle) + *handle = control_block->p_lcb->handle; + + return true; +} + /******************************************************************************* ** ** Function L2CA_SetIdleTimeout |