fsfw/housekeeping/HousekeepingMessage.cpp

62 lines
1.6 KiB
C++
Raw Normal View History

#include "HousekeepingMessage.h"
#include <cstring>
2020-05-17 01:17:11 +02:00
2020-06-14 19:03:28 +02:00
HousekeepingMessage::~HousekeepingMessage() {}
2020-06-24 02:00:26 +02:00
void HousekeepingMessage::setHkReportMessage(CommandMessage* message, sid_t sid,
store_address_t storeId) {
2020-06-24 02:00:26 +02:00
message->setCommand(HK_REPORT);
message->setMessageSize(HK_MESSAGE_SIZE);
setSid(message, sid);
2020-08-10 18:33:28 +02:00
message->setParameter3(storeId.raw);
}
2020-06-24 02:00:26 +02:00
void HousekeepingMessage::setHkDiagnosticsMessage(CommandMessage* message,
sid_t sid, store_address_t storeId) {
message->setCommand(DIAGNOSTICS_REPORT);
2020-06-24 02:02:57 +02:00
message->setMessageSize(HK_MESSAGE_SIZE);
2020-06-24 02:00:26 +02:00
setSid(message, sid);
2020-08-10 18:33:28 +02:00
message->setParameter3(storeId.raw);
}
2020-06-24 02:00:26 +02:00
sid_t HousekeepingMessage::getHkReportMessage(const CommandMessage *message,
store_address_t *storeIdToSet) {
2020-06-14 19:03:28 +02:00
if(storeIdToSet != nullptr) {
2020-08-10 18:33:28 +02:00
*storeIdToSet = message->getParameter3();
2020-06-14 19:03:28 +02:00
}
2020-06-24 02:00:26 +02:00
return getSid(message);
}
2020-09-11 14:06:08 +02:00
void HousekeepingMessage::setToggleReportingMessage(CommandMessage *message,
sid_t sid, bool enableReporting, bool isDiagnostics) {
if(isDiagnostics) {
if(enableReporting) {
message->setCommand(ENABLE_PERIODIC_DIAGNOSTICS_GENERATION);
}
else {
message->setCommand(DISABLE_PERIODIC_DIAGNOSTICS_GENERATION);
}
}
else {
if(enableReporting) {
message->setCommand(ENABLE_PERIODIC_HK_GENERATION);
}
else {
message->setCommand(DISABLE_PERIODIC_HK_REPORT_GENERATION);
}
}
setSid(message, sid);
}
2020-06-24 02:02:57 +02:00
sid_t HousekeepingMessage::getSid(const CommandMessage* message) {
sid_t sid;
std::memcpy(&sid.raw, message->getData(), sizeof(sid.raw));
return sid;
}
2020-06-24 02:00:26 +02:00
void HousekeepingMessage::setSid(CommandMessage *message, sid_t sid) {
std::memcpy(message->getData(), &sid.raw, sizeof(sid.raw));
}