Index: firmware/App/Monitors/BloodLeak.c =================================================================== diff -u -r3a539af8f3320cc7e5d81aa1d39795e581e4a86d -r1e12823ad70fa1c071017007549f42c5c1e06b5d --- firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision 3a539af8f3320cc7e5d81aa1d39795e581e4a86d) +++ firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision 1e12823ad70fa1c071017007549f42c5c1e06b5d) @@ -103,6 +103,7 @@ static BOOL bloodLeakExitNormalRequested; ///< Blood leak exit normal state requested. static U32 bloodLeakRecoveryStartTimeMS; ///< Blood leak recovery start time in milliseconds. static BLOOD_LEAK_ZEROING_STATUS_T bloodLeakZeroingStatus; ///< Blood leak zeroing status. +static BOOL bloodLeakHasHardwareConfigChanged; ///< Blood leak has hardware configuration chnaged. // Embedded mode variables static BOOL bloodLeakEmbModeHasZeroBeenRqustd; ///< Blood leak embedded mode flag to indicate zero has been requested. @@ -139,7 +140,7 @@ * bloodLeakExitNormalRequested, bloodLeakEmbModeCmdSeqLength, * bloodLeakEmbModeHasRxRqstBeenSent, bloodLeakEmbModeInfoCmdEnqLastTimeStamp, * bloodLeakEmbModeInfoCmdCounter, bloodLeakRecoveryStartTimeMS, - * bloodLeakZeroingStatus + * bloodLeakZeroingStatus, bloodLeakhasHardwareConfigChanged * @return none *************************************************************************/ void initBloodLeak( void ) @@ -158,6 +159,7 @@ bloodLeakEmbModeHasZeroBeenRqustd = FALSE; bloodLeakEmbModeCmdEnqueueCount = 0; bloodLeakRecoveryStartTimeMS = getMSTimerCount(); + bloodLeakHasHardwareConfigChanged = FALSE; bloodLeakZeroingStatus.zeroingDriftIntervalTimeMS.data = BLD_ZERO_MIN_INTERVAL_MS; bloodLeakZeroingStatus.zeroingDriftIntervalTimeMS.ovInitData = BLD_ZERO_MIN_INTERVAL_MS; @@ -172,8 +174,9 @@ /*********************************************************************//** * @brief * The execBloodLeak function executes the blood leak detector driver. - * @details \b Inputs: bloodLeakState - * @details \b Outputs: bloodLeakCalRecord, bloodLeakState + * @details \b Inputs: bloodLeakState, bloodLeakHasHardwareConfigChanged + * @details \b Outputs: bloodLeakCalRecord, bloodLeakState, + * bloodLeakHasHardwareConfigChanged * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when in an unknown state * @return none *************************************************************************/ @@ -188,6 +191,16 @@ processBloodLeakIntensityData(); + if ( ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) && ( FALSE == bloodLeakHasHardwareConfigChanged ) ) + { + // If the hardware test configuration has changed, initialize the blood leak driver and start over from the check set point + // because the FPGA registers have changed. + // NOTE: this should be more generic in case other hardware configurations are created. + initBloodLeakDriver(); + bloodLeakState = BLOOD_LEAK_CHECK_SET_POINT_STATE; + bloodLeakHasHardwareConfigChanged = TRUE; + } + switch( bloodLeakState ) { case BLOOD_LEAK_WAIT_FOR_POST_STATE: