Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -ra31707ccbf01a1b40f8500bc491dc9c616e7a163 -r50fc6ca962c381ac98c9f032115973a5fff2a761 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision a31707ccbf01a1b40f8500bc491dc9c616e7a163) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 50fc6ca962c381ac98c9f032115973a5fff2a761) @@ -111,6 +111,7 @@ void execOperationModes( void ) { HD_OP_MODE_T newMode; + U32 priorSubMode = currentSubMode; // Any new mode requests? newMode = arbitrateModeRequest(); // Will return current mode if no pending requests @@ -174,6 +175,16 @@ break; } // End switch + // Send sub-mode change event when appropriate + if ( lastMode != currentMode ) + { + priorSubMode = 0; + } + if ( ( priorSubMode != currentSubMode ) || ( lastMode != currentMode ) ) + { + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_MODE_CHANGE, priorSubMode, currentSubMode ) + } + // Broadcast current operation mode on interval broadcastOperationMode(); }