This commit is contained in:
parent
2d686b3a26
commit
92071b8e0e
2
fsfw
2
fsfw
@ -1 +1 @@
|
||||
Subproject commit 18cc870c8ebc3ff0565b3b8f5ed85e9a54685358
|
||||
Subproject commit 35be7da3534423af2b4db2b86e75371749181213
|
@ -2,6 +2,7 @@ target_sources(
|
||||
${OBSW_NAME}
|
||||
PUBLIC PlocMemoryDumper.cpp
|
||||
PlocMpsocHandler.cpp
|
||||
FreshSupvHandler.cpp
|
||||
PlocMpsocSpecialComHelper.cpp
|
||||
plocMpsocHelpers.cpp
|
||||
PlocSupervisorHandler.cpp
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -2,10 +2,40 @@
|
||||
#define LINUX_PAYLOAD_FRESHSUPVHANDLER_H_
|
||||
|
||||
#include "fsfw/devicehandlers/FreshDeviceHandlerBase.h"
|
||||
class FreshSupvHandler: public FreshDeviceHandlerBase {
|
||||
|
||||
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_ */
|
||||
|
Loading…
Reference in New Issue
Block a user