Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r42c6233847246407d81549a66458b12d3e3a27ac -rfb714597ad515d3774d69b94808f065788504724 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 42c6233847246407d81549a66458b12d3e3a27ac) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision fb714597ad515d3774d69b94808f065788504724) @@ -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; }