sbgECom Library  5.1.708-stable
Interface SBG Systems IMU/AHRS/INS
sbgEComProtocol.h
Go to the documentation of this file.
1 
38 #ifndef SBG_ECOM_PROTOCOL_H
39 #define SBG_ECOM_PROTOCOL_H
40 
41 // sbgCommonLib headers
42 #include <sbgCommon.h>
45 
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49 
50 //----------------------------------------------------------------------//
51 //- Constant definitions -//
52 //----------------------------------------------------------------------//
53 
54 #define SBG_ECOM_MAX_BUFFER_SIZE (4096)
55 #define SBG_ECOM_MAX_PAYLOAD_SIZE (4086)
56 #define SBG_ECOM_MAX_EXTENDED_PAYLOAD_SIZE (4081)
57 #define SBG_ECOM_SYNC_1 (0xFF)
58 #define SBG_ECOM_SYNC_2 (0x5A)
59 #define SBG_ECOM_ETX (0x33)
61 #define SBG_ECOM_RX_TIME_OUT (450)
63 //----------------------------------------------------------------------//
64 //- Callbacks definitions -//
65 //----------------------------------------------------------------------//
66 
70 typedef struct _SbgEComProtocol SbgEComProtocol;
71 
84 typedef void (*SbgEComProtocolFrameCb)(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msgId, SbgStreamBuffer *pReceivedFrame, void *pUserArg);
85 
86 //----------------------------------------------------------------------//
87 //- Structure definitions -//
88 //----------------------------------------------------------------------//
89 
97 {
98  bool allocated;
99  void *pBuffer;
100  size_t size;
102 
109 {
112  size_t rxBufferSize;
113  size_t discardSize;
114  uint8_t nextLargeTxId;
116  //
117  // Raw stream sbgECom frame reception callback
118  //
120  void *pUserArg;
122  //
123  // Member variables related to large transfer reception.
124  //
125  uint8_t *pLargeBuffer;
127  uint8_t msgClass;
128  uint8_t msgId;
129  uint8_t transferId;
130  uint16_t pageIndex;
131  uint16_t nrPages;
132 };
133 
134 //----------------------------------------------------------------------//
135 //- Public methods (SbgEComProtocolPayload) -//
136 //----------------------------------------------------------------------//
137 
144 
151 
159 
167 
180 
181 //----------------------------------------------------------------------//
182 //- Public methods (SbgEComProtocol) -//
183 //----------------------------------------------------------------------//
184 
193 
201 
213 
227 SbgErrorCode sbgEComProtocolSend(SbgEComProtocol *pProtocol, uint8_t msgClass, uint8_t msg, const void *pData, size_t size);
228 
242 SbgErrorCode sbgEComProtocolReceive(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, void *pData, size_t *pSize, size_t maxSize);
243 
263 SbgErrorCode sbgEComProtocolReceive2(SbgEComProtocol *pProtocol, uint8_t *pMsgClass, uint8_t *pMsgId, SbgEComProtocolPayload *pPayload);
264 
277 void sbgEComProtocolSetOnFrameReceivedCb(SbgEComProtocol *pProtocol, SbgEComProtocolFrameCb pOnFrameReceivedCb, void *pUserArg);
278 
293 SbgErrorCode sbgEComStartFrameGeneration(SbgStreamBuffer *pOutputStream, uint8_t msgClass, uint8_t msg, size_t *pStreamCursor);
294 
306 SbgErrorCode sbgEComFinalizeFrameGeneration(SbgStreamBuffer *pOutputStream, size_t streamCursor);
307 
308 #ifdef __cplusplus
309 }
310 #endif
311 
312 #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:84
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:54
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:109
uint16_t pageIndex
Definition: sbgEComProtocol.h:130
uint8_t transferId
Definition: sbgEComProtocol.h:129
uint8_t * pLargeBuffer
Definition: sbgEComProtocol.h:125
size_t discardSize
Definition: sbgEComProtocol.h:113
SbgEComProtocolFrameCb pReceiveFrameCb
Definition: sbgEComProtocol.h:119
uint16_t nrPages
Definition: sbgEComProtocol.h:131
SbgInterface * pLinkedInterface
Definition: sbgEComProtocol.h:110
uint8_t msgClass
Definition: sbgEComProtocol.h:127
uint8_t msgId
Definition: sbgEComProtocol.h:128
uint8_t nextLargeTxId
Definition: sbgEComProtocol.h:114
void * pUserArg
Definition: sbgEComProtocol.h:120
size_t rxBufferSize
Definition: sbgEComProtocol.h:112
size_t largeBufferSize
Definition: sbgEComProtocol.h:126
uint8_t rxBuffer[SBG_ECOM_MAX_BUFFER_SIZE]
Definition: sbgEComProtocol.h:111
Definition: sbgEComProtocol.h:97
size_t size
Definition: sbgEComProtocol.h:100
void * pBuffer
Definition: sbgEComProtocol.h:99
bool allocated
Definition: sbgEComProtocol.h:98
Definition: sbgInterface.h:193
Definition: sbgStreamBufferCommon.h:201