Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r818d96fff963c707f5e2cb5aae7bf16f23e4b08a -rf46b7a1f9bbfa15ab3f9b6a0fe6873f393f10248 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 818d96fff963c707f5e2cb5aae7bf16f23e4b08a) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision f46b7a1f9bbfa15ab3f9b6a0fe6873f393f10248) @@ -717,37 +717,43 @@ #endif { // Range check occlusion sensor + 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 ); } // Check for occlusion in PreTreatment modes when the cartridge is installed // and setOcclusionInstallLevel has been called. + if( MODE_PRET == getCurrentOperationMode() ) { if( getPreTreatmentSubState() > HD_PRE_TREATMENT_CART_INSTALL_STATE && getDrySelfTestsState() > DRY_SELF_TESTS_START_STATE ) { - // Check for occlusion + // Check for occlusion + if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { + signalBloodPumpHardStop(); // Stop pump immediately SET_ALARM_WITH_1_U32_DATA( ALARM_ID_OCCLUSION_BLOOD_PUMP, bpOccl ) } } } - // Check for occlusion in PreTreatment modes where pumps are moving + // Check for occlusion in Treatment modes where pumps are moving else if( MODE_TREA == getCurrentOperationMode() ) { if( TREATMENT_STOP_STATE != getTreatmentState()) { // Check for occlusion + if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) { + signalBloodPumpHardStop(); // Stop pump immediately SET_ALARM_WITH_1_U32_DATA( ALARM_ID_OCCLUSION_BLOOD_PUMP, bpOccl ) } Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r818d96fff963c707f5e2cb5aae7bf16f23e4b08a -rf46b7a1f9bbfa15ab3f9b6a0fe6873f393f10248 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 818d96fff963c707f5e2cb5aae7bf16f23e4b08a) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision f46b7a1f9bbfa15ab3f9b6a0fe6873f393f10248) @@ -52,7 +52,7 @@ #define DIALYZER_VOLUME_SCALE_FACTOR 0.5F ///< Half of the dialyzer total volume. #define NO_AIR_DETECTED_COUNT ( 20 * MS_PER_SECOND ) ///< No air detected time period count. -#define PURGE_AIR_TIME_OUT_COUNT ( 120 * MS_PER_SECOND ) ///< Time period count for purge air time out. +#define PURGE_AIR_TIME_OUT_COUNT ( 120 * MS_PER_SECOND ) ///< Time period count for purge air time out. #define LOAD_CELL_STEADY_VOLUME_SAMPLING_TIME ( 1 * MS_PER_SECOND ) ///< Time load cell reading steady state detection sampling time in seconds. #define PRIME_DIALYSATE_BYPASS_TIME_LIMIT ( 15 * MS_PER_SECOND ) ///< Time limit for priming dialysate bypass circuit. #define STEADY_VOLUME_COUNT_SEC ( 10000 / LOAD_CELL_STEADY_VOLUME_SAMPLING_TIME ) ///< Counter must be greater than 10 seconds before steady volume is true.