Solar Array Deployment Update #305
@@ -282,7 +282,8 @@ void SolarArrayDeploymentHandler::finishFsm(ReturnValue_t resultForActionHelper)
|
|||||||
stateMachine = StateMachine::IDLE;
|
stateMachine = StateMachine::IDLE;
|
||||||
if (actionActive) {
|
if (actionActive) {
|
||||||
bool success = false;
|
bool success = false;
|
||||||
if(resultForActionHelper == returnvalue::OK or resultForActionHelper == HasActionsIF::EXECUTION_FINISHED) {
|
if (resultForActionHelper == returnvalue::OK or
|
||||||
|
resultForActionHelper == HasActionsIF::EXECUTION_FINISHED) {
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
actionHelper.finish(success, rememberCommanderId, activeCmd, resultForActionHelper);
|
actionHelper.finish(success, rememberCommanderId, activeCmd, resultForActionHelper);
|
||||||
|
@@ -32,9 +32,7 @@ class ManualDeploymentCommand : public SerialLinkedListAdapter<SerializeIF> {
|
|||||||
burnTime.setNext(&channel);
|
burnTime.setNext(&channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t getBurnTime() const {
|
uint32_t getBurnTime() const { return burnTime.entry; }
|
||||||
return burnTime.entry;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t getChannel(DeploymentChannels& channel_) const {
|
ReturnValue_t getChannel(DeploymentChannels& channel_) const {
|
||||||
if (channel.entry == 1 or channel.entry == 2) {
|
if (channel.entry == 1 or channel.entry == 2) {
|
||||||
@@ -111,6 +109,26 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
virtual ReturnValue_t initialize() override;
|
virtual ReturnValue_t initialize() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum AutonomousDeplState { INIT, FIRST_BURN, WAIT, SECOND_BURN, DONE };
|
||||||
|
|
||||||
|
enum StateMachine {
|
||||||
|
IDLE,
|
||||||
|
MAIN_POWER_ON,
|
||||||
|
MAIN_POWER_OFF,
|
||||||
|
WAIT_MAIN_POWER_ON,
|
||||||
|
WAIT_MAIN_POWER_OFF,
|
||||||
|
SWITCH_DEPL_GPIOS,
|
||||||
|
CHANNEL_ON
|
||||||
|
};
|
||||||
|
|
||||||
|
struct FsmInfo {
|
||||||
|
DeploymentChannels channel;
|
||||||
|
// false if OFF, true is ON
|
||||||
|
bool onOff;
|
||||||
|
bool dryRun;
|
||||||
|
uint32_t burnCountdown = config::SA_DEPL_MAX_BURN_TIME;
|
||||||
|
};
|
||||||
|
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::SA_DEPL_HANDLER;
|
static const uint8_t INTERFACE_ID = CLASS_ID::SA_DEPL_HANDLER;
|
||||||
static const ReturnValue_t COMMAND_NOT_SUPPORTED = MAKE_RETURN_CODE(0xA0);
|
static const ReturnValue_t COMMAND_NOT_SUPPORTED = MAKE_RETURN_CODE(0xA0);
|
||||||
static const ReturnValue_t DEPLOYMENT_ALREADY_EXECUTING = MAKE_RETURN_CODE(0xA1);
|
static const ReturnValue_t DEPLOYMENT_ALREADY_EXECUTING = MAKE_RETURN_CODE(0xA1);
|
||||||
@@ -127,17 +145,7 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
static const Event DEPL_SA1_GPIO_SWTICH_OFF_FAILED = MAKE_EVENT(5, severity::HIGH);
|
static const Event DEPL_SA1_GPIO_SWTICH_OFF_FAILED = MAKE_EVENT(5, severity::HIGH);
|
||||||
static const Event DEPL_SA2_GPIO_SWTICH_OFF_FAILED = MAKE_EVENT(6, severity::HIGH);
|
static const Event DEPL_SA2_GPIO_SWTICH_OFF_FAILED = MAKE_EVENT(6, severity::HIGH);
|
||||||
|
|
||||||
enum AutonomousDeplState { INIT, FIRST_BURN, WAIT, SECOND_BURN, DONE };
|
FsmInfo fsmInfo;
|
||||||
enum StateMachine {
|
|
||||||
IDLE,
|
|
||||||
MAIN_POWER_ON,
|
|
||||||
MAIN_POWER_OFF,
|
|
||||||
WAIT_MAIN_POWER_ON,
|
|
||||||
WAIT_MAIN_POWER_OFF,
|
|
||||||
SWITCH_DEPL_GPIOS,
|
|
||||||
CHANNEL_ON
|
|
||||||
};
|
|
||||||
|
|
||||||
StateMachine stateMachine = IDLE;
|
StateMachine stateMachine = IDLE;
|
||||||
bool actionActive = false;
|
bool actionActive = false;
|
||||||
ActionId_t activeCmd = HasActionsIF::INVALID_ACTION_ID;
|
ActionId_t activeCmd = HasActionsIF::INVALID_ACTION_ID;
|
||||||
@@ -148,14 +156,6 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
bool startFsmOn(DeploymentChannels channel, uint32_t burnCountdown);
|
bool startFsmOn(DeploymentChannels channel, uint32_t burnCountdown);
|
||||||
void startFsmOff();
|
void startFsmOff();
|
||||||
|
|
||||||
struct FsmInfo {
|
|
||||||
DeploymentChannels channel;
|
|
||||||
// false if OFF, true is ON
|
|
||||||
bool onOff;
|
|
||||||
uint32_t burnCountdown = config::SA_DEPL_MAX_BURN_TIME;
|
|
||||||
} fsmInfo;
|
|
||||||
|
|
||||||
|
|
||||||
void finishFsm(ReturnValue_t resultForActionHelper);
|
void finishFsm(ReturnValue_t resultForActionHelper);
|
||||||
|
|
||||||
ReturnValue_t performAutonomousDepl(sd::SdCard sdCard);
|
ReturnValue_t performAutonomousDepl(sd::SdCard sdCard);
|
||||||
|
Reference in New Issue
Block a user