fsfw/src/fsfw/memory/MemoryMessage.cpp

104 lines
3.2 KiB
C++

#include "fsfw/memory/MemoryMessage.h"
#include "fsfw/objectmanager/ObjectManager.h"
uint32_t MemoryMessage::getAddress(const CommandMessage* message) {
return message->getParameter();
}
store_address_t MemoryMessage::getStoreID(const CommandMessage* message) {
store_address_t temp;
temp.raw = message->getParameter2();
return temp;
}
uint32_t MemoryMessage::getLength(const CommandMessage* message) {
return message->getParameter2();
}
void MemoryMessage::setMemoryDumpCommand(CommandMessage* message, uint32_t address,
uint32_t length) {
message->setCommand(CMD_MEMORY_DUMP);
message->setParameter(address);
message->setParameter2(length);
}
void MemoryMessage::setMemoryDumpReply(CommandMessage* message, store_address_t storageID) {
message->setCommand(REPLY_MEMORY_DUMP);
message->setParameter2(storageID.raw);
}
void MemoryMessage::setMemoryLoadCommand(CommandMessage* message, uint32_t address,
store_address_t storageID) {
message->setCommand(CMD_MEMORY_LOAD);
message->setParameter(address);
message->setParameter2(storageID.raw);
}
ReturnValue_t MemoryMessage::getErrorCode(const CommandMessage* message) {
return message->getParameter();
}
void MemoryMessage::clear(CommandMessage* message) {
switch (message->getCommand()) {
case CMD_MEMORY_LOAD:
case REPLY_MEMORY_DUMP: {
StorageManagerIF* ipcStore =
ObjectManager::instance()->get<StorageManagerIF>(objects::IPC_STORE);
if (ipcStore != NULL) {
ipcStore->deleteData(getStoreID(message));
}
}
/* NO BREAK falls through*/
case CMD_MEMORY_DUMP:
case CMD_MEMORY_CHECK:
case REPLY_MEMORY_CHECK:
case END_OF_MEMORY_COPY:
message->setCommand(CommandMessage::CMD_NONE);
message->setParameter(0);
message->setParameter2(0);
break;
}
}
void MemoryMessage::setMemoryCheckCommand(CommandMessage* message, uint32_t address,
uint32_t length) {
message->setCommand(CMD_MEMORY_CHECK);
message->setParameter(address);
message->setParameter2(length);
}
void MemoryMessage::setMemoryCheckReply(CommandMessage* message, uint16_t crc) {
message->setCommand(REPLY_MEMORY_CHECK);
message->setParameter(crc);
}
void MemoryMessage::setCrcReturnValue(CommandMessage* message, ReturnValue_t returnValue) {
message->setParameter(returnValue << 16);
};
uint16_t MemoryMessage::getCrc(const CommandMessage* message) {
return (uint16_t)(message->getParameter());
}
ReturnValue_t MemoryMessage::getCrcReturnValue(const CommandMessage* message) {
return (message->getParameter() >> 16);
}
Command_t MemoryMessage::getInitialCommand(const CommandMessage* message) {
return message->getParameter2();
}
void MemoryMessage::setMemoryReplyFailed(CommandMessage* message, ReturnValue_t errorCode,
Command_t initialCommand) {
message->setCommand(REPLY_MEMORY_FAILED);
message->setParameter(errorCode);
message->setParameter2(initialCommand);
}
void MemoryMessage::setMemoryCopyEnd(CommandMessage* message) {
message->setCommand(END_OF_MEMORY_COPY);
message->setParameter(0);
message->setParameter2(0);
}