Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -rd91a24c730aeb5cd7e3eba9ef4eca78e442911f8 -rd336db3909e3c5865ede9da2da640e7df6743b11 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision d91a24c730aeb5cd7e3eba9ef4eca78e442911f8) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision d336db3909e3c5865ede9da2da640e7df6743b11) @@ -40,7 +40,9 @@ #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 TBD u/m). -#define VENOUS_PRESSURE_MAX ( 90.0 ) ///< Maximum of scale for venous pressure sensor reading (in TBD u/m). +#define VENOUS_PRESSURE_MAX ( 90.0 ) ///< Maximum of scale for venous pressure sensor reading (in TBD u/m). + +#define PSI_TO_MMHG ( 51.7149 ) ///< Conversion factor for converting PSI to mmHg. /// Defined states for the pressure and occlusion monitor state machine. typedef enum PresOccl_States @@ -76,10 +78,6 @@ static PRESSURE_SELF_TEST_STATE_T presOcclSelfTestState = PRESSURE_SELF_TEST_STATE_START; ///< current pressure self-test state. static U32 bloodPumpSelfTestTimerCount = 0; ///< timer counter for pressure self-test. -static F32 arterialPressureLowLimitmmHG = 0.0; ///< lower alarm limit for arterial pressure. -static F32 arterialPressureHighLimitmmHG = 0.0; ///< upper alarm limit for arterial pressure. -static F32 venousPressureLowLimitmmHG = 0.0; ///< lower alarm limit for venous pressure. -static F32 venousPressureHighLimitmmHG = 0.0; ///< upper alarm limit for venous pressure. // TODO - set thresholds for occlusions static F32 bloodPumpOcclusionPressureThresholdmmHG = 50.0; ///< pressure threshold for blood pump occlusion. static F32 dialInPumpOcclusionPressureThresholdmmHG = 50.0; ///< pressure threshold for dialysate inlet pump occlusion. @@ -108,38 +106,6 @@ /*********************************************************************//** * @brief - * The setPressureLimits function sets the lower and upper alarm limits - * for a given pressure sensor. - * @details - * Inputs : none - * Outputs : pressure limits - * @param sensor pressure sensor we are setting limits for - * @param low lower alarm limit (mmHg) - * @param high upper alarm limit (mmHg) - * @return none - *************************************************************************/ -void setPressureLimits( PRESSURE_SENSORS_T sensor, F32 low, F32 high ) -{ - switch ( sensor ) // TODO - will low/high limits be range checked by caller or should we do it here? what are valid ranges? - { - case PRESSURE_SENSOR_ARTERIAL: - arterialPressureLowLimitmmHG = low; - arterialPressureHighLimitmmHG = high; - break; - - case PRESSURE_SENSOR_VENOUS: - venousPressureLowLimitmmHG = low; - venousPressureHighLimitmmHG = high; - break; - - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PRES_OCCL_INVALID_PRES_SENSOR, sensor ) - break; - } -} - -/*********************************************************************//** - * @brief * The setOcclusionThreshold function sets the occlusion pressure threshold * for a given occlusion sensor. * @details @@ -234,11 +200,13 @@ U16 venPres = getFPGAVenousPressure(); U16 bldOccl = getFPGABloodPumpOcclusion(); U16 dliOccl = getFPGADialInPumpOcclusion(); - U16 dloOccl = getFPGADialOutPumpOcclusion(); + U16 dloOccl = getFPGADialOutPumpOcclusion(); + F32 venPresPSI; // TODO - convert ADC counts to mmHg for each sensor arterialPressure.data = ARTERIAL_PRESSURE_V_PER_BIT * ( (F32)(artPres) / ( ARTERIAL_PRESSURE_SENSITIVITY / ARTERIAL_PRESSURE_V_BIAS ) ); - venousPressure.data = ( (F32)(venPres - VENOUS_PRESSURE_OFFSET) * (VENOUS_PRESSURE_MAX - VENOUS_PRESSURE_MIN) / (F32)VENOUS_PRESSURE_SCALE ) - VENOUS_PRESSURE_MIN; + venPresPSI = ( (F32)(venPres - VENOUS_PRESSURE_OFFSET) * (VENOUS_PRESSURE_MAX - VENOUS_PRESSURE_MIN) / (F32)VENOUS_PRESSURE_SCALE ) - VENOUS_PRESSURE_MIN; + venousPressure.data = venPresPSI * PSI_TO_MMHG; bloodPumpOcclusion.data = (F32)bldOccl; dialInPumpOcclusion.data = (F32)dliOccl; dialOutPumpOcclusion.data = (F32)dloOccl; Index: firmware/App/Controllers/PresOccl.h =================================================================== diff -u -rde5a0d43bdef611d963d11855bc958a8d8899a09 -rd336db3909e3c5865ede9da2da640e7df6743b11 --- firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision de5a0d43bdef611d963d11855bc958a8d8899a09) +++ firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision d336db3909e3c5865ede9da2da640e7df6743b11) @@ -53,7 +53,6 @@ void initPresOccl( void ); void execPresOccl( void ); -void setPressureLimits( PRESSURE_SENSORS_T sensor, F32 low, F32 high ); void setOcclusionThreshold( OCCLUSION_SENSORS_T sensor, F32 threshold ); SELF_TEST_STATUS_T execPresOcclTest( void );