Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -ra1a0187daedaf2c12e6f9eccfbf9e423d952e029 -raa27675b53602ea8bfedb5bc63aa711775d07cef --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision a1a0187daedaf2c12e6f9eccfbf9e423d952e029) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision aa27675b53602ea8bfedb5bc63aa711775d07cef) @@ -8,7 +8,7 @@ * @file ModeStandby.c * * @author (last) Dara Navaei -* @date (last) 15-Jul-2024 +* @date (last) 10-Oct-2024 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -77,6 +77,12 @@ /// Interval (in task intervals) at which to publish standby mode data to CAN bus. static OVERRIDE_U32_T standbyModePublishInterval = { DISINFECTS_DATA_PUB_INTERVAL, DISINFECTS_DATA_PUB_INTERVAL, DISINFECTS_DATA_PUB_INTERVAL, 0 }; +#ifdef CARTRIDGE_TEST_BUILD // Variables and definitions used only for cartridge test build. +#define CARTRIDGE_TEST_COMPLETE_TIME ( ( 10 * MIN_PER_HOUR * SEC_PER_MIN * MS_PER_SECOND ) / TASK_GENERAL_INTERVAL ) +static BOOL testCartridgesMode = FALSE; // Flag indicates we are testing cartridges. +static U32 testCartridgesTimerCtr = 0; // Test timer counter. +#endif + // ********** private function prototypes ********** static HD_STANDBY_STATE_T handleStandbyModeStartState( void ); @@ -231,6 +237,49 @@ break; } +#ifdef CARTRIDGE_TEST_BUILD + if ( TRUE == testCartridgesMode ) + { + if ( ++testCartridgesTimerCtr >= CARTRIDGE_TEST_COMPLETE_TIME ) + { + stop = TRUE; // Stop cartridge test after 10 hrs + } + if ( TRUE == isAlarmActive( ALARM_ID_HD_FLUID_LEAK_DETECTED ) ) + { + stop = TRUE; // Stop cartridge test if a fluid leak is detected + } + } + + if ( TRUE == stop ) + { + if ( testCartridgesMode != TRUE ) + { + testSetBloodPumpTargetDutyCycle( 0.652F ); + testSetDialInPumpTargetDutyCycle( 0.701F ); + testSetDialOutPumpTargetDutyCycle( 0.566F ); + setValvePosition( VDI, VALVE_POSITION_B_OPEN ); + setValvePosition( VDO, VALVE_POSITION_B_OPEN ); + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); + setValvePosition( VBV, VALVE_POSITION_B_OPEN ); + setValveAirTrap( STATE_CLOSED ); + testCartridgesMode = TRUE; + } + else + { + signalBloodPumpHardStop(); + signalDialInPumpHardStop(); + signalDialOutPumpHardStop(); + setValvePosition( VDI, VALVE_POSITION_A_INSERT_EJECT ); + setValvePosition( VDO, VALVE_POSITION_A_INSERT_EJECT ); + setValvePosition( VBA, VALVE_POSITION_A_INSERT_EJECT ); + setValvePosition( VBV, VALVE_POSITION_A_INSERT_EJECT ); + setValveAirTrap( STATE_OPEN ); + testCartridgesMode = FALSE; + testCartridgesTimerCtr = 0; + } + } +#endif + return currentStandbyState; } @@ -282,7 +331,6 @@ } haveHDDGServicesBeenExpired( &rejReason ); - isDGDisinfectValid( &rejReason ); } @@ -1309,7 +1357,7 @@ *rejReason = REQUEST_REJECT_REASON_DG_FILTER_FLUSH_HAS_BEEN_EXPIRED; } - if ( ( FALSE == isHeatDisValid ) && ( FALSE == isChemFlushComplete ) ) + if ( ( FALSE == isHeatDisValid ) || ( FALSE == isChemFlushComplete ) || ( FALSE == hasDisBeenDone ) ) { *rejReason = REQUEST_REJECT_REASON_DG_DISINFECT_HAS_BEEN_EXPIRED; }