adapted SolarArrayDeploymentHandler
This commit is contained in:
parent
cd1200d23d
commit
a2910a401e
@ -111,7 +111,7 @@ void SolarArrayDeploymentHandler::performWaitOn8VActions() {
|
|||||||
} else {
|
} else {
|
||||||
if (mainSwitchCountdown.hasTimedOut()) {
|
if (mainSwitchCountdown.hasTimedOut()) {
|
||||||
triggerEvent(MAIN_SWITCH_ON_TIMEOUT);
|
triggerEvent(MAIN_SWITCH_ON_TIMEOUT);
|
||||||
actionHelper.finish(false, rememberCommanderId, DEPLOY_SOLAR_ARRAYS,
|
actionHelper.finish(false, rememberCommanderId, static_cast<DeviceCommandId_t>(SolarArrayDeploymentCommands::DEPLOY_SOLAR_ARRAYS),
|
||||||
MAIN_SWITCH_TIMEOUT_FAILURE);
|
MAIN_SWITCH_TIMEOUT_FAILURE);
|
||||||
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ void SolarArrayDeploymentHandler::switchDeploymentTransistors() {
|
|||||||
* the deployment sequence. */
|
* the deployment sequence. */
|
||||||
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
||||||
triggerEvent(DEPL_SA1_GPIO_SWTICH_ON_FAILED);
|
triggerEvent(DEPL_SA1_GPIO_SWTICH_ON_FAILED);
|
||||||
actionHelper.finish(false, rememberCommanderId, DEPLOY_SOLAR_ARRAYS, SWITCHING_DEPL_SA2_FAILED);
|
actionHelper.finish(false, rememberCommanderId, static_cast<DeviceCommandId_t>(SolarArrayDeploymentCommands::DEPLOY_SOLAR_ARRAYS), SWITCHING_DEPL_SA1_FAILED);
|
||||||
mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF);
|
mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF);
|
||||||
}
|
}
|
||||||
result = gpioInterface->pullHigh(deplSA2);
|
result = gpioInterface->pullHigh(deplSA2);
|
||||||
@ -139,7 +139,7 @@ void SolarArrayDeploymentHandler::switchDeploymentTransistors() {
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
stateMachine = WAIT_ON_DELOYMENT_COMMAND;
|
||||||
triggerEvent(DEPL_SA2_GPIO_SWTICH_ON_FAILED);
|
triggerEvent(DEPL_SA2_GPIO_SWTICH_ON_FAILED);
|
||||||
actionHelper.finish(false, rememberCommanderId, DEPLOY_SOLAR_ARRAYS, SWITCHING_DEPL_SA2_FAILED);
|
actionHelper.finish(false, rememberCommanderId, static_cast<DeviceCommandId_t>(SolarArrayDeploymentCommands::DEPLOY_SOLAR_ARRAYS), SWITCHING_DEPL_SA2_FAILED);
|
||||||
mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF);
|
mainLineSwitcher->sendSwitchCommand(mainLineSwitch, PowerSwitchIF::SWITCH_OFF);
|
||||||
}
|
}
|
||||||
deploymentCountdown.setTimeout(burnTimeMs);
|
deploymentCountdown.setTimeout(burnTimeMs);
|
||||||
@ -149,7 +149,7 @@ void SolarArrayDeploymentHandler::switchDeploymentTransistors() {
|
|||||||
void SolarArrayDeploymentHandler::handleDeploymentFinish() {
|
void SolarArrayDeploymentHandler::handleDeploymentFinish() {
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
if (deploymentCountdown.hasTimedOut()) {
|
if (deploymentCountdown.hasTimedOut()) {
|
||||||
actionHelper.finish(true, rememberCommanderId, DEPLOY_SOLAR_ARRAYS, RETURN_OK);
|
actionHelper.finish(true, rememberCommanderId, static_cast<DeviceCommandId_t>(SolarArrayDeploymentCommands::DEPLOY_SOLAR_ARRAYS), RETURN_OK);
|
||||||
result = gpioInterface->pullLow(deplSA1);
|
result = gpioInterface->pullLow(deplSA1);
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
sif::debug << "SolarArrayDeploymentHandler::handleStateMachine: Failed to pull solar"
|
sif::debug << "SolarArrayDeploymentHandler::handleStateMachine: Failed to pull solar"
|
||||||
@ -181,25 +181,20 @@ void SolarArrayDeploymentHandler::readCommandQueue() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SolarArrayDeploymentHandler::executeAction(ActionId_t actionId,
|
ReturnValue_t SolarArrayDeploymentHandler::executeAction(Action* action) {
|
||||||
MessageQueueId_t commandedBy,
|
|
||||||
const uint8_t* data, size_t size) {
|
|
||||||
ReturnValue_t result;
|
|
||||||
if (stateMachine != WAIT_ON_DELOYMENT_COMMAND) {
|
if (stateMachine != WAIT_ON_DELOYMENT_COMMAND) {
|
||||||
sif::error << "SolarArrayDeploymentHandler::executeAction: Received command while not in"
|
sif::error << "SolarArrayDeploymentHandler::executeAction: Received command while not in"
|
||||||
<< "waiting-on-command-state" << std::endl;
|
<< "waiting-on-command-state" << std::endl;
|
||||||
return DEPLOYMENT_ALREADY_EXECUTING;
|
return DEPLOYMENT_ALREADY_EXECUTING;
|
||||||
}
|
}
|
||||||
if (actionId != DEPLOY_SOLAR_ARRAYS) {
|
//delegates to SolarArrayDeploymentHandler::handleAction()
|
||||||
sif::error << "SolarArrayDeploymentHandler::executeAction: Received invalid command"
|
return action->handle();
|
||||||
<< std::endl;
|
}
|
||||||
result = COMMAND_NOT_SUPPORTED;
|
|
||||||
} else {
|
ReturnValue_t SolarArrayDeploymentHandler::handleAction(SolarArrayDeploymentAction* action) {
|
||||||
stateMachine = SWITCH_8V_ON;
|
stateMachine = SWITCH_8V_ON;
|
||||||
rememberCommanderId = commandedBy;
|
rememberCommanderId = action->commandedBy;
|
||||||
result = RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageQueueId_t SolarArrayDeploymentHandler::getCommandQueue() const {
|
MessageQueueId_t SolarArrayDeploymentHandler::getCommandQueue() const {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef MISSION_DEVICES_SOLARARRAYDEPLOYMENT_H_
|
#ifndef MISSION_DEVICES_SOLARARRAYDEPLOYMENT_H_
|
||||||
#define MISSION_DEVICES_SOLARARRAYDEPLOYMENT_H_
|
#define MISSION_DEVICES_SOLARARRAYDEPLOYMENT_H_
|
||||||
|
|
||||||
|
#include "devicedefinitions/SolarArrayDeploymentDefinitions.h"
|
||||||
#include <devices/powerSwitcherList.h>
|
#include <devices/powerSwitcherList.h>
|
||||||
#include <fsfw/action/HasActionsIF.h>
|
#include <fsfw/action/HasActionsIF.h>
|
||||||
#include <fsfw/devicehandlers/CookieIF.h>
|
#include <fsfw/devicehandlers/CookieIF.h>
|
||||||
@ -24,8 +25,6 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
public HasReturnvaluesIF,
|
public HasReturnvaluesIF,
|
||||||
public HasActionsIF {
|
public HasActionsIF {
|
||||||
public:
|
public:
|
||||||
static const DeviceCommandId_t DEPLOY_SOLAR_ARRAYS = 0x5;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief constructor
|
* @brief constructor
|
||||||
*
|
*
|
||||||
@ -51,8 +50,8 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
virtual ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
virtual ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
||||||
|
|
||||||
virtual MessageQueueId_t getCommandQueue() const override;
|
virtual MessageQueueId_t getCommandQueue() const override;
|
||||||
virtual ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
virtual ReturnValue_t executeAction(Action* action) override;
|
||||||
const uint8_t* data, size_t size) override;
|
ReturnValue_t handleAction(SolarArrayDeploymentAction* action);
|
||||||
virtual ReturnValue_t initialize() override;
|
virtual ReturnValue_t initialize() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -127,6 +126,9 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
|
|||||||
*/
|
*/
|
||||||
PowerSwitchIF* mainLineSwitcher = nullptr;
|
PowerSwitchIF* mainLineSwitcher = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
SolarArrayDeploymentAction deploymentAction = SolarArrayDeploymentAction(this);
|
||||||
|
|
||||||
ActionHelper actionHelper;
|
ActionHelper actionHelper;
|
||||||
|
|
||||||
void readCommandQueue();
|
void readCommandQueue();
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <fsfw/action/MinMaxParameter.h>
|
||||||
|
#include <fsfw/action/TemplateAction.h>
|
||||||
|
#include <fsfw/introspection/Enum.h>
|
||||||
|
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
|
||||||
|
|
||||||
|
class SolarArrayDeploymentHandler;
|
||||||
|
|
||||||
|
FSFW_ENUM(SolarArrayDeploymentCommands, DeviceCommandId_t,((DEPLOY_SOLAR_ARRAYS, 0x05, "Deploy Solar Arrays")))
|
||||||
|
|
||||||
|
class SolarArrayDeploymentAction
|
||||||
|
: public TemplateAction<SolarArrayDeploymentHandler, SolarArrayDeploymentAction,
|
||||||
|
SolarArrayDeploymentCommands> {
|
||||||
|
public:
|
||||||
|
SolarArrayDeploymentAction(SolarArrayDeploymentHandler *owner)
|
||||||
|
: TemplateAction(owner, SolarArrayDeploymentCommands::DEPLOY_SOLAR_ARRAYS) {}
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user