Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -ra94b796fe6fa9877b4c73169598a05fc43746adf -r9d9cd0ac6bce1de703e34cce9808b9dc357cd687 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision a94b796fe6fa9877b4c73169598a05fc43746adf) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 9d9cd0ac6bce1de703e34cce9808b9dc357cd687) @@ -63,13 +63,12 @@ *************************************************************************/ void transitionToPreTreatmentMode( void ) { - treatStartReqReceived = FALSE; - // Set user alarm recovery actions allowed in this mode setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); + treatStartReqReceived = FALSE; currentPreTreatmentState = PRE_TREATMENT_START_STATE; } Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r938fc2beedbb6153a2ac69c0d0c6b8abe209901d -r9d9cd0ac6bce1de703e34cce9808b9dc357cd687 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 938fc2beedbb6153a2ac69c0d0c6b8abe209901d) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 9d9cd0ac6bce1de703e34cce9808b9dc357cd687) @@ -45,6 +45,9 @@ #define PRIME_DRAIN_RESERVOIR_TO_VOLUME_ML 100 ///< Drain reservoir to this volume (in mL) during prime. #define PRIME_FILL_RESERVOIR_TO_VOLUME_ML 1700 ///< Fill reservoir to this volume (in mL) during prime. +#define PRIME_DIALYSATE_DIALYZER_TIME_LIMIT ( 60 * MS_PER_SECOND ) ///< Time limit for priming dialysate dialyzer circuit. +#define PRIME_DIALYSATE_BYPASS_TIME_LIMIT ( 60 * MS_PER_SECOND ) ///< Time limit for priming dialysate bypass circuit. + /// States of the treatment reservoir management state machine. typedef enum PrimeReservoirMgmt_States { @@ -68,6 +71,9 @@ static U32 noAirDetectedTimerCounter; ///< No air detected timer counter. static U32 purgeAirTimeOutTimerCount; ///< Timer counter for purse air state time out. + +static U32 primeDialysateDialyzerTimeStart; ///< Starting time of priming dialysate dialyzer circuit. +static U32 primeBypassDialyzerTimeStart; ///< Starting time of priming dialysate bypass circuit. static U32 previousLoadCellReading; ///< Previous load cell reading. static U32 loadcellSteadyVolumeStartTime; ///< Load cell steady volume starting time. @@ -114,6 +120,8 @@ primeStartReqReceived = TRUE; purgeAirTimeOutTimerCount = 0; + primeDialysateDialyzerTimeStart = 0; + primeDialysateBypassTimeStart = 0; previousLoadCellReading = 0; loadcellSteadyVolumeStartTime = 0; @@ -400,7 +408,8 @@ setDialOutPumpTargetRate( DIALYSATE_PUMP_PRIME_FLOW_RATE, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); previousLoadCellReading = 0; - loadcellSteadyVolumeStartTime = 0; + loadcellSteadyVolumeStartTime = getMSTimerCount(); + primeDialysateDialyzerTimeStart = getMSTimerCount(); state = PRIME_DIALYSATE_DIALYZER_STATE; } @@ -435,6 +444,11 @@ loadcellSteadyVolumeStartTime = getMSTimerCount(); } + if ( TRUE == didTimeout( primeDialysateDialyzerTimeStart, PRIME_DIALYSATE_DIALYZER_TIME_LIMIT ) ) + { + activateAlarm1Data( ALARM_ID_PRIME_DIALYSATE_DIALYZER_TIME_OUT, PRIME_DIALYSATE_DIALYZER_TIME_LIMIT ); + } + return state; } @@ -462,6 +476,7 @@ setValveAirTrap( STATE_CLOSED ); previousLoadCellReading = 0; + primeDialysateBypassTimeStart = getMSTimerCount(); loadcellSteadyVolumeStartTime = getMSTimerCount(); state = PRIME_DIALYSATE_BYPASS_STATE; } @@ -492,6 +507,11 @@ loadcellSteadyVolumeStartTime = getMSTimerCount(); } + if ( TRUE == didTimeout( primeDialysateBypassTimeStart, PRIME_DIALYSATE_BYPASS_TIME_LIMIT ) ) + { + activateAlarm1Data( ALARM_ID_PRIME_DIALYSATE_BYPASS_TIME_OUT, PRIME_DIALYSATE_BYPASS_TIME_LIMIT ); + } + return PRIME_DIALYSATE_BYPASS_STATE; }