Index: firmware/App/Modes/PreTreatmentRecirc.c =================================================================== diff -u -r68f18c1952d37f75f27b7ca45969af2202729bb5 -r27f3db92495948d4c1192421c1b0c20338c4a034 --- firmware/App/Modes/PreTreatmentRecirc.c (.../PreTreatmentRecirc.c) (revision 68f18c1952d37f75f27b7ca45969af2202729bb5) +++ firmware/App/Modes/PreTreatmentRecirc.c (.../PreTreatmentRecirc.c) (revision 27f3db92495948d4c1192421c1b0c20338c4a034) @@ -35,13 +35,13 @@ // ********** private data ********** static HD_PRE_TREATMENT_RECIRC_STATE_T currentPreTreatmentRecircState; ///< Current state of the pre-treatment recirculate state machine. +static BOOL recircStopRequested; ///< Flag indicates alarm requesting to stop pre-treatment recirculate. static BOOL recircResumeRequested; ///< Flag indicates alarm requesting to resume pre-treatment recirculate. // ********** private function prototypes ********** static void resetPreTreatmentRecircFlags( void ); -static void setupPreTreatmentRecirculate( void ); - +static void handlePreTreatmentRecirculateStartState( void ); static HD_PRE_TREATMENT_RECIRC_STATE_T handlePreTreatmentRecirculateState( void ); static HD_PRE_TREATMENT_RECIRC_STATE_T handlePreTreatmentRecirculateStoppedState( void ); @@ -70,7 +70,7 @@ void transitionToPreTreatmentRecirc( void ) { initPreTreatmentRecirc(); - setupPreTreatmentRecirculate(); + handlePreTreatmentRecirculateStartState(); } /*********************************************************************//** @@ -105,32 +105,45 @@ /*********************************************************************//** * @brief - * The getPreTreatmentRecircState function returns the current state of - * pre-treatment re-circulate sub-mode. - * @details Inputs: currentPreTreatmentRecircState - * @details Outputs: none - * @return current pre-treatment re-circ state + * The signalResumePreTreatmentRecirc function signals the pre-treatment + * recirculate sub-mode to resume. + * @details Inputs: none + * @details Outputs: recircResumepRequested + * @return none *************************************************************************/ -U32 getPreTreatmentRecircState( void ) +void signalResumePreTreatmentRecirc( void ) { - return currentPreTreatmentRecircState; + recircResumeRequested = TRUE; } /*********************************************************************//** * @brief - * The signalResumePreTreatmentRecirc function signals the pre-treatment - * recirculate sub-mode to resume. + * The signalStopPreTreatmentRecirc function signals the pre-treatment + * recirculate sub-mode to stop when an alarm with stop property has been triggered. * @details Inputs: none - * @details Outputs: recircResumepRequested + * @details Outputs: recircStopRequested * @return none *************************************************************************/ -void signalResumePreTreatmentRecirc( void ) +void signalStopPreTreatmentRecirc( void ) { - recircResumeRequested = TRUE; + recircStopRequested = TRUE; } /*********************************************************************//** * @brief + * The isPatientConnectionRequested function returns the status of patient connection request. + * @details Inputs: none + * @details Outputs: none + * @return TRUE if patient connection requested, otherwise FALSE + *************************************************************************/ +BOOL isPatientConnectionRequested( void ) +{ + // TODO Add handler to UI interaction + return TRUE; +} + +/*********************************************************************//** + * @brief * The resetPreTreatmentRecircFlags function resets all pre-treatment recirculate * signal flags. * @details Inputs: none @@ -139,18 +152,19 @@ *************************************************************************/ static void resetPreTreatmentRecircFlags( void ) { + recircStopRequested = FALSE; recircResumeRequested = FALSE; } /*********************************************************************//** * @brief - * The setupPreTreatmentRecirculate function setups valves and + * The handlePreTreatmentRecirculateStartState function changes valves and * heater settings for pre-treatment recirculate sub-mode. * @details Inputs: none * @details Outputs: controlled valves and pumps * @return none *************************************************************************/ -static void setupPreTreatmentRecirculate( void ) +static void handlePreTreatmentRecirculateStartState( void ) { setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); @@ -177,13 +191,14 @@ { HD_PRE_TREATMENT_RECIRC_STATE_T state = PRE_TREATMENT_RECIRC_STATE; - if ( TRUE == doesAlarmStatusIndicateStop() ) + if ( TRUE == recircStopRequested ) { signalDialOutPumpHardStop(); signalDialInPumpHardStop(); signalBloodPumpHardStop(); cmdStopDGTrimmerHeater(); + recircStopRequested = FALSE; state = PRE_TREATMENT_RECIRC_STOPPED_STATE; } @@ -205,8 +220,8 @@ if ( TRUE == recircResumeRequested ) { recircResumeRequested = FALSE; + handlePreTreatmentRecirculateStartState(); state = PRE_TREATMENT_RECIRC_STATE; - setupPreTreatmentRecirculate(); } return state;