Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r22561b57504c9b3b0a6bb6fcc9430f02644fa030 -rf7b149d8b8c9ea6ac58e4739101693d251d7a355 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 22561b57504c9b3b0a6bb6fcc9430f02644fa030) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision f7b149d8b8c9ea6ac58e4739101693d251d7a355) @@ -60,10 +60,13 @@ #define MAX_TIME_BETWEEN_VENOUS_READINGS ( 500 / TASK_GENERAL_INTERVAL ) ///< Maximum time without fresh inline venous pressure reading. #define OCCLUSION_THRESHOLD 25000 ///< Threshold above which an occlusion is detected. -#define MINIMUM_PRESSURE_READING 2000 ///< Minimum pressure reading limit. -#define MAX_CARTRIDGE_LOADED_LIMIT 20000 ///< Pressure limit when cartridge is considered loaded. #define CARTRIDGE_LOADED_THRESHOLD 5000 ///< Threshold above which a cartridge is considered loaded. +/// Occlusion sensors minimum pressure reading limit when no cartridge is loaded. +#define OCCLUSION_NO_CARTRIDGE_PRESSURE_READING_MIN 2000 +/// Occlusion sensors maximum pressure reading limit when cartridge is considered loaded. +#define OCCLUSION_CARTRIDGE_LOADED_PRESSURE_READING_MAX 20000 + #define PRES_ALARM_PERSISTENCE ( 1 * MS_PER_SECOND ) ///< Alarm persistence period for pressure alarms. /// Defined states for the pressure and occlusion monitor state machine. @@ -579,17 +582,17 @@ F32 const arterialPressure = getMeasuredArterialPressure(); F32 const venousPressure = getMeasuredVenousPressure(); - if ( ( bpPressure <= MINIMUM_PRESSURE_READING ) || ( bpPressure >= OCCLUSION_THRESHOLD ) ) + if ( ( bpPressure <= OCCLUSION_NO_CARTRIDGE_PRESSURE_READING_MIN ) || ( bpPressure >= OCCLUSION_THRESHOLD ) ) { result = SELF_TEST_STATUS_FAILED; } - if ( ( dialysateInPressure <= MINIMUM_PRESSURE_READING ) || ( dialysateInPressure >= OCCLUSION_THRESHOLD ) ) + if ( ( dialysateInPressure <= OCCLUSION_NO_CARTRIDGE_PRESSURE_READING_MIN ) || ( dialysateInPressure >= OCCLUSION_THRESHOLD ) ) { result = SELF_TEST_STATUS_FAILED; } - if ( ( dialysateOutPressure <= MINIMUM_PRESSURE_READING ) || ( dialysateOutPressure >= OCCLUSION_THRESHOLD ) ) + if ( ( dialysateOutPressure <= OCCLUSION_NO_CARTRIDGE_PRESSURE_READING_MIN ) || ( dialysateOutPressure >= OCCLUSION_THRESHOLD ) ) { result = SELF_TEST_STATUS_FAILED; } @@ -622,21 +625,34 @@ U32 const dialysateInPressure = getMeasuredDialInPumpOcclusion(); U32 const dialysateOutPressure = getMeasuredDialOutPumpOcclusion(); - if ( ( bpPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( bpPressure >= MAX_CARTRIDGE_LOADED_LIMIT ) ) + if ( ( bpPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( bpPressure >= OCCLUSION_CARTRIDGE_LOADED_PRESSURE_READING_MAX ) ) { result = SELF_TEST_STATUS_FAILED; } - if ( ( dialysateInPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( dialysateInPressure >= MAX_CARTRIDGE_LOADED_LIMIT ) ) + if ( ( dialysateInPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( dialysateInPressure >= OCCLUSION_CARTRIDGE_LOADED_PRESSURE_READING_MAX ) ) { result = SELF_TEST_STATUS_FAILED; } - if ( ( dialysateOutPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( dialysateOutPressure >= MAX_CARTRIDGE_LOADED_LIMIT ) ) + if ( ( dialysateOutPressure <= CARTRIDGE_LOADED_THRESHOLD ) || ( dialysateOutPressure >= OCCLUSION_CARTRIDGE_LOADED_PRESSURE_READING_MAX ) ) { result = SELF_TEST_STATUS_FAILED; } + if ( SELF_TEST_STATUS_FAILED == result ) + { + if ( ( bpPressure <= CARTRIDGE_LOADED_THRESHOLD ) && ( dialysateInPressure <= CARTRIDGE_LOADED_THRESHOLD ) && + ( dialysateOutPressure <= CARTRIDGE_LOADED_THRESHOLD ) ) + { + activateAlarmNoData( ALARM_ID_NO_CARTRIDGE_LOADED ); + } + else + { + activateAlarmNoData( ALARM_ID_CARTRIDGE_INSTALLED_IMPROPERLY ); + } + } + return result; }