sbgECom Library  4.0.1987-stable
C library to interface SBG Systems IMU/AHRS/INS
sbgEComProtocol.h
Go to the documentation of this file.
1 
53 #ifndef SBG_ECOM_PROTOCOL_H
54 #define SBG_ECOM_PROTOCOL_H
55 
56 // sbgCommonLib headers
57 #include <sbgCommon.h>
60 
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
64 
65 //----------------------------------------------------------------------//
66 //- Constant definitions -//
67 //----------------------------------------------------------------------//
68 
69 #define SBG_ECOM_MAX_BUFFER_SIZE (4096)
70 #define SBG_ECOM_MAX_PAYLOAD_SIZE (4086)
71 #define SBG_ECOM_MAX_EXTENDED_PAYLOAD_SIZE (4081)
72 #define SBG_ECOM_SYNC_1 (0xFF)
73 #define SBG_ECOM_SYNC_2 (0x5A)
74 #define SBG_ECOM_ETX (0x33)
76 #define SBG_ECOM_RX_TIME_OUT (450)
78 //----------------------------------------------------------------------//
79 //- Callbacks definitions -//
80 //----------------------------------------------------------------------//
81 
85 typedef struct _SbgEComProtocol SbgEComProtocol;
86 
99 typedef void (*SbgEComProtocolFrameCb)(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msgId, SbgStreamBuffer *pReceivedFrame, void *pUserArg);
100 
101 //----------------------------------------------------------------------//
102 //- Structure definitions -//
103 //----------------------------------------------------------------------//
104 
112 {
113  bool allocated;
114  void *pBuffer;
115  size_t size;
117 
124 {
127  size_t rxBufferSize;
128  size_t discardSize;
129  uint8_t nextLargeTxId;
131  //
132  // Raw stream sbgECom frame reception callback
133  //
135  void *pUserArg;
137  //
138  // Member variables related to large transfer reception.
139  //
140  uint8_t *pLargeBuffer;
142  uint8_t msgClass;
143  uint8_t msgId;
144  uint8_t transferId;
145  uint16_t pageIndex;
146  uint16_t nrPages;
147 };
148 
149 //----------------------------------------------------------------------//
150 //- Public methods (SbgEComProtocolPayload) -//
151 //----------------------------------------------------------------------//
152 
159 
166 
174 
182 
195 
196 //----------------------------------------------------------------------//
197 //- Public methods (SbgEComProtocol) -//
198 //----------------------------------------------------------------------//
199 
208 
216 
228 
242 SbgErrorCode sbgEComProtocolSend(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msg, const void *pData, size_t size);
243 
257 SbgErrorCode sbgEComProtocolReceive(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, void *pData, size_t *pSize, size_t maxSize);
258 
278 SbgErrorCode sbgEComProtocolReceive2(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, SbgEComProtocolPayload *pPayload);
279 
292 void sbgEComProtocolSetOnFrameReceivedCb(SbgEComProtocol *pProtocol, SbgEComProtocolFrameCb pOnFrameReceivedCb, void *pUserArg);
293 
308 SbgErrorCode sbgEComStartFrameGeneration(SbgStreamBuffer *pOutputStream, uint8_t msgClass, uint8_t msg, size_t *pStreamCursor);
309 
321 SbgErrorCode sbgEComFinalizeFrameGeneration(SbgStreamBuffer *pOutputStream, size_t streamCursor);
322 
323 #ifdef __cplusplus
324 }
325 #endif
326 
327 #endif // SBG_ECOM_PROTOCOL_H
Main header for the SBG Systems common C library.
const void * sbgEComProtocolPayloadGetBuffer(const SbgEComProtocolPayload *pPayload)
size_t sbgEComProtocolPayloadGetSize(const SbgEComProtocolPayload *pPayload)
void(* SbgEComProtocolFrameCb)(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msgId, SbgStreamBuffer *pReceivedFrame, void *pUserArg)
Definition: sbgEComProtocol.h:99
void * sbgEComProtocolPayloadMoveBuffer(SbgEComProtocolPayload *pPayload)
struct _SbgEComProtocolPayload SbgEComProtocolPayload
SbgErrorCode sbgEComProtocolInit(SbgEComProtocol *pProtocol, SbgInterface *pInterface)
SbgErrorCode sbgEComStartFrameGeneration(SbgStreamBuffer *pOutputStream, uint8_t msgClass, uint8_t msg, size_t *pStreamCursor)
SbgErrorCode sbgEComProtocolSend(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msg, const void *pData, size_t size)
SbgErrorCode sbgEComProtocolReceive2(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, SbgEComProtocolPayload *pPayload)
void sbgEComProtocolSetOnFrameReceivedCb(SbgEComProtocol *pProtocol, SbgEComProtocolFrameCb pOnFrameReceivedCb, void *pUserArg)
SbgErrorCode sbgEComFinalizeFrameGeneration(SbgStreamBuffer *pOutputStream, size_t streamCursor)
SbgErrorCode sbgEComProtocolReceive(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, void *pData, size_t *pSize, size_t maxSize)
void sbgEComProtocolPayloadConstruct(SbgEComProtocolPayload *pPayload)
SbgErrorCode sbgEComProtocolClose(SbgEComProtocol *pProtocol)
SbgErrorCode sbgEComProtocolPurgeIncoming(SbgEComProtocol *pProtocol)
#define SBG_ECOM_MAX_BUFFER_SIZE
Definition: sbgEComProtocol.h:69
void sbgEComProtocolPayloadDestroy(SbgEComProtocolPayload *pPayload)
enum _SbgErrorCode SbgErrorCode
This file implements the base interface for all Serial and Ethernet ports.
Used to read/write data from/to a memory buffer stream.
Definition: sbgEComProtocol.h:124
uint16_t pageIndex
Definition: sbgEComProtocol.h:145
uint8_t transferId
Definition: sbgEComProtocol.h:144
uint8_t * pLargeBuffer
Definition: sbgEComProtocol.h:140
size_t discardSize
Definition: sbgEComProtocol.h:128
SbgEComProtocolFrameCb pReceiveFrameCb
Definition: sbgEComProtocol.h:134
uint16_t nrPages
Definition: sbgEComProtocol.h:146
SbgInterface * pLinkedInterface
Definition: sbgEComProtocol.h:125
uint8_t msgClass
Definition: sbgEComProtocol.h:142
uint8_t msgId
Definition: sbgEComProtocol.h:143
uint8_t nextLargeTxId
Definition: sbgEComProtocol.h:129
void * pUserArg
Definition: sbgEComProtocol.h:135
size_t rxBufferSize
Definition: sbgEComProtocol.h:127
size_t largeBufferSize
Definition: sbgEComProtocol.h:141
uint8_t rxBuffer[SBG_ECOM_MAX_BUFFER_SIZE]
Definition: sbgEComProtocol.h:126
Definition: sbgEComProtocol.h:112
size_t size
Definition: sbgEComProtocol.h:115
void * pBuffer
Definition: sbgEComProtocol.h:114
bool allocated
Definition: sbgEComProtocol.h:113
Definition: sbgInterface.h:193
Definition: sbgStreamBufferCommon.h:201