/** * @file BCFrame.h * @brief This file defines the BCFrame class. * @date 24.04.2013 * @author baetz */ #ifndef BCFRAME_H_ #define BCFRAME_H_ #include "CCSDSReturnValuesIF.h" /** * Small helper class to identify a BcFrame. * @ingroup ccsds_handling */ class BcFrame: public CCSDSReturnValuesIF { private: static const uint8_t UNLOCK_COMMAND = 0b00000000;//! Identifier for a certain BC Command. static const uint8_t SET_V_R_1 = 0b10000010;//! Identifier for a certain BC Command. static const uint8_t SET_V_R_2 = 0b00000000;//! Identifier for a certain BC Command. public: uint8_t byte1; //!< First content byte uint8_t byte2; //!< Second content byte uint8_t vR; //!< vR byte /** * Simple default constructor. */ BcFrame() : byte1(0), byte2(0), vR(0) { } /** * Main and only useful method of the class. * With the buffer and size information passed, the class passes the content * and checks if it is one of the two valid BC Command Frames. * @param inBuffer Content of the frame to check, * @param inSize Size of the data to check. * @return - #BC_ILLEGAL_COMMAND if it is no command. * - #BC_IS_UNLOCK_COMMAND if it is an unlock command. * - #BC_IS_SET_VR_COMMAND if it is such. */ ReturnValue_t initialize(const uint8_t* inBuffer, uint16_t inSize) { ReturnValue_t returnValue = BC_ILLEGAL_COMMAND; if (inSize == 1) { byte1 = inBuffer[0]; if (byte1 == UNLOCK_COMMAND) { returnValue = BC_IS_UNLOCK_COMMAND; } } else if (inSize == 3) { byte1 = inBuffer[0]; byte2 = inBuffer[1]; vR = inBuffer[2]; if (byte1 == SET_V_R_1 && byte2 == SET_V_R_2) { returnValue = BC_IS_SET_VR_COMMAND; } } return returnValue; } }; #endif /* BCFRAME_H_ */