RetroArch
Classes | Macros | Enumerations | Functions | Variables
l2cap.h File Reference
#include "bt.h"
#include "bd_addr.h"
Include dependency graph for l2cap.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  l2cap_hdr
 
struct  l2cap_sig_hdr
 
struct  l2cap_cfgopt_hdr
 
struct  l2cap_sig
 
struct  l2cap_cfg
 
struct  l2cap_seg
 
struct  l2cap_pcb
 
struct  l2cap_pcb_listen
 

Macros

#define HIDP_PSM   0x0011
 
#define INTR_PSM   0x0013
 
#define L2CAP_HDR_LEN   4
 
#define L2CAP_SIGHDR_LEN   4
 
#define L2CAP_CFGOPTHDR_LEN   2
 
#define L2CAP_CONN_REQ_SIZE   4
 
#define L2CAP_CONN_RSP_SIZE   8
 
#define L2CAP_CFG_RSP_SIZE   6
 
#define L2CAP_DISCONN_RSP_SIZE   4
 
#define L2CAP_CFG_REQ_SIZE   4
 
#define L2CAP_DISCONN_REQ_SIZE   4
 
#define L2CAP_CMD_REJ_SIZE   2
 
#define L2CAP_CMD_REJ   0x01
 
#define L2CAP_CONN_REQ   0x02
 
#define L2CAP_CONN_RSP   0x03
 
#define L2CAP_CFG_REQ   0x04
 
#define L2CAP_CFG_RSP   0x05
 
#define L2CAP_DISCONN_REQ   0x06
 
#define L2CAP_DISCONN_RSP   0x07
 
#define L2CAP_ECHO_REQ   0x08
 
#define L2CAP_ECHO_RSP   0x09
 
#define L2CAP_INFO_REQ   0x0A
 
#define L2CAP_INFO_RSP   0x0B
 
#define L2CAP_NULL_CID   0x0000
 
#define L2CAP_SIG_CID   0x0001
 
#define L2CAP_CONNLESS_CID   0x0002
 
#define L2CAP_MIN_CID   0x0040
 
#define L2CAP_MAX_CID   0xFFFF
 
#define L2CAP_CFG_MTU   0x01
 
#define L2CAP_FLUSHTO   0x02
 
#define L2CAP_QOS   0x03
 
#define L2CAP_MTU_LEN   2
 
#define L2CAP_FLUSHTO_LEN   2
 
#define L2CAP_QOS_LEN   22
 
#define L2CAP_CFG_SUCCESS   0x0000
 
#define L2CAP_CFG_UNACCEPT   0x0001
 
#define L2CAP_CFG_REJ   0x0002
 
#define L2CAP_CFG_UNKNOWN   0x0003
 
#define L2CAP_CFG_TIMEOUT   0xEEEE
 
#define L2CAP_QOS_NO_TRAFFIC   0x00
 
#define L2CAP_QOS_BEST_EFFORT   0x01
 
#define L2CAP_QOS_GUARANTEED   0x02
 
#define L2CAP_CMD_NOT_UNDERSTOOD   0x0000
 
#define L2CAP_MTU_EXCEEDED   0x0001
 
#define L2CAP_INVALID_CID   0x0002
 
#define L2CAP_CONN_SUCCESS   0x0000
 
#define L2CAP_CONN_PND   0x0001
 
#define L2CAP_CONN_REF_PSM   0x0002
 
#define L2CAP_CONN_REF_SEC   0x0003
 
#define L2CAP_CONN_REF_RES   0x0004
 
#define L2CAP_CONN_CFG_TO   0x0005 /* Implementation specific result */
 
#define L2CAP_ECHO_RCVD   0x00
 
#define L2CAP_ECHO_TO   0x01
 
#define L2CAP_ACL_START   0x02
 
#define L2CAP_ACL_CONT   0x01
 
#define L2CAP_CFG_DEFAULT_INMTU
 
#define L2CAP_CFG_DEFAULT_OUTFLUSHTO   0xFFFF
 
#define L2CAP_CFG_IR   0x01
 
#define L2CAP_CFG_IN_SUCCESS   0x02
 
#define L2CAP_CFG_OUT_SUCCESS   0x04
 
#define L2CAP_CFG_OUT_REQ   0x08
 
#define l2cap_psm(pcb)   ((pcb)->psm)
 
#define L2CA_ACTION_CONN_CFM(pcb, result, status, ret)   if((pcb)->l2ca_connect_cfm != NULL) (ret = (pcb)->l2ca_connect_cfm((pcb)->callback_arg,(pcb),(result),(status)))
 
#define L2CA_ACTION_DISCONN_CFM(pcb, ret)   if((pcb)->l2ca_disconnect_cfm != NULL) (ret = (pcb)->l2ca_disconnect_cfm((pcb)->callback_arg,(pcb)))
 
#define L2CA_ACTION_PING_CFM(pcb, result, ret)   if((pcb)->l2ca_pong != NULL) (ret = (pcb)->l2ca_pong((pcb)->callback_arg,(pcb),(result)))
 
#define L2CA_ACTION_CONN_IND(pcb, err, ret)   if((pcb)->l2ca_connect_ind != NULL) (ret = (pcb)->l2ca_connect_ind((pcb)->callback_arg,(pcb),(err)))
 
#define L2CA_ACTION_DISCONN_IND(pcb, err, ret)
 
#define L2CA_ACTION_TO_IND(pcb, err, ret)   if((pcb)->l2ca_timeout_ind != NULL) (ret = (pcb)->l2ca_timeout_ind((pcb)->callback_arg,(pcb),(err)))
 
#define L2CA_ACTION_RECV(pcb, p, err, ret)
 
#define L2CAP_OPTH_TYPE(hdr)   (((hdr)->type) & 0x7f)
 
#define L2CAP_OPTH_TOA(hdr)   (((hdr)->type) >> 7)
 
#define L2CAP_REG(pcbs, npcb)
 
#define L2CAP_RMV(pcbs, npcb)
 
#define L2CAP_SIG_REG(ursp_sigs, nsig)
 
#define L2CAP_SIG_RMV(ursp_sigs, nsig)
 
#define L2CAP_SEG_REG(segs, nseg)
 
#define L2CAP_SEG_RMV(segs, nseg)
 

Enumerations

enum  l2cap_state {
  L2CAP_CLOSED, L2CAP_LISTEN, W4_L2CAP_CONNECT_RSP, W4_L2CA_CONNECT_RSP,
  L2CAP_CONFIG, L2CAP_OPEN, W4_L2CAP_DISCONNECT_RSP, W4_L2CA_DISCONNECT_RSP
}
 

Functions

void l2cap_init ()
 
struct l2cap_pcbl2cap_new (void)
 
void lp_connect_ind (struct bd_addr *bdaddr)
 
void lp_connect_cfm (struct bd_addr *bdaddr, u8_t encrypt_mode, err_t err)
 
void lp_disconnect_ind (struct bd_addr *bdaddr, u8_t reason)
 
err_t l2ca_config_req (struct l2cap_pcb *pcb)
 
err_t l2ca_disconnect_req (struct l2cap_pcb *pcb, err_t(*l2ca_disconnect_cfm)(void *arg, struct l2cap_pcb *pcb))
 
err_t l2ca_datawrite (struct l2cap_pcb *pcb, struct pbuf *p)
 
err_t l2ca_ping (struct bd_addr *bdaddr, struct l2cap_pcb *tpcb, err_t(*l2ca_pong)(void *arg, struct l2cap_pcb *pcb, u8_t result))
 
err_t l2ca_connect_req (struct l2cap_pcb *pcb, struct bd_addr *bdaddr, u16_t psm, u8_t role_switch, err_t(*l2ca_connect_cfm)(void *arg, struct l2cap_pcb *lpcb, u16_t result, u16_t status))
 
void l2cap_tmr ()
 
void l2cap_input (struct pbuf *p, struct bd_addr *bdaddr)
 
err_t l2cap_close (struct l2cap_pcb *pcb)
 
void l2cap_reset_all (void)
 
u8_t l2cap_next_sigid (void)
 
err_t l2cap_write (struct bd_addr *bdaddr, struct pbuf *p, u16_t len)
 
void l2cap_arg (struct l2cap_pcb *pcb, void *arg)
 
void l2cap_disconnect_ind (struct l2cap_pcb *pcb, err_t(*l2ca_disconnect_ind)(void *arg, struct l2cap_pcb *newpcb, err_t err))
 
void l2cap_timeout_ind (struct l2cap_pcb *pcb, err_t(*l2ca_timeout_ind)(void *arg, struct l2cap_pcb *newpcb, err_t err))
 
void l2cap_recv (struct l2cap_pcb *pcb, err_t(*l2ca_recv)(void *arg, struct l2cap_pcb *pcb, struct pbuf *p, err_t err))
 
err_t l2cap_signal (struct l2cap_pcb *pcb, u8_t code, u16_t ursp_id, struct bd_addr *remote_bdaddr, struct pbuf *data)
 
void l2cap_process_sig (struct pbuf *q, struct l2cap_hdr *l2caphdr, struct bd_addr *bdaddr)
 
err_t l2cap_rexmit_signal (struct l2cap_pcb *pcb, struct l2cap_sig *sig)
 
err_t l2cap_connect_ind (struct l2cap_pcb *npcb, struct bd_addr *bdaddr, u16_t psm, err_t(*l2ca_connect_ind)(void *arg, struct l2cap_pcb *pcb, err_t err))
 

Variables

struct l2cap_hdr ATTRIBUTE_PACKED
 
void(*)(struct bd_addr *bdaddr, u8_t reason) l2cap_disconnect_bb (void(*l2ca_disconnect_bb)(struct bd_addr *bdaddr, u8_t reason))
 
struct l2cap_pcb_listenl2cap_listen_pcbs
 
struct l2cap_pcbl2cap_active_pcbs
 
struct l2cap_pcbl2cap_tmp_pcb
 
struct l2cap_sigl2cap_tmp_sig
 
struct l2cap_segl2cap_tmp_inseg
 

Macro Definition Documentation

◆ HIDP_PSM

#define HIDP_PSM   0x0011

◆ INTR_PSM

#define INTR_PSM   0x0013

◆ L2CA_ACTION_CONN_CFM

#define L2CA_ACTION_CONN_CFM (   pcb,
  result,
  status,
  ret 
)    if((pcb)->l2ca_connect_cfm != NULL) (ret = (pcb)->l2ca_connect_cfm((pcb)->callback_arg,(pcb),(result),(status)))

◆ L2CA_ACTION_CONN_IND

#define L2CA_ACTION_CONN_IND (   pcb,
  err,
  ret 
)    if((pcb)->l2ca_connect_ind != NULL) (ret = (pcb)->l2ca_connect_ind((pcb)->callback_arg,(pcb),(err)))

◆ L2CA_ACTION_DISCONN_CFM

#define L2CA_ACTION_DISCONN_CFM (   pcb,
  ret 
)    if((pcb)->l2ca_disconnect_cfm != NULL) (ret = (pcb)->l2ca_disconnect_cfm((pcb)->callback_arg,(pcb)))

◆ L2CA_ACTION_DISCONN_IND

#define L2CA_ACTION_DISCONN_IND (   pcb,
  err,
  ret 
)
Value:
if((pcb)->l2ca_disconnect_ind != NULL) { \
LOG("l2cap_disconnect_ind called\n"); \
(ret = (pcb)->l2ca_disconnect_ind((pcb)->callback_arg,(pcb),(err))); \
} else { \
l2cap_close(pcb); \
}
#define NULL
Pointer to 0.
Definition: gctypes.h:65

◆ L2CA_ACTION_PING_CFM

#define L2CA_ACTION_PING_CFM (   pcb,
  result,
  ret 
)    if((pcb)->l2ca_pong != NULL) (ret = (pcb)->l2ca_pong((pcb)->callback_arg,(pcb),(result)))

◆ L2CA_ACTION_RECV

#define L2CA_ACTION_RECV (   pcb,
  p,
  err,
  ret 
)
Value:
if((pcb)->l2ca_recv != NULL) { \
(ret = (pcb)->l2ca_recv((pcb)->callback_arg,(pcb),(p),(err))); \
} else { \
btpbuf_free(p); \
}
#define NULL
Pointer to 0.
Definition: gctypes.h:65
GLfloat GLfloat p
Definition: glext.h:9809

◆ L2CA_ACTION_TO_IND

#define L2CA_ACTION_TO_IND (   pcb,
  err,
  ret 
)    if((pcb)->l2ca_timeout_ind != NULL) (ret = (pcb)->l2ca_timeout_ind((pcb)->callback_arg,(pcb),(err)))

◆ L2CAP_ACL_CONT

#define L2CAP_ACL_CONT   0x01

◆ L2CAP_ACL_START

#define L2CAP_ACL_START   0x02

◆ L2CAP_CFG_DEFAULT_INMTU

#define L2CAP_CFG_DEFAULT_INMTU
Value:
672 /* Two Baseband DH5 packets (2*341=682) minus the Baseband ACL
headers (2*2=4) and L2CAP header (6) */

◆ L2CAP_CFG_DEFAULT_OUTFLUSHTO

#define L2CAP_CFG_DEFAULT_OUTFLUSHTO   0xFFFF

◆ L2CAP_CFG_IN_SUCCESS

#define L2CAP_CFG_IN_SUCCESS   0x02

◆ L2CAP_CFG_IR

#define L2CAP_CFG_IR   0x01

◆ L2CAP_CFG_MTU

#define L2CAP_CFG_MTU   0x01

◆ L2CAP_CFG_OUT_REQ

#define L2CAP_CFG_OUT_REQ   0x08

◆ L2CAP_CFG_OUT_SUCCESS

#define L2CAP_CFG_OUT_SUCCESS   0x04

◆ L2CAP_CFG_REJ

#define L2CAP_CFG_REJ   0x0002

◆ L2CAP_CFG_REQ

#define L2CAP_CFG_REQ   0x04

◆ L2CAP_CFG_REQ_SIZE

#define L2CAP_CFG_REQ_SIZE   4

◆ L2CAP_CFG_RSP

#define L2CAP_CFG_RSP   0x05

◆ L2CAP_CFG_RSP_SIZE

#define L2CAP_CFG_RSP_SIZE   6

◆ L2CAP_CFG_SUCCESS

#define L2CAP_CFG_SUCCESS   0x0000

◆ L2CAP_CFG_TIMEOUT

#define L2CAP_CFG_TIMEOUT   0xEEEE

◆ L2CAP_CFG_UNACCEPT

#define L2CAP_CFG_UNACCEPT   0x0001

◆ L2CAP_CFG_UNKNOWN

#define L2CAP_CFG_UNKNOWN   0x0003

◆ L2CAP_CFGOPTHDR_LEN

#define L2CAP_CFGOPTHDR_LEN   2

◆ L2CAP_CMD_NOT_UNDERSTOOD

#define L2CAP_CMD_NOT_UNDERSTOOD   0x0000

◆ L2CAP_CMD_REJ

#define L2CAP_CMD_REJ   0x01

◆ L2CAP_CMD_REJ_SIZE

#define L2CAP_CMD_REJ_SIZE   2

◆ L2CAP_CONN_CFG_TO

#define L2CAP_CONN_CFG_TO   0x0005 /* Implementation specific result */

◆ L2CAP_CONN_PND

#define L2CAP_CONN_PND   0x0001

◆ L2CAP_CONN_REF_PSM

#define L2CAP_CONN_REF_PSM   0x0002

◆ L2CAP_CONN_REF_RES

#define L2CAP_CONN_REF_RES   0x0004

◆ L2CAP_CONN_REF_SEC

#define L2CAP_CONN_REF_SEC   0x0003

◆ L2CAP_CONN_REQ

#define L2CAP_CONN_REQ   0x02

◆ L2CAP_CONN_REQ_SIZE

#define L2CAP_CONN_REQ_SIZE   4

◆ L2CAP_CONN_RSP

#define L2CAP_CONN_RSP   0x03

◆ L2CAP_CONN_RSP_SIZE

#define L2CAP_CONN_RSP_SIZE   8

◆ L2CAP_CONN_SUCCESS

#define L2CAP_CONN_SUCCESS   0x0000

◆ L2CAP_CONNLESS_CID

#define L2CAP_CONNLESS_CID   0x0002

◆ L2CAP_DISCONN_REQ

#define L2CAP_DISCONN_REQ   0x06

◆ L2CAP_DISCONN_REQ_SIZE

#define L2CAP_DISCONN_REQ_SIZE   4

◆ L2CAP_DISCONN_RSP

#define L2CAP_DISCONN_RSP   0x07

◆ L2CAP_DISCONN_RSP_SIZE

#define L2CAP_DISCONN_RSP_SIZE   4

◆ L2CAP_ECHO_RCVD

#define L2CAP_ECHO_RCVD   0x00

◆ L2CAP_ECHO_REQ

#define L2CAP_ECHO_REQ   0x08

◆ L2CAP_ECHO_RSP

#define L2CAP_ECHO_RSP   0x09

◆ L2CAP_ECHO_TO

#define L2CAP_ECHO_TO   0x01

◆ L2CAP_FLUSHTO

#define L2CAP_FLUSHTO   0x02

◆ L2CAP_FLUSHTO_LEN

#define L2CAP_FLUSHTO_LEN   2

◆ L2CAP_HDR_LEN

#define L2CAP_HDR_LEN   4

◆ L2CAP_INFO_REQ

#define L2CAP_INFO_REQ   0x0A

◆ L2CAP_INFO_RSP

#define L2CAP_INFO_RSP   0x0B

◆ L2CAP_INVALID_CID

#define L2CAP_INVALID_CID   0x0002

◆ L2CAP_MAX_CID

#define L2CAP_MAX_CID   0xFFFF

◆ L2CAP_MIN_CID

#define L2CAP_MIN_CID   0x0040

◆ L2CAP_MTU_EXCEEDED

#define L2CAP_MTU_EXCEEDED   0x0001

◆ L2CAP_MTU_LEN

#define L2CAP_MTU_LEN   2

◆ L2CAP_NULL_CID

#define L2CAP_NULL_CID   0x0000

◆ L2CAP_OPTH_TOA

#define L2CAP_OPTH_TOA (   hdr)    (((hdr)->type) >> 7)

◆ L2CAP_OPTH_TYPE

#define L2CAP_OPTH_TYPE (   hdr)    (((hdr)->type) & 0x7f)

◆ l2cap_psm

#define l2cap_psm (   pcb)    ((pcb)->psm)

◆ L2CAP_QOS

#define L2CAP_QOS   0x03

◆ L2CAP_QOS_BEST_EFFORT

#define L2CAP_QOS_BEST_EFFORT   0x01

◆ L2CAP_QOS_GUARANTEED

#define L2CAP_QOS_GUARANTEED   0x02

◆ L2CAP_QOS_LEN

#define L2CAP_QOS_LEN   22

◆ L2CAP_QOS_NO_TRAFFIC

#define L2CAP_QOS_NO_TRAFFIC   0x00

◆ L2CAP_REG

#define L2CAP_REG (   pcbs,
  npcb 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
npcb->next = *pcbs; \
*pcbs = npcb; \
_CPU_ISR_Restore(level); \
} while(0)
GLint level
Definition: glext.h:6293

◆ L2CAP_RMV

#define L2CAP_RMV (   pcbs,
  npcb 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
if(*pcbs == npcb) { \
*pcbs = (*pcbs)->next; \
if(l2cap_tmp_pcb->next != NULL && l2cap_tmp_pcb->next == npcb) { \
l2cap_tmp_pcb->next = npcb->next; \
break; \
} \
} \
npcb->next = NULL; \
_CPU_ISR_Restore(level); \
} while(0)
struct l2cap_pcb * l2cap_tmp_pcb
Definition: l2cap.c:22
#define NULL
Pointer to 0.
Definition: gctypes.h:65
GLint level
Definition: glext.h:6293
struct l2cap_pcb * next
Definition: l2cap.h:162

◆ L2CAP_SEG_REG

#define L2CAP_SEG_REG (   segs,
  nseg 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
nseg->next = *segs; \
*segs = nseg; \
_CPU_ISR_Restore(level); \
} while(0)
GLint level
Definition: glext.h:6293

◆ L2CAP_SEG_RMV

#define L2CAP_SEG_RMV (   segs,
  nseg 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
if(*segs == nseg) { \
*segs = (*segs)->next; \
if(l2cap_tmp_inseg->next != NULL && l2cap_tmp_inseg->next == nseg) { \
l2cap_tmp_inseg->next = nseg->next; \
break; \
} \
} \
nseg->next = NULL; \
_CPU_ISR_Restore(level); \
} while(0)
struct l2cap_seg * next
Definition: l2cap.h:153
#define NULL
Pointer to 0.
Definition: gctypes.h:65
struct l2cap_seg * l2cap_tmp_inseg
Definition: l2cap.c:29
GLint level
Definition: glext.h:6293

◆ L2CAP_SIG_CID

#define L2CAP_SIG_CID   0x0001

◆ L2CAP_SIG_REG

#define L2CAP_SIG_REG (   ursp_sigs,
  nsig 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
nsig->next = *ursp_sigs; \
*ursp_sigs = nsig; \
_CPU_ISR_Restore(level); \
} while(0)
GLint level
Definition: glext.h:6293

◆ L2CAP_SIG_RMV

#define L2CAP_SIG_RMV (   ursp_sigs,
  nsig 
)
Value:
do { \
u32 level; \
_CPU_ISR_Disable(level); \
if(*ursp_sigs == nsig) { \
*ursp_sigs = (*ursp_sigs)->next; \
} else for(l2cap_tmp_sig = *ursp_sigs; l2cap_tmp_sig != NULL; l2cap_tmp_sig = l2cap_tmp_sig->next) { \
if(l2cap_tmp_sig->next != NULL && l2cap_tmp_sig->next == nsig) { \
l2cap_tmp_sig->next = nsig->next; \
break; \
} \
} \
nsig->next = NULL; \
_CPU_ISR_Restore(level); \
} while(0)
struct l2cap_sig * l2cap_tmp_sig
Definition: l2cap.c:25
#define NULL
Pointer to 0.
Definition: gctypes.h:65
GLint level
Definition: glext.h:6293
struct l2cap_sig * next
Definition: l2cap.h:129

◆ L2CAP_SIGHDR_LEN

#define L2CAP_SIGHDR_LEN   4

Enumeration Type Documentation

◆ l2cap_state

Enumerator
L2CAP_CLOSED 
L2CAP_LISTEN 
W4_L2CAP_CONNECT_RSP 
W4_L2CA_CONNECT_RSP 
L2CAP_CONFIG 
L2CAP_OPEN 
W4_L2CAP_DISCONNECT_RSP 
W4_L2CA_DISCONNECT_RSP 

Function Documentation

◆ l2ca_config_req()

err_t l2ca_config_req ( struct l2cap_pcb pcb)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2ca_connect_req()

err_t l2ca_connect_req ( struct l2cap_pcb pcb,
struct bd_addr bdaddr,
u16_t  psm,
u8_t  role_switch,
err_t(*)(void *arg, struct l2cap_pcb *lpcb, u16_t result, u16_t status)  l2ca_connect_cfm 
)
Here is the call graph for this function:

◆ l2ca_datawrite()

err_t l2ca_datawrite ( struct l2cap_pcb pcb,
struct pbuf p 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2ca_disconnect_req()

err_t l2ca_disconnect_req ( struct l2cap_pcb pcb,
err_t(*)(void *arg, struct l2cap_pcb *pcb)  l2ca_disconnect_cfm 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2ca_ping()

err_t l2ca_ping ( struct bd_addr bdaddr,
struct l2cap_pcb tpcb,
err_t(*)(void *arg, struct l2cap_pcb *pcb, u8_t result l2ca_pong 
)
Here is the call graph for this function:

◆ l2cap_arg()

void l2cap_arg ( struct l2cap_pcb pcb,
void arg 
)
Here is the caller graph for this function:

◆ l2cap_close()

err_t l2cap_close ( struct l2cap_pcb pcb)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_connect_ind()

err_t l2cap_connect_ind ( struct l2cap_pcb npcb,
struct bd_addr bdaddr,
u16_t  psm,
err_t(*)(void *arg, struct l2cap_pcb *pcb, err_t err)  l2ca_connect_ind 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_disconnect_ind()

void l2cap_disconnect_ind ( struct l2cap_pcb pcb,
err_t(*)(void *arg, struct l2cap_pcb *newpcb, err_t err)  l2ca_disconnect_ind 
)
Here is the caller graph for this function:

◆ l2cap_init()

void l2cap_init ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_input()

void l2cap_input ( struct pbuf p,
struct bd_addr bdaddr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_new()

struct l2cap_pcb* l2cap_new ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_next_sigid()

u8_t l2cap_next_sigid ( void  )
Here is the caller graph for this function:

◆ l2cap_process_sig()

void l2cap_process_sig ( struct pbuf q,
struct l2cap_hdr l2caphdr,
struct bd_addr bdaddr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_recv()

void l2cap_recv ( struct l2cap_pcb pcb,
err_t(*)(void *arg, struct l2cap_pcb *pcb, struct pbuf *p, err_t err)  l2ca_recv 
)
Here is the caller graph for this function:

◆ l2cap_reset_all()

void l2cap_reset_all ( void  )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_rexmit_signal()

err_t l2cap_rexmit_signal ( struct l2cap_pcb pcb,
struct l2cap_sig sig 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_signal()

err_t l2cap_signal ( struct l2cap_pcb pcb,
u8_t  code,
u16_t  ursp_id,
struct bd_addr remote_bdaddr,
struct pbuf data 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_timeout_ind()

void l2cap_timeout_ind ( struct l2cap_pcb pcb,
err_t(*)(void *arg, struct l2cap_pcb *newpcb, err_t err)  l2ca_timeout_ind 
)

◆ l2cap_tmr()

void l2cap_tmr ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ l2cap_write()

err_t l2cap_write ( struct bd_addr bdaddr,
struct pbuf p,
u16_t  len 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ lp_connect_cfm()

void lp_connect_cfm ( struct bd_addr bdaddr,
u8_t  encrypt_mode,
err_t  err 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ lp_connect_ind()

void lp_connect_ind ( struct bd_addr bdaddr)
Here is the caller graph for this function:

◆ lp_disconnect_ind()

void lp_disconnect_ind ( struct bd_addr bdaddr,
u8_t  reason 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ ATTRIBUTE_PACKED

struct l2cap_cfgopt_hdr ATTRIBUTE_PACKED

◆ l2cap_active_pcbs

struct l2cap_pcb* l2cap_active_pcbs

◆ l2cap_disconnect_bb

void(*)(struct bd_addr *bdaddr, u8_t reason) l2cap_disconnect_bb(void(*l2ca_disconnect_bb)(struct bd_addr *bdaddr, u8_t reason))

◆ l2cap_listen_pcbs

struct l2cap_pcb_listen* l2cap_listen_pcbs

◆ l2cap_tmp_inseg

struct l2cap_seg* l2cap_tmp_inseg

◆ l2cap_tmp_pcb

struct l2cap_pcb* l2cap_tmp_pcb

◆ l2cap_tmp_sig

struct l2cap_sig* l2cap_tmp_sig