Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -ra7bf3ca23ea37a61000379facae628a31b3ecc59 -re30951f62cdc9c52f20e9218df947d3860b3c7a7 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision a7bf3ca23ea37a61000379facae628a31b3ecc59) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision e30951f62cdc9c52f20e9218df947d3860b3c7a7) @@ -7,8 +7,8 @@ * * @file OperationModes.c * -* @author (last) Sean Nash -* @date (last) 29-May-2020 +* @author (last) Quang Nguyen +* @date (last) 24-Aug-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -39,14 +39,15 @@ // ********** private definitions ********** -#define BROADCAST_DG_OP_MODE_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the op mode is published on the CAN bus. +#define BROADCAST_DG_OP_MODE_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the op mode is published on the CAN bus. // ********** private data ********** -static volatile BOOL modeRequest[NUM_OF_DG_MODES - 1]; ///< Array of mode request flags. -static DG_OP_MODE_T currentMode = DG_MODE_INIT; ///< The currently active mode. -static U32 currentSubMode = 0; ///< The currently active state of the active mode. -static U32 broadcastModeIntervalCtr = 11; ///< Interval counter used to determine when to broadcase operation mode. Initialize to 11 to stagger broadcast. +static volatile BOOL modeRequest[NUM_OF_DG_MODES - 1]; ///< Array of mode request flags. +static DG_OP_MODE_T currentMode = DG_MODE_INIT; ///< The currently active 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. +static U32 dgOpModePublicationTimerCounter = 0; ///< Timer counter for DG operation mode publication /// This matrix determines legal transitions from one mode to another. static const DG_OP_MODE_T MODE_TRANSITION_TABLE[NUM_OF_DG_MODES - 1][NUM_OF_DG_MODES - 1] = @@ -55,17 +56,16 @@ /* FAUL */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* SERV */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* INIT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_INIT, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, - /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_NLEG, DG_MODE_CHEM }, + /* STAN */{ DG_MODE_FAUL, DG_MODE_SERV, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_CHEM }, /* SOLO */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_HEAT, DG_MODE_NLEG }, /* CIRC */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* FILL */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_FILL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* DRAI */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_CIRC, DG_MODE_NLEG, DG_MODE_DRAI, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG }, /* FLUS */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_FLUS, DG_MODE_NLEG, DG_MODE_NLEG }, - /* HEAT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HEAT, DG_MODE_NLEG }, + /* HEAT */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_SOLO, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_HEAT, DG_MODE_NLEG }, /* CHEM */{ DG_MODE_FAUL, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_STAN, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_NLEG, DG_MODE_CHEM } }; -static U32 dgOpModePublicationTimerCounter = 0; // ********** private function prototypes ********** @@ -74,11 +74,11 @@ static void broadcastOperationMode( void ); /*********************************************************************//** - * @brief execOperationModes - * The execOperationModes function initializes the Operation Modes module. + * @brief + * The initOperationModes function initializes the operation modes module. * @details * Inputs : none - * Outputs : Operation Modes module initialized. + * Outputs : Operation modes module initialized * @return none *************************************************************************/ void initOperationModes( void ) @@ -92,11 +92,7 @@ } // start in init mode -#ifndef CAN_TEST currentMode = DG_MODE_INIT; -#else - currentMode = DG_MODE_FAUL; -#endif currentSubMode = 0; transitionToNewOperationMode( DG_MODE_INIT ); @@ -118,11 +114,11 @@ } /*********************************************************************//** - * @brief execOperationModes - * The execOperationModes function executes the Operation Modes state machine. + * @brief + * The execOperationModes function executes the operation modes state machine. * @details - * Inputs : none - * Outputs : currentMode is set by state machine. + * Inputs : currentMode + * Outputs : Operation modes' state machine executed * @return none *************************************************************************/ void execOperationModes( void ) @@ -202,19 +198,17 @@ break; } // end switch -#ifndef CAN_TEST // publish op mode on interval broadcastOperationMode(); -#endif } /*********************************************************************//** - * @brief requestNewOperationMode + * @brief * The requestNewOperationMode function requests a new operation mode. * @details * Inputs : none - * Outputs : makes the requested mode "pending". - * @param newMode : requested mode + * Outputs : makes the requested mode "pending" + * @param newMode requested mode * @return none *************************************************************************/ void requestNewOperationMode( DG_OP_MODE_T newMode ) @@ -232,25 +226,26 @@ } /*********************************************************************//** - * @brief getCurrentOperationMode - * The getCurrentOperationMode function initializes the Operation Modes module. + * @brief + * The getCurrentOperationMode function returns the current operation mode. * @details * Inputs : none - * Outputs : Initializes the Operation Modes module. - * @return none + * Outputs : none + * @return current mode *************************************************************************/ DG_OP_MODE_T getCurrentOperationMode( void ) { return currentMode; } /*********************************************************************//** - * @brief arbitrateModeRequest - * The arbitrateModeRequest function initializes the Operation Modes module. + * @brief + * The arbitrateModeRequest function selects highest priority mode request + * and clear all requests. * @details * Inputs : none - * Outputs : Initializes the Operation Modes module. - * @return none + * Outputs : Arbitrated mode requests + * @return highest priority requested mode *************************************************************************/ static DG_OP_MODE_T arbitrateModeRequest( void ) { @@ -283,12 +278,13 @@ } /*********************************************************************//** - * @brief transitionToNewOperationMode - * The transitionToNewOperationMode function initializes the Operation Modes module. + * @brief + * The transitionToNewOperationMode function undergo the process of transition + * to new operation mode. * @details * Inputs : none - * Outputs : Initializes the Operation Modes module. - * @param newMode : new op mode to transition to + * Outputs : Transition to new mode + * @param newMode new op mode to transition to * @return none *************************************************************************/ static void transitionToNewOperationMode( DG_OP_MODE_T newMode ) @@ -330,18 +326,18 @@ transitionToChemicalDisinfectMode(); break; default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, 0, (U32)newMode ) // TODO - add s/w fault enum to 1st data param + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, 0, (U32)newMode ) // TODO - add s/w fault enum to 1st data param break; } } /*********************************************************************//** * @brief - * The broadcastOperationMode function sends the current operation mode at \n + * The broadcastOperationMode function broadcasts the current operation mode at * the prescribed interval. * @details * Inputs : broadcastModeIntervalCtr - * Outputs : DG operation mode broadcast message sent. + * Outputs : DG operation mode broadcast message sent * @return none *************************************************************************/ static void broadcastOperationMode( void )