19 #ifndef SCOM_MAX_DATA_LENGTH
28 #define SCOM_MAX_DATA_LENGTH UINT8_C(255)
31 #warning custom SCOM_MAX_DATA_LENGTH defined.
33 #pragma message "warning: custom SCOM_MAX_DATA_LENGTH defined"
38 #define SCOM_SOF_CHARACTER UINT8_C(0x3a)
39 #define SCOM_FRAME_CTRL_FRAME_NUMBER_MASK UINT8_C(0x07)
40 #define SCOM_FRAME_CTRL_NOACK_MASK UINT8_C(0x08)
41 #define SCOM_FRAME_CTRL_FRAME_PRIORITY_MASK UINT8_C(0x70)
42 #define SCOM_FRAME_CTRL_MULTI_ID_MASK UINT8_C(0x80)
91 #if true == SCOM_RECEIVED_FRAME_TIMESTAMP
109 static HAL_INLINE uint8_t SCOMFrame_GetPacketControlSize(
void) {
112 return sizeof(frame->
ctrl) +
sizeof(frame->
type) +
sizeof(frame->
size)
113 +
sizeof(frame->
crc);
269 static HAL_INLINE
size_t SCOMFrame_GetMaxSingleframePayloadSize(
void) {
278 static HAL_INLINE
size_t SCOMFrame_GetMaxMultiframePayloadSize(
void) {
287 static HAL_INLINE
size_t SCOMFrame_GetMaxServiceMultiframePayloadSize(
void) {
#define SCOM_MAX_DATA_LENGTH
uint8_t null
TODO: XOR from sof, ctrl, type, size.
uint8_t sync
synchronization field: always 0xFF
Packet type definition: IDENTIFY.
uint8_t primitive_id
total size of a multiframe
struct HAL_PACKED::@1::@4 serviceframe
payload definition for service frame
uint32_t offset
multiframe packet id
bool SCOMFrame_SetPayloadSize(SCOMFrame *const frame, const uint8_t size)
uint8_t SCOMFrame_GetPayloadSize(const SCOMFrame *const frame)
uint8_t SCOMFrame_GetFrameNumber(const SCOMFrame *const frame)
uint8_t data[UINT8_C(255)]
total size of a multiframe
bool SCOMFrame_SetAcknowledgement(SCOMFrame *const frame, const bool ack)
uint32_t SCOMFrame_GetMultiId(const SCOMFrame *const frame)
uint16_t SCOMFrame_CalculateCRC(const SCOMFrame *const frame)
uint8_t type
frame type field
uint32_t received_timestamp
time stamp of received frame - value should be set as soon as possible
uint8_t SCOMFrame_GetPriority(const SCOMFrame *const frame)
uint8_t size
frame type field
struct HAL_PACKED::@1::@3 multiframe
payload definition for a multi frame
uint32_t total_size
multiframe current frame offset (denotes progress)
uint8_t SCOMFrame_GetType(const SCOMFrame *const frame)
uint8_t ctrl
frame control field
bool SCOMFrame_IsMultiframe(const SCOMFrame *const frame)
Packet type definition: PING.
bool SCOMFrame_SetType(SCOMFrame *const frame, const uint8_t type)
bool SCOMFrame_IsAcknowledged(const SCOMFrame *const frame)
Packet type definition: PONG.
bool SCOMFrame_SetPriority(SCOMFrame *const frame, const uint8_t priority)
union HAL_PACKED::@1 payload
payload field
struct HAL_PACKED::@1::@2 singleframe
payload definition for a single frame
struct HAL_PACKED SCOMFrame
Definition of an SCOM frame.
uint8_t sof
synchronization field: always 0xFF
uint32_t SCOMFrame_GetTotalPayloadSize(const SCOMFrame *const frame)
uint32_t SCOMFrame_GetMultiOffset(const SCOMFrame *const frame)
SCOMFrameType
SCOM native frame types.
uint8_t * SCOMFrame_GetPayloadPtr(const SCOMFrame *const frame)
struct HAL_PACKED::@1::@5 servicemultiframe
payload definition for a service multi frame
bool SCOMFrame_SetFrameNumber(SCOMFrame *const frame, const uint8_t number)
uint16_t SCOMFrame_GetTotalFrameSize(const SCOMFrame *const frame)