started SUS assembly
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
Some checks failed
EIVE/eive-obsw/pipeline/head There was a failure building this commit
fixes for PCDU code and switcher list handling
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
#ifndef MISSION_SYSTEM_ACSBOARDASSEMBLY_H_
|
||||
#define MISSION_SYSTEM_ACSBOARDASSEMBLY_H_
|
||||
|
||||
#include <devices/powerSwitcherList.h>
|
||||
#include <fsfw/devicehandlers/AssemblyBase.h>
|
||||
#include <fsfw/objectmanager/frameworkObjects.h>
|
||||
|
||||
@ -52,37 +53,40 @@ enum ModeTableIdx : uint8_t {
|
||||
GPS = 8
|
||||
};
|
||||
|
||||
static constexpr uint8_t NUMBER_DEVICES_MODE_TABLE = 9;
|
||||
|
||||
class PowerSwitchIF;
|
||||
|
||||
class AcsBoardAssembly : public AssemblyBase {
|
||||
public:
|
||||
AcsBoardAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* switcher,
|
||||
AcsBoardHelper helper);
|
||||
|
||||
private:
|
||||
enum class States { IDLE, SWITCHING_POWER, MODE_COMMANDING };
|
||||
|
||||
States state = States::IDLE;
|
||||
Mode_t currentMode = MODE_OFF;
|
||||
Submode_t currentSubmode = A_SIDE;
|
||||
PowerSwitchIF* switcher = nullptr;
|
||||
|
||||
AcsBoardHelper helper;
|
||||
void initModeTableEntry(object_id_t id, ModeListEntry& entry);
|
||||
|
||||
ReturnValue_t initialize() override;
|
||||
FixedArrayList<ModeListEntry, NUMBER_DEVICES_MODE_TABLE> modeTable;
|
||||
static constexpr uint8_t NUMBER_DEVICES_MODE_TABLE = 9;
|
||||
|
||||
static constexpr Submode_t A_SIDE = 0;
|
||||
static constexpr Submode_t B_SIDE = 1;
|
||||
static constexpr Submode_t DUAL_MODE = 2;
|
||||
|
||||
AcsBoardAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||
AcsBoardHelper helper);
|
||||
|
||||
private:
|
||||
static constexpr pcduSwitches::Switches SWITCH_A =
|
||||
pcduSwitches::Switches::PDU1_CH7_ACS_A_SIDE_3V3;
|
||||
static constexpr pcduSwitches::Switches SWITCH_B =
|
||||
pcduSwitches::Switches::PDU2_CH7_ACS_BOARD_SIDE_B_3V3;
|
||||
|
||||
enum class States { IDLE, SWITCHING_POWER, MODE_COMMANDING } state = States::IDLE;
|
||||
|
||||
PowerSwitchIF* pwrSwitcher = nullptr;
|
||||
|
||||
AcsBoardHelper helper;
|
||||
FixedArrayList<ModeListEntry, NUMBER_DEVICES_MODE_TABLE> modeTable;
|
||||
void initModeTableEntry(object_id_t id, ModeListEntry& entry);
|
||||
|
||||
ReturnValue_t initialize() override;
|
||||
|
||||
// AssemblyBase overrides
|
||||
ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override;
|
||||
ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override;
|
||||
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
|
||||
void handleModeReached() override;
|
||||
|
||||
/**
|
||||
* Check whether it makes sense to send mode commands to the device
|
||||
@ -92,7 +96,7 @@ class AcsBoardAssembly : public AssemblyBase {
|
||||
*/
|
||||
bool isUseable(object_id_t object, Mode_t mode);
|
||||
ReturnValue_t handleNormalOrOnModeCmd(Mode_t mode, Submode_t submode);
|
||||
void powerStateMachine(Submode_t submode);
|
||||
void powerStateMachine(Mode_t mode, Submode_t submode);
|
||||
void refreshHelperModes();
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user