#ifndef FSFW_MEMORY_FILESYSTEMMESSAGE_H_ #define FSFW_MEMORY_FILESYSTEMMESSAGE_H_ #include "../ipc/CommandMessage.h" #include "../storagemanager/StorageManagerIF.h" #include "../objectmanager/SystemObject.h" /** * @author Jakob Meier */ class FileSystemMessage { public: // Instantiation forbidden FileSystemMessage() = delete; static const uint8_t MESSAGE_ID = messagetypes::FILE_SYSTEM_MESSAGE; /* PUS standard (ECSS-E-ST-70-41C15 2016 p.654) */ static const Command_t CREATE_FILE = MAKE_COMMAND_ID(1); static const Command_t DELETE_FILE = MAKE_COMMAND_ID(2); /** Report file attributes */ static const Command_t REPORT_FILE_ATTRIBUTES = MAKE_COMMAND_ID(3); static const Command_t FILE_ATTRIBUTES_REPLY = MAKE_COMMAND_ID(4); /** Command to lock a file, setting it read-only */ static const Command_t LOCK_FILE = MAKE_COMMAND_ID(5); /** Command to unlock a file, enabling further operations on it */ static const Command_t UNLOCK_FILE = MAKE_COMMAND_ID(6); /** * Find file in repository, using a search pattern. * Please note that * is the wildcard character. * For example, when looking for all files which start with have the * structure tm.bin, tm*.bin can be used. */ static const Command_t FIND_FILE = MAKE_COMMAND_ID(7); static const Command_t CREATE_DIRECTORY = MAKE_COMMAND_ID(9); static const Command_t DELETE_DIRECTORY = MAKE_COMMAND_ID(10); static const Command_t RENAME_DIRECTORY = MAKE_COMMAND_ID(11); /** Dump contents of a repository */ static const Command_t DUMP_REPOSITORY = MAKE_COMMAND_ID(12); /** Repository dump reply */ static const Command_t DUMY_REPOSITORY_REPLY = MAKE_COMMAND_ID(13); static const Command_t APPEND_TO_FILE = MAKE_COMMAND_ID(128); static const Command_t READ_FROM_FILE = MAKE_COMMAND_ID(129); static const Command_t READ_REPLY = MAKE_COMMAND_ID(130); /** Dump the structure of the whole SD card as an ASCII file */ static const Command_t DUMP_FILE_STRUCTURE = MAKE_COMMAND_ID(131); static const Command_t COMPLETION_SUCCESS = MAKE_COMMAND_ID(150); static const Command_t COMPLETION_FAILED = MAKE_COMMAND_ID(151); static void setCreateFileCommand(CommandMessage* message, store_address_t storeId); static void setDeleteFileCommand(CommandMessage* message, store_address_t storeId); static void setCreateDirectoryCommand(CommandMessage* message, store_address_t storeId); static void setDeleteDirectoryCommand(CommandMessage* message, store_address_t storeId); static void setWriteCommand(CommandMessage* message, store_address_t storeId); static void setReadCommand(CommandMessage* message, store_address_t storeId); static void setReadReply(CommandMessage* message, store_address_t storeId); static void setSuccessReply(CommandMessage* message); static void setFailureReply(CommandMessage* message, ReturnValue_t errorCode); static store_address_t getStoreId(const CommandMessage* message); static ReturnValue_t getFailureReply(const CommandMessage* message); }; #endif /* FSFW_MEMORY_FILESYSTEMMESSAGE_H_ */