Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rbb114842e73659f097bb8b8ec0d670bfa4f8cb73 -r125a27d5a3a116e7b7473ff180daf247270d8e57 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision bb114842e73659f097bb8b8ec0d670bfa4f8cb73) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) @@ -38,13 +38,17 @@ /// Interval (ms/task time) at which the pre-treatment state data is published on the CAN bus. #define PRE_TREATMENT_DATA_PUB_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) +/// Wait time for ui to transition on completion of a sub-mode (ms/task time). +#define SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) + #define DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN 100 ///< Patient connection sub-mode dialysate inlet pump flow rate in mL/min. #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 { @@ -71,6 +75,7 @@ static HD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current state of pre-treatment mode state machine. static U32 preTreatmentPublishTimerCounter; ///< Pre-treatment data broadcast timer counter used to schedule when to transmit data. +static U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T currentReservoirMgmtState; ///< Current pre-treatment reservoir management state. static BOOL fillReservoirOneStartRequested; ///< Flag indicates fill reservoir one has been requested. @@ -115,6 +120,7 @@ setUFVolStatus = FALSE; patientConnectionConfirm = FALSE; fillReservoirOneStartRequested = FALSE; + submodeCompleteTransitionTimeCounter = 0; reservoirFilledStatus[ DG_RESERVOIR_1 ] = FALSE; reservoirFilledStatus[ DG_RESERVOIR_2 ] = FALSE; @@ -532,9 +538,13 @@ if ( CONSUMABLE_SELF_TESTS_COMPLETE_STATE == getConsumableSelfTestState() ) { - state = HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; - fillReservoirOneStartRequested = TRUE; - transitionToNoCartSelfTests(); + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; + fillReservoirOneStartRequested = TRUE; + transitionToNoCartSelfTests(); + } } return state; @@ -564,10 +574,14 @@ execNoCartSelfTests(); - if ( TRUE == isNoCartSelfTestsPassed() ) + if ( NO_CART_SELF_TESTS_COMPLETE_STATE == getNoCartSelfTestsState() ) { - state = HD_PRE_TREATMENT_CART_INSTALL_STATE; - transitionToCartridgeInstallation(); + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = HD_PRE_TREATMENT_CART_INSTALL_STATE; + transitionToCartridgeInstallation(); + } } return state; @@ -620,10 +634,14 @@ execDrySelfTests(); - if ( TRUE == isDrySelfTestsPassed() ) + if ( DRY_SELF_TESTS_COMPLETE_STATE == getDrySelfTestsState() ) { - state = HD_PRE_TREATMENT_PRIME_STATE; - transitionToPrime(); + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = HD_PRE_TREATMENT_PRIME_STATE; + transitionToPrime(); + } } return state; @@ -653,11 +671,15 @@ execPrime(); - if ( TRUE == isPrimeCompleted() ) + if ( HD_PRIME_COMPLETE == getPrimeState() ) { - state = HD_PRE_TREATMENT_RECIRCULATE_STATE; - activateAlarmNoData( ALARM_ID_PRIME_COMPLETED_LOW_PRIORITY ); - transitionToPreTreatmentRecirc(); + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = HD_PRE_TREATMENT_RECIRCULATE_STATE; + activateAlarmNoData( ALARM_ID_PRIME_COMPLETED_LOW_PRIORITY ); + transitionToPreTreatmentRecirc(); + } } return state; Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r1796d251d3ccd028b5806f6358d1e8e598d8c14d -r125a27d5a3a116e7b7473ff180daf247270d8e57 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 1796d251d3ccd028b5806f6358d1e8e598d8c14d) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) @@ -71,7 +71,6 @@ static HD_PRE_TREATMENT_PRIME_STATE_T previousPrimeState; ///< Previous state of the prime sub-mode, to use when resuming from pause. static PRIME_RESERVOIR_MGMT_STATE_T currentReservoirMgmtState; ///< Current reservoir management state. -static BOOL primeCompleted; ///< Prime complete status. static U32 primeStartTime; ///< Starting time of priming (in ms). static U32 primePauseStartTime; ///< Priming pause start time (in ms). static U32 primeStatusBroadcastTimerCounter; ///< Prime status data broadcast timer counter used to schedule when to transmit data. @@ -130,7 +129,6 @@ currentPrimeState = HD_PRIME_START_STATE; currentReservoirMgmtState = PRIME_RESERVOIR_MGMT_START_STATE; - primeCompleted = FALSE; primeStartTime = getMSTimerCount(); primePauseStartTime = 0; primeStatusBroadcastTimerCounter = 0; @@ -199,7 +197,6 @@ break; case HD_PRIME_COMPLETE: - primeCompleted = TRUE; break; case HD_PRIME_PAUSE: @@ -236,18 +233,6 @@ /*********************************************************************//** * @brief - * The isPrimeCompleted function returns the status of prime. - * @details Inputs: none - * @details Outputs: none - * @return TRUE if prime has completed succesfully, otherwise FALSE - *************************************************************************/ -BOOL isPrimeCompleted( void ) -{ - return primeCompleted; -} - -/*********************************************************************//** - * @brief * The signalStartPrime function signals the prime sub-mode the user requested * to start priming operation. * @details Inputs: none Index: firmware/App/Modes/Prime.h =================================================================== diff -u -rbb114842e73659f097bb8b8ec0d670bfa4f8cb73 -r125a27d5a3a116e7b7473ff180daf247270d8e57 --- firmware/App/Modes/Prime.h (.../Prime.h) (revision bb114842e73659f097bb8b8ec0d670bfa4f8cb73) +++ firmware/App/Modes/Prime.h (.../Prime.h) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) @@ -50,7 +50,6 @@ void execPrime( void ); U32 getPrimeState( void ); -BOOL isPrimeCompleted( void ); void signalStartPrime( void ); void signalResumePrime( void ); Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rbb114842e73659f097bb8b8ec0d670bfa4f8cb73 -r125a27d5a3a116e7b7473ff180daf247270d8e57 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision bb114842e73659f097bb8b8ec0d670bfa4f8cb73) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) @@ -82,12 +82,10 @@ // ********** private data ********** -static BOOL noCartSelfTestsResult; ///< Result of no cartridge self-tests. static NO_CART_SELF_TESTS_STATE_T currentNoCartSelfTestsState; ///< Current state of the no cartridge self-tests state machine. static U32 runPumpStartTime; ///< Beginning time when pumps start running static BOOL havePumpsStarted; ///< Flag indicates pumps have started running for self-test. -static BOOL drySelfTestsResult; ///< Result of dry self-tests. static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; ///< Current state of the dry self-tests state machine. static U32 pressureSelfTestBloodPumpRunStartTime; ///< Pressure dry self-test blood pump runs start time. static U32 pressureSelfTestNormalizedStartTime; ///< Normalized pressure dry self-test start time. @@ -199,7 +197,6 @@ *************************************************************************/ void transitionToNoCartSelfTests( void ) { - noCartSelfTestsResult = FALSE; currentNoCartSelfTestsState = NO_CART_SELF_TESTS_START_STATE; runPumpStartTime = 0; havePumpsStarted = FALSE; @@ -212,7 +209,7 @@ * The execNoCartSelfTests function executes the no cartridge self-tests * state machine. * @details Inputs: currentNoCartSelfTestsState - * @details Outputs: currentNoCartSelfTestsState, noCartSelfTestsResult + * @details Outputs: currentNoCartSelfTestsState * @return none *************************************************************************/ void execNoCartSelfTests( void ) @@ -269,7 +266,6 @@ break; case NO_CART_SELF_TESTS_COMPLETE_STATE: - noCartSelfTestsResult = TRUE; break; default: @@ -300,18 +296,6 @@ /*********************************************************************//** * @brief - * The isNoCartSelfTestsPassed function returns the status of no cartridge self-tests. - * @details Inputs: none - * @details Outputs: none - * @return TRUE if no cartridge self-tests passed, otherwise FALSE - *************************************************************************/ -BOOL isNoCartSelfTestsPassed( void ) -{ - return noCartSelfTestsResult; -} - -/*********************************************************************//** - * @brief * The transitionToDrySelfTests function resets anything required before * the start of dry self-tests. * @details Inputs: none @@ -320,7 +304,6 @@ *************************************************************************/ void transitionToDrySelfTests() { - drySelfTestsResult = FALSE; currentDrySelfTestsState = DRY_SELF_TESTS_START_STATE; pressureSelfTestBloodPumpRunStartTime = 0; pressureSelfTestNormalizedStartTime = 0; @@ -334,7 +317,7 @@ * @brief * The execDrySelfTests function executes the dry self-tests state machine. * @details Inputs: currentDrySelfTestsState - * @details Outputs: currentDrySelfTestsState, drySelfTestsResult + * @details Outputs: currentDrySelfTestsState * @return none *************************************************************************/ void execDrySelfTests( void ) @@ -389,7 +372,6 @@ break; case DRY_SELF_TESTS_COMPLETE_STATE: - drySelfTestsResult = TRUE; break; default: @@ -422,21 +404,8 @@ return (U32)currentDrySelfTestsState; } - /*********************************************************************//** * @brief - * The isDrySelfTestsPassed function returns the status of dry self-tests. - * @details Inputs: none - * @details Outputs: none - * @return TRUE if dry self-tests passed, otherwise FALSE - *************************************************************************/ -BOOL isDrySelfTestsPassed( void ) -{ - return drySelfTestsResult; -} - -/*********************************************************************//** - * @brief * The transitionToWetSelfTests function resets anything required before * the start of wet self-tests. * @details Inputs: none Index: firmware/App/Modes/SelfTests.h =================================================================== diff -u -rb6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7 -r125a27d5a3a116e7b7473ff180daf247270d8e57 --- firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision b6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7) +++ firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) @@ -40,12 +40,10 @@ void transitionToNoCartSelfTests(); void execNoCartSelfTests( void ); U32 getNoCartSelfTestsState( void ); -BOOL isNoCartSelfTestsPassed( void ); void transitionToDrySelfTests(); void execDrySelfTests( void ); U32 getDrySelfTestsState( void ); -BOOL isDrySelfTestsPassed( void ); void transitionToWetSelfTests(); void execWetSelfTests( void );