Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r50fc6ca962c381ac98c9f032115973a5fff2a761 -rb14efe97c6baf3cca79d9199fd0575768262eb9f --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 50fc6ca962c381ac98c9f032115973a5fff2a761) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f) @@ -128,6 +128,7 @@ if ( currentMode != newMode ) { // Handle transition to new mode + priorSubMode = 0; lastMode = currentMode; transitionToNewOperationMode( newMode ); currentMode = newMode; @@ -176,14 +177,11 @@ } // End switch // Send sub-mode change event when appropriate - if ( lastMode != currentMode ) + if ( priorSubMode != currentSubMode ) { - priorSubMode = 0; - } - if ( ( priorSubMode != currentSubMode ) || ( lastMode != currentMode ) ) - { SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_MODE_CHANGE, priorSubMode, currentSubMode ) } + priorSubMode = currentSubMode; // Broadcast current operation mode on interval broadcastOperationMode(); @@ -375,8 +373,12 @@ { if ( ++broadcastModeIntervalCtr >= getU32OverrideValue( &opModePublishInterval ) ) { + OP_MODE_PAYLOAD_T data; + broadcastModeIntervalCtr = 0; - broadcastHDOperationMode( (U32)currentMode, currentSubMode ); + data.opMode = (U32)currentMode; + data.subMode = currentSubMode; + broadcastData( MSG_ID_HD_OP_MODE, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( OP_MODE_PAYLOAD_T ) ); } }