taken over convergence changes
This commit is contained in:
@ -1,15 +1,8 @@
|
||||
/**
|
||||
* @file AcceptsMemoryMessagesIF.h
|
||||
* @brief This file defines the AcceptsMemoryMessagesIF class.
|
||||
* @date 11.07.2013
|
||||
* @author baetz
|
||||
*/
|
||||
#ifndef FSFW_MEMORY_ACCEPTSMEMORYMESSAGESIF_H_
|
||||
#define FSFW_MEMORY_ACCEPTSMEMORYMESSAGESIF_H_
|
||||
|
||||
#ifndef ACCEPTSMEMORYMESSAGESIF_H_
|
||||
#define ACCEPTSMEMORYMESSAGESIF_H_
|
||||
|
||||
#include "../memory/HasMemoryIF.h"
|
||||
#include "../memory/MemoryMessage.h"
|
||||
#include "HasMemoryIF.h"
|
||||
#include "MemoryMessage.h"
|
||||
#include "../ipc/MessageQueueSenderIF.h"
|
||||
|
||||
class AcceptsMemoryMessagesIF : public HasMemoryIF {
|
||||
@ -18,4 +11,4 @@ public:
|
||||
};
|
||||
|
||||
|
||||
#endif /* ACCEPTSMEMORYMESSAGESIF_H_ */
|
||||
#endif /* AFSFW_MEMORY_ACCEPTSMEMORYMESSAGESIF_H_ */
|
||||
|
@ -1,14 +1,15 @@
|
||||
#include "MemoryHelper.h"
|
||||
#include "MemoryMessage.h"
|
||||
|
||||
#include "../globalfunctions/CRC.h"
|
||||
#include "../memory/MemoryHelper.h"
|
||||
#include "../memory/MemoryMessage.h"
|
||||
#include "../objectmanager/ObjectManagerIF.h"
|
||||
#include "../serialize/EndianConverter.h"
|
||||
#include "../serviceinterface/ServiceInterfaceStream.h"
|
||||
|
||||
MemoryHelper::MemoryHelper(HasMemoryIF* workOnThis,
|
||||
MessageQueueIF* useThisQueue):
|
||||
workOnThis(workOnThis), queueToUse(useThisQueue), ipcStore(nullptr),
|
||||
ipcAddress(), lastCommand(CommandMessage::CMD_NONE), busy(false) {
|
||||
workOnThis(workOnThis), queueToUse(useThisQueue), ipcAddress(),
|
||||
lastCommand(CommandMessage::CMD_NONE), busy(false) {
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryHelper::handleMemoryCommand(CommandMessage* message) {
|
||||
@ -34,7 +35,7 @@ ReturnValue_t MemoryHelper::handleMemoryCommand(CommandMessage* message) {
|
||||
}
|
||||
|
||||
void MemoryHelper::completeLoad(ReturnValue_t errorCode,
|
||||
const uint8_t* dataToCopy, const uint32_t size, uint8_t* copyHere) {
|
||||
const uint8_t* dataToCopy, const size_t size, uint8_t* copyHere) {
|
||||
busy = false;
|
||||
switch (errorCode) {
|
||||
case HasMemoryIF::DO_IT_MYSELF:
|
||||
@ -64,7 +65,7 @@ void MemoryHelper::completeLoad(ReturnValue_t errorCode,
|
||||
}
|
||||
|
||||
void MemoryHelper::completeDump(ReturnValue_t errorCode,
|
||||
const uint8_t* dataToCopy, const uint32_t size) {
|
||||
const uint8_t* dataToCopy, const size_t size) {
|
||||
busy = false;
|
||||
CommandMessage reply;
|
||||
MemoryMessage::setMemoryReplyFailed(&reply, errorCode, lastCommand);
|
||||
@ -121,7 +122,7 @@ void MemoryHelper::completeDump(ReturnValue_t errorCode,
|
||||
}
|
||||
|
||||
void MemoryHelper::swapMatrixCopy(uint8_t* out, const uint8_t *in,
|
||||
uint32_t totalSize, uint8_t datatypeSize) {
|
||||
size_t totalSize, uint8_t datatypeSize) {
|
||||
if (totalSize % datatypeSize != 0){
|
||||
return;
|
||||
}
|
||||
|
@ -1,11 +1,16 @@
|
||||
#ifndef FRAMEWORK_MEMORY_MEMORYHELPER_H_
|
||||
#define FRAMEWORK_MEMORY_MEMORYHELPER_H_
|
||||
#ifndef FSFW_MEMORY_MEMORYHELPER_H_
|
||||
#define FSFW_MEMORY_MEMORYHELPER_H_
|
||||
|
||||
#include "AcceptsMemoryMessagesIF.h"
|
||||
|
||||
#include "../ipc/CommandMessage.h"
|
||||
#include "../memory/AcceptsMemoryMessagesIF.h"
|
||||
#include "../returnvalues/HasReturnvaluesIF.h"
|
||||
#include "../storagemanager/StorageManagerIF.h"
|
||||
#include "../ipc/MessageQueueIF.h"
|
||||
|
||||
/**
|
||||
* @brief TODO: documentation.
|
||||
*/
|
||||
class MemoryHelper : public HasReturnvaluesIF {
|
||||
public:
|
||||
static const uint8_t INTERFACE_ID = CLASS_ID::MEMORY_HELPER;
|
||||
@ -13,6 +18,20 @@ public:
|
||||
static const ReturnValue_t INVALID_ADDRESS = MAKE_RETURN_CODE(0xE1);
|
||||
static const ReturnValue_t INVALID_SIZE = MAKE_RETURN_CODE(0xE2);
|
||||
static const ReturnValue_t STATE_MISMATCH = MAKE_RETURN_CODE(0xE3);
|
||||
|
||||
MemoryHelper(HasMemoryIF* workOnThis, MessageQueueIF* useThisQueue);
|
||||
~MemoryHelper();
|
||||
|
||||
ReturnValue_t handleMemoryCommand(CommandMessage* message);
|
||||
void completeLoad(ReturnValue_t errorCode,
|
||||
const uint8_t* dataToCopy = nullptr, const size_t size = 0,
|
||||
uint8_t* copyHere = nullptr);
|
||||
void completeDump(ReturnValue_t errorCode,
|
||||
const uint8_t* dataToCopy = nullptr, const size_t size = 0);
|
||||
void swapMatrixCopy(uint8_t *out, const uint8_t *in, size_t totalSize,
|
||||
uint8_t datatypeSize);
|
||||
ReturnValue_t initialize(MessageQueueIF* queueToUse_);
|
||||
|
||||
private:
|
||||
HasMemoryIF* workOnThis;
|
||||
MessageQueueIF* queueToUse;
|
||||
@ -25,13 +44,6 @@ private:
|
||||
void handleMemoryLoad(CommandMessage* message);
|
||||
void handleMemoryCheckOrDump(CommandMessage* message);
|
||||
ReturnValue_t initialize();
|
||||
public:
|
||||
ReturnValue_t handleMemoryCommand(CommandMessage* message);
|
||||
void completeLoad( ReturnValue_t errorCode, const uint8_t* dataToCopy = NULL, const uint32_t size = 0, uint8_t* copyHere = NULL );
|
||||
void completeDump( ReturnValue_t errorCode, const uint8_t* dataToCopy = NULL, const uint32_t size = 0);
|
||||
void swapMatrixCopy( uint8_t *out, const uint8_t *in, uint32_t totalSize, uint8_t datatypeSize);
|
||||
ReturnValue_t initialize(MessageQueueIF* queueToUse_);
|
||||
MemoryHelper( HasMemoryIF* workOnThis, MessageQueueIF* useThisQueue );
|
||||
~MemoryHelper();
|
||||
|
||||
};
|
||||
#endif /* MEMORYHELPER_H_ */
|
||||
#endif /* FSFW_MEMORY_MEMORYHELPER_H_ */
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "../memory/MemoryMessage.h"
|
||||
#include "MemoryMessage.h"
|
||||
|
||||
#include "../objectmanager/ObjectManagerIF.h"
|
||||
MemoryMessage::MemoryMessage() {
|
||||
}
|
||||
|
||||
uint32_t MemoryMessage::getAddress(const CommandMessage* message) {
|
||||
return message->getParameter();
|
||||
@ -17,18 +16,17 @@ uint32_t MemoryMessage::getLength(const CommandMessage* message) {
|
||||
return message->getParameter2();
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryDumpCommand(CommandMessage* message,
|
||||
void MemoryMessage::setMemoryDumpCommand(CommandMessage* message,
|
||||
uint32_t address, uint32_t length) {
|
||||
message->setCommand(CMD_MEMORY_DUMP);
|
||||
message->setParameter( address );
|
||||
message->setParameter2( length );
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryDumpReply(CommandMessage* message, store_address_t storageID) {
|
||||
void MemoryMessage::setMemoryDumpReply(CommandMessage* message,
|
||||
store_address_t storageID) {
|
||||
message->setCommand(REPLY_MEMORY_DUMP);
|
||||
message->setParameter2( storageID.raw );
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void MemoryMessage::setMemoryLoadCommand(CommandMessage* message,
|
||||
@ -64,22 +62,21 @@ void MemoryMessage::clear(CommandMessage* message) {
|
||||
}
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryCheckCommand(CommandMessage* message,
|
||||
void MemoryMessage::setMemoryCheckCommand(CommandMessage* message,
|
||||
uint32_t address, uint32_t length) {
|
||||
message->setCommand(CMD_MEMORY_CHECK);
|
||||
message->setParameter( address );
|
||||
message->setParameter2( length );
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryCheckReply(CommandMessage* message,
|
||||
void MemoryMessage::setMemoryCheckReply(CommandMessage* message,
|
||||
uint16_t crc) {
|
||||
message->setCommand(REPLY_MEMORY_CHECK);
|
||||
message->setParameter( crc );
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void MemoryMessage::setCrcReturnValue(CommandMessage* message, ReturnValue_t returnValue){
|
||||
void MemoryMessage::setCrcReturnValue(CommandMessage* message,
|
||||
ReturnValue_t returnValue){
|
||||
message->setParameter(returnValue<<16);
|
||||
};
|
||||
|
||||
@ -95,18 +92,16 @@ Command_t MemoryMessage::getInitialCommand(const CommandMessage* message) {
|
||||
return message->getParameter2();
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryReplyFailed(CommandMessage* message,
|
||||
void MemoryMessage::setMemoryReplyFailed(CommandMessage* message,
|
||||
ReturnValue_t errorCode, Command_t initialCommand) {
|
||||
message->setCommand(REPLY_MEMORY_FAILED);
|
||||
message->setParameter(errorCode);
|
||||
message->setParameter2(initialCommand);
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t MemoryMessage::setMemoryCopyEnd(CommandMessage* message) {
|
||||
void MemoryMessage::setMemoryCopyEnd(CommandMessage* message) {
|
||||
message->setCommand(END_OF_MEMORY_COPY);
|
||||
message->setParameter(0);
|
||||
message->setParameter2(0);
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,15 @@
|
||||
#ifndef MEMORYMESSAGE_H_
|
||||
#define MEMORYMESSAGE_H_
|
||||
#ifndef FSFW_MEMORY_MEMORYMESSAGE_H_
|
||||
#define FSFW_MEMORY_MEMORYMESSAGE_H_
|
||||
|
||||
#include "../ipc/CommandMessage.h"
|
||||
#include "../storagemanager/StorageManagerIF.h"
|
||||
|
||||
|
||||
class MemoryMessage {
|
||||
private:
|
||||
MemoryMessage(); //A private ctor inhibits instantiation
|
||||
public:
|
||||
// Instantiation forbidden.
|
||||
MemoryMessage() = delete;
|
||||
|
||||
static const uint8_t MESSAGE_ID = messagetypes::MEMORY;
|
||||
static const Command_t CMD_MEMORY_LOAD = MAKE_COMMAND_ID( 0x01 );
|
||||
static const Command_t CMD_MEMORY_DUMP = MAKE_COMMAND_ID( 0x02 );
|
||||
@ -19,21 +20,29 @@ public:
|
||||
static const Command_t END_OF_MEMORY_COPY = MAKE_COMMAND_ID(0xF0);
|
||||
|
||||
static uint32_t getAddress( const CommandMessage* message );
|
||||
static store_address_t getStoreID( const CommandMessage* message );
|
||||
static store_address_t getStoreID(const CommandMessage* message);
|
||||
static uint32_t getLength( const CommandMessage* message );
|
||||
static ReturnValue_t getErrorCode( const CommandMessage* message );
|
||||
static ReturnValue_t setMemoryDumpCommand( CommandMessage* message, uint32_t address, uint32_t length );
|
||||
static ReturnValue_t setMemoryDumpReply( CommandMessage* message, store_address_t storageID );
|
||||
static void setMemoryLoadCommand( CommandMessage* message, uint32_t address, store_address_t storageID );
|
||||
static ReturnValue_t setMemoryCheckCommand( CommandMessage* message, uint32_t address, uint32_t length );
|
||||
static ReturnValue_t setMemoryCheckReply( CommandMessage* message, uint16_t crc );
|
||||
static ReturnValue_t setMemoryReplyFailed( CommandMessage* message, ReturnValue_t errorCode, Command_t initialCommand );
|
||||
static ReturnValue_t setMemoryCopyEnd( CommandMessage* message);
|
||||
static ReturnValue_t getErrorCode(const CommandMessage* message);
|
||||
static uint16_t getCrc(const CommandMessage* message );
|
||||
static ReturnValue_t getCrcReturnValue(const CommandMessage* message);
|
||||
static Command_t getInitialCommand(const CommandMessage* message);
|
||||
|
||||
static void setMemoryDumpCommand(CommandMessage* message,
|
||||
uint32_t address, uint32_t length );
|
||||
static void setMemoryDumpReply(CommandMessage* message,
|
||||
store_address_t storageID);
|
||||
static void setMemoryLoadCommand(CommandMessage* message,
|
||||
uint32_t address, store_address_t storageID );
|
||||
static void setMemoryCheckCommand(CommandMessage* message,
|
||||
uint32_t address, uint32_t length);
|
||||
static void setMemoryCheckReply(CommandMessage* message,
|
||||
uint16_t crc);
|
||||
static void setMemoryReplyFailed(CommandMessage* message,
|
||||
ReturnValue_t errorCode, Command_t initialCommand);
|
||||
static void setMemoryCopyEnd(CommandMessage* message);
|
||||
static void setCrcReturnValue(CommandMessage*, ReturnValue_t returnValue);
|
||||
static uint16_t getCrc( const CommandMessage* message );
|
||||
static ReturnValue_t getCrcReturnValue(const CommandMessage* message);
|
||||
static Command_t getInitialCommand( const CommandMessage* message );
|
||||
|
||||
static void clear(CommandMessage* message);
|
||||
};
|
||||
|
||||
#endif /* MEMORYMESSAGE_H_ */
|
||||
#endif /* FSFW_MEMORY_MEMORYMESSAGE_H_ */
|
||||
|
Reference in New Issue
Block a user