this is overengineered af
Some checks failed
EIVE/eive-obsw/pipeline/pr-main There was a failure building this commit

This commit is contained in:
Marius Eggert 2023-07-31 13:27:14 +02:00
parent 40ee5ddade
commit f8a7179de6
2 changed files with 13 additions and 1 deletions

View File

@ -44,7 +44,12 @@ ReturnValue_t PowerController::getParameter(uint8_t domainId, uint8_t parameterI
parameterWrapper->set(batteryMaximumCapacity);
break;
case 0x2:
float oldCoulombCounterVoltageUpperThreshold = coulombCounterVoltageUpperThreshold;
parameterWrapper->set(coulombCounterVoltageUpperThreshold);
ReturnValue_t result = calculateCoulombCounterChargeUpperThreshold();
if (result != returnvalue::OK) {
coulombCounterVoltageUpperThreshold = oldCoulombCounterVoltageUpperThreshold;
}
break;
case 0x3:
parameterWrapper->set(maxAllowedTimeDiff);
@ -68,6 +73,13 @@ void PowerController::performControlOperation() {
}
case InternalState::INITIAL_DELAY: {
if (initialCountdown.hasTimedOut()) {
internalState = InternalState::INIT;
}
return;
}
case InternalState::INIT: {
ReturnValue_t result = calculateCoulombCounterChargeUpperThreshold();
if (result == returnvalue::OK) {
internalState = InternalState::READY;
}
return;

View File

@ -27,7 +27,7 @@ class PowerController : public ExtendedControllerBase, public ReceivesParameterM
bool enableHkSets = false;
ParameterHelper parameterHelper;
enum class InternalState { STARTUP, INITIAL_DELAY, READY };
enum class InternalState { STARTUP, INITIAL_DELAY, INIT, READY };
InternalState internalState = InternalState::STARTUP;
// Initial delay to make sure all pool variables have been initialized their owners