Index: firmware/App/Controllers/FluidLeak.c =================================================================== diff -u -ra2c7252faf265a15b6c6c016a19adc385d06dc0e -r37a9fd8f15e413db5337371a7d1a1cb65567af7c --- firmware/App/Controllers/FluidLeak.c (.../FluidLeak.c) (revision a2c7252faf265a15b6c6c016a19adc385d06dc0e) +++ firmware/App/Controllers/FluidLeak.c (.../FluidLeak.c) (revision 37a9fd8f15e413db5337371a7d1a1cb65567af7c) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * -* @file FluidLeak.c +* @file FluidLeak.c * -* @author (last) Peman Montazemi -* @date (last) 10-Mar-2021 +* @author (last) Darren Cox +* @date (last) 10-Mar-2022 * -* @author (original) Peman Montazemi -* @date (original) 19-Feb-2021 +* @author (original) Peman Montazemi +* @date (original) 09-Mar-2021 * ***************************************************************************/ @@ -30,11 +30,12 @@ // ********** private definitions ********** -#define FLUID_LEAK_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the fluid leak data is published on the CAN bus. +#define FLUID_LEAK_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the fluid leak data is published on the CAN bus. +#define DATA_PUBLISH_COUNTER_START_COUNT 50 ///< Data publish counter start count. // ********** private data ********** -static U32 fluidLeakStatePublicationTimerCounter = 0; ///< Timer counter used to schedule fluid leak publication to CAN bus. +static U32 fluidLeakStatePublicationTimerCounter; ///< Timer counter used to schedule fluid leak publication to CAN bus. /// Interval (in ms) at which to publish fluid leak data to CAN bus. static OVERRIDE_U32_T fluidLeakStatePublishInterval = { FLUID_LEAK_PUB_INTERVAL, FLUID_LEAK_PUB_INTERVAL, 0, 0 }; @@ -43,7 +44,6 @@ // ********** private function prototypes ********** static void publishFluidLeakState( void ); -static U32 getPublishFluidLeakStateInterval( void ); /*********************************************************************//** * @brief @@ -54,7 +54,11 @@ *************************************************************************/ void initFluidLeak( void ) { - fluidLeakState.data = FLUID_LEAK_STATE_DRY; + fluidLeakState.data = FLUID_LEAK_STATE_DRY; + fluidLeakState.ovInitData = FLUID_LEAK_STATE_DRY; + fluidLeakState.ovData = FLUID_LEAK_STATE_DRY; + fluidLeakState.override = OVERRIDE_RESET; + fluidLeakStatePublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; } /*********************************************************************//** @@ -118,26 +122,6 @@ /*********************************************************************//** * @brief - * The getPublishFluidLeakStateInterval function gets the fluid leak state - * publication interval. - * @details Inputs: fluidLeakStatePublishInterval - * @details Outputs: none - * @return the current fluid leak state publication interval (in task intervals). - *************************************************************************/ -static U32 getPublishFluidLeakStateInterval( void ) -{ - U32 result = fluidLeakStatePublishInterval.data; - - if ( OVERRIDE_KEY == fluidLeakStatePublishInterval.override ) - { - result = fluidLeakStatePublishInterval.ovData; - } - - return result; -} - -/*********************************************************************//** - * @brief * The publishFluidLeakState function publishes fluid leak state at the set interval. * @details Inputs: fluidLeakState * @details Outputs: if broadcast is due, send fluid leak state @@ -146,11 +130,11 @@ static void publishFluidLeakState( void ) { // Publish fluid leak state on interval - if ( ++fluidLeakStatePublicationTimerCounter >= getPublishFluidLeakStateInterval() ) + if ( ++fluidLeakStatePublicationTimerCounter >= getU32OverrideValue( &fluidLeakStatePublishInterval ) ) { - FLUID_LEAK_STATES_T state = getFluidLeakState(); + U32 state = (U32)getFluidLeakState(); - broadcastFluidLeakState( state ); + broadcastData( MSG_ID_HD_FLUID_LEAK_STATE, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&state, sizeof( U32 ) ); fluidLeakStatePublicationTimerCounter = 0; } }