Index: firmware/App/Modes/Prime.c =================================================================== diff -u -rd4a4438fece666d728dc9825157af6ca99be8eb9 -ref6283257df7c1f993d58fb934da57ea3e0a7067 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision d4a4438fece666d728dc9825157af6ca99be8eb9) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision ef6283257df7c1f993d58fb934da57ea3e0a7067) @@ -7,8 +7,8 @@ * * @file Prime.c * -* @author (last) Michael Garthwaite -* @date (last) 21-Apr-2022 +* @author (last) Dara Navaei +* @date (last) 17-Oct-2022 * * @author (original) Quang Nguyen * @date (original) 08-Dec-2020 @@ -52,7 +52,8 @@ #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 ( 60 * MS_PER_SECOND ) ///< Time period count for purge air time out. +#define PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ( 60 * MS_PER_SECOND ) ///< Time period count for prime saline dialyzer 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. @@ -87,7 +88,7 @@ { 120, 257 }, // DIALYZER_TYPE_BBRAUN_PRO_19H { 87, 233 }, // DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F160NRE { 102, 280 }, // DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F180NRE - { 113, 300 } }; // DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F200NRE + { 113, 348 } }; // DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F200NRE static U32 primeDialysateDialyzerTimeLimit; ///< Time limit in msec for priming dialysate dialyzer path. static U32 primeSalineDialyzerTimeLimit; ///< Time limit in msec for priming saline dialyzer path. @@ -142,11 +143,10 @@ *************************************************************************/ void initPrime( void ) { - currentPrimeState = HD_PRIME_START_STATE; - currentReservoirMgmtState = PRIME_RESERVOIR_MGMT_START_STATE; - - primeStartTime = 0; - primePauseStartTime = 0; + currentPrimeState = HD_PRIME_START_STATE; + currentReservoirMgmtState = PRIME_RESERVOIR_MGMT_START_STATE; + primeStartTime = 0; + primePauseStartTime = 0; primeStatusBroadcastTimerCounter = 0; } @@ -500,7 +500,7 @@ if ( TRUE == didTimeout( purgeAirTimeOutStartTime, PURGE_AIR_TIME_OUT_COUNT ) ) { - activateAlarmNoData( ALARM_ID_HD_PRIME_PURGE_AIR_TIME_OUT ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PRIME_SALINE_PURGE_AIR_TIME_OUT, PURGE_AIR_TIME_OUT_COUNT ); } if ( AIR_TRAP_LEVEL_FLUID == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) @@ -732,6 +732,11 @@ state = HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE; } + if ( TRUE == didTimeout( primeSalineDialyzerStartTime, PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ) ) + { + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRIME_SALINE_DIALYZER_TIME_OUT, PRIME_SALINE_DIALYZER_TIME_OUT_COUNT ); // Trigger HD prime saline dialyzer time out alarm. + } + if ( TRUE == doesAlarmStatusIndicateStop() ) { setupForPrimePause();