Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r862620800213fc9bbd9ec95079246c4323c79a4b -r4bc08dca28a9fdb177449cd165cea7d145d0ebe0 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 862620800213fc9bbd9ec95079246c4323c79a4b) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 4bc08dca28a9fdb177449cd165cea7d145d0ebe0) @@ -129,15 +129,13 @@ /*********************************************************************//** * @brief * The execOperationModes function executes the operation modes state machine. - * @details Inputs: currentMode - * @details Outputs: Operation modes' state machine executed + * @details Inputs: currentMode, currentSubMode + * @details Outputs: currentMode, currentSubMode * @return none *************************************************************************/ void execOperationModes( void ) { DG_OP_MODE_T newMode; - - U32 priorSubMode = currentSubMode; // any new mode requests? @@ -155,7 +153,6 @@ if ( currentMode != newMode ) { // handle transition to new mode - lastMode = currentMode; transitionToNewOperationMode( newMode ); currentMode = newMode; @@ -321,16 +318,17 @@ * @brief * The transitionToNewOperationMode function undergo the process of transition * to new operation mode. - * @details Inputs: none + * @details Inputs: currentSubMode * @details Outputs: Transition to new mode * @param newMode new op mode to transition to * @return none *************************************************************************/ static void transitionToNewOperationMode( DG_OP_MODE_T newMode ) { + U32 priorSubMode = currentSubMode; + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_OP_MODE_CHANGE, lastMode, newMode ) - U32 priorSubMode = currentSubMode; // setup for new operating mode switch ( newMode ) { @@ -377,6 +375,7 @@ SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, (U32)newMode ) break; } + // Send sub-mode change event when appropriate if ( priorSubMode != currentSubMode ) {