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}
|
${OBSW_NAME}
|
||||||
PUBLIC PlocMemoryDumper.cpp
|
PUBLIC PlocMemoryDumper.cpp
|
||||||
PlocMpsocHandler.cpp
|
PlocMpsocHandler.cpp
|
||||||
|
FreshSupvHandler.cpp
|
||||||
PlocMpsocSpecialComHelper.cpp
|
PlocMpsocSpecialComHelper.cpp
|
||||||
plocMpsocHelpers.cpp
|
plocMpsocHelpers.cpp
|
||||||
PlocSupervisorHandler.cpp
|
PlocSupervisorHandler.cpp
|
||||||
|
@ -1,10 +1,55 @@
|
|||||||
/*
|
#include "FreshSupvHandler.h"
|
||||||
* FreshSupvHandler.cpp
|
|
||||||
*
|
|
||||||
* Created on: Nov 9, 2023
|
|
||||||
* Author: rmueller
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
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_
|
#define LINUX_PAYLOAD_FRESHSUPVHANDLER_H_
|
||||||
|
|
||||||
#include "fsfw/devicehandlers/FreshDeviceHandlerBase.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);
|
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_ */
|
#endif /* LINUX_PAYLOAD_FRESHSUPVHANDLER_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user