Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r1bff8e530735be63ba557b77557a0bc2ac4b37b2 -r8747e947a7bc52dc3a4fb1346935740e08f5e974 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 1bff8e530735be63ba557b77557a0bc2ac4b37b2) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 8747e947a7bc52dc3a4fb1346935740e08f5e974) @@ -7,8 +7,8 @@ * * @file SelfTests.c * -* @author (last) Dara Navaei -* @date (last) 09-May-2023 +* @author (last) Michael Garthwaite +* @date (last) 16-May-2023 * * @author (original) Quang Nguyen * @date (original) 28-Jan-2021 @@ -295,7 +295,7 @@ pumpHomingRequestedForNCST = FALSE; selfTestStartTime = getMSTimerCount(); selfTestPreviousPublishDataTime = getMSTimerCount(); - + setCurrentSubState( (U32)currentNoCartSelfTestsState ); doorClosedRequired( TRUE, TRUE ); // Pumps should be off @@ -371,6 +371,7 @@ if ( priorSubState != currentNoCartSelfTestsState ) { + setCurrentSubState( (U32)currentNoCartSelfTestsState ); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentNoCartSelfTestsState ); } // Publish current self-test time data @@ -428,7 +429,7 @@ selfTestPreviousPublishDataTime = getMSTimerCount(); selfTestCartridgeSettleTime = getMSTimerCount(); doorClosedRequired( FALSE, TRUE ); - + setCurrentSubState( (U32)currentDrySelfTestsState ); // Pumps should be off signalBloodPumpHardStop(); signalDialInPumpHardStop(); @@ -532,6 +533,7 @@ if ( priorSubState != currentDrySelfTestsState ) { + setCurrentSubState( (U32)currentDrySelfTestsState ); SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentDrySelfTestsState ); } // Publish current self-test time data @@ -1484,7 +1486,7 @@ if ( TRUE == didTimeout( syringeOcclusionDelayStartTime, SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ) ) { - if ( FALSE == checkForSyringeOcclusion() ) // transition to complete state only when occlusion is removed + if ( FALSE == checkForSyringeOcclusion( FALSE ) ) // transition to complete state only when occlusion is removed { state = DRY_SELF_TESTS_COMPLETE_STATE; } @@ -1835,13 +1837,20 @@ } else { - if ( fabs( resOneDiffAfterDisplacement - resTwoDiffAfterDisplacement) > WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G ) + if ( getTestConfigStatus( TEST_CONFIG_DISABLE_WET_SELFTEST_DISPLACEMENT_ALARM ) != TRUE ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_LC_TEST_FAILURE, resOneDiffAfterDisplacement, resTwoDiffAfterDisplacement ); + if ( fabs( resOneDiffAfterDisplacement - resTwoDiffAfterDisplacement) > WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_LC_TEST_FAILURE, resOneDiffAfterDisplacement, resTwoDiffAfterDisplacement ); + } + else + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_FLOW_TEST_FAILURE, averageDisp, fmdIntegratedVolume ); + } } else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_FLOW_TEST_FAILURE, averageDisp, fmdIntegratedVolume ); + state = WET_SELF_TESTS_SECOND_DISPLACEMENT_SETUP_STATE; } } @@ -1978,13 +1987,20 @@ } else { - if ( fabs( resOneDiffAfterDisplacement - resTwoDiffAfterDisplacement) > WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G ) + if ( getTestConfigStatus( TEST_CONFIG_DISABLE_WET_SELFTEST_DISPLACEMENT_ALARM ) != TRUE ) { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_LC_TEST_FAILURE, resOneDiffAfterDisplacement, resTwoDiffAfterDisplacement ); + if ( fabs( resOneDiffAfterDisplacement - resTwoDiffAfterDisplacement) > WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_LC_TEST_FAILURE, resOneDiffAfterDisplacement, resTwoDiffAfterDisplacement ); + } + else + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_FLOW_TEST_FAILURE, avgDisp, fmdIntegratedVolume ); + } } else { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_WET_FLOW_TEST_FAILURE, avgDisp, fmdIntegratedVolume ); + state = WET_SELF_TESTS_COMPLETE_STATE; } }