Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rce64b7e15824641a6a6465c28eec5d8ec593f110 -r0e0fc7fbbc571a76deb8ddc6e6382bfa58598406 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision ce64b7e15824641a6a6465c28eec5d8ec593f110) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 0e0fc7fbbc571a76deb8ddc6e6382bfa58598406) @@ -89,6 +89,7 @@ static void transitionToNewOperationMode( HD_OP_MODE_T newMode ); static void broadcastOperationMode( void ); static void updateConfirmationRequestTimeouts( void ); +static void sendOperationStatusEvent( void ); /*********************************************************************//** * @brief @@ -139,6 +140,7 @@ HD_OP_MODE_T newMode; U32 priorSubMode = currentSubMode; U32 priorSubState = currentSubState; + U32 priorOpMode = (U32)currentMode; // Any new mode requests? newMode = arbitrateModeRequest(); // Will return current mode if no pending requests @@ -154,8 +156,8 @@ // Has mode changed? if ( currentMode != newMode ) { - // Handle transition to new mode lastMode = currentMode; + // Handle transition to new mode transitionToNewOperationMode( newMode ); currentMode = newMode; @@ -213,7 +215,7 @@ } // End switch // Send operation status event when appropriate - if ( lastMode != currentMode || priorSubMode != currentSubMode || priorSubState != currentSubState ) + if ( priorOpMode != currentMode || priorSubMode != currentSubMode || priorSubState != currentSubState ) { sendOperationStatusEvent(); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_MODE_CHANGE, priorSubMode, currentSubMode ) @@ -581,25 +583,28 @@ currentSubState = subState; } -void sendOperationStatusEvent() +static void sendOperationStatusEvent( void ) { - U32 opData = 0; EVENT_DATA_T dat1; EVENT_DATA_T dat2; + OP_STATUS_EVENT_PAYLOAD_T opData; + dat2.dataType = EVENT_DATA_TYPE_U32; - dat2.data.uInt.data = (U32)(d2); + dat2.data.uInt.data = 0; - opData = ( currentMode + ( currentSubMode << SHIFT_8_BITS_FOR_BYTE_SHIFT ) + - ( currentSubState << SHIFT_16_BITS_FOR_WORD_SHIFT ) ) & MASK_OFF_U32_MSB; + opData.OpStatus[OPERATION_MODE] = (U08)currentMode; + opData.OpStatus[SUB_MODE] = (U08)currentSubMode; + opData.OpStatus[SUB_STATE] = (U08)currentSubState; + opData.OpStatus[RESERVED] = 0; dat1.dataType = EVENT_DATA_TYPE_U32; dat1.data.uInt.data = (U32)(opData); sendEvent( HD_EVENT_OPERATION_STATUS, dat1, dat2 ); } -} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/