CCSDS
ccsds_cltu.h
Go to the documentation of this file.
1
12#ifndef _CCSDS_CLTU_H_
13#define _CCSDS_CLTU_H_
14
15#ifdef configCLTU_MAX_SIZE
16#define CLTU_MAX_SIZE configCLTU_MAX_SIZE
17#else
18#define CLTU_MAX_SIZE (2+((TC_TF_MAX_SIZE+6)/7)*8+8)
19#endif
20
21
22namespace CCSDS
23{
24
25 typedef void (TStartOfTransmissionCallback)(void *p_Context);
26 typedef void (TReceiveCallback)(void *p_Context, const uint8_t *pu8_Data, const uint16_t u16_DataSize);
27
37 class Cltu
38 {
39 private:
40 const static uint8_t StartSequenceSize = 2;
41 const static uint8_t DataBlockSize = 7;
42 const static uint8_t CRCSize = 1;
43 const static uint8_t TailSquenceSize = 8;
44
45 bool mb_Sync;
46 uint8_t mau8_Buffer[DataBlockSize];
47 uint8_t mu8_Index;
48
49 void *mp_StartOfTransmissionContext;
50 TStartOfTransmissionCallback *mp_StartOfTransmissionCallback;
51
52 void *mp_ReceiveContext;
53 TReceiveCallback *mp_ReceiveCallback;
54
55 public:
56 Cltu(void *p_StartOfTransmissionContext = NULL, TStartOfTransmissionCallback *p_StartOfTransmissionCallback = NULL,
57 void *p_ReceiveContext = NULL, TReceiveCallback *p_ReceiveCallback = NULL);
58
59 void setCallbacks(void *p_StartOfTransmissionContext, TStartOfTransmissionCallback *p_StartOfTransmissionCallback,
60 void *p_ReceiveContext, TReceiveCallback *p_ReceiveCallback);
61
62
63 public:
64 static uint32_t create(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize,
65 const uint8_t *pu8_Data, const uint16_t u16_DataSize);
66
67 void process(const uint8_t *pu8_Data, const uint16_t u16_DataSize);
68
69 private:
70 static uint8_t calcCRC(const uint8_t *pu8_Buffer, const uint8_t u8_BufferSize);
71 };
72
73
74}
75
76#endif /* _CCSDS_CLTU_H_ */
Class for handling Communications Link Transmission Unit (CLTU) as described in CCSDS 231....
Definition: ccsds_cltu.h:38
void setCallbacks(void *p_StartOfTransmissionContext, TStartOfTransmissionCallback *p_StartOfTransmissionCallback, void *p_ReceiveContext, TReceiveCallback *p_ReceiveCallback)
Overwrites the context pointers and callbacks which were set using the constructor.
Definition: ccsds_cltu.cpp:50
void process(const uint8_t *pu8_Data, const uint16_t u16_DataSize)
The given upstream data is parsed for a CLTU sequence.
Definition: ccsds_cltu.cpp:120
static uint32_t create(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize, const uint8_t *pu8_Data, const uint16_t u16_DataSize)
Creates a sequence of CLTUs, embeds the data to be sent and writes it into the given buffer.
Definition: ccsds_cltu.cpp:71
Cltu(void *p_StartOfTransmissionContext=NULL, TStartOfTransmissionCallback *p_StartOfTransmissionCallback=NULL, void *p_ReceiveContext=NULL, TReceiveCallback *p_ReceiveCallback=NULL)
Construct a new Cltu object.
Definition: ccsds_cltu.cpp:31