2021-07-13 20:22:54 +02:00
|
|
|
#include "fsfw/tmtcservices/PusVerificationReport.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "fsfw/serialize/SerializeAdapter.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
PusVerificationMessage::PusVerificationMessage() {}
|
|
|
|
|
|
|
|
PusVerificationMessage::PusVerificationMessage(uint8_t set_report_id, uint8_t ackFlags,
|
|
|
|
uint16_t tcPacketId, uint16_t tcSequenceControl,
|
|
|
|
ReturnValue_t set_error_code, uint8_t set_step,
|
|
|
|
uint32_t parameter1, uint32_t parameter2) {
|
|
|
|
uint8_t* data = this->getBuffer();
|
|
|
|
data[messageSize] = set_report_id;
|
|
|
|
messageSize += sizeof(set_report_id);
|
|
|
|
data[messageSize] = ackFlags;
|
|
|
|
messageSize += sizeof(ackFlags);
|
|
|
|
memcpy(&data[messageSize], &tcPacketId, sizeof(tcPacketId));
|
|
|
|
messageSize += sizeof(tcPacketId);
|
|
|
|
memcpy(&data[messageSize], &tcSequenceControl, sizeof(tcSequenceControl));
|
|
|
|
messageSize += sizeof(tcSequenceControl);
|
|
|
|
data[messageSize] = set_step;
|
|
|
|
messageSize += sizeof(set_step);
|
|
|
|
memcpy(&data[messageSize], &set_error_code, sizeof(set_error_code));
|
|
|
|
messageSize += sizeof(set_error_code);
|
|
|
|
memcpy(&data[messageSize], ¶meter1, sizeof(parameter1));
|
|
|
|
messageSize += sizeof(parameter1);
|
|
|
|
memcpy(&data[messageSize], ¶meter2, sizeof(parameter2));
|
|
|
|
messageSize += sizeof(parameter2);
|
|
|
|
}
|
|
|
|
|
|
|
|
uint8_t PusVerificationMessage::getReportId() { return getContent()->reportId; }
|
|
|
|
|
|
|
|
uint8_t PusVerificationMessage::getAckFlags() { return getContent()->ackFlags; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
|
|
|
uint16_t PusVerificationMessage::getTcPacketId() {
|
2022-02-02 10:29:30 +01:00
|
|
|
uint16_t tcPacketId;
|
|
|
|
memcpy(&tcPacketId, &getContent()->packetId_0, sizeof(tcPacketId));
|
|
|
|
return tcPacketId;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
uint16_t PusVerificationMessage::getTcSequenceControl() {
|
2022-02-02 10:29:30 +01:00
|
|
|
uint16_t tcSequenceControl;
|
|
|
|
memcpy(&tcSequenceControl, &getContent()->tcSequenceControl_0, sizeof(tcSequenceControl));
|
|
|
|
return tcSequenceControl;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
uint8_t PusVerificationMessage::getStep() { return getContent()->step; }
|
2016-06-15 23:48:41 +02:00
|
|
|
|
|
|
|
ReturnValue_t PusVerificationMessage::getErrorCode() {
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t errorCode;
|
|
|
|
memcpy(&errorCode, &getContent()->error_code_0, sizeof(errorCode));
|
|
|
|
return errorCode;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
PusVerificationMessage::verifciationMessageContent* PusVerificationMessage::getContent() {
|
2022-02-02 10:29:30 +01:00
|
|
|
return (verifciationMessageContent*)this->getData();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t PusVerificationMessage::getParameter1() {
|
2022-02-02 10:29:30 +01:00
|
|
|
uint32_t parameter;
|
|
|
|
memcpy(¶meter, &getContent()->parameter1_0, sizeof(parameter));
|
|
|
|
return parameter;
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
uint32_t PusVerificationMessage::getParameter2() {
|
2022-02-02 10:29:30 +01:00
|
|
|
uint32_t parameter;
|
|
|
|
memcpy(¶meter, &getContent()->parameter2_0, sizeof(parameter));
|
|
|
|
return parameter;
|
|
|
|
}
|
|
|
|
|
|
|
|
PusSuccessReport::PusSuccessReport(uint16_t setPacketId, uint16_t setSequenceControl,
|
|
|
|
uint8_t setStep)
|
|
|
|
: reportSize(0), pBuffer(reportBuffer) {
|
|
|
|
// Serialization won't fail, because we know the necessary max-size of the buffer.
|
|
|
|
SerializeAdapter::serialize(&setPacketId, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
SerializeAdapter::serialize(&setSequenceControl, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
if (setStep != 0) {
|
|
|
|
SerializeAdapter::serialize(&setStep, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
PusSuccessReport::~PusSuccessReport() {}
|
|
|
|
|
|
|
|
uint32_t PusSuccessReport::getSize() { return reportSize; }
|
|
|
|
|
|
|
|
uint8_t* PusSuccessReport::getReport() { return reportBuffer; }
|
|
|
|
|
|
|
|
PusFailureReport::PusFailureReport(uint16_t setPacketId, uint16_t setSequenceControl,
|
|
|
|
ReturnValue_t setErrorCode, uint8_t setStep, uint32_t parameter1,
|
|
|
|
uint32_t parameter2)
|
|
|
|
: reportSize(0), pBuffer(reportBuffer) {
|
|
|
|
// Serialization won't fail, because we know the necessary max-size of the buffer.
|
|
|
|
SerializeAdapter::serialize(&setPacketId, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
SerializeAdapter::serialize(&setSequenceControl, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
if (setStep != 0) {
|
|
|
|
SerializeAdapter::serialize(&setStep, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
}
|
|
|
|
SerializeAdapter::serialize(&setErrorCode, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
SerializeAdapter::serialize(¶meter1, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
SerializeAdapter::serialize(¶meter2, &pBuffer, &reportSize, sizeof(reportBuffer),
|
|
|
|
SerializeIF::Endianness::BIG);
|
|
|
|
}
|
|
|
|
|
|
|
|
PusFailureReport::~PusFailureReport() {}
|
|
|
|
|
|
|
|
size_t PusFailureReport::getSize() { return reportSize; }
|
|
|
|
|
|
|
|
uint8_t* PusFailureReport::getReport() { return reportBuffer; }
|