PLOC SUPV extensions #821

Merged
muellerr merged 45 commits from ploc-supv-extensions into main 2023-11-29 14:52:09 +01:00
4 changed files with 86 additions and 10 deletions
Showing only changes of commit 92071b8e0e - Show all commits

2
fsfw

@ -1 +1 @@
Subproject commit 18cc870c8ebc3ff0565b3b8f5ed85e9a54685358
Subproject commit 35be7da3534423af2b4db2b86e75371749181213

View File

@ -2,6 +2,7 @@ target_sources(
${OBSW_NAME}
PUBLIC PlocMemoryDumper.cpp
PlocMpsocHandler.cpp
FreshSupvHandler.cpp
PlocMpsocSpecialComHelper.cpp
plocMpsocHelpers.cpp
PlocSupervisorHandler.cpp

View File

@ -1,10 +1,55 @@
/*
* FreshSupvHandler.cpp
*
* Created on: Nov 9, 2023
* Author: rmueller
*/
#include "FreshSupvHandler.h"
FreshSupvHandler::FreshSupvHandler(DhbConfig cfg) : FreshDeviceHandlerBase(cfg) {}
void FreshSupvHandler::performDeviceOperation(uint8_t opCode) {
if (!transitionActive and mode == MODE_OFF) {
// Nothing to do for now.
return;
}
if (opCode == OpCode::DEFAULT_OPERATION) {
if (transitionActive) {
// TODO: Perform transition handling: OFF to ON and ON to OFF.
} else {
if (mode == MODE_NORMAL) {
// Normal mode handling. Request normal datasets and add them to command map.
}
}
// TODO: Check whether any active commands have timeouted.
} else if (opCode == OpCode::HANDLE_ACTIVE_CMDS) {
// TODO: Parse TM from ring buffer and check whether they complete any active commands.
// If they do, check whether anyone needs to be informed.
}
}
ReturnValue_t FreshSupvHandler::handleCommandMessage(CommandMessage *message) {
// No custom messages.
return returnvalue::FAILED;
}
LocalPoolDataSetBase *FreshSupvHandler::getDataSetHandle(sid_t sid) {
// TODO: return all relevant datasets.
return nullptr;
}
ReturnValue_t FreshSupvHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
LocalDataPoolManager &poolManager) {
// TODO: Copy code from god handler here.
return returnvalue::OK;
}
ReturnValue_t FreshSupvHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
const uint8_t *data, size_t size) {
// TODO: Handle all commands here. Need to add them to some command map. Send command immediately
// then.
return returnvalue::OK;
}
ReturnValue_t FreshSupvHandler::checkModeCommand(Mode_t mode_, Submode_t submode_,
uint32_t *msToReachTheMode) {
if (mode_ != HasModesIF::MODE_OFF and mode_ != HasModesIF::MODE_ON and mode_ != MODE_NORMAL) {
return returnvalue::FAILED;
}
return returnvalue::OK;
}

View File

@ -2,10 +2,40 @@
#define LINUX_PAYLOAD_FRESHSUPVHANDLER_H_
#include "fsfw/devicehandlers/FreshDeviceHandlerBase.h"
class FreshSupvHandler : public FreshDeviceHandlerBase {
public:
enum OpCode { DEFAULT_OPERATION = 0, HANDLE_ACTIVE_CMDS = 1 };
FreshSupvHandler(DhbConfig cfg);
/**
* Periodic helper executed function, implemented by child class.
*/
void performDeviceOperation(uint8_t opCode) override;
/**
* Implemented by child class. Handle all command messages which are
* not health, mode, action or housekeeping messages.
* @param message
* @return
*/
ReturnValue_t handleCommandMessage(CommandMessage* message) override;
private:
// HK manager abstract functions.
LocalPoolDataSetBase* getDataSetHandle(sid_t sid) override;
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
LocalDataPoolManager& poolManager) override;
// Mode abstract functions
ReturnValue_t checkModeCommand(Mode_t mode, Submode_t submode,
uint32_t* msToReachTheMode) override;
// Action override. Forward to user.
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
const uint8_t* data, size_t size) override;
private:
bool transitionActive = false;
};
#endif /* LINUX_PAYLOAD_FRESHSUPVHANDLER_H_ */