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 Index: firmware/App/Controllers/BloodLeak.h =================================================================== diff -u -r70b000b9a49b56f1e5d41aebddf4ed97a01faa0b -r6ebc1c6fd052021f95c55e81bdce3612e90efa71 --- firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision 70b000b9a49b56f1e5d41aebddf4ed97a01faa0b) +++ firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision 6ebc1c6fd052021f95c55e81bdce3612e90efa71) @@ -44,6 +44,7 @@ // ********** public function prototypes ********** void initBloodLeak( void ); +void zeroBloodLeak( void ); void execBloodLeak( void ); BLOOD_LEAK_STATES_T getBloodLeakState( void ); Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r6222c779385d5e3c3723eec889d75a900ff62070 -r6ebc1c6fd052021f95c55e81bdce3612e90efa71 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 6222c779385d5e3c3723eec889d75a900ff62070) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 6ebc1c6fd052021f95c55e81bdce3612e90efa71) @@ -1534,6 +1534,19 @@ /*********************************************************************//** * @brief + * The setFPGABloodLeakZero function sets the Blood Leak detector into + * zeroing mode via the FPGA. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return FPGABloodLeakZeroDetected + *************************************************************************/ +//void setFPGABloodLeakZero( void ) +//{ + // TODO +//} + +/*********************************************************************//** + * @brief * The setValveDialyzerInletPosition function sets the position of VDi * in counts * @details Inputs: fpgaActuatorSetPoints Index: firmware/App/Services/FPGA.h =================================================================== diff -u -r0156a87e7751e4379b879e5e3ca2dde2f7c02e2f -r6ebc1c6fd052021f95c55e81bdce3612e90efa71 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision 0156a87e7751e4379b879e5e3ca2dde2f7c02e2f) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 6ebc1c6fd052021f95c55e81bdce3612e90efa71) @@ -85,7 +85,10 @@ U16 getFPGAValvesStatus( void ); BOOL noFPGAFluidLeakDetected( void ); + BOOL noFPGABloodLeakDetected( void ); +BOOL FPGABloodLeakZeroDetected( void ); +//void setFPGABloodLeakZero( void ); TODO void setFPGAValveDialyzerInletPosition( S16 setPoint ); S16 getFPGAValveDialyzerInletPosition( void );