update changelog
EIVE/eive-obsw/pipeline/head Build started... Details
EIVE/eive-obsw/pipeline/pr-develop This commit looks good Details

This commit is contained in:
Robin Müller 2023-01-20 12:24:19 +01:00
parent 694d626081
commit f8196de089
No known key found for this signature in database
GPG Key ID: 71B58F8A3CDFA9AC
4 changed files with 29 additions and 9 deletions

View File

@ -22,6 +22,11 @@ list yields a list of all related PRs for each release.
- The ACS Controller Gyro Sets (raw and processed) and the MEKF dataset are diagnostics now.
- Bumped FSFW for Service 11 improvement which includes size and CRC check for contained TC
- Syrlinks module now always included for both EM and FM
- SA Deployment: Allow specifying the switch interval and the initial channel. This allows testing
the new deployment procedure where each channel is burned for half of the whole burn duration.
It also allows burning only one channel for the whole burn duration. The autonomous mechanism
was adapted to burn each channel for half of the burn time by default.
PR:
## Fixed

View File

@ -97,9 +97,15 @@ void SolarArrayDeploymentHandler::handleStateMachine() {
// This should never fail
channelAlternationCd.resetTimer();
if (not fsmInfo.dryRun) {
sa2Off();
sa1On();
fsmInfo.alternationDummy = true;
if (fsmInfo.initChannel == 0) {
sa2Off();
sa1On();
fsmInfo.alternationDummy = true;
} else {
sa1Off();
sa2On();
fsmInfo.alternationDummy = false;
}
}
sif::info << "S/A Deployment: Burning" << std::endl;
triggerEvent(BURN_PHASE_START, fsmInfo.burnCountdownMs, fsmInfo.dryRun);
@ -220,7 +226,7 @@ bool SolarArrayDeploymentHandler::autonomousDeplForFile(sd::SdCard sdCard, const
if (stateSwitch or firstAutonomousCycle) {
if (deplState == AutonomousDeplState::FIRST_BURN or
deplState == AutonomousDeplState::SECOND_BURN) {
startFsmOn(config::SA_DEPL_BURN_TIME_SECS, (config::SA_DEPL_BURN_TIME_SECS / 2) * 1000,
startFsmOn(config::SA_DEPL_BURN_TIME_SECS, (config::SA_DEPL_BURN_TIME_SECS / 2) * 1000, 0,
dryRun);
} else if (deplState == AutonomousDeplState::WAIT or deplState == AutonomousDeplState::DONE or
deplState == AutonomousDeplState::INIT) {
@ -286,7 +292,8 @@ bool SolarArrayDeploymentHandler::checkMainPower(bool onOff) {
}
bool SolarArrayDeploymentHandler::startFsmOn(uint32_t burnCountdownSecs,
uint32_t channelAlternationIntervalMs, bool dryRun) {
uint32_t channelAlternationIntervalMs,
uint8_t initChannel, bool dryRun) {
if (stateMachine != StateMachine::IDLE) {
return false;
}
@ -296,6 +303,7 @@ bool SolarArrayDeploymentHandler::startFsmOn(uint32_t burnCountdownSecs,
}
fsmInfo.dryRun = dryRun;
fsmInfo.burnCountdownMs = burnCountdownSecs * 1000;
fsmInfo.initChannel = initChannel;
stateMachine = StateMachine::MAIN_POWER_ON;
retryCounter = 0;
return true;
@ -359,7 +367,8 @@ ReturnValue_t SolarArrayDeploymentHandler::executeAction(ActionId_t actionId,
return result;
}
uint32_t burnCountdown = cmd.getBurnTimeSecs();
if (not startFsmOn(burnCountdown, cmd.getSwitchIntervalMs(), cmd.isDryRun())) {
if (not startFsmOn(burnCountdown, cmd.getSwitchIntervalMs(), cmd.getInitChannel(),
cmd.isDryRun())) {
return HasActionsIF::IS_BUSY;
}
actionActive = true;

View File

@ -30,18 +30,22 @@ class ManualDeploymentCommand : public SerialLinkedListAdapter<SerializeIF> {
void setLinks() {
setStart(&burnTimeSecs);
burnTimeSecs.setNext(&switchIntervalMs);
burnTimeSecs.setNext(&dryRun);
switchIntervalMs.setNext(&initChannel);
initChannel.setNext(&dryRun);
}
uint32_t getBurnTimeSecs() const { return burnTimeSecs.entry; }
uint32_t getSwitchIntervalMs() const { return switchIntervalMs.entry; };
uint8_t getInitChannel() const { return initChannel.entry; };
bool isDryRun() const { return dryRun.entry; }
private:
SerializeElement<uint32_t> burnTimeSecs;
SerializeElement<uint32_t> switchIntervalMs;
SerializeElement<uint8_t> initChannel;
SerializeElement<uint8_t> dryRun;
};
@ -130,6 +134,7 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
// DeploymentChannels channel;
bool dryRun;
bool alternationDummy = false;
uint8_t initChannel = 0;
uint32_t burnCountdownMs = config::SA_DEPL_MAX_BURN_TIME;
};
@ -168,7 +173,8 @@ class SolarArrayDeploymentHandler : public ExecutableObjectIF,
PeriodicOperationDivider opDivider = PeriodicOperationDivider(5);
uint8_t retryCounter = 3;
bool startFsmOn(uint32_t burnCountdownSecs, uint32_t channelAlternationIntervalMs, bool dryRun);
bool startFsmOn(uint32_t burnCountdownSecs, uint32_t channelAlternationIntervalMs,
uint8_t initChannel, bool dryRun);
void startFsmOff();
void finishFsm(ReturnValue_t resultForActionHelper);

2
tmtc

@ -1 +1 @@
Subproject commit 2b5ad32fdd56d38e8318027b67d091d9e0ea3aba
Subproject commit 912728474a11b6ccb86ce61c3aa802d931caac68