TI BLE Stack API Documentation  2.03.06
l2cap.h
1 /******************************************************************************
2 
3  @file l2cap.h
4 
5  @brief This file contains the Logical Link Control and Adaptation
6  Layer (L2CAP) definitions and prototypes.
7 
8  <BR><BR> \image html
9  HighLevelL2CAP.PNG
10 
11  <BR> <h2>Functional
12  Description</h2> <p>The
13  Logical Link Control and Adaptation Layer (L2CAP) protocol provides
14  connection-oriented and connectionless data services to upper layer
15  protocols with protocol multiplexing capability and segmentation and
16  reassembly operation. The L2CAP protocol is packet-based but follows a
17  communication model based on channels. A channel represents a data flow
18  between L2CAP entities in remote devices.</p>
19 
20  <BR> <h2>L2CAP
21  Services</h2> <p>The
22  L2CAP layer provides the following services to upper level protocols
23  and applications:</p> <ul <ul <ul <ul <ul <ul <ul <ul <ul <ul <ul <ul
24  <ul> <li>Fixed and connection-oriented channels with protocol
25  multiplexing capability:</li> <ul <ul <ul <ul <ul <ul <ul <ul <ul <ul
26  <ul> <li>Attribute
27  Protocol (ATT) channel (0x0004).</li> <li>Signaling channel
28  (0x0005).</li> <li>Security
29  Management Protocol (SMP) channel (0x0006).</li>
30  <li>Connection-oriented channels (0x0040-0x007F).</li> </ul </ul </ul
31  </ul> <li>Data transport services allowing upper level protocols and
32  applications to transmit and receive upper layer
33  Service Data Units (SDUs) up to:</li> <ul <ul <ul <ul <ul <ul <ul <ul
34  <ul> <li>23 octets in length over a fixed channel. With
35  HCI fragmentation and recombination operation enabled, applications can
36  transmit and receive larger
37  SDUs.</li> <li>512 octets in length over a connection-oriented channel
38  with segmentation and reassembly operation.</li operation.</li
39  operation.</li> </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul
40  </ul> </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul </ul
41  </ul>
42 
43  <BR><BR><BR><BR>
44 
45  Group: WCS, BTS
46  $Target Device: DEVICES $
47 
48  ******************************************************************************
49  $License: TISD 2009 $
50  ******************************************************************************
51  $Release Name: PACKAGE NAME $
52  $Release Date: PACKAGE RELEASE DATE $
53  *****************************************************************************/
54 
55 #ifndef L2CAP_H
56 #define L2CAP_H
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
63 /*********************************************************************
64  * INCLUDES
65  */
66 #include "bcomdef.h"
67 #include "osal.h"
68 
69 /*********************************************************************
70  * CONSTANTS
71  */
72 
77 #define L2CAP_MTU_SIZE 23
78 
79 
85 #define L2CAP_SDU_SIZE 512
86 
87 
93 #define L2CAP_NUM_PSM_DEFAULT 3
94 
95 
101 #define L2CAP_NUM_CO_CHANNELS_DEFAULT 3
102 
103 
105 // Minimum supported information payload for the Control frame (C-frame)
106 #define L2CAP_SIG_MTU_SIZE 23
107 
108 // Basic L2CAP header: Length (2 bytes) + Channel ID (2 bytes)
109 #define L2CAP_HDR_SIZE 4
110 
111 // Minimum size of PDU received from lower layer protocol (incoming
112 // packet), or delivered to lower layer protocol (outgoing packet).
113 #define L2CAP_PDU_SIZE ( L2CAP_HDR_SIZE + L2CAP_MTU_SIZE )
114 
115 // SDU Length field size
116 #define L2CAP_LEN_FIELD_SIZE 2
117 
118 // LE Protocol/Service Multiplexer values. LE PSM values are separated into
119 // two ranges. Values in the first range are assigned by the Bluetooth SIG
120 // and indicate protocols. Values in the second range are dynamically
121 // allocated and used in conjunction with services defined in the GATT server.
122 #define L2CAP_INVALID_PSM 0x0000
123 
124 // Fixed LE PSM values (assigned by Bluetooth SIG and indicate protocols)
125 #define L2CAP_FIXED_PSM_MIN 0x0001
126 #define L2CAP_FIXED_PSM_MAX 0x007F
127 
128 // Dynamic LE PSM values (dynamically allocated and used in conjunction with GATT services)
129 #define L2CAP_DYNAMIC_PSM_MIN 0x0080
130 #define L2CAP_DYNAMIC_PSM_MAX 0x00FF
131 
132 // L2CAP Channel Identifiers. Identifiers from 0x0001 to 0x003F are
133 // reserved for specific L2CAP functions. Identifiers 0x0001-0x0003
134 // are reserved by BR/EDR.
135 #define L2CAP_CID_NULL 0x0000 // Illegal Identifier
136 
137 // L2CAP Fixed Channel Identifiers
138 #define L2CAP_CID_ATT 0x0004 // Attribute Protocol
139 #define L2CAP_CID_SIG 0x0005 // L2CAP Signaling
140 #define L2CAP_CID_SMP 0x0006 // Security Management Protocol
141 #define L2CAP_CID_GENERIC 0x0007 // Generic (proprietary channel)
142 
143 // L2CAP Dynamic Channel Identifiers
144 #define L2CAP_DYNAMIC_CID_MIN 0x0040
145 #define L2CAP_DYNAMIC_CID_MAX 0x007F
146 
147 // Number of Fixed channels: one for each of ATT, Signaling, SMP and Generic channels
148 #define L2CAP_NUM_FIXED_CHANNELS 4
149 
150 // Number of Signaling Commands: one for Connection Parameter Update Request
151 #define L2CAP_NUM_SIG_COMMANDS 1
152 
153 // L2CAP Response Timeout expired (RTX) value for Signaling commands (in seconds).
154 // The RTX timer is used for response timeout or to terminate a dynamic channel
155 // when the remote device is unresponsive to signaling requests. Its value may
156 // range from 1 to 60 seconds.
157 #define L2CAP_RTX_TIMEOUT 30
158 
163 #define L2CAP_CMD_REJECT 0x01
164 #define L2CAP_DISCONNECT_REQ 0x06
165 #define L2CAP_DISCONNECT_RSP 0x07
166 #define L2CAP_INFO_REQ 0x0a
167 #define L2CAP_INFO_RSP 0x0b
168 #define L2CAP_PARAM_UPDATE_REQ 0x12
169 #define L2CAP_PARAM_UPDATE_RSP 0x13
170 #define L2CAP_CONNECT_REQ 0x14
171 #define L2CAP_CONNECT_RSP 0x15
172 #define L2CAP_FLOW_CTRL_CREDIT 0x16
173 
174 
180 #define L2CAP_CHANNEL_ESTABLISHED_EVT 0x60
181 #define L2CAP_CHANNEL_TERMINATED_EVT 0x61
182 #define L2CAP_OUT_OF_CREDIT_EVT 0x62
183 #define L2CAP_PEER_CREDIT_THRESHOLD_EVT 0x63
184 #define L2CAP_SEND_SDU_DONE_EVT 0x64
185 #define L2CAP_NUM_CTRL_DATA_PKT_EVT 0x65
186 
187 
193 #define L2CAP_REJECT_CMD_NOT_UNDERSTOOD 0x0000
194 #define L2CAP_REJECT_SIGNAL_MTU_EXCEED 0x0001
195 #define L2CAP_REJECT_INVALID_CID 0x0002
196 
197 
203 #define L2CAP_CONN_SUCCESS 0x0000
204 #define L2CAP_CONN_PSM_NOT_SUPPORTED 0x0002
205 #define L2CAP_CONN_NO_RESOURCES 0x0004
206 #define L2CAP_CONN_INSUFFICIENT_AUTHEN 0x0005
207 #define L2CAP_CONN_INSUFFICIENT_AUTHOR 0x0006
208 #define L2CAP_CONN_INSUFFICIENT_KEY_SIZE 0x0007
209 #define L2CAP_CONN_INSUFFICIENT_ENCRYPT 0x0008
210 
211 #define L2CAP_CONN_PENDING_SEC_VERIFY 0xFFFF
212 
213 
219 #define L2CAP_CONN_PARAMS_ACCEPTED 0x0000
220 #define L2CAP_CONN_PARAMS_REJECTED 0x0001
221 
222 
228 #define L2CAP_TERM_LINK_DOWN 0x0000
229 #define L2CAP_TERM_BY_PSM 0x0001
230 #define L2CAP_TERM_BY_PEER_PSM 0x0002
231 #define L2CAP_TERM_MAX_CREDIT_EXCEED 0x0003
232 #define L2CAP_TERM_SDU_LEN_EXCEED 0x0004
233 #define L2CAP_TERM_PSM_MTU_EXCEED 0x0005
234 #define L2CAP_TERM_RX_PKT_NO_CREDIT 0x0006
235 #define L2CAP_TERM_RX_ERROR 0x0007
236 #define L2CAP_TERM_TX_ERROR 0x0008
237 #define L2CAP_TERM_MEM_ALLOC_ERROR 0x0009
238 
239 
245 #define L2CAP_CLOSED 0x00
246 #define L2CAP_OPEN 0x01
247 #define L2CAP_PENDING_CONN_RSP 0x02
248 #define L2CAP_PENDING_DISCONN_RSP 0x03
249 #define L2CAP_PENDING_PARAM_UPDATE_RSP 0x04
250 #define L2CAP_PENDING_INFO_RSP 0x05
251 #define L2CAP_PENDING_SEC_VERIFY 0x06
252 
253 
259 #define L2CAP_INFO_CONNLESS_MTU 0x0001
260 #define L2CAP_INFO_EXTENDED_FEATURES 0x0002
261 #define L2CAP_INFO_FIXED_CHANNELS 0x0003
262 
263 
265 /*********************************************************************
266  * Information Response: Extended Features Mask Values
267  */
268  // Fixed channels are supported
269 #define L2CAP_FIXED_CHANNELS 0x00000080
270 
271  // Length of Extended Features bit mask
272 #define L2CAP_EXTENDED_FEATURES_SIZE 4
273 
274 /*********************************************************************
275  * Information Response: Fixed Channels Mask Values
276  */
277  // Fixed Channel ATT is supported
278 #define L2CAP_FIXED_CHANNELS_ATT 0x10
279 
280  // Fixed Channel L2CAP Signaling is supported
281 #define L2CAP_FIXED_CHANNELS_SIG 0x20
282 
283  // Fixed Channel SMP is supported
284 #define L2CAP_FIXED_CHANNELS_SMP 0x40
285 
286  // Length of Fixed Channels bit mask
287 #define L2CAP_FIXED_CHANNELS_SIZE 8
288 
289 /*********************************************************************
290  * Information Response: Result Values
291  */
292  // Success
293 #define L2CAP_INFO_SUCCESS 0x0000
294 
295  // Not supported
296 #define L2CAP_INFO_NOT_SUPPORTED 0x0001
297 
298 /*********************************************************************
299  * L2CAP Test Modes: Test code values
300  */
301 #if defined ( TESTMODES )
302  // Test modes 0 through 8 are reserved for L2CAP Connection Request.
303  #define L2CAP_TESTMODE_OFF 0 // Test mode off
304  #define L2CAP_TESTMODE_PSM_NOT_SUPPORTED 2 // Refuse connection - LE_PSM not supported
305  #define L2CAP_TESTMODE_NO_RESOURCES 4 // Refuse connection - no resources available
306  #define L2CAP_TESTMODE_INSUFF_AUTHEN 5 // Refuse connection - insufficient authentication
307  #define L2CAP_TESTMODE_INSUFF_AUTHOR 6 // Refuse connection - insufficient authorization
308  #define L2CAP_TESTMODE_INSUFF_KEY_SIZE 7 // Refuse connection - insufficient encryption key size
309  #define L2CAP_TESTMODE_INSUFF_ENCRYPT 8 // Refuse connection - insufficient encryption
310  #define L2CAP_TESTMODE_OUT_OF_RANGE_CREDITS 9 // Allow out of range credits to be sent (0 or exceeding 65535)
311  #define L2CAP_TESTMODE_SDU_LEN_EXCEED 10 // Send SDU larger than SDU length specified in first LE-frame of SDU
312  #define L2CAP_TESTMODE_TX_PKT_NO_CREDIT 11 // Send LE-frame when local device has a credit count of zero
313  #define L2CAP_TESTMODE_BLOCK_DATA_TX 12 // Block data packet transmission
314 #endif
315 
316 /*********************************************************************
317  * MACROS
318  */
319 
320 /*********************************************************************
321  * TYPEDEFS
322  */
323 
327 typedef struct
328 {
329  uint8 maxNumPSM;
332 
336 typedef struct
337 {
338  uint16 localCID;
339  uint16 remoteCID;
341 
345 typedef union
346 {
347  uint16 signalMTU;
350 
354 typedef struct
355 {
356  uint16 reason;
358 
359  // Shorthand access for union members
360  #define maxSignalMTU reasonData.signalMTU
361  #define invalidLocalCID reasonData.invalidCID.localCID
362  #define invalidRemoteCID reasonData.invalidCID.remoteCID
364 
368 typedef struct
369 {
370  uint16 intervalMin;
371  uint16 intervalMax;
372  uint16 slaveLatency;
375 
379 typedef struct
380 {
381  uint16 result;
383 
387 typedef struct
388 {
389  uint16 infoType;
391 
395 typedef union
396 {
399  uint8 fixedChannels[L2CAP_FIXED_CHANNELS_SIZE];
400 } l2capInfo_t;
401 
405 typedef struct
406 {
407  uint16 result;
408  uint16 infoType;
411 
415 typedef struct
416 {
417  uint16 psm;
418  uint16 srcCID;
419  uint16 mtu;
420  uint16 mps;
421  uint16 initCredits;
423 
427 typedef struct
428 {
429  uint16 dstCID;
430  uint16 mtu;
431  uint16 mps;
432  uint16 initCredits;
433  uint16 result;
435 
439 typedef struct
440 {
441  uint16 dstCID;
442  uint16 srcCID;
444 
448 typedef struct
449 {
450  uint16 dstCID;
451  uint16 srcCID;
453 
457 typedef struct
458 {
459  uint16 CID;
460  uint16 credits;
462 
466 typedef struct
467 {
468  uint16 mtu;
469  uint16 mps;
475 
479 typedef struct
480 {
481  uint16 psm;
482  uint16 mtu;
483  uint16 mps;
484  uint16 credits;
485  uint16 peerCID;
486  uint16 peerMtu;
487  uint16 peerMps;
488  uint16 peerCredits;
491 
495 typedef struct
496 {
497  uint8 state;
500 
505 typedef struct
506 {
507  uint16 result;
508  uint16 CID;
511 
516 typedef struct
517 {
518  uint16 CID;
519  uint16 peerCID;
520  uint16 reason;
522 
528 typedef struct
529 {
530  uint16 CID;
531  uint16 peerCID;
532  uint16 credits;
535 
540 typedef struct
541 {
542  uint16 CID;
543  uint16 credits;
544  uint16 peerCID;
545  uint16 peerCredits;
546  uint16 totalLen;
547  uint16 txLen;
549 
554 typedef struct
555 {
556  uint8 numDataPkt;
558 
562 typedef union
563 {
564  // Requests
570 
571  // Responses
577 
578  // Proprietary local events
585 
590 typedef struct
591 {
593  uint16 connHandle;
594  uint8 id;
595  uint8 opcode;
598 
602 typedef struct
603 {
604  uint16 CID;
605  uint8 *pPayload;
606  uint16 len;
609 } l2capPacket_t;
610 
618 typedef struct
619 {
621  uint16 connHandle;
624 
644 typedef uint16 (*pfnVerifySecCB_t)( uint16 connHandle, uint8 id, l2capConnectReq_t *pReq );
645 
651 typedef struct
652 {
653  uint16 psm;
654  uint16 mtu;
658  uint8 taskId;
660 } l2capPsm_t;
661 
662 /*********************************************************************
663  * GLOBAL VARIABLES
664  */
665 
666 /*********************************************************************
667  * FUNCTIONS
668  */
669 
685 extern bStatus_t L2CAP_RegisterApp( uint8 taskId, uint16 CID );
686 
695 extern void L2CAP_RegisterFlowCtrlTask( uint8 taskId );
696 
714 extern bStatus_t L2CAP_SendData( uint16 connHandle, l2capPacket_t *pPkt );
715 
728 extern bStatus_t L2CAP_RegisterPsm( l2capPsm_t *pPsm );
729 
740 extern bStatus_t L2CAP_DeregisterPsm( uint8 taskId, uint16 psm );
741 
751 extern bStatus_t L2CAP_PsmInfo( uint16 psm, l2capPsmInfo_t *pInfo );
752 
763 extern bStatus_t L2CAP_PsmChannels( uint16 psm, uint8 numCIDs, uint16 *pCIDs );
764 
774 extern bStatus_t L2CAP_ChannelInfo( uint16 CID, l2capChannelInfo_t *pInfo );
775 
791 extern bStatus_t L2CAP_ConnectReq( uint16 connHandle, uint16 psm, uint16 peerPsm );
792 
806 extern bStatus_t L2CAP_ConnectRsp( uint16 connHandle, uint8 id, uint16 result );
807 
820 extern bStatus_t L2CAP_DisconnectReq( uint16 CID );
821 
835 extern bStatus_t L2CAP_FlowCtrlCredit( uint16 CID, uint16 peerCredits );
836 
852 extern bStatus_t L2CAP_SendSDU( l2capPacket_t *pPkt );
853 
867 extern bStatus_t L2CAP_CmdReject( uint16 connHandle, uint8 id, l2capCmdReject_t *pCmdReject );
868 
883 extern bStatus_t L2CAP_InfoReq( uint16 connHandle, l2capInfoReq_t *pInfoReq, uint8 taskId );
884 
900 extern bStatus_t L2CAP_ConnParamUpdateReq( uint16 connHandle, l2capParamUpdateReq_t *pUpdateReq, uint8 taskId );
901 
915 extern bStatus_t L2CAP_ConnParamUpdateRsp( uint16 connHandle, uint8 id, l2capParamUpdateRsp_t *pUpdateRsp );
916 
926 extern void L2CAP_SetUserConfig( l2capUserCfg_t *pUserCfg );
927 
938 extern void L2CAP_SetBufSize( uint16 dataPktLen, uint8 numDataPkts );
939 
945 extern uint16 L2CAP_GetMTU( void );
946 
957 extern void *L2CAP_bm_alloc( uint16 size );
958 
977 extern uint16 L2CAP_BuildConnectReq( uint8 *pBuf, uint8 *pData );
978 
989 extern bStatus_t L2CAP_ParseConnectReq( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
990 
1001 extern bStatus_t L2CAP_ParseFlowCtrlCredit( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
1002 
1011 extern uint16 L2CAP_BuildCmdReject( uint8 *pBuf, uint8 *pCmd );
1012 
1023 extern bStatus_t L2CAP_ParseInfoReq( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
1024 
1035 extern bStatus_t L2CAP_ParseParamUpdateReq( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
1036 
1045 extern uint16 L2CAP_BuildParamUpdateRsp( uint8 *pBuf, uint8 *pData );
1046 
1059 extern uint16 L2CAP_BuildInfoRsp( uint8 *pBuf, uint8 *pData );
1060 
1070 extern void L2CAP_SetControllerToHostFlowCtrl( uint16 hostBuffSize, uint8 flowCtrlMode );
1071 
1082 extern void L2CAP_HostNumCompletedPkts( uint16 connHandle, uint16 numCompletedPkts );
1083 
1092 extern void L2CAP_SetParamValue( uint16 value );
1093 
1101 extern uint16 L2CAP_GetParamValue( void );
1102 
1103 /*-------------------------------------------------------------------
1104  * TASK API - These functions must only be called by OSAL.
1105  */
1106 
1116 extern void L2CAP_Init( uint8 taskId );
1117 
1129 extern uint16 L2CAP_ProcessEvent( uint8 taskId, uint16 events );
1130 
1131 
1132 /*********************************************************************
1133 *********************************************************************/
1134 
1135 #ifdef __cplusplus
1136 }
1137 #endif
1138 
1139 #endif /* L2CAP_H */
Definition: l2cap.h:457
bStatus_t L2CAP_ParseConnectReq(l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len)
Parse Connection Request message.
bStatus_t L2CAP_ParseParamUpdateReq(l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len)
Parse Connection Parameter Update Request.
l2capParamUpdateRsp_t updateRsp
Connection Parameter Update Response.
Definition: l2cap.h:572
uint16 initCredits
Indicates number of LE-frames that peer device can send.
Definition: l2cap.h:432
bStatus_t L2CAP_FlowCtrlCredit(uint16 CID, uint16 peerCredits)
Send Flow Control Credit.
uint8 state
Channel connection state: L2CAP Channel States.
Definition: l2cap.h:497
uint16 peerCID
Peer channel id.
Definition: l2cap.h:544
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:654
Definition: l2cap.h:554
void L2CAP_SetUserConfig(l2capUserCfg_t *pUserCfg)
Set the user configurable variables for the L2CAP layer.
Definition: l2cap.h:345
uint16(* pfnVerifySecCB_t)(uint16 connHandle, uint8 id, l2capConnectReq_t *pReq)
Callback function prototype to verify security when a Connection Request is received.
Definition: l2cap.h:644
void L2CAP_RegisterFlowCtrlTask(uint8 taskId)
Register task to recevie L2CAP Flow Control events when there are data buffers available for sending ...
uint16 mps
Maximum payload size that can be received by local device.
Definition: l2cap.h:469
bStatus_t L2CAP_PsmChannels(uint16 psm, uint8 numCIDs, uint16 *pCIDs)
Get all active channels for a given registered PSM.
uint8 numDataPkt
Number of Data Packets Available.
Definition: l2cap.h:556
uint16 txLen
Total number of octets transmitted.
Definition: l2cap.h:547
uint8 maxNumPSM
Max number of Protocol/Service Multiplexers (PSM): L2CAP Number of PSMs.
Definition: l2cap.h:329
uint16 mps
Specifies maximum payload size that can be received on this channel.
Definition: l2cap.h:431
Definition: l2cap.h:516
l2capCmdReject_t cmdReject
Command Reject.
Definition: l2cap.h:574
Definition: l2cap.h:354
Definition: l2cap.h:415
uint16 mtu
Specifies maximum SDU size that can be received on this channel.
Definition: l2cap.h:419
bStatus_t L2CAP_PsmInfo(uint16 psm, l2capPsmInfo_t *pInfo)
Get information about a given registered PSM.
Definition: l2cap.h:590
uint16 srcCID
Identifies CID on device receiving response.
Definition: l2cap.h:451
l2capCreditEvt_t creditEvt
Out Of Credit Event or Peer Credit Threshold Event.
Definition: l2cap.h:581
Definition: l2cap.h:368
uint16 psm
PSM that channel belongs to.
Definition: l2cap.h:481
uint16 initPeerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:655
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:482
uint16 connHandle
connection packet was received on
Definition: l2cap.h:621
l2capNumCtrlDataPktEvt_t numCtrlDataPktEvt
Number of Available Ctrl Data Packets Event.
Definition: l2cap.h:583
uint16 CID
Represents Source CID of device sending credit packet.
Definition: l2cap.h:459
uint16 psm
LE PSM.
Definition: l2cap.h:417
uint16 peerMps
Maximum payload size that can be received by peer device.
Definition: l2cap.h:487
uint16 connectionlessMTU
Connectionless MTU.
Definition: l2cap.h:397
uint16 intervalMin
Minimum Interval.
Definition: l2cap.h:370
l2capInfoRsp_t infoRsp
Information Response - not supported.
Definition: l2cap.h:573
l2capCoCInfo_t info
Channel info.
Definition: l2cap.h:498
uint16 dstCID
Identifies CID on device sending response.
Definition: l2cap.h:450
uint16 credits
Local credits.
Definition: l2cap.h:543
Definition: l2cap.h:505
bStatus_t L2CAP_DeregisterPsm(uint8 taskId, uint16 psm)
Deregister a Protocol/Service Multiplexer with L2CAP.
uint16 peerCreditThreshold
Low threshold for peer credit count.
Definition: l2cap.h:489
uint16 dstCID
Represents CID on device receiving request and sending response.
Definition: l2cap.h:429
Definition: l2cap.h:379
uint16 initPeerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:470
uint16 psm
Registered PSM.
Definition: l2cap.h:653
uint16 srcCID
Represents CID on device sending request and receiving response.
Definition: l2cap.h:418
Definition: l2cap.h:466
uint8 * pPayload
Definition: l2cap.h:605
bStatus_t L2CAP_RegisterApp(uint8 taskId, uint16 CID)
Register a protocol/application with an L2CAP fixed channel.
uint16 peerCreditThreshold
Low threshold for peer credit count.
Definition: l2cap.h:656
Definition: l2cap.h:405
Definition: l2cap.h:528
uint16 L2CAP_BuildParamUpdateRsp(uint8 *pBuf, uint8 *pData)
Build Connection Parameter Update Response.
Definition: l2cap.h:395
bStatus_t L2CAP_SendSDU(l2capPacket_t *pPkt)
Send data packet over an L2CAP connection oriented channel established over a physical connection...
bStatus_t L2CAP_ChannelInfo(uint16 CID, l2capChannelInfo_t *pInfo)
Get information about a given active Connection Oriented Channel.
bStatus_t L2CAP_ConnectRsp(uint16 connHandle, uint8 id, uint16 result)
Send Connection Response.
uint16 initCredits
Indicates number of LE-frames that peer device can send.
Definition: l2cap.h:421
l2capCoCInfo_t info
Channel info.
Definition: l2cap.h:509
l2capPacket_t pkt
received packet
Definition: l2cap.h:622
uint16 infoType
Information type: L2CAP Information Request/Response Info Types.
Definition: l2cap.h:389
uint16 result
Indicates outcome of connection request: L2CAP Connection Response Result Values. ...
Definition: l2cap.h:507
uint16 peerCredits
Peer credits.
Definition: l2cap.h:545
bStatus_t L2CAP_ConnParamUpdateRsp(uint16 connHandle, uint8 id, l2capParamUpdateRsp_t *pUpdateRsp)
Send Connection Parameter Update Response.
uint8 maxNumChannels
Maximum number of CO Channels supported by PSM.
Definition: l2cap.h:657
l2capFlowCtrlCredit_t credit
LE Flow Control Credit.
Definition: l2cap.h:569
void L2CAP_SetBufSize(uint16 dataPktLen, uint8 numDataPkts)
This API is used by the upper layer to set the maximum data packet size and the number of data packet...
uint16 remoteCID
Source CID from the rejected command.
Definition: l2cap.h:339
uint16 peerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:488
uint16 signalMTU
Maximum Signaling MTU.
Definition: l2cap.h:347
Definition: l2cap.h:427
l2capInvalidCID_t invalidCID
Invalid CID in Request.
Definition: l2cap.h:348
Definition: l2cap.h:651
bStatus_t L2CAP_ParseInfoReq(l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len)
Parse Information Request message.
uint16 result
Result.
Definition: l2cap.h:407
uint16 result
Indicates outcome of connection request: L2CAP Connection Response Result Values. ...
Definition: l2cap.h:433
osal_event_hdr_t hdr
L2CAP_SIGNAL_EVENT and status.
Definition: l2cap.h:592
uint16 L2CAP_BuildCmdReject(uint8 *pBuf, uint8 *pCmd)
Build Command Reject.
uint16 CID
Local channel id.
Definition: l2cap.h:518
uint8 id
identifier to match responses with requests
Definition: l2cap.h:594
l2capInfo_t info
Content of Info field depends on infoType.
Definition: l2cap.h:409
uint16 peerCID
Peer channel id.
Definition: l2cap.h:519
uint16 result
Result: L2CAP Connection Parameter Update Response Result Values.
Definition: l2cap.h:381
Status_t bStatus_t
BLE Generic Status return: BLE Default BLE Status Values.
Definition: bcomdef.h:244
uint16 intervalMax
Maximum Interval.
Definition: l2cap.h:371
uint16 infoType
Information type: L2CAP Information Request/Response Info Types.
Definition: l2cap.h:408
uint16 mtu
Specifies maximum SDU size that can be received on this channel.
Definition: l2cap.h:430
Definition: l2cap.h:387
uint16 peerCID
Remote channel id.
Definition: l2cap.h:485
uint16 dstCID
Specifies CID to be disconnected on device receiving request.
Definition: l2cap.h:441
uint16 mps
Specifies maximum payload size that can be received on this channel.
Definition: l2cap.h:420
uint16 connHandle
connection message was received on
Definition: l2cap.h:593
uint16 localCID
Destination CID from the rejected command.
Definition: l2cap.h:338
uint16 totalLen
Total length of SDU being transmitted.
Definition: l2cap.h:546
uint16 L2CAP_BuildConnectReq(uint8 *pBuf, uint8 *pData)
Build Connection Request.
bStatus_t L2CAP_ConnectReq(uint16 connHandle, uint16 psm, uint16 peerPsm)
Send Connection Request.
uint16 L2CAP_GetMTU(void)
Get the maximum payload size that L2CAP is capable of receiving.
pfnVerifySecCB_t pfnVerifySecCB
PSM security verification callback (can be NULL)
Definition: l2cap.h:659
l2capReasonData_t reasonData
Reason Data.
Definition: l2cap.h:357
uint16 CID
Local channel id.
Definition: l2cap.h:542
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:468
bStatus_t L2CAP_RegisterPsm(l2capPsm_t *pPsm)
Register a Protocol/Service Multiplexer (PSM) with L2CAP.
uint16 peerCID
Peer channel id.
Definition: l2cap.h:531
uint16 mps
Maximum payload size that can be received by local device.
Definition: l2cap.h:483
l2capChannelEstEvt_t channelEstEvt
Channel Established Event.
Definition: l2cap.h:579
Definition: osal.h:89
uint16 CID
local channel id
Definition: l2cap.h:604
bStatus_t L2CAP_ParseFlowCtrlCredit(l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len)
Parse Flow Control Credit message.
osal_event_hdr_t hdr
L2CAP_DATA_EVENT and status.
Definition: l2cap.h:620
Definition: l2cap.h:448
Definition: l2cap.h:479
l2capConnectRsp_t connectRsp
LE Credit Based Connection Response.
Definition: l2cap.h:575
l2capInfoReq_t infoReq
Information Request - not supported.
Definition: l2cap.h:566
Definition: l2cap.h:439
uint16 peerCreditThreshold
Low threshold for number of peer credits.
Definition: l2cap.h:471
bStatus_t L2CAP_SendData(uint16 connHandle, l2capPacket_t *pPkt)
Send data packet over an L2CAP fixed channel established over a physical connection.
uint8 taskId
Task registered with PSM.
Definition: l2cap.h:658
uint16 credits
Number of LE-frames that can be sent to local device.
Definition: l2cap.h:460
Definition: l2cap.h:327
l2capDisconnectRsp_t disconnectRsp
Disconnection Response.
Definition: l2cap.h:576
l2capConnectReq_t connectReq
LE Credit Based Connection Request.
Definition: l2cap.h:567
uint16 CID
Local channel id.
Definition: l2cap.h:508
l2capDisconnectReq_t disconnectReq
Disconnection Request.
Definition: l2cap.h:568
bStatus_t L2CAP_DisconnectReq(uint16 CID)
Send Disconnection Request.
uint16 srcCID
Specifies CID to be disconnected on device sending request.
Definition: l2cap.h:442
uint16 reason
Reason: L2CAP Command Reject Reason Codes.
Definition: l2cap.h:356
Definition: l2cap.h:540
Definition: l2cap.h:562
Definition: l2cap.h:602
uint16 credits
Definition: l2cap.h:532
uint8 numActiveChannels
Number of active CO Channels.
Definition: l2cap.h:473
Definition: l2cap.h:336
uint16 slaveLatency
Slave Latency.
Definition: l2cap.h:372
l2capParamUpdateReq_t updateReq
Connection Parameter Update Request.
Definition: l2cap.h:565
bStatus_t L2CAP_InfoReq(uint16 connHandle, l2capInfoReq_t *pInfoReq, uint8 taskId)
Send Information Request.
bStatus_t L2CAP_ConnParamUpdateReq(uint16 connHandle, l2capParamUpdateReq_t *pUpdateReq, uint8 taskId)
Send Connection Parameter Update Request.
void * L2CAP_bm_alloc(uint16 size)
L2CAP implementation of the allocator functionality.
Definition: l2cap.h:618
Definition: l2cap.h:495
uint16 peerMtu
Maximum SDU size that can be received by peer device.
Definition: l2cap.h:486
uint16 CID
Local channel id.
Definition: l2cap.h:530
uint16 credits
Number of LE-frames that local device can send.
Definition: l2cap.h:484
uint8 opcode
type of command: L2CAP Signaling Codes (type of commands)
Definition: l2cap.h:595
uint32 extendedFeatures
Extended features supported.
Definition: l2cap.h:398
bStatus_t L2CAP_CmdReject(uint16 connHandle, uint8 id, l2capCmdReject_t *pCmdReject)
Send Command Reject.
l2capChannelTermEvt_t channelTermEvt
Channel Terminated Event.
Definition: l2cap.h:580
l2capSendSduDoneEvt_t sendSduDoneEvt
Send SDU Done Event.
Definition: l2cap.h:582
l2capSignalCmd_t cmd
command data
Definition: l2cap.h:596
uint16 timeoutMultiplier
Timeout Multiplier.
Definition: l2cap.h:373
uint8 maxNumChannels
Maximum number of CO Channels supported by PSM.
Definition: l2cap.h:472
uint16 reason
Indicates reason for termination: L2CAP Channel Terminated Event Reason Values.
Definition: l2cap.h:520
uint8 maxNumCoChannels
Max number of Connection Oriented Channels: L2CAP Number of CO Channels.
Definition: l2cap.h:330