2021-07-13 20:22:54 +02:00
|
|
|
#include "fsfw/devicehandlers/DeviceHandlerMessage.h"
|
2022-02-02 10:29:30 +01:00
|
|
|
|
2021-07-13 20:22:54 +02:00
|
|
|
#include "fsfw/objectmanager/ObjectManager.h"
|
2016-06-15 23:48:41 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
store_address_t DeviceHandlerMessage::getStoreAddress(const CommandMessage* message) {
|
|
|
|
return store_address_t(message->getParameter2());
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
uint32_t DeviceHandlerMessage::getDeviceCommandId(const CommandMessage* message) {
|
|
|
|
return message->getParameter();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
object_id_t DeviceHandlerMessage::getIoBoardObjectId(const CommandMessage* message) {
|
|
|
|
return message->getParameter();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
uint8_t DeviceHandlerMessage::getWiretappingMode(const CommandMessage* message) {
|
|
|
|
return message->getParameter();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void DeviceHandlerMessage::setDeviceHandlerRawCommandMessage(CommandMessage* message,
|
|
|
|
store_address_t rawPacketStoreId) {
|
|
|
|
message->setCommand(CMD_RAW);
|
|
|
|
message->setParameter2(rawPacketStoreId.raw);
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void DeviceHandlerMessage::setDeviceHandlerWiretappingMessage(CommandMessage* message,
|
|
|
|
uint8_t wiretappingMode) {
|
|
|
|
message->setCommand(CMD_WIRETAPPING);
|
|
|
|
message->setParameter(wiretappingMode);
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void DeviceHandlerMessage::setDeviceHandlerSwitchIoBoardMessage(CommandMessage* message,
|
|
|
|
uint32_t ioBoardIdentifier) {
|
|
|
|
message->setCommand(CMD_SWITCH_ADDRESS);
|
|
|
|
message->setParameter(ioBoardIdentifier);
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
object_id_t DeviceHandlerMessage::getDeviceObjectId(const CommandMessage* message) {
|
|
|
|
return message->getParameter();
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void DeviceHandlerMessage::setDeviceHandlerRawReplyMessage(CommandMessage* message,
|
|
|
|
object_id_t deviceObjectid,
|
|
|
|
store_address_t rawPacketStoreId,
|
|
|
|
bool isCommand) {
|
|
|
|
if (isCommand) {
|
|
|
|
message->setCommand(REPLY_RAW_COMMAND);
|
|
|
|
} else {
|
|
|
|
message->setCommand(REPLY_RAW_REPLY);
|
|
|
|
}
|
|
|
|
message->setParameter(deviceObjectid);
|
|
|
|
message->setParameter2(rawPacketStoreId.raw);
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void DeviceHandlerMessage::setDeviceHandlerDirectCommandReply(
|
2022-02-02 10:29:30 +01:00
|
|
|
CommandMessage* message, object_id_t deviceObjectid, store_address_t commandParametersStoreId) {
|
|
|
|
message->setCommand(REPLY_DIRECT_COMMAND_DATA);
|
|
|
|
message->setParameter(deviceObjectid);
|
|
|
|
message->setParameter2(commandParametersStoreId.raw);
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void DeviceHandlerMessage::clear(CommandMessage* message) {
|
2022-02-02 10:29:30 +01:00
|
|
|
switch (message->getCommand()) {
|
|
|
|
case CMD_RAW:
|
|
|
|
case REPLY_RAW_COMMAND:
|
|
|
|
case REPLY_RAW_REPLY:
|
|
|
|
case REPLY_DIRECT_COMMAND_DATA: {
|
|
|
|
StorageManagerIF* ipcStore =
|
|
|
|
ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE);
|
|
|
|
if (ipcStore != nullptr) {
|
|
|
|
ipcStore->deleteData(getStoreAddress(message));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/* NO BREAK falls through*/
|
|
|
|
case CMD_SWITCH_ADDRESS:
|
|
|
|
case CMD_WIRETAPPING:
|
|
|
|
message->setCommand(CommandMessage::CMD_NONE);
|
|
|
|
message->setParameter(0);
|
|
|
|
message->setParameter2(0);
|
|
|
|
break;
|
|
|
|
}
|
2016-06-15 23:48:41 +02:00
|
|
|
}
|