CCSDS
ccsds_transferframe_tm.h
Go to the documentation of this file.
1
12#ifndef _CCSDS_TRANSFERFRAME_TM_H_
13#define _CCSDS_TRANSFERFRAME_TM_H_
14
15
16/****************************************************************/
17/* TM Transferframes according to */
18/* */
19/* - CCSDS 131.0-B-3, - TM Synchronization and Channel Coding */
20/* https://public.ccsds.org/Pubs/131x0b3e1.pdf */
21/* - CCSDS 132.0-B-2, - TM Space Data Link Protocol */
22/* https://public.ccsds.org/Pubs/132x0b2.pdf */
23/* */
24/* Limitations: */
25/* - The TM secondary header is not supported */
26/* - Randomization is not supported */
27/* */
28/****************************************************************/
29
30
31#include "configCCSDS.h"
32
33#ifdef configTM_TF_TOTAL_SIZE
34#define TM_TF_TOTAL_SIZE configTM_TF_TOTAL_SIZE
35#else
36#define TM_TF_TOTAL_SIZE 508
37#endif
38
39#ifdef configTF_USE_OCF
40#define TF_USE_OCF configTF_USE_OCF
41#else
42#define TF_USE_OCF 1
43#endif
44
45
46#include "ccsds_transferframe.h"
47
48
49namespace CCSDS
50{
51
52
83 {
84 public:
85
106 typedef void (TTmCallback)(void *p_Context, const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID,
107 const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount,
108 const bool b_TFSecHdrFlag, const uint16_t u16_FirstHdrPtr,
109 const uint8_t *pu8_Data, const uint16_t u16_DataSize,
110 const uint32_t u32_OCF);
111
112
113 private:
114 static const int TmTfVersionNumber = 0;
115 const static uint8_t PrimaryHdrSize = 6;
116 const static uint8_t OcfSize = 4;
117 const static uint16_t TfSize = TM_TF_TOTAL_SIZE;
118 uint8_t mau8_Buffer[TfSize];
119
120 const static bool UseOCF = (TF_USE_OCF)?true:false; // Operational Control Field (CLCW)
121
122 void *mp_TmContext;
123 TTmCallback *mp_TmCallback;
124
125 public:
126 TransferframeTm(void *p_TmContext = NULL, TTmCallback *mp_TmCallback = NULL);
127
128 void setCallback(void *p_TmContext, TTmCallback *mp_TmCallback);
129
130
131 // TM generation
132 static uint32_t create(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize,
133 const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID,
134 const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount,
135 const uint16_t u16_FirstHdrPtr,
136 const uint8_t *pu8_Data, const uint16_t u16_DataSize,
137 const uint32_t u32_OCF = 0);
138
139 static uint32_t createIdle(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize,
140 const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID,
141 const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount,
142 const uint32_t u32_OCF = 0);
143
144 private:
145 static int32_t _createPrimaryHeader(uint8_t *pu8_Buffer,
146 const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID, const bool b_OcfFlag,
147 const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount,
148 const bool b_TFSecHdrFlag, const bool b_SyncFlag, const bool b_PacketOrderFlag,
149 const uint8_t u8_SegLengthID, const uint16_t u16_FirstHdrPtr);
150
151 int32_t _processFrame(void);
152
153 private:
154 inline uint16_t _getMaxTfSize(void);
155 inline uint8_t *_getTfBufferAddr(void);
156 inline uint16_t _getPrimaryHeaderSize(void);
157 inline void _getFrameLength(void);
158 };
159
160}
161
162
163#endif // _CCSDS_TRANSFERFRAME_TM_H_
Include file of the Transferframe (TF) class.
Base Class for handling Transfer Frames as described in CCSDS 131.0-B-3, CCSDS 132....
Definition: ccsds_transferframe.h:57
Class for handling the Transfer Frames for Telemetry as described in CCSDS 132.0-B-2.
Definition: ccsds_transferframe_tm.h:83
TransferframeTm(void *p_TmContext=NULL, TTmCallback *mp_TmCallback=NULL)
Construct a new TransferframeTm object.
Definition: ccsds_transferframe_tm.cpp:38
static uint32_t createIdle(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize, const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID, const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount, const uint32_t u32_OCF=0)
Creates an Idle Telemetry Transfer Frame and writes it into the given buffer.
Definition: ccsds_transferframe_tm.cpp:143
static uint32_t create(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize, const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID, const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount, const uint16_t u16_FirstHdrPtr, const uint8_t *pu8_Data, const uint16_t u16_DataSize, const uint32_t u32_OCF=0)
Creates a Telemetry Transfer Frame and writes it into the given buffer.
Definition: ccsds_transferframe_tm.cpp:77
void() TTmCallback(void *p_Context, const uint16_t u16_SpacecraftID, const uint8_t u8_VirtualChannelID, const uint8_t u8_MasterChannelFrameCount, const uint8_t u8_VirtualChannelFrameCount, const bool b_TFSecHdrFlag, const uint16_t u16_FirstHdrPtr, const uint8_t *pu8_Data, const uint16_t u16_DataSize, const uint32_t u32_OCF)
Declaration of the callback which shall be called if a complete telemetry transfer frame was received...
Definition: ccsds_transferframe_tm.h:106
void setCallback(void *p_TmContext, TTmCallback *mp_TmCallback)
Overwrites the context pointer and callback which were set using the constructor.
Definition: ccsds_transferframe_tm.cpp:51