Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rc46815918e7cf33e8736f180094843758f1e21b2 -rf4199248340b66e66abbe99599d5d30ce980ea5f --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision c46815918e7cf33e8736f180094843758f1e21b2) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f4199248340b66e66abbe99599d5d30ce980ea5f) @@ -98,6 +98,7 @@ // ********** private function prototypes ********** static void resetSignalFlags( void ); +static void resetAlarmSignalFlags( void ); static void broadcastTreatmentSettingsRanges( void ); static TREATMENT_STATE_T handleTreatmentStartState( void ); static TREATMENT_STATE_T handleTreatmentBloodPrimeState( void ); @@ -142,17 +143,13 @@ /*********************************************************************//** * @brief - * The resetSignalFlags function resets all signal flags. + * The resetSignalFlags function resets all non-alarm signal flags. * @details Inputs: none - * @details Outputs: signal flags set to FALSE + * @details Outputs: non-alarm signal flags set to FALSE * @return none *************************************************************************/ static void resetSignalFlags( void ) { - alarmStopSignalled = FALSE; - resumeTreatmentAlarmResponseRequest = FALSE; - initiateRinsebackAlarmResponseRequest = FALSE; - endTreatmentAlarmResponseRequest = FALSE; rinsebackToStoppedRequest = FALSE; endTreatmentRequest = FALSE; rinsebackToRecircRequest = FALSE; @@ -162,6 +159,21 @@ /*********************************************************************//** * @brief + * The resetAlarmSignalFlags function resets all alarm signal flags. + * @details Inputs: none + * @details Outputs: alarm signal flags set to FALSE + * @return none + *************************************************************************/ +static void resetAlarmSignalFlags( void ) +{ + alarmStopSignalled = FALSE; + resumeTreatmentAlarmResponseRequest = FALSE; + initiateRinsebackAlarmResponseRequest = FALSE; + endTreatmentAlarmResponseRequest = FALSE; +} + +/*********************************************************************//** + * @brief * The transitionToTreatmentMode function prepares for transition to treatment mode. * @details Inputs: none * @details Outputs: @@ -371,6 +383,9 @@ activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); } + // clear signal flags from sub-modes before calling sub-mode executives + resetSignalFlags(); + // Treatment mode state machine switch ( currentTreatmentState ) { @@ -414,7 +429,7 @@ } // Alarm response request flags should be handled at this point, reset in case not handled in current state - resetSignalFlags(); + resetAlarmSignalFlags(); // Broadcast treatment data broadcastTreatmentTimeAndState(); @@ -480,7 +495,7 @@ { // Kick dialysis sub-mode off setDialysisParams( presBloodFlowRate, presDialysateFlowRate, presMaxUFVolumeML, presUFRate ); - startDialysis(); + transitionToDialysis(); result = TREATMENT_DIALYSIS_STATE; } else @@ -561,13 +576,12 @@ if ( TRUE == getBloodIsPrimed() ) { lastTreatmentTimeStamp = getMSTimerCount(); - startDialysis(); transitionToDialysis(); result = TREATMENT_DIALYSIS_STATE; } else { - // TODO - transitionToBloodPrime(); + transitionToBloodPrime(); result = TREATMENT_BLOOD_PRIME_STATE; } }