Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r194cc4e5fbe048bd60b137c33e68e96a1ae39dc5 -r8e7158d8231435496fcf1d5649e51babf859ccc7 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 194cc4e5fbe048bd60b137c33e68e96a1ae39dc5) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 8e7158d8231435496fcf1d5649e51babf859ccc7) @@ -1,27 +1,23 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file OperationModes.c * * @author (last) Sean Nash -* @date (last) 29-May-2020 +* @date (last) 01-Dec-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ -#include #include "gio.h" -#include "TaskGeneral.h" -#include "SystemCommMessages.h" -#include "OperationModes.h" - +#include "HDCommon.h" #include "ModeInitPOST.h" #include "ModeService.h" #include "ModeFault.h" @@ -30,6 +26,9 @@ #include "ModePreTreat.h" #include "ModeTreatment.h" #include "ModePostTreat.h" +#include "OperationModes.h" +#include "SystemCommMessages.h" +#include "TaskGeneral.h" /** * @addtogroup HDOperationModes @@ -43,6 +42,7 @@ // ********** private data ********** static volatile BOOL modeRequest[ NUM_OF_MODES - 1 ]; ///< Pending operation mode change requests. +static HD_OP_MODE_T lastMode = MODE_INIT; ///< Last operation mode prior to current mode. static HD_OP_MODE_T currentMode = MODE_INIT; ///< Current operation mode. static U32 currentSubMode = 0; ///< The currently active state of the active mode. static U32 broadcastModeIntervalCtr = 11; ///< Interval counter used to determine when to broadcast operation mode. Initialize to 11 to stagger broadcast. @@ -54,7 +54,7 @@ /* SERV */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, /* INIT */{ MODE_FAUL, MODE_NLEG, MODE_INIT, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, /* STAN */{ MODE_FAUL, MODE_SERV, MODE_NLEG, MODE_STAN, MODE_TPAR, MODE_NLEG, MODE_NLEG, MODE_NLEG, }, -/* TPAR */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_TPAR, MODE_PRET, MODE_NLEG, MODE_NLEG, }, +/* TPAR */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_TPAR, MODE_PRET, MODE_NLEG, MODE_NLEG, }, /* PRET */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_PRET, MODE_TREA, MODE_NLEG, }, /* TREA */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_TREA, MODE_POST, }, /* POST */{ MODE_FAUL, MODE_NLEG, MODE_NLEG, MODE_STAN, MODE_NLEG, MODE_NLEG, MODE_NLEG, MODE_POST, }, }; @@ -68,9 +68,8 @@ /*********************************************************************//** * @brief * The initOperationModes function initializes the Operation Modes module. - * @details - * Inputs : none - * Outputs : Operation Modes module initialized. + * @details Inputs: none + * @details Outputs: Operation Modes module initialized. * @return none *************************************************************************/ void initOperationModes( void ) @@ -102,9 +101,8 @@ /*********************************************************************//** * @brief * The execOperationModes function executes the Operation Modes state machine. - * @details - * Inputs : none - * Outputs : currentMode is set by state machine. + * @details Inputs: none + * @details Outputs: currentMode is set by state machine. * @return none *************************************************************************/ void execOperationModes( void ) @@ -126,6 +124,7 @@ if ( currentMode != newMode ) { // handle transition to new mode + lastMode = currentMode; transitionToNewOperationMode( newMode ); currentMode = newMode; } @@ -181,9 +180,8 @@ * The requestNewOperationMode function requests transition to a new * operation mode. The request will be arbitrated when the state machine * is next executed. - * @details - * Inputs : none - * Outputs : modeRequest[] + * @details Inputs: none + * @details Outputs: modeRequest[] * @return none *************************************************************************/ void requestNewOperationMode( HD_OP_MODE_T newMode ) @@ -203,9 +201,8 @@ /*********************************************************************//** * @brief * The getCurrentOperationMode function gets the current operation mode. - * @details - * Inputs : currentMode - * Outputs : none + * @details Inputs: currentMode + * @details Outputs: none * @return the current operation mode *************************************************************************/ HD_OP_MODE_T getCurrentOperationMode( void ) @@ -217,9 +214,8 @@ * @brief * The arbitrateModeRequest function arbitrates any pending mode transition * requests. - * @details - * Inputs : modeRequest[] - * Outputs : modeRequest[] is reset + * @details Inputs: modeRequest[] + * @details Outputs: modeRequest[] is reset * @return the next operation mode (current mode if no requests pending) *************************************************************************/ static HD_OP_MODE_T arbitrateModeRequest( void ) @@ -256,9 +252,8 @@ * @brief * The transitionToNewOperationMode function calls the transition to function * for a new operation mode that we are transitioning to. - * @details - * Inputs : none - * Outputs : transition function called for new mode + * @details Inputs: none + * @details Outputs: transition function called for new mode * @return none *************************************************************************/ static void transitionToNewOperationMode( HD_OP_MODE_T newMode ) @@ -300,9 +295,8 @@ * @brief * The broadcastOperationMode function sends the current operation mode at * the prescribed interval. - * @details - * Inputs : broadcastModeIntervalCtr - * Outputs : HD operation mode broadcast message sent. + * @details Inputs: broadcastModeIntervalCtr + * @details Outputs: HD operation mode broadcast message sent. * @return none *************************************************************************/ static void broadcastOperationMode( void )