67 lines
2.2 KiB
C
67 lines
2.2 KiB
C
|
/*
|
||
|
* TcPacketCheck.h
|
||
|
*
|
||
|
* Created on: 19.06.2012
|
||
|
* Author: baetz
|
||
|
*/
|
||
|
|
||
|
#ifndef TCPACKETCHECK_H_
|
||
|
#define TCPACKETCHECK_H_
|
||
|
|
||
|
#include <framework/returnvalues/HasReturnvaluesIF.h>
|
||
|
#include <framework/tmtcpacket/pus/TcPacketStored.h>
|
||
|
#include <framework/tmtcservices/PusVerificationReport.h>
|
||
|
/**
|
||
|
* This class performs a formal packet check for incoming PUS Telecommand Packets.
|
||
|
* Currently, it only checks if the APID and CRC are correct.
|
||
|
* \ingroup tc_distribution
|
||
|
*/
|
||
|
class TcPacketCheck : public HasReturnvaluesIF {
|
||
|
protected:
|
||
|
/**
|
||
|
* Describes the version number a packet must have to pass.
|
||
|
*/
|
||
|
static const uint8_t CCSDS_VERSION_NUMBER = 0;
|
||
|
/**
|
||
|
* Describes the secondary header a packet must have to pass.
|
||
|
*/
|
||
|
static const uint8_t CCSDS_SECONDARY_HEADER_FLAG = 0;
|
||
|
/**
|
||
|
* Describes the TC Packet PUS Version Number a packet must have to pass.
|
||
|
*/
|
||
|
static const uint8_t PUS_VERSION_NUMBER = 1;
|
||
|
/**
|
||
|
* The packet id each correct packet should have.
|
||
|
* It is composed of the APID and some static fields.
|
||
|
*/
|
||
|
uint16_t apid;
|
||
|
public:
|
||
|
static const uint8_t INTERFACE_ID = TC_PACKET_CHECK;
|
||
|
static const ReturnValue_t ILLEGAL_APID = MAKE_RETURN_CODE( 0 );
|
||
|
static const ReturnValue_t INCOMPLETE_PACKET = MAKE_RETURN_CODE( 1 );
|
||
|
static const ReturnValue_t INCORRECT_CHECKSUM = MAKE_RETURN_CODE( 2 );
|
||
|
static const ReturnValue_t ILLEGAL_PACKET_TYPE = MAKE_RETURN_CODE( 3 );
|
||
|
static const ReturnValue_t ILLEGAL_PACKET_SUBTYPE = MAKE_RETURN_CODE( 4 );
|
||
|
static const ReturnValue_t INCORRECT_PRIMARY_HEADER = MAKE_RETURN_CODE( 5 );
|
||
|
static const ReturnValue_t INCORRECT_SECONDARY_HEADER = MAKE_RETURN_CODE( 6 );
|
||
|
/**
|
||
|
* The constructor only sets the APID attribute.
|
||
|
* @param set_apid The APID to set.
|
||
|
*/
|
||
|
TcPacketCheck( uint16_t set_apid );
|
||
|
/**
|
||
|
* This is the actual method to formally check a certain Telecommand Packet.
|
||
|
* The packet's Application Data can not be checked here.
|
||
|
* @param current_packet The packt to check
|
||
|
* @return - \c RETURN_OK on success.
|
||
|
* - \c INCORRECT_CHECKSUM if checksum is invalid.
|
||
|
* - \c ILLEGAL_APID if APID does not match.
|
||
|
*/
|
||
|
ReturnValue_t checkPacket( TcPacketStored* current_packet );
|
||
|
|
||
|
uint16_t getApid() const;
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif /* TCPACKETCHECK_H_ */
|