Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rfeb93744f73bc0a3d58841bb02bd05c38357f35d -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision feb93744f73bc0a3d58841bb02bd05c38357f35d) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) @@ -8,8 +8,8 @@ * * @file FPGA.c * -* @author (last) Quang Nguyen -* @date (last) 18-Sep-2020 +* @author (last) Peman Montazemi +* @date (last) 09-Mar-2021 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -76,14 +76,16 @@ #define DRAIN_PUMP_DAC_SHIFT_BITS 4 ///< Drain pump DAC shift bits. +#define FPGA_FLUIDLEAK_STATE_MASK 0x0004 ///< Bit mask for fluid leak detector. + // FPGA header struct. #pragma pack(push,1) typedef struct { U08 fpgaId; ///< Reg 0. FPGA ID code. Checked against expected value at power up to verify basic FPGA communication and operation - U08 fpgaRev; ///< Reg 1. FPGA revision being reported - U08 fpgaRevLab; ///< Reg 2. FPGA lab rev number - U08 fpgaRevMajor; ///< Reg 3. FPGA minor rev number + U08 fpgaRevMinor; ///< Reg 1. FPGA revision (minor) being reported + U08 fpgaRevMajor; ///< Reg 2. FPGA revision (major) being reported + U08 fpgaRevLab; ///< Reg 3. FPGA revision (lab) being reported } FPGA_HEADER_T; // read only on FPGA /// FPGA sensors' readings struct. @@ -156,8 +158,8 @@ U08 fpgaReserved1; ///< Reg 375. Reserved U16 fpgaValveStates; ///< Reg 376. Valves states - U16 fpgaFan1Pulse; ///< Reg 378. Fan 1 pulse time in 2.5 us solution - U16 fpgaFan2Pulse; ///< Reg 380. Fan 2 pulse time in 2.5 us solution + U16 fpgaFanIn1Pulse; ///< Reg 378. Fan inlet 1 pulse time in 2.5 us resolution + U16 fpgaFanOut1Pulse; ///< Reg 380. Fan outlet 1 pulse time in 2.5 us resolution U08 fpgaEmstatOutByte; ///< Reg 382. Emstat output FIFO - data from the Emstat device U08 fpgaEmstatRxErrorCount; ///< Reg 383. Number of receive errors since power-up @@ -166,9 +168,15 @@ U16 fpgaCP1HallSense; ///< Reg 388. Concentrate pump CP1 hall sensor pulse width. U16 fpgaCP2HallSense; ///< Reg 390. Concentrate pump CP2 hall sensor pulse width. - U08 fpgaGPIOReg; ///< Reg 392. FGPA GPIO register + U08 fpgaGPIO; ///< Reg 392. FGPA GPIO register U08 fpgaDummyByte2Addr; ///< Reg 393. Dummy byte address to maintain an even addressing scheme U16 fpgaADCTemp; ///< Reg 394. Internal FPGA die temperature ADC + + U16 fpgaFanIn2Pulse; ///< Reg 396. Fan inlet 2 pulse time in 2.5 resolution + U16 fpgaFanOut2Pulse; ///< Reg 398. Fan outlet 2 pulse time in 2.5 resolution + U16 fpgaFanIn3Pulse; ///< Reg 400. Fan inlet 3 pulse time in 2.5 resolution + U16 fpgaFanOut3Pulse; ///< Reg 402. Fan outlet 3 pulse time in 2.5 resolution + } DG_FPGA_SENSORS_T; typedef struct @@ -1031,8 +1039,8 @@ void getFPGAVersions( U08 *Id, U08 *Maj, U08 *Min, U08 *Lab ) { *Id = fpgaHeader.fpgaId; - *Maj = fpgaHeader.fpgaRev; - *Min = fpgaHeader.fpgaRevMajor; + *Maj = fpgaHeader.fpgaRevMajor; + *Min = fpgaHeader.fpgaRevMinor; *Lab = fpgaHeader.fpgaRevLab; } @@ -1594,7 +1602,7 @@ *************************************************************************/ U16 getFPGAInletFan1TogglePeriod( void ) { - return fpgaSensorReadings.fpgaFan1Pulse; + return fpgaSensorReadings.fpgaFanIn1Pulse; } /*********************************************************************//** @@ -1606,7 +1614,7 @@ *************************************************************************/ U16 getFPGAInletFan2TogglePeriod( void ) { - return fpgaSensorReadings.fpgaFan2Pulse; + return fpgaSensorReadings.fpgaFanIn2Pulse; } /*********************************************************************//** @@ -1618,7 +1626,7 @@ *************************************************************************/ U16 getFPGAInletFan3TogglePeriod( void ) { - return 0; + return fpgaSensorReadings.fpgaFanIn3Pulse; } /*********************************************************************//** @@ -1630,7 +1638,7 @@ *************************************************************************/ U16 getFPGAOutletFan1TogglePeriod( void ) { - return 0; + return fpgaSensorReadings.fpgaFanOut1Pulse; } /*********************************************************************//** @@ -1642,7 +1650,7 @@ *************************************************************************/ U16 getFPGAOutletFan2TogglePeriod( void ) { - return 0; + return fpgaSensorReadings.fpgaFanOut2Pulse; } /*********************************************************************//** @@ -1654,7 +1662,7 @@ *************************************************************************/ U16 getFPGAOutletFan3TogglePeriod( void ) { - return 0; + return fpgaSensorReadings.fpgaFanOut3Pulse; } /*********************************************************************//** @@ -1778,5 +1786,19 @@ return fpgaSensorReadings.fpgaADC2ErrorCnt; } -/**@}*/ +/*********************************************************************//** + * @brief + * The noFluidLeakDetected function returns TRUE if no fluid leak has been + * detected (dry) and FALSE if a fluid leak has been detected (wet). + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return noFluidLeakDetected + *************************************************************************/ +BOOL noFPGAFluidLeakDetected( void ) +{ + U16 noFluidLeakDetected = fpgaSensorReadings.fpgaGPIO & FPGA_FLUIDLEAK_STATE_MASK; + return ( 0 == noFluidLeakDetected ? FALSE : TRUE ); +} + +/**@}*/