Index: firmware/App/Modes/ConsumableSelfTest.c =================================================================== diff -u -r809d8fc395e63afc52a13fc30087d2cf50ad4d9a -rae7ff6466ac1225cb5998990cc5163edc53ce003 --- firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision 809d8fc395e63afc52a13fc30087d2cf50ad4d9a) +++ firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision ae7ff6466ac1225cb5998990cc5163edc53ce003) @@ -79,10 +79,10 @@ #endif { consumableInstallConfirmed = FALSE; -#ifdef SKIP_CONSUMABLE_TESTS - currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_COMPLETE_STATE; -#else +#ifndef SKIP_CONSUMABLE_TESTS currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_FILL_CMD_STATE; +#else + currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_COMPLETE_STATE; #endif } break; @@ -96,21 +96,21 @@ break; case CONSUMABLE_SELF_TESTS_WATER_QUALITY_CHECK_STATE: - if ( ( DG_MODE_FILL == getDGOpMode() ) && ( DG_FILL_MODE_STATE_BICARB_PUMP_CHECK == getDGSubMode() ) ) + if ( ( DG_MODE_FILL == getDGOpMode() ) && ( getDGSubMode() >= DG_FILL_MODE_STATE_BICARB_PUMP_CHECK ) ) { currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE; } break; case CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE: - if ( ( DG_MODE_FILL == getDGOpMode() ) && ( DG_FILL_MODE_STATE_ACID_PUMP_CHECK == getDGSubMode() ) ) + if ( ( DG_MODE_FILL == getDGOpMode() ) && ( getDGSubMode() >= DG_FILL_MODE_STATE_ACID_PUMP_CHECK ) ) { currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE; } break; case CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE: - if ( ( DG_MODE_FILL == getDGOpMode() ) && ( DG_FILL_MODE_STATE_DIALYSATE_PRODUCTION == getDGSubMode() ) ) + if ( ( DG_MODE_FILL == getDGOpMode() ) && ( getDGSubMode() >= DG_FILL_MODE_STATE_DIALYSATE_PRODUCTION ) ) { currentConsumableSelfTestState = CONSUMABLE_SELF_TESTS_COMPLETE_STATE; cmdStopDGFill(); Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r1796d251d3ccd028b5806f6358d1e8e598d8c14d -rae7ff6466ac1225cb5998990cc5163edc53ce003 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 1796d251d3ccd028b5806f6358d1e8e598d8c14d) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision ae7ff6466ac1225cb5998990cc5163edc53ce003) @@ -19,6 +19,7 @@ #include "ConsumableSelfTest.h" #include "FPGA.h" #include "ModePreTreat.h" +#include "ModeTreatmentParams.h" #include "OperationModes.h" #include "PreTreatmentRecirc.h" #include "Prime.h" @@ -42,6 +43,8 @@ #define PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML 1300 ///< Fill reservoir one to this volume (in mL) during pre-treatment mode. #define PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML 700 ///< Fill reservoir two to this volume (in mL) during pre-treatment mode. +#define PRIMARY_HEATER_TARGET_TEMP_OFFSET 2.0 ///< Primary heater target temperature offset from trimmer heater temperature. + /// States of the pre-treatment reservoir management state machine. typedef enum PreTreatmentReservoirMgmt_States { @@ -486,19 +489,29 @@ execSampleWater(); #ifndef SKIP_SAMPLE_WATER - if ( TRUE == isSampleWaterPassed() ) + if ( SAMPLE_WATER_COMPLETE_STATE == getSampleWaterState() ) #endif { - if ( ( DG_MODE_STAN == dgOpMode ) && ( DG_STANDBY_MODE_STATE_IDLE == dgSubMode ) ) + if ( TRUE == getSampleWaterResult() ) { - state = HD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE; - cmdStartDG(); - cmdSetDGDialysateTargetTemps( 39.0, 37.0 ); - transitionToConsumableSelfTest(); + if ( ( DG_MODE_STAN == dgOpMode ) && ( DG_STANDBY_MODE_STATE_IDLE == dgSubMode ) ) + { + state = HD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE; + F32 const trimmerHeaterTemp = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + F32 const primaryHeaterTemp = trimmerHeaterTemp + PRIMARY_HEATER_TARGET_TEMP_OFFSET; + + cmdStartDG(); + cmdSetDGDialysateTargetTemps( primaryHeaterTemp, trimmerHeaterTemp ); + transitionToConsumableSelfTest(); + } + else + { + cmdStopDG(); + } } else { - cmdStopDG(); + requestNewOperationMode( MODE_STAN ); } } Index: firmware/App/Modes/SampleWater.c =================================================================== diff -u -r1a6556b9b25ce9822e4f9a5d1fd51b488e48aa03 -rae7ff6466ac1225cb5998990cc5163edc53ce003 --- firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision 1a6556b9b25ce9822e4f9a5d1fd51b488e48aa03) +++ firmware/App/Modes/SampleWater.c (.../SampleWater.c) (revision ae7ff6466ac1225cb5998990cc5163edc53ce003) @@ -30,12 +30,12 @@ // ********** private data ********** -static BOOL sampleWaterStartRequested; -static BOOL sampleWaterStopRequested; -static BOOL sampleWaterEntered; +static BOOL sampleWaterStartRequested; ///< Flag indicates user has requested to start sample water. +static BOOL sampleWaterStopRequested; ///< Flag indicates user has requested to stop sample water. +static BOOL sampleWaterResultEntered; ///< Flag indicates user has entered sample water result. -static SAMPLE_WATER_STATE_T currentSampleWaterState; -static BOOL sampleWaterResult; +static SAMPLE_WATER_STATE_T currentSampleWaterState; ///< Current state of sample water sub-mode. +static BOOL sampleWaterResult; ///< The result entered by user after testing water sample. // ********** private function prototypes ********** @@ -53,7 +53,7 @@ { sampleWaterStartRequested = FALSE; sampleWaterStopRequested = FALSE; - sampleWaterEntered = FALSE; + sampleWaterResultEntered = FALSE; currentSampleWaterState = SAMPLE_WATER_SETUP_STATE; sampleWaterResult = FALSE; @@ -92,6 +92,9 @@ currentSampleWaterState = handleWaterSampleState(); break; + case SAMPLE_WATER_COMPLETE_STATE: + break; + default: // TODO: alarm break; @@ -112,12 +115,12 @@ /*********************************************************************//** * @brief - * The isSampleWaterPassed function returns the result of sample water. + * The getSampleWaterResult function returns the result from sample water testing. * @details Inputs: sampleWaterPassed * @details Outputs: none * @return TRUE if sample water result passed, otherwise FALSE *************************************************************************/ -BOOL isSampleWaterPassed( void ) +BOOL getSampleWaterResult( void ) { return sampleWaterResult; } @@ -183,7 +186,7 @@ *************************************************************************/ void setSampleWaterResult( BOOL result ) { - sampleWaterEntered = TRUE; + sampleWaterResultEntered = TRUE; sampleWaterResult = result; } @@ -219,15 +222,11 @@ { SAMPLE_WATER_STATE_T state = SAMPLE_WATER_STATE; - if ( TRUE == sampleWaterEntered ) + if ( TRUE == sampleWaterResultEntered ) { - sampleWaterEntered = FALSE; + state = SAMPLE_WATER_COMPLETE_STATE; + sampleWaterResultEntered = FALSE; cmdDGSampleWater( SAMPLE_WATER_CMD_END ); - - if ( FALSE == sampleWaterResult ) - { - // TODO: Trigger fault - } } if ( TRUE == sampleWaterStartRequested ) Index: firmware/App/Modes/SampleWater.h =================================================================== diff -u -red3e4d4180a4c0f08af285426c247aadfc685847 -rae7ff6466ac1225cb5998990cc5163edc53ce003 --- firmware/App/Modes/SampleWater.h (.../SampleWater.h) (revision ed3e4d4180a4c0f08af285426c247aadfc685847) +++ firmware/App/Modes/SampleWater.h (.../SampleWater.h) (revision ae7ff6466ac1225cb5998990cc5163edc53ce003) @@ -38,7 +38,7 @@ void execSampleWater( void ); U32 getSampleWaterState( void ); -BOOL isSampleWaterPassed( void ); +BOOL getSampleWaterResult( void ); void signalSampleWaterUserAction( REQUESTED_SAMPLE_WATER_USER_ACTIONS_T action ); // from user void setSampleWaterResult( BOOL result ); // from user