77 lines
2.1 KiB
C
77 lines
2.1 KiB
C
|
#ifndef FRAMEWORK_PUS_SERVICEPACKETS_SERVICE2PACKETS_H_
|
||
|
#define FRAMEWORK_PUS_SERVICEPACKETS_SERVICE2PACKETS_H_
|
||
|
|
||
|
#include "../../action/ActionMessage.h"
|
||
|
#include "../../objectmanager/SystemObjectIF.h"
|
||
|
#include "../../serialize/SerialLinkedListAdapter.h"
|
||
|
#include "../../serviceinterface/ServiceInterfaceStream.h"
|
||
|
|
||
|
/**
|
||
|
* @brief Subservice 128
|
||
|
* @ingroup spacepackets
|
||
|
*/
|
||
|
class RawCommand { //!< [EXPORT] : [SUBSERVICE] 128
|
||
|
public:
|
||
|
RawCommand(const uint8_t* buffer, size_t size) {
|
||
|
// Deserialize Adapter to get correct endianness
|
||
|
SerializeAdapter::deSerialize(&objectId, &buffer, &size,
|
||
|
SerializeIF::Endianness::BIG);
|
||
|
commandBuffer = buffer;
|
||
|
// size is decremented by AutoSerializeAdapter,
|
||
|
// remaining size is data size
|
||
|
dataSize = size;
|
||
|
}
|
||
|
object_id_t getObjectId() const {
|
||
|
return objectId;
|
||
|
}
|
||
|
|
||
|
const uint8_t* getCommand() {
|
||
|
return commandBuffer;
|
||
|
}
|
||
|
|
||
|
size_t getCommandSize() const {
|
||
|
return dataSize;
|
||
|
}
|
||
|
private:
|
||
|
object_id_t objectId = 0;
|
||
|
const uint8_t* commandBuffer = nullptr; //!< [EXPORT] : [MAXSIZE] 256 Bytes
|
||
|
size_t dataSize = 0; //!< [EXPORT] : [IGNORE]
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief Subservice 129: Command packet to set wiretapping mode
|
||
|
* @ingroup spacepackets
|
||
|
*/
|
||
|
class WiretappingToggle: public SerialLinkedListAdapter<SerializeIF>{ //!< [EXPORT] : [SUBSERVICE] 129
|
||
|
public:
|
||
|
static const size_t WIRETAPPING_COMMAND_SIZE = 5;
|
||
|
WiretappingToggle(){
|
||
|
setStart(&objectId);
|
||
|
objectId.setNext(&wiretappingMode);
|
||
|
}
|
||
|
|
||
|
uint8_t getWiretappingMode() const {
|
||
|
return wiretappingMode.entry;
|
||
|
}
|
||
|
private:
|
||
|
SerializeElement<object_id_t> objectId;
|
||
|
SerializeElement<uint8_t> wiretappingMode; //!< [EXPORT] : [INPUT] Mode 0: OFF, Mode 1: RAW
|
||
|
};
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @brief Subservices 130 and 131: TM packets
|
||
|
* @ingroup spacepackets
|
||
|
*/
|
||
|
class WiretappingPacket { //!< [EXPORT] : [SUBSERVICE] 130, 131
|
||
|
public:
|
||
|
object_id_t objectId; //!< [EXPORT] : [COMMENT] Object ID of source object
|
||
|
const uint8_t* data; //!< [EXPORT] : [MAXSIZE] Raw Command Max. Size
|
||
|
WiretappingPacket(object_id_t objectId, const uint8_t* buffer):
|
||
|
objectId(objectId), data(buffer) {
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif /* FRAMEWORK_PUS_SERVICEPACKETS_SERVICE2PACKETS_H_ */
|