Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r8b85f5e5542a227384f6696238f3d18b8d8b0efa -r5c5ea32c4f6a79610ae1ff8e62d399d4894cc10a --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8b85f5e5542a227384f6696238f3d18b8d8b0efa) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 5c5ea32c4f6a79610ae1ff8e62d399d4894cc10a) @@ -75,6 +75,7 @@ static BOOL alarmActionResumeReceived = FALSE; ///< Flag indicates alarm action resume received. static HD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current state of pre-treatment mode state machine. +static BOOL fillReservoirOneStartRequested; ///< Flag indicates fill reservoir one has been requested. static U32 preTreatmentPublishTimerCounter; ///< Pre-treatment data broadcast timer counter used to schedule when to transmit data. /// Interval (in task intervals) at which to publish pre-treatment mode data to CAN bus. static OVERRIDE_U32_T preTreatmentModePublishInterval = { PRE_TREATMENT_DATA_PUB_INTERVAL, PRE_TREATMENT_DATA_PUB_INTERVAL, PRE_TREATMENT_DATA_PUB_INTERVAL, 0 }; @@ -125,6 +126,7 @@ currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_START_STATE; setUFVolStatus = FALSE; patientConnectionConfirm = FALSE; + fillReservoirOneStartRequested = FALSE; submodeCompleteTransitionTimeCounter = 0; reservoirFilledStatus[ DG_RESERVOIR_1 ] = FALSE; @@ -676,8 +678,8 @@ * @brief * The handleSelfTestConsumableState function handles consumable self-test state * during pre-treatment mode. - * @details Inputs: none - * @details Outputs: executed consumable self-test state machine + * @details Inputs: submodeCompleteTransitionTimeCounter + * @details Outputs: execute consumable self-test state machine * @return current state (sub-mode) *************************************************************************/ static HD_PRE_TREATMENT_MODE_STATE_T handleSelfTestConsumableState( void ) @@ -692,6 +694,7 @@ { submodeCompleteTransitionTimeCounter = 0; state = HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; + fillReservoirOneStartRequested = TRUE; transitionToNoCartSelfTests(); } } @@ -939,16 +942,20 @@ * @brief * The handlePreTreatmentReservoirMgmtStartState function handles reservoir * management start state for pre-treatment mode. - * @details Inputs: none - * @details Outputs: processed fill reservoir one request + * @details Inputs: fillReservoirOneStartRequested + * @details Outputs: fillReservoirOneStartRequested * @return current state of pre-treatment reservoir management *************************************************************************/ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtStartState( void ) { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_START_STATE; - state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; - cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); + if ( TRUE == fillReservoirOneStartRequested ) + { + fillReservoirOneStartRequested = FALSE; + cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); + state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + } return state; }