123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 |
- #ifndef L2CAP_H
- #define L2CAP_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "bcomdef.h"
- #include "OSAL.h"
- #define L2CAP_MTU_SIZE 247
- #define L2CAP_SIG_MTU_SIZE 23
- #define L2CAP_HDR_SIZE 4
- #define L2CAP_PDU_SIZE ( L2CAP_HDR_SIZE + L2CAP_MTU_SIZE )
- #define L2CAP_CID_NULL 0x0000
- #define L2CAP_CID_ATT 0x0004
- #define L2CAP_CID_SIG 0x0005
- #define L2CAP_CID_SMP 0x0006
- #define L2CAP_CID_GENERIC 0x0007
- #define L2CAP_BASE_DYNAMIC_CID 0x0040
- #define L2CAP_LAST_DYNAMIC_CID ( BASE_DYNAMIC_CID + L2CAP_NUM_CHANNELS - 1 )
-
- #define L2CAP_NUM_FIXED_CHANNELS 4
- #define L2CAP_NUM_PROTOCOLS 0
- #define L2CAP_NUM_AUX_CHANNELS 3
- #define L2CAP_NUM_DYNAMIC_CHANNELS ( L2CAP_NUM_PROTOCOLS * MAX_NUM_LL_CONN )
- #define L2CAP_NUM_CHANNELS ( L2CAP_NUM_DYNAMIC_CHANNELS + L2CAP_NUM_AUX_CHANNELS )
- #define L2CAP_RTX_TIMEOUT 30
- #define L2CAP_CMD_REJECT 0x01
- #define L2CAP_ECHO_REQ 0x08
- #define L2CAP_ECHO_RSP 0x09
- #define L2CAP_INFO_REQ 0x0a
- #define L2CAP_INFO_RSP 0x0b
- #define L2CAP_PARAM_UPDATE_REQ 0x12
- #define L2CAP_PARAM_UPDATE_RSP 0x13
-
- #define L2CAP_REJECT_CMD_NOT_UNDERSTOOD 0x0000
-
- #define L2CAP_REJECT_SIGNAL_MTU_EXCEED 0x0001
-
- #define L2CAP_REJECT_INVALID_CID 0x0002
-
- #define L2CAP_INFO_CONNLESS_MTU 0x0001
-
- #define L2CAP_INFO_EXTENDED_FEATURES 0x0002
-
- #define L2CAP_INFO_FIXED_CHANNELS 0x0003
-
- #define L2CAP_FIXED_CHANNELS 0x00000080
-
- #define L2CAP_EXTENDED_FEATURES_SIZE 4
-
- #define L2CAP_FIXED_CHANNELS_ATT 0x10
-
- #define L2CAP_FIXED_CHANNELS_SIG 0x20
-
- #define L2CAP_FIXED_CHANNELS_SMP 0x40
-
- #define L2CAP_FIXED_CHANNELS_SIZE 8
-
- #define L2CAP_INFO_SUCCESS 0x0000
-
- #define L2CAP_INFO_NOT_SUPPORTED 0x0001
-
- #define L2CAP_CONN_PARAMS_ACCEPTED 0x0000
-
- #define L2CAP_CONN_PARAMS_REJECTED 0x0001
- typedef struct
- {
- uint16 localCID;
- uint16 remoteCID;
- } l2capInvalidCID_t;
- typedef union
- {
- uint16 signalMTU;
- l2capInvalidCID_t invalidCID;
- } l2capReasonData_t;
- typedef struct
- {
- uint16 reason;
- l2capReasonData_t reasonData;
-
- #define maxSignalMTU reasonData.signalMTU
- #define invalidLocalCID reasonData.invalidCID.localCID
- #define invalidRemoteCID reasonData.invalidCID.remoteCID
- } l2capCmdReject_t;
- typedef struct
- {
- uint8 *pData;
- uint16 len;
- } l2capEchoReq_t;
- typedef struct
- {
- uint8 *pData;
- uint16 len;
- } l2capEchoRsp_t;
- typedef struct
- {
- uint16 infoType;
- } l2capInfoReq_t;
- typedef union
- {
- uint16 connectionlessMTU;
- uint32 extendedFeatures;
- uint8 fixedChannels[L2CAP_FIXED_CHANNELS_SIZE];
- } l2capInfo_t;
- typedef struct
- {
- uint16 result;
- uint16 infoType;
- l2capInfo_t info;
- } l2capInfoRsp_t;
- typedef struct
- {
- uint16 intervalMin;
- uint16 intervalMax;
- uint16 slaveLatency;
- uint16 timeoutMultiplier;
- } l2capParamUpdateReq_t;
- typedef struct
- {
- uint16 result;
- } l2capParamUpdateRsp_t;
- typedef union
- {
-
- l2capEchoReq_t echoReq;
- l2capInfoReq_t infoReq;
- l2capParamUpdateReq_t updateReq;
-
- l2capCmdReject_t cmdReject;
- l2capEchoRsp_t echoRsp;
- l2capInfoRsp_t infoRsp;
- l2capParamUpdateRsp_t updateRsp;
- } l2capSignalCmd_t;
- typedef struct
- {
- osal_event_hdr_t hdr;
- uint16 connHandle;
- uint8 id;
- uint8 opcode;
- l2capSignalCmd_t cmd;
- } l2capSignalEvent_t;
- typedef struct
- {
- uint16 CID;
- uint8 *pPayload;
-
-
- uint16 len;
- } l2capPacket_t;
- typedef struct
- {
- osal_event_hdr_t hdr;
- uint16 connHandle;
- l2capPacket_t pkt;
- } l2capDataEvent_t;
- typedef struct
- {
- uint16 cIdx;
- l2capPacket_t pkt;
- } l2capReassemblePkt_t;
- typedef struct
- {
- uint8 len;
- uint8* ptr ;
- } segmentBuff_t;
- typedef struct
- {
- segmentBuff_t pkt[10];
- uint8 depth;
- uint8 idx;
- uint8* pBufScr;
- uint8 fragment;
- } l2capSegmentBuff_t;
- typedef struct
- {
- uint32 reassembleInCnt;
- uint32 reassembleOutCnt;
- uint32 reassembleErrIdx;
- uint32 reassembleErrCID;
- uint32 reassembleErrInComp;
- uint32 reassembleErrMiss;
- uint32 resssambleMemAlocErr;
-
- uint32 segmentInCnt;
- uint32 segmentOutCnt;
- uint32 segmentErrCnt;
- uint32 fragmentSendCounter;
- uint32 segmentMemAlocErr;
- uint32 segmentSentToLinkLayerErr;
-
- } l2capSARDbugCnt_t;
- extern void L2CAP_Init( uint8 taskId );
- extern uint16 L2CAP_ProcessEvent( uint8 taskId, uint16 events );
- extern bStatus_t L2CAP_RegisterApp( uint8 taskId, uint16 CID );
- extern bStatus_t L2CAP_SendData( uint16 connHandle, l2capPacket_t *pPkt );
- extern bStatus_t L2CAP_CmdReject( uint16 connHandle, uint8 id, l2capCmdReject_t *pCmdReject );
- extern uint16 L2CAP_BuildCmdReject( uint8 *pBuf, uint8 *pCmd );
- extern bStatus_t L2CAP_EchoReq( uint16 connHandle, l2capEchoReq_t *pEchoReq, uint8 taskId );
- extern bStatus_t L2CAP_InfoReq( uint16 connHandle, l2capInfoReq_t *pInfoReq, uint8 taskId );
- extern uint16 L2CAP_BuildInfoRsp( uint8 *pBuf, uint8 *pCmd );
- extern bStatus_t L2CAP_ParseInfoReq( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
- extern bStatus_t L2CAP_ConnParamUpdateReq( uint16 connHandle, l2capParamUpdateReq_t *pUpdateReq, uint8 taskId );
- extern bStatus_t L2CAP_ParseParamUpdateReq( l2capSignalCmd_t *pCmd, uint8 *pData, uint16 len );
- extern bStatus_t L2CAP_ConnParamUpdateRsp( uint16 connHandle, uint8 id, l2capParamUpdateRsp_t *pUpdateRsp );
- extern uint16 L2CAP_BuildParamUpdateRsp( uint8 *pBuf, uint8 *pData );
- extern void *L2CAP_bm_alloc( uint16 size );
- extern void L2CAP_SetControllerToHostFlowCtrl( uint16 hostBuffSize, uint8 flowCtrlMode );
- extern void L2CAP_HostNumCompletedPkts( uint16 connHandle, uint16 numCompletedPkts );
- extern uint8 l2capPktToSegmentBuff(uint16 connHandle,l2capSegmentBuff_t* pSegBuf, uint8 blen,uint8* pBuf);
- extern uint8 l2capSegmentBuffToLinkLayer(uint16 connHandle, l2capSegmentBuff_t* pSegBuf);
- extern void l2capPocessFragmentTxData(uint16 connHandle);
- extern void L2CAP_ReassemblePkt_Reset(void);
- extern void L2CAP_SegmentPkt_Reset(void);
- extern void L2CAP_ExtendFramgents_Config(uint8 flag);
- #ifdef __cplusplus
- }
- #endif
- #endif
|