Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -rf46193ce4cce48dee728dd93235e0452e8fe1963 -r30b1f6126c37f7b99cf699f63b4bcee9d1a1745f --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision f46193ce4cce48dee728dd93235e0452e8fe1963) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 30b1f6126c37f7b99cf699f63b4bcee9d1a1745f) @@ -104,7 +104,7 @@ #define FLOW_SIG_STRGTH_ALARM_PERSIST ( 5 * MS_PER_SECOND ) #define MIN_FLOW_SIG_STRENGTH 0.9 ///< Minimum flow sensor signal strength (90%). -#define BFM_SENSOR_CONNECTED_STATUS 2 ///< Blood flow meter connected status. +#define BFM_SENSOR_PARAM_CORRUPT_STATUS 0x7 ///< Blood flow meter NVM parameter status. /// Enumeration of blood pump controller states. typedef enum BloodPump_States @@ -1266,7 +1266,7 @@ CALIBRATION_DATA_T cal; // Retrieve blood flow sensor calibration data and check for sensor connected status - if ( ( TRUE == getCalibrationData( &cal ) ) && ( BFM_SENSOR_CONNECTED_STATUS == getFPGABloodFlowMeterStatus() ) ) + if ( ( TRUE == getCalibrationData( &cal ) ) && ( BFM_SENSOR_PARAM_CORRUPT_STATUS != getFPGABloodFlowMeterStatus() ) ) { bloodFlowCalGain = cal.bloodFlowGain; bloodFlowCalOffset = cal.bloodFlowOffset_mL_min; Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r5dc6f629ae40d8939fd3bd7c4e3dffb04fa137e7 -r30b1f6126c37f7b99cf699f63b4bcee9d1a1745f --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 5dc6f629ae40d8939fd3bd7c4e3dffb04fa137e7) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 30b1f6126c37f7b99cf699f63b4bcee9d1a1745f) @@ -101,7 +101,7 @@ #define FLOW_SIG_STRGTH_ALARM_PERSIST ( 5 * MS_PER_SECOND ) #define MIN_FLOW_SIG_STRENGTH 0.9 ///< Minimum flow sensor signal strength (90%). -#define DFM_SENSOR_CONNECTED_STATUS 2 ///< Dialysate flow meter connected status. +#define DFM_SENSOR_PARAM_CORRUPT_STATUS 0x7 ///< Dialysate flow meter NVM parameter corrupt status. /// Enumeration of dialysate inlet pump states. typedef enum DialInPump_States @@ -1223,7 +1223,7 @@ CALIBRATION_DATA_T cal; // Retrieve dialysate flow sensor calibration data - if ( ( TRUE == getCalibrationData( &cal ) ) && ( DFM_SENSOR_CONNECTED_STATUS == getFPGADialysateFlowMeterStatus() ) ) + if ( ( TRUE == getCalibrationData( &cal ) ) && ( DFM_SENSOR_PARAM_CORRUPT_STATUS != getFPGADialysateFlowMeterStatus() ) ) { dialInFlowCalGain = cal.dialysateFlowGain; dialInFlowCalOffset = cal.dialysateFlowOffset_mL_min; Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r934a19c673175bc12c5634326f4f1af821c1916c -r30b1f6126c37f7b99cf699f63b4bcee9d1a1745f --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 934a19c673175bc12c5634326f4f1af821c1916c) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 30b1f6126c37f7b99cf699f63b4bcee9d1a1745f) @@ -284,17 +284,29 @@ case NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE: result = execPresOcclTest(); - currentNoCartSelfTestsState = NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE; + + if ( SELF_TEST_STATUS_PASSED == result ) + { + currentNoCartSelfTestsState = NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE; + } break; case NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE: result = execBloodFlowTest(); - currentNoCartSelfTestsState = NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE; + + if ( SELF_TEST_STATUS_PASSED == result ) + { + currentNoCartSelfTestsState = NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE; + } break; case NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE: result = execDialInFlowTest(); - currentNoCartSelfTestsState = NO_CART_SELF_TESTS_PUMPS_STATE; + + if ( SELF_TEST_STATUS_PASSED == result ) + { + currentNoCartSelfTestsState = NO_CART_SELF_TESTS_PUMPS_STATE; + } break; case NO_CART_SELF_TESTS_PUMPS_STATE: