77 #define L2CAP_MTU_SIZE 23 85 #define L2CAP_SDU_SIZE 512 93 #define L2CAP_NUM_PSM_DEFAULT 3 101 #define L2CAP_NUM_CO_CHANNELS_DEFAULT 3 106 #define L2CAP_SIG_MTU_SIZE 23 109 #define L2CAP_HDR_SIZE 4 113 #define L2CAP_PDU_SIZE ( L2CAP_HDR_SIZE + L2CAP_MTU_SIZE ) 116 #define L2CAP_LEN_FIELD_SIZE 2 122 #define L2CAP_INVALID_PSM 0x0000 125 #define L2CAP_FIXED_PSM_MIN 0x0001 126 #define L2CAP_FIXED_PSM_MAX 0x007F 129 #define L2CAP_DYNAMIC_PSM_MIN 0x0080 130 #define L2CAP_DYNAMIC_PSM_MAX 0x00FF 135 #define L2CAP_CID_NULL 0x0000 // Illegal Identifier 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) 144 #define L2CAP_DYNAMIC_CID_MIN 0x0040 145 #define L2CAP_DYNAMIC_CID_MAX 0x007F 148 #define L2CAP_NUM_FIXED_CHANNELS 4 151 #define L2CAP_NUM_SIG_COMMANDS 1 157 #define L2CAP_RTX_TIMEOUT 30 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 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 193 #define L2CAP_REJECT_CMD_NOT_UNDERSTOOD 0x0000 194 #define L2CAP_REJECT_SIGNAL_MTU_EXCEED 0x0001 195 #define L2CAP_REJECT_INVALID_CID 0x0002 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 #define L2CAP_CONN_INVALID_SRC_CID 0x0009 211 #define L2CAP_CONN_SRC_CID_ALREADY_ALLOC 0x000A 212 #define L2CAP_CONN_UNACCEPTABLE_PARAMS 0x000B 214 #define L2CAP_CONN_PENDING_SEC_VERIFY 0xFFFF 222 #define L2CAP_CONN_PARAMS_ACCEPTED 0x0000 223 #define L2CAP_CONN_PARAMS_REJECTED 0x0001 231 #define L2CAP_TERM_LINK_DOWN 0x0000 232 #define L2CAP_TERM_BY_PSM 0x0001 233 #define L2CAP_TERM_BY_PEER_PSM 0x0002 234 #define L2CAP_TERM_MAX_CREDIT_EXCEED 0x0003 235 #define L2CAP_TERM_SDU_LEN_EXCEED 0x0004 236 #define L2CAP_TERM_PSM_MTU_EXCEED 0x0005 237 #define L2CAP_TERM_RX_PKT_NO_CREDIT 0x0006 238 #define L2CAP_TERM_RX_ERROR 0x0007 239 #define L2CAP_TERM_TX_ERROR 0x0008 240 #define L2CAP_TERM_MEM_ALLOC_ERROR 0x0009 248 #define L2CAP_CLOSED 0x00 249 #define L2CAP_OPEN 0x01 250 #define L2CAP_PENDING_CONN_RSP 0x02 251 #define L2CAP_PENDING_DISCONN_RSP 0x03 252 #define L2CAP_PENDING_PARAM_UPDATE_RSP 0x04 253 #define L2CAP_PENDING_INFO_RSP 0x05 254 #define L2CAP_PENDING_SEC_VERIFY 0x06 262 #define L2CAP_INFO_CONNLESS_MTU 0x0001 263 #define L2CAP_INFO_EXTENDED_FEATURES 0x0002 264 #define L2CAP_INFO_FIXED_CHANNELS 0x0003 272 #define L2CAP_FIXED_CHANNELS 0x00000080 275 #define L2CAP_EXTENDED_FEATURES_SIZE 4 281 #define L2CAP_FIXED_CHANNELS_ATT 0x10 284 #define L2CAP_FIXED_CHANNELS_SIG 0x20 287 #define L2CAP_FIXED_CHANNELS_SMP 0x40 290 #define L2CAP_FIXED_CHANNELS_SIZE 8 296 #define L2CAP_INFO_SUCCESS 0x0000 299 #define L2CAP_INFO_NOT_SUPPORTED 0x0001 304 #if defined ( TESTMODES ) 306 #define L2CAP_TESTMODE_OFF 0 // Test mode off 307 #define L2CAP_TESTMODE_PSM_NOT_SUPPORTED 2 // Refuse connection - LE_PSM not supported 308 #define L2CAP_TESTMODE_NO_RESOURCES 4 // Refuse connection - no resources available 309 #define L2CAP_TESTMODE_INSUFF_AUTHEN 5 // Refuse connection - insufficient authentication 310 #define L2CAP_TESTMODE_INSUFF_AUTHOR 6 // Refuse connection - insufficient authorization 311 #define L2CAP_TESTMODE_INSUFF_KEY_SIZE 7 // Refuse connection - insufficient encryption key size 312 #define L2CAP_TESTMODE_INSUFF_ENCRYPT 8 // Refuse connection - insufficient encryption 313 #define L2CAP_TESTMODE_INVALID_SRC_CID 9 314 #define L2CAP_TESTMODE_SRC_CID_ALREADY_ALLOC 10 315 #define L2CAP_TESTMODE_OUT_OF_RANGE_CREDITS 11 316 #define L2CAP_TESTMODE_SDU_LEN_EXCEED 12 317 #define L2CAP_TESTMODE_TX_PKT_NO_CREDIT 13 318 #define L2CAP_TESTMODE_BLOCK_DATA_TX 14 365 #define maxSignalMTU reasonData.signalMTU 366 #define invalidLocalCID reasonData.invalidCID.localCID 367 #define invalidRemoteCID reasonData.invalidCID.remoteCID 404 uint8 fixedChannels[L2CAP_FIXED_CHANNELS_SIZE];
1064 extern uint16 L2CAP_BuildInfoRsp( uint8 *pBuf, uint8 *pData );
1075 extern void L2CAP_SetControllerToHostFlowCtrl( uint16 hostBuffSize, uint8 flowCtrlMode );
1087 extern void L2CAP_HostNumCompletedPkts( uint16 connHandle, uint16 numCompletedPkts );
1097 extern void L2CAP_SetParamValue( uint16 value );
1106 extern uint16 L2CAP_GetParamValue(
void );
1121 extern void L2CAP_Init( uint8 taskId );
1134 extern uint16 L2CAP_ProcessEvent( uint8 taskId, uint16 events );
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:577
uint16 initCredits
Indicates number of LE-frames that peer device can send.
Definition: l2cap.h:437
bStatus_t L2CAP_FlowCtrlCredit(uint16 CID, uint16 peerCredits)
Send Flow Control Credit.
uint8 state
Channel connection state: L2CAP Channel States.
Definition: l2cap.h:502
uint16 peerCID
Peer channel id.
Definition: l2cap.h:549
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:659
void L2CAP_SetUserConfig(l2capUserCfg_t *pUserCfg)
Set the user configurable variables for the L2CAP layer.
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:649
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:474
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:561
uint16 txLen
Total number of octets transmitted.
Definition: l2cap.h:552
uint8 maxNumPSM
Max number of Protocol/Service Multiplexers (PSM): L2CAP Number of PSMs.
Definition: l2cap.h:334
uint16 mps
Specifies maximum payload size that can be received on this channel.
Definition: l2cap.h:436
l2capCmdReject_t cmdReject
Command Reject.
Definition: l2cap.h:579
uint16 mtu
Specifies maximum SDU size that can be received on this channel.
Definition: l2cap.h:424
bStatus_t L2CAP_PsmInfo(uint16 psm, l2capPsmInfo_t *pInfo)
Get information about a given registered PSM.
uint16 srcCID
Identifies CID on device receiving response.
Definition: l2cap.h:456
l2capCreditEvt_t creditEvt
Out Of Credit Event or Peer Credit Threshold Event.
Definition: l2cap.h:586
uint16 psm
PSM that channel belongs to.
Definition: l2cap.h:486
uint16 initPeerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:660
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:487
uint16 connHandle
connection packet was received on
Definition: l2cap.h:626
l2capNumCtrlDataPktEvt_t numCtrlDataPktEvt
Number of Available Ctrl Data Packets Event.
Definition: l2cap.h:588
uint16 CID
Represents Source CID of device sending credit packet.
Definition: l2cap.h:464
uint16 psm
LE PSM.
Definition: l2cap.h:422
uint16 peerMps
Maximum payload size that can be received by peer device.
Definition: l2cap.h:492
uint16 connectionlessMTU
Connectionless MTU.
Definition: l2cap.h:402
uint16 intervalMin
Minimum Interval.
Definition: l2cap.h:375
l2capInfoRsp_t infoRsp
Information Response - not supported.
Definition: l2cap.h:578
l2capCoCInfo_t info
Channel info.
Definition: l2cap.h:503
uint16 dstCID
Identifies CID on device sending response.
Definition: l2cap.h:455
uint16 credits
Local credits.
Definition: l2cap.h:548
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:494
uint16 dstCID
Represents CID on device receiving request and sending response.
Definition: l2cap.h:434
uint16 initPeerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:475
uint16 psm
Registered PSM.
Definition: l2cap.h:658
uint16 srcCID
Represents CID on device sending request and receiving response.
Definition: l2cap.h:423
uint8 * pPayload
Definition: l2cap.h:610
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:661
uint16 L2CAP_BuildParamUpdateRsp(uint8 *pBuf, uint8 *pData)
Build Connection Parameter Update Response.
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:426
l2capCoCInfo_t info
Channel info.
Definition: l2cap.h:514
l2capPacket_t pkt
received packet
Definition: l2cap.h:627
uint16 infoType
Information type: L2CAP Information Request/Response Info Types.
Definition: l2cap.h:394
uint16 result
Indicates outcome of connection request: L2CAP Connection Response Result Values. ...
Definition: l2cap.h:512
uint16 peerCredits
Peer credits.
Definition: l2cap.h:550
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:662
l2capFlowCtrlCredit_t credit
LE Flow Control Credit.
Definition: l2cap.h:574
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:344
uint16 peerCredits
Number of LE-frames that peer device can send.
Definition: l2cap.h:493
uint16 signalMTU
Maximum Signaling MTU.
Definition: l2cap.h:352
l2capInvalidCID_t invalidCID
Invalid CID in Request.
Definition: l2cap.h:353
bStatus_t L2CAP_ParseInfoReq(l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len)
Parse Information Request message.
uint16 result
Result.
Definition: l2cap.h:412
uint16 result
Indicates outcome of connection request: L2CAP Connection Response Result Values. ...
Definition: l2cap.h:438
osal_event_hdr_t hdr
L2CAP_SIGNAL_EVENT and status.
Definition: l2cap.h:597
uint16 L2CAP_BuildCmdReject(uint8 *pBuf, uint8 *pCmd)
Build Command Reject.
uint16 CID
Local channel id.
Definition: l2cap.h:523
uint8 id
identifier to match responses with requests
Definition: l2cap.h:599
l2capInfo_t info
Content of Info field depends on infoType.
Definition: l2cap.h:414
uint16 peerCID
Peer channel id.
Definition: l2cap.h:524
uint16 result
Result: L2CAP Connection Parameter Update Response Result Values.
Definition: l2cap.h:386
Status_t bStatus_t
BLE Generic Status return: BLE Default BLE Status Values.
Definition: bcomdef.h:244
uint16 intervalMax
Maximum Interval.
Definition: l2cap.h:376
uint16 infoType
Information type: L2CAP Information Request/Response Info Types.
Definition: l2cap.h:413
uint16 mtu
Specifies maximum SDU size that can be received on this channel.
Definition: l2cap.h:435
uint16 peerCID
Remote channel id.
Definition: l2cap.h:490
uint16 dstCID
Specifies CID to be disconnected on device receiving request.
Definition: l2cap.h:446
uint16 mps
Specifies maximum payload size that can be received on this channel.
Definition: l2cap.h:425
uint16 connHandle
connection message was received on
Definition: l2cap.h:598
uint16 localCID
Destination CID from the rejected command.
Definition: l2cap.h:343
uint16 totalLen
Total length of SDU being transmitted.
Definition: l2cap.h:551
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:664
l2capReasonData_t reasonData
Reason Data.
Definition: l2cap.h:362
uint16 CID
Local channel id.
Definition: l2cap.h:547
uint16 mtu
Maximum SDU size that can be received by local device.
Definition: l2cap.h:473
bStatus_t L2CAP_RegisterPsm(l2capPsm_t *pPsm)
Register a Protocol/Service Multiplexer (PSM) with L2CAP.
uint16 peerCID
Peer channel id.
Definition: l2cap.h:536
uint16 mps
Maximum payload size that can be received by local device.
Definition: l2cap.h:488
l2capChannelEstEvt_t channelEstEvt
Channel Established Event.
Definition: l2cap.h:584
uint16 CID
local channel id
Definition: l2cap.h:609
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:625
l2capConnectRsp_t connectRsp
LE Credit Based Connection Response.
Definition: l2cap.h:580
l2capInfoReq_t infoReq
Information Request - not supported.
Definition: l2cap.h:571
uint16 peerCreditThreshold
Low threshold for number of peer credits.
Definition: l2cap.h:476
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:663
uint16 credits
Number of LE-frames that can be sent to local device.
Definition: l2cap.h:465
l2capDisconnectRsp_t disconnectRsp
Disconnection Response.
Definition: l2cap.h:581
l2capConnectReq_t connectReq
LE Credit Based Connection Request.
Definition: l2cap.h:572
uint16 CID
Local channel id.
Definition: l2cap.h:513
l2capDisconnectReq_t disconnectReq
Disconnection Request.
Definition: l2cap.h:573
bStatus_t L2CAP_DisconnectReq(uint16 CID)
Send Disconnection Request.
uint16 srcCID
Specifies CID to be disconnected on device sending request.
Definition: l2cap.h:447
uint16 reason
Reason: L2CAP Command Reject Reason Codes.
Definition: l2cap.h:361
uint16 credits
Definition: l2cap.h:537
uint8 numActiveChannels
Number of active CO Channels.
Definition: l2cap.h:478
uint16 slaveLatency
Slave Latency.
Definition: l2cap.h:377
l2capParamUpdateReq_t updateReq
Connection Parameter Update Request.
Definition: l2cap.h:570
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.
uint16 peerMtu
Maximum SDU size that can be received by peer device.
Definition: l2cap.h:491
uint16 CID
Local channel id.
Definition: l2cap.h:535
uint16 credits
Number of LE-frames that local device can send.
Definition: l2cap.h:489
uint8 opcode
type of command: L2CAP Signaling Codes (type of commands)
Definition: l2cap.h:600
uint32 extendedFeatures
Extended features supported.
Definition: l2cap.h:403
bStatus_t L2CAP_CmdReject(uint16 connHandle, uint8 id, l2capCmdReject_t *pCmdReject)
Send Command Reject.
l2capChannelTermEvt_t channelTermEvt
Channel Terminated Event.
Definition: l2cap.h:585
l2capSendSduDoneEvt_t sendSduDoneEvt
Send SDU Done Event.
Definition: l2cap.h:587
l2capSignalCmd_t cmd
command data
Definition: l2cap.h:601
uint16 timeoutMultiplier
Timeout Multiplier.
Definition: l2cap.h:378
uint8 maxNumChannels
Maximum number of CO Channels supported by PSM.
Definition: l2cap.h:477
uint16 reason
Indicates reason for termination: L2CAP Channel Terminated Event Reason Values.
Definition: l2cap.h:525
uint8 maxNumCoChannels
Max number of Connection Oriented Channels: L2CAP Number of CO Channels.
Definition: l2cap.h:335