Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -rbbd8081a9bd6fe63174f571bd60036145074e155 -r6ebc1c6fd052021f95c55e81bdce3612e90efa71 --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision bbd8081a9bd6fe63174f571bd60036145074e155) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 6ebc1c6fd052021f95c55e81bdce3612e90efa71) @@ -32,13 +32,26 @@ #define BLOOD_LEAK_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the blood leak data is published on the CAN bus. +/// Defined states for the blood leak detector state machine. +typedef enum BloodLeak_States +{ + BLOOD_LEAK_INIT_STATE = 0, ///< Initial state + BLOOD_LEAK_ZERO_STATE, ///< Zero state + BLOOD_LEAK_SELF_TEST_STATE, ///< Self-test state + BLOOD_LEAK_NORMAL_STATE, ///< Normal state + NUM_OF_BLOOD_LEAK_DETECTOR_STATES ///< Number of blood leak detector states +} BLOOD_LEAK_STATE_T; + // ********** private data ********** +static OVERRIDE_U32_T bloodLeakState; ///< Current state of blood leak state machine. static U32 bloodLeakStatePublicationTimerCounter = 0; ///< Timer counter used to schedule blood leak publication to CAN bus. +static U32 bloodLeakSelfTestTimerCount = 0; ///< Timer counter for blood leak self-test. + /// Interval (in ms) at which to publish blood leak data to CAN bus. static OVERRIDE_U32_T bloodLeakStatePublishInterval = { BLOOD_LEAK_PUB_INTERVAL, BLOOD_LEAK_PUB_INTERVAL, 0, 0 }; -static OVERRIDE_U32_T bloodLeakState; ///< Detected blood leak state for blood leak detector. +static OVERRIDE_U32_T bloodLeakStatus; ///< Detected blood leak status for blood leak detector. // ********** private function prototypes ********** @@ -54,11 +67,25 @@ *************************************************************************/ void initBloodLeak( void ) { - bloodLeakState.data = BLOOD_LEAK_NOT_DETECTED; + bloodLeakState.data = BLOOD_LEAK_INIT_STATE; + bloodLeakStatus.data = BLOOD_LEAK_NOT_DETECTED; } /*********************************************************************//** * @brief + * The zeroBloodLeak function puts the Blood Leak module into zeroing state. + * @details Inputs: none + * @details Outputs: Blood Leak module zeroing. + * @return none + *************************************************************************/ +void zeroBloodLeak( void ) +{ + bloodLeakState.data = BLOOD_LEAK_ZERO_STATE; + //setBloodLeakZero(); +} + +/*********************************************************************//** + * @brief * The execBloodLeak function executes the blood leak monitor. * @details Inputs: FPGA blood leak state GPIO pin state * @details Outputs: bloodLeakState