/* * OperationModes.c * * Created on: Aug 9, 2024 * Author: fw */ #include "ModeStandby.h" #include "ModeUpdate.h" #include "OperationModes.h" static BL_OP_MODE_T currentMode; ///< The currently active state of the active mode. static BL_OP_MODE_T previousMode; static BL_OP_MODE_T requestedMode; static void transitionToNewOperationMode( BL_OP_MODE_T newMode ); void initOperationModes( void ) { currentMode = MODE_STAND; previousMode = MODE_STAND; requestedMode = MODE_STAND; initStandbyMode(); initUpdateMode(); } void execOperationModes( void ) { if ( requestedMode != currentMode ) { previousMode = currentMode; currentMode = requestedMode; transitionToNewOperationMode( currentMode ); } switch ( currentMode ) { case MODE_STAND: execStandbyMode(); break; case MODE_UPDATE: execUpdateMode(); break; default: // Do nothing break; } } void requestNewOperationMode( BL_OP_MODE_T newMode ) { if ( newMode < NUM_OF_MODES ) { requestedMode = newMode; } } static void transitionToNewOperationMode( BL_OP_MODE_T newMode ) { switch ( newMode ) { case MODE_STAND: transitionToStandbyMode(); break; case MODE_UPDATE: transitionToUpdateMode(); break; default: // Do nothing for now break; } }