Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -rc965df576088a9b2eb23d826f8f7e9f03d1bc962 -r22561b57504c9b3b0a6bb6fcc9430f02644fa030 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision c965df576088a9b2eb23d826f8f7e9f03d1bc962) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 22561b57504c9b3b0a6bb6fcc9430f02644fa030) @@ -40,10 +40,16 @@ #define ARTERIAL_PRESSURE_V_PER_BIT ( ARTERIAL_PRESSURE_V_BIAS / (F32)0x800000 ) ///< Volts per bit in 24-bit arterial pressure sensor reading. #define VENOUS_PRESSURE_OFFSET ( 1638 ) ///< Offset for 14-bit venous pressure sensor reading. -#define VENOUS_PRESSURE_SCALE ( 14745 - VENOUS_PRESSURE_OFFSET ) ///< Scale for venous pressure sensor. -#define VENOUS_PRESSURE_MIN ( -30.0 ) ///< Minimum of scale for venous pressure sensor reading (in PSI). +#define VENOUS_PRESSURE_SCALE ( 14745 - VENOUS_PRESSURE_OFFSET ) ///< Scale for venous pressure sensor. +#define VENOUS_PRESSURE_MIN ( -30.0 ) ///< Minimum of scale for venous pressure sensor reading (in PSI). #define VENOUS_PRESSURE_MAX ( 30.0 ) ///< Maximum of scale for venous pressure sensor reading (in PSI). +#define ARTERIAL_PRESSURE_SELF_TEST_MIN ( -300.0 ) ///< Minimum self-test value for arterial pressure sensor reading (in mmHg). +#define ARTERIAL_PRESSURE_SELF_TEST_MAX ( 100.0 ) ///< Maximum self-test value for arterial pressure sensor reading (in mmHg). + +#define VENOUS_PRESSURE_SELF_TEST_MIN ( -100.0 ) ///< Minimum self-test value for venous pressure sensor reading (in mmHg). +#define VENOUS_PRESSURE_SELF_TEST_MAX ( 600.0 ) ///< Maximum self-test value for venous pressure sensor reading (in mmHg). + #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. @@ -570,6 +576,8 @@ U32 const bpPressure = getMeasuredBloodPumpOcclusion(); U32 const dialysateInPressure = getMeasuredDialInPumpOcclusion(); U32 const dialysateOutPressure = getMeasuredDialOutPumpOcclusion(); + F32 const arterialPressure = getMeasuredArterialPressure(); + F32 const venousPressure = getMeasuredVenousPressure(); if ( ( bpPressure <= MINIMUM_PRESSURE_READING ) || ( bpPressure >= OCCLUSION_THRESHOLD ) ) { @@ -585,9 +593,17 @@ { result = SELF_TEST_STATUS_FAILED; } + + if ( ( arterialPressure <= ARTERIAL_PRESSURE_SELF_TEST_MIN ) || ( arterialPressure >= ARTERIAL_PRESSURE_SELF_TEST_MAX ) ) + { + result = SELF_TEST_STATUS_FAILED; + } + + if ( ( venousPressure <= VENOUS_PRESSURE_SELF_TEST_MIN ) || ( venousPressure >= VENOUS_PRESSURE_SELF_TEST_MAX ) ) + { + result = SELF_TEST_STATUS_FAILED; + } - // TODO - implement arterial blood and venous pressure self-test(s) - return result; }