Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -rfcb9a1dce7d9b2de3ff0b725282d4ea3ddf14b1d -r9c970f6c10aaa43eed47bf94d51e789427b34cca --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision fcb9a1dce7d9b2de3ff0b725282d4ea3ddf14b1d) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 9c970f6c10aaa43eed47bf94d51e789427b34cca) @@ -65,8 +65,6 @@ #define VENOUS_PRESSURE_MAX_MMHG ( 2000.0 ) ///< Maximum venous pressure reading (in mmHg) for range check. #define VENOUS_PRESSURE_MIN_MMHG ( -1500.0 ) ///< Minimum venous pressure reading (in mmHg) for range check. -#define MIN_OCCLUSION_COUNTS ( 2000 ) ///< Minimum occlusion sensor reading for range check. - #define PSI_TO_MMHG ( 51.7149 ) ///< Conversion factor for converting PSI to mmHg. #define VENOUS_PRESSURE_NORMAL_OP 0 ///< Venous pressure status bits indicate normal operation. @@ -676,7 +674,7 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PRESSURE_CHECKS ) != SW_CONFIG_ENABLE_VALUE ) { // Range check occlusion sensor - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_BP_OCCLUSION_OUT_OF_RANGE, bpOccl < MIN_OCCLUSION_COUNTS ) ) + if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_BP_OCCLUSION_OUT_OF_RANGE, outOfRange ) ) { SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_BP_OCCLUSION_OUT_OF_RANGE, bpOccl ); } @@ -687,7 +685,7 @@ signalBloodPumpHardStop(); // Stop pump immediately SET_ALARM_WITH_1_U32_DATA( ALARM_ID_OCCLUSION_BLOOD_PUMP, bpOccl ) } - else if ( bpOccl < ( OCCLUSION_CLEAR_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) + else if ( bpOccl <= ( OCCLUSION_CLEAR_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { clearAlarmCondition( ALARM_ID_OCCLUSION_BLOOD_PUMP ); } Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r23016be42e59935da5aa53b26b8cb31e2a240858 -r9c970f6c10aaa43eed47bf94d51e789427b34cca --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 23016be42e59935da5aa53b26b8cb31e2a240858) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 9c970f6c10aaa43eed47bf94d51e789427b34cca) @@ -396,15 +396,19 @@ switch ( currentDrySelfTestsState ) { case DRY_SELF_TESTS_START_STATE: - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRY_SELF_TESTS ) ) + // Ensure occlusion sensor has time to settle after cartridge insertion before starting dry self-tests + if ( TRUE == didTimeout( selfTestStartTime, CARTRIDGE_INSERT_PRESSURE_SETTLE_TIME_MS ) ) { - // TODO: Remove once dry self-test is ready to use - currentDrySelfTestsState = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; + setOcclusionInstallLevel(); // Record occlusion pressure level after a new cartridge is installed + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRY_SELF_TESTS ) ) + { + currentDrySelfTestsState = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; + } + else + { + currentDrySelfTestsState = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; + } } - else - { - currentDrySelfTestsState = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; - } break; case DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE: @@ -847,7 +851,6 @@ static DRY_SELF_TESTS_STATE_T handleDrySelfTestUsedCartridgeCheckState( void ) { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE; - BUBBLE_STATUS_T const ADVBubbleStatus = getBubbleStatus( ADV ); if ( ( BUBBLE_DETECTED == ADVBubbleStatus ) &&