Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u -r5c0c125cf0096613af3475388c970b5e16cc6b0e -r6ba61903be56ce79582fc9a31e0927df4dafee08 --- firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 5c0c125cf0096613af3475388c970b5e16cc6b0e) +++ firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 6ba61903be56ce79582fc9a31e0927df4dafee08) @@ -61,9 +61,9 @@ static U32 hdLostCommStartTime_ms; ///< Lost communication with HD start time in ms. static U32 targetFillVolumeML; ///< Save the target fill volume before calling startFillCmd(). static BOOL handleBadFillFlag; ///< Internal signal flag to handle bad fill. -static OVERRIDE_U32_T badFillSubstatesPublishInterval = { BAD_FILL_SUBSTATES_PUB_INTERVAL, - BAD_FILL_SUBSTATES_PUB_INTERVAL, - 0, 0 }; ///< Interval (in ms) at which to publish bad fill sub-states to CAN bus. +static OVERRIDE_U32_T genIdleDataPublicationTimerCounter = { BAD_FILL_SUBSTATES_PUB_INTERVAL, + BAD_FILL_SUBSTATES_PUB_INTERVAL, + 0, 0 }; ///< Interval (in ms) at which to publish bad fill sub-states to CAN bus. // ********** private function prototypes ********** @@ -427,18 +427,24 @@ *************************************************************************/ static void publishGenIdleSubstates() { - DG_GEN_IDLE_DATA_T data; + // publish Gen Idle pump data on interval + if ( ++genIdleDataPublicationTimerCounter >= getU32OverrideValue( &genIdleDataPublicationTimerCounter ) ) + { + DG_GEN_IDLE_DATA_T data; - data.badFillSignal = (U32)handleBadFillFlag; - data.badFillState = (U32)badFillState; - data.genIdleState = (U32)getCurrentGenIdleState(); - data.targetFillVolumemL = targetFillVolumeML; + // Populate the data structure for publication + data.badFillSignal = (U32)handleBadFillFlag; + data.badFillState = (U32)badFillState; + data.genIdleState = (U32)getCurrentGenIdleState(); + data.targetFillVolumemL = targetFillVolumeML; - broadcastData( MSG_ID_DG_GEN_IDLE_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( DG_GEN_IDLE_DATA_T ) ); + broadcastData( MSG_ID_DG_GEN_IDLE_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( DG_GEN_IDLE_DATA_T ) ); + + genIdleDataPublicationTimerCounter = 0; + } } - /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -453,15 +459,15 @@ * @param: value override bad fill sub-states publish interval with (in ms) * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetBadFillSubstatesPublishIntervalOverride( U32 value ) +BOOL testSetGenIdleSubstatesPublishIntervalOverride( U32 value ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { U32 intvl = value / TASK_GENERAL_INTERVAL; - badFillSubstatesPublishInterval.ovData = intvl; - badFillSubstatesPublishInterval.override = OVERRIDE_KEY; + genIdleDataPublicationTimerCounter.ovData = intvl; + genIdleDataPublicationTimerCounter.override = OVERRIDE_KEY; result = TRUE; } @@ -476,14 +482,14 @@ * @details Outputs: badFillSubstatesPublishInterval * @return TRUE if override reset successful, FALSE if not *************************************************************************/ -BOOL testResetBadFillSubstatesPublishIntervalOverride( void ) +BOOL testResetGenIdleSubstatesPublishIntervalOverride( void ) { BOOL result = FALSE; if ( TRUE == isTestingActivated() ) { - badFillSubstatesPublishInterval.override = OVERRIDE_RESET; - badFillSubstatesPublishInterval.ovData = badFillSubstatesPublishInterval.ovInitData; + genIdleDataPublicationTimerCounter.override = OVERRIDE_RESET; + genIdleDataPublicationTimerCounter.ovData = genIdleDataPublicationTimerCounter.ovInitData; result = TRUE; } Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rd7fddd6292c7a23931cc94cc60b148580e792cf0 -r6ba61903be56ce79582fc9a31e0927df4dafee08 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision d7fddd6292c7a23931cc94cc60b148580e792cf0) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 6ba61903be56ce79582fc9a31e0927df4dafee08) @@ -1208,6 +1208,10 @@ handleTestDrainPumpMeasuredCurrentOverride( message ); break; + case MSG_ID_DG_GEN_IDLE_PUBLISH_INTERVAL_OVERRIDE: + handleTestGenIdlePublishIntervalOverride( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rd7fddd6292c7a23931cc94cc60b148580e792cf0 -r6ba61903be56ce79582fc9a31e0927df4dafee08 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d7fddd6292c7a23931cc94cc60b148580e792cf0) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6ba61903be56ce79582fc9a31e0927df4dafee08) @@ -3791,5 +3791,36 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleTestGenIdlePublishIntervalOverride function handles a request + * to override the gen idle state publish interval + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestGenIdlePublishIntervalOverride( MESSAGE_T * message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + // verify payload length + if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) + { + result = testSetGenIdleSubstatesPublishIntervalOverride( payload.state.u32 ); + } + else + { + result = testResetGenIdleSubstatesPublishIntervalOverride(); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rb935e1d4656c04dda9644800c8bf21bd89eee6ab -r6ba61903be56ce79582fc9a31e0927df4dafee08 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision b935e1d4656c04dda9644800c8bf21bd89eee6ab) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 6ba61903be56ce79582fc9a31e0927df4dafee08) @@ -406,6 +406,9 @@ // MSG_ID_DG_DRAIN_PUMP_CURRENT_OVERRIDE void handleTestDrainPumpMeasuredCurrentOverride( MESSAGE_T *message ); +// MSG_ID_DG_GEN_IDLE_PUBLISH_INTERVAL_OVERRIDE +void handleTestGenIdlePublishIntervalOverride( MESSAGE_T * message ); + /**@}*/ #endif