Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r73634f08cd8701d835977d599a69710bb3e836c0 -r6cb41faf89ea5500a378c2d845c1b9bb552b4b30 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 73634f08cd8701d835977d599a69710bb3e836c0) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6cb41faf89ea5500a378c2d845c1b9bb552b4b30) @@ -46,6 +46,8 @@ typedef enum PreTreatmentReservoirMgmt_States { PRE_TREATMENT_RESERVOIR_MGMT_START_STATE = 0, ///< Wait for signal to start drain and fill reservoirs. + PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_CMD_STATE, ///< Command DG to switch active reservoir. + PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_RESP_STATE, ///< Processing DG switch reservoir command response. PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE, ///< Command DG to start draining reservoir. PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE, ///< After sending drain command, process DG drain command response. PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE, ///< Command DG to start filling reservoir. @@ -89,6 +91,8 @@ static void execPreTreatmentReservoirMgmt( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtStartState( void ); +static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtSwitchReservoirCmdState( void ); +static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtSwitchReservoirRespState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtDrainCmdState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtDrainCmdRespState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtFillCmdState( void ); @@ -152,7 +156,9 @@ switch ( currentPreTreatmentState ) { case HD_PRE_TREATMENT_START_STATE: +#ifndef SKIP_SAMPLE_WATER transitionToSampleWater(); +#endif currentPreTreatmentState = HD_PRE_TREATMENT_WATER_SAMPLE_STATE; break; @@ -300,7 +306,9 @@ BOOL accepted = FALSE; REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM; +#ifndef SKIP_UI_INTERACTION if ( TRUE == patientConnectionConfirm ) +#endif { if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE == currentPreTreatmentState ) ) { @@ -480,6 +488,8 @@ #endif { state = HD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE; + cmdStartDG(); + cmdSetDGDialysateTargetTemps( 39.0, 37.0 ); transitionToConsumableSelfTest(); } @@ -554,7 +564,9 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; +#ifndef SKIP_UI_INTERACTION if ( TRUE == confirmInstallRequested ) +#endif { confirmInstallRequested = FALSE; state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; @@ -656,7 +668,9 @@ execPreTreatmentRecirc(); +#ifndef SKIP_UI_INTERACTION if ( TRUE == continueToTreatmentRequested ) +#endif { continueToTreatmentRequested = FALSE; state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; @@ -703,6 +717,14 @@ currentReservoirMgmtState = handlePreTreatmentReservoirMgmtStartState(); break; + case PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_CMD_STATE: + currentReservoirMgmtState = handlePreTreatmentReservoirMgmtSwitchReservoirCmdState(); + break; + + case PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_RESP_STATE: + currentReservoirMgmtState = handlePreTreatmentReservoirMgmtSwitchReservoirRespState(); + break; + case PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE: currentReservoirMgmtState = handlePreTreatmentReservoirMgmtDrainCmdState(); break; @@ -745,14 +767,64 @@ if ( TRUE == fillReservoirOneStartRequested ) { fillReservoirOneStartRequested = FALSE; - state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + state = PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_CMD_STATE; } return state; } /*********************************************************************//** * @brief + * The handlePreTreatmentReservoirMgmtSwitchReservoirRespState function sends + * switch reservoir command to DG. + * @details Inputs: reservoirFilledStatus[] + * @details Outputs: sent switch reservoir command to DG + * @return next state of pre-treatment reservoir management + *************************************************************************/ +static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtSwitchReservoirCmdState( void ) +{ + if ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_1 ] ) + { + cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); + } + else + { + cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); + } + + return PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_RESP_STATE; +} + +/*********************************************************************//** + * @brief + * The handlePreTreatmentReservoirMgmtSwitchReservoirRespState function waits + * and processes DG switch reservoir command response. + * @details Inputs: DG switch reservoir command response + * @details Outputs: processed switch reservoir response + * @return next state of pre-treatment reservoir management + *************************************************************************/ +static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtSwitchReservoirRespState( void ) +{ + PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_RESP_STATE; + DG_CMD_RESPONSE_T dgCmdResp; + + if ( TRUE == getDGCommandResponse( DG_CMD_SWITCH_RESERVOIR, &dgCmdResp ) ) + { + if ( TRUE == dgCmdResp.rejected ) + { + state = PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_CMD_STATE; + } + else + { + state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + } + } + + return state; +} + +/*********************************************************************//** + * @brief * The handlePreTreatmentReservoirMgmtDrainCmdState function sends drain * command to DG when DG is in re-circulate mode. * @details Inputs: fillReservoirOneStartRequested @@ -763,10 +835,11 @@ { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; DG_OP_MODE_T dgOpMode = getDGOpMode(); + U32 dgSubMode = getDGSubMode(); if ( DG_MODE_CIRC == dgOpMode ) { - if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == getDGSubMode() ) + if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE; cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); @@ -792,13 +865,14 @@ { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE; DG_CMD_RESPONSE_T dgCmdResp; + DG_OP_MODE_T dgOpMode = getDGOpMode(); - if ( ( TRUE == getDGCommandResponse( DG_CMD_START_DRAIN, &dgCmdResp ) ) && ( DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE == dgCmdResp.rejected ) ) + if ( ( TRUE == getDGCommandResponse( DG_CMD_START_DRAIN, &dgCmdResp ) ) && ( DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE == dgCmdResp.rejectCode ) ) { state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; } - if ( DG_MODE_DRAI == getDGOpMode() ) + if ( DG_MODE_DRAI == dgOpMode ) { state = PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE; } @@ -818,8 +892,10 @@ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtFillCmdState( void ) { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE; + DG_OP_MODE_T dgOpMode = getDGOpMode(); + U32 dgSubMode = getDGSubMode(); - if ( ( DG_MODE_CIRC == getDGOpMode() ) && ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == getDGSubMode() ) ) + if ( ( DG_MODE_CIRC == dgOpMode ) && ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) ) { state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; @@ -848,15 +924,17 @@ { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; DG_CMD_RESPONSE_T dgCmdResp; + DG_OP_MODE_T dgOpMode = getDGOpMode(); - if ( ( TRUE == getDGCommandResponse( DG_CMD_START_FILL, &dgCmdResp ) ) && ( DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE == dgCmdResp.rejected ) ) + + if ( ( TRUE == getDGCommandResponse( DG_CMD_START_FILL, &dgCmdResp ) ) && ( DG_CMD_REQUEST_REJECT_REASON_INVALID_MODE == dgCmdResp.rejectCode ) ) { - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE; + state = PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE; } - if ( DG_MODE_FILL == getDGOpMode() ) + if ( DG_MODE_FILL == dgOpMode ) { - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE; + state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE; } return state; @@ -874,14 +952,14 @@ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtFillCompleteState( void ) { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_COMPLETE_STATE; + DG_OP_MODE_T dgOpMode = getDGOpMode(); - if ( DG_MODE_CIRC == getDGOpMode() ) + if ( DG_MODE_CIRC == dgOpMode ) { if ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_1 ] ) { - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + state = PRE_TREATMENT_RESERVOIR_MGMT_SWITCH_RESERVOIR_CMD_STATE; reservoirFilledStatus[ DG_RESERVOIR_1 ] = TRUE; - cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); } else if ( ( TRUE == reservoirFilledStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFilledStatus[ DG_RESERVOIR_2 ] ) ) {