Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r3c1ca4197b63f7988fe3bf58cf80299e4481416a -r6264a775ffd3bd50c9146e93a5e6f50b21f2981f --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 3c1ca4197b63f7988fe3bf58cf80299e4481416a) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 6264a775ffd3bd50c9146e93a5e6f50b21f2981f) @@ -122,6 +122,7 @@ void execOperationModes( void ) { DG_OP_MODE_T newMode; + U32 priorSubMode = currentSubMode; // any new mode requests? newMode = arbitrateModeRequest(); // will return current mode if no pending requests @@ -138,6 +139,7 @@ if ( currentMode != newMode ) { // handle transition to new mode + priorSubMode = 0; lastMode = currentMode; transitionToNewOperationMode( newMode ); currentMode = newMode; @@ -197,6 +199,13 @@ break; } + // Send sub-mode change event when appropriate + if ( priorSubMode != currentSubMode ) + { + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_SUB_MODE_CHANGE, priorSubMode, currentSubMode ); + } + priorSubMode = currentSubMode; + // publish op mode on interval broadcastOperationMode(); } @@ -296,6 +305,8 @@ *************************************************************************/ static void transitionToNewOperationMode( DG_OP_MODE_T newMode ) { + SEND_EVENT_WITH_2_U32_DATA( DG_EVENT_OP_MODE_CHANGE, lastMode, newMode ); + // setup for new operating mode switch ( newMode ) {