12#ifndef _CCSDS_SPACEPACKET_H_
13#define _CCSDS_SPACEPACKET_H_
26#include "configCCSDS.h"
28#ifdef configSP_MAX_DATA_SIZE
29#define SP_MAX_DATA_SIZE configSP_MAX_DATA_SIZE
31#define SP_MAX_DATA_SIZE 496
36#define SP_HEADER_SIZE 6
37#define SP_MAX_TOTAL_SIZE (SP_HEADER_SIZE+SP_MAX_DATA_SIZE)
100 typedef void (
TSpCallback)(
void *p_SpContext,
const uint8_t u8_PacketType,
101 const uint8_t u8_SequenceFlags,
const uint16_t u16_APID,
102 const uint16_t u16_SequenceCount,
const bool b_SecHeader,
103 const uint8_t *pu8_PacketData,
const uint16_t u16_PacketDataLength);
106 const static uint8_t SpPacketVersion = 0;
107 const static uint8_t PrimaryHdrSize = SP_HEADER_SIZE;
110 uint8_t mu8_PacketVersionNumber;
115 uint16_t mu16_PacketSequenceCount;
116 uint16_t mu16_PacketDataLength;
117 uint8_t au8_PacketData[SP_MAX_DATA_SIZE];
120 uint16_t mu16_SyncErrorCount;
121 uint16_t mu16_OverflowErrorCount;
134 static uint32_t
create(uint8_t *pu8_Buffer,
const uint32_t u32_BufferSize,
135 const PacketType e_PacketType,
const SequenceFlags e_SequenceFlags,
const uint16_t u16_APID,
const uint16_t u16_SequenceCount,
136 const uint8_t *pu8_PacketData,
const uint16_t u16_PacketDataLength);
138 static uint32_t
create(uint8_t *pu8_Buffer,
const uint32_t u32_BufferSize,
139 const PacketType e_PacketType,
const SequenceFlags e_SequenceFlags,
const uint16_t u16_APID,
const uint16_t u16_SequenceCount,
140 const uint8_t *pu8_SecondaryHeaderData,
const uint16_t u16_SecondaryHeaderLength,
141 const uint8_t *pu8_PacketData,
const uint16_t u16_PacketDataLength);
143 static uint32_t
createIdle(uint8_t *pu8_Buffer,
const uint32_t u32_BufferSize,
144 const uint16_t u16_SequenceCount,
const uint16_t u16_TargetPacketSize);
147 int32_t
process(
const uint8_t *pu8_Buffer,
const uint32_t u32_BufferSize);
155 static int32_t _create_primary_header(uint8_t *pu8_Buffer,
156 const PacketType e_PacketType,
const SequenceFlags e_SequenceFlags,
const uint16_t u16_APID,
const uint16_t u16_SequenceCount,
const bool b_SecHeader,
157 const uint32_t u32_PacketDataLength);
Class for handling the Space Packets as described in CCSDS 133.0-B-2.
Definition: ccsds_spacepacket.h:59
SequenceFlags
Definition: ccsds_spacepacket.h:76
@ LastSegment
Definition: ccsds_spacepacket.h:79
@ FirstSegment
Definition: ccsds_spacepacket.h:78
@ Unsegmented
Definition: ccsds_spacepacket.h:80
@ ContinuationSegment
Definition: ccsds_spacepacket.h:77
int32_t process(const uint8_t *pu8_Buffer, const uint32_t u32_BufferSize)
The given upstream data is parsed for SpacePackets.
Definition: ccsds_spacepacket.cpp:222
static uint32_t create(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize, const PacketType e_PacketType, const SequenceFlags e_SequenceFlags, const uint16_t u16_APID, const uint16_t u16_SequenceCount, const uint8_t *pu8_PacketData, const uint16_t u16_PacketDataLength)
Creates a Space Packet and writes it into the given buffer.
Definition: ccsds_spacepacket.cpp:81
SpacePacket(void *p_SpContext=NULL, TSpCallback *mp_SpCallback=NULL)
Construct a new SpacePacket object.
Definition: ccsds_spacepacket.cpp:31
void() TSpCallback(void *p_SpContext, const uint8_t u8_PacketType, const uint8_t u8_SequenceFlags, const uint16_t u16_APID, const uint16_t u16_SequenceCount, const bool b_SecHeader, const uint8_t *pu8_PacketData, const uint16_t u16_PacketDataLength)
Declaration of the callback which shall be called if a complete space packet was received.
Definition: ccsds_spacepacket.h:100
void setCallback(void *p_SpContext, TSpCallback *mp_SpCallback)
Overwrites the context pointer and callback which were set using the constructor.
Definition: ccsds_spacepacket.cpp:56
uint16_t getOverflowErrorCount(void)
Returns the number of overflow errors.
Definition: ccsds_spacepacket.cpp:311
int32_t reset(void)
Resets the scanning for a space packet.
Definition: ccsds_spacepacket.cpp:199
static uint32_t createIdle(uint8_t *pu8_Buffer, const uint32_t u32_BufferSize, const uint16_t u16_SequenceCount, const uint16_t u16_TargetPacketSize)
Creates an Idle Space Packet and writes into the given buffer.
Definition: ccsds_spacepacket.cpp:160
uint16_t getSyncErrorCount(void)
Returns the number of sync errors.
Definition: ccsds_spacepacket.cpp:292
PacketType
Definition: ccsds_spacepacket.h:66
@ TC
Definition: ccsds_spacepacket.h:68
@ TM
Definition: ccsds_spacepacket.h:67
void clearErrorCounters(void)
Clears all error counters (Sync Error and Overflow Error)
Definition: ccsds_spacepacket.cpp:321