Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r08fdaaf70ab5133cbe7d019905f745074a756027 -r7efa0b84d6965d90fff88717846b96fa3b18d292 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 08fdaaf70ab5133cbe7d019905f745074a756027) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 7efa0b84d6965d90fff88717846b96fa3b18d292) @@ -19,14 +19,12 @@ #include "AirTrap.h" #include "BloodFlow.h" #include "Buttons.h" -#include "DrySelfTests.h" #include "DDInterface.h" #include "Messaging.h" #include "ModePreTreat.h" #include "OperationModes.h" #include "PinchValve.h" #include "Prime.h" -#include "TaskGeneral.h" #include "StatePreTxHeparinSetup.h" #include "StatePreTxRecirculate.h" #include "SyringePump.h" @@ -44,8 +42,6 @@ // ********** private definitions ********** -#define SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) - /// Interval (ms/task time) at which the Pre-Treatment state data is published on the CAN bus. #define PRE_TREATMENT_STATE_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) @@ -54,42 +50,21 @@ // ********** private data ********** -//static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state -//static BOOL goToInstallStateRequested; ///< Flag indicating a request to transition to Install state. -//static BOOL alarmActionResumeReceived; ///< Flag indicates alarm action resume received. -//static BOOL tubeSetInstallRequested; ///< Request to re-enter install flow (mid-treatment / failure) -//static U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. -//static BOOL continueFromRecirculateRequested; ///< Flag indicating a request to transition to Patient Connection state. -//static BOOL treatmentStartRequested; ///< Flag indicating the UI requested treatment start. -//static U32 preTreatmentStateBroadcastTimerCtr; ///< Pre-Treatment state data broadcast timer counter. -//static OVERRIDE_U32_T preTreatmentStatePublishInterval; ///< Pre-Treatment state data publication interval override. -// -//static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state -//static BOOL goToInstallStateRequested; ///< Flag indicating a request to transition to Install state. -//static BOOL continueFromRecirculateRequested; ///< Flag indicating a request to transition to Confirm Rx state. -//static BOOL continueFromHeparinSetupRequested; ///< Flag indicating a request to transition to Patient Connection state. -//static BOOL treatmentStartRequested; ///< Flag indicating the UI requested treatment start. -//static U32 preTreatmentStateBroadcastTimerCtr; ///< Pre-Treatment state data broadcast timer counter. -//static OVERRIDE_U32_T preTreatmentStatePublishInterval; ///< Pre-Treatment state data publication interval override. +static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state +static BOOL goToInstallStateRequested; ///< Flag indicating a request to transition to Install state. +static BOOL continueFromRecirculateRequested; ///< Flag indicating a request to transition to Confirm Rx state. +static BOOL continueFromHeparinSetupRequested; ///< Flag indicating a request to transition to Patient Connection state. +static BOOL treatmentStartRequested; ///< Flag indicating the UI requested treatment start. +static U32 preTreatmentStateBroadcastTimerCtr; ///< Pre-Treatment state data broadcast timer counter. +static OVERRIDE_U32_T preTreatmentStatePublishInterval; ///< Pre-Treatment state data publication interval override. -static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; -static BOOL goToInstallStateRequested; -static BOOL alarmActionResumeReceived; -static U32 submodeCompleteTransitionTimeCounter; -static BOOL continueFromRecirculateRequested; -static BOOL continueFromHeparinSetupRequested; -static BOOL treatmentStartRequested; -static U32 preTreatmentStateBroadcastTimerCtr; -static OVERRIDE_U32_T preTreatmentStatePublishInterval; - - static BOOL resumePreTxAlarmResponseRequest; ///< Flag indicates user has requested PreTx resume. // ********** private function prototypes ********** static void setPreTreatStateTransition( void ); ///< Configure actuators and variables for Pre-Treatment state transitions. static TD_PRE_TREATMENT_MODE_STATE_T handleInstallState( void ); ///< Handle Install state during Pre-Treatment -static TD_PRE_TREATMENT_MODE_STATE_T handleDrySelfTestState( void ); ///< Handle Self Test Dry state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestDryState( void ); ///< Handle Self Test Dry state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handlePrimeState( void ); ///< Handle Prime state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handleRecirculateState( void ); ///< Handle Recirculate state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handleRxState( void ); ///< Handle Confirm Rx state during Pre-Treatment @@ -107,56 +82,26 @@ **************************************************************************/ void initPreTreatmentMode( void ) { + // Start a fresh Treatment Parameters session for this run. initTreatmentParameters(); - currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; + initPreTxHeparinSetup(); + + currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; goToInstallStateRequested = FALSE; - alarmActionResumeReceived = FALSE; continueFromRecirculateRequested = FALSE; continueFromHeparinSetupRequested = FALSE; treatmentStartRequested = FALSE; - submodeCompleteTransitionTimeCounter = 0; preTreatmentStateBroadcastTimerCtr = PRE_TREATMENT_STATE_DATA_PUB_INITIAL_OFFSET; + preTreatmentStatePublishInterval = (OVERRIDE_U32_T) { PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, 0 }; - initPreTxHeparinSetup(); - initDrySelfTests(); } - -//void initPreTreatmentMode( void ) -//{ -// // Start a fresh Treatment Parameters session for this run. -// initTreatmentParameters(); -// currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; -// goToInstallStateRequested = FALSE; -// continueFromRecirculateRequested = FALSE; -// treatmentStartRequested = FALSE; -// initPreTxHeparinSetup(); -// initDrySelfTests(); -// -// currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; -// goToInstallStateRequested = FALSE; -// continueFromRecirculateRequested = FALSE; -// continueFromHeparinSetupRequested = FALSE; -// treatmentStartRequested = FALSE; -// preTreatmentStateBroadcastTimerCtr = PRE_TREATMENT_STATE_DATA_PUB_INITIAL_OFFSET; -// alarmActionResumeReceived = FALSE; -// submodeCompleteTransitionTimeCounter = 0; -// -// preTreatmentStatePublishInterval = (OVERRIDE_U32_T) -// { -// PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, -// PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, -// PRE_TREATMENT_STATE_DATA_PUB_INTERVAL, -// 0 -// }; -//} - /*********************************************************************//** * @brief * The transitionToPreTreatmentMode function prepares the system for @@ -208,14 +153,15 @@ break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: - currentPreTreatmentState = handleDrySelfTestState(); + currentPreTreatmentState = handleSelfTestDryState(); break; case TD_PRE_TREATMENT_PRIME_STATE: currentPreTreatmentState = handlePrimeState(); break; case TD_PRE_TREATMENT_CONFIRM_RX_STATE: + // Confirm Rx state currentPreTreatmentState = handleRxState(); break; @@ -242,25 +188,13 @@ { setPreTreatStateTransition(); } + publishPreTreatmentStates(); return (U32)currentPreTreatmentState; } /*********************************************************************//** - * @brief - * The getPreTreatmentSubState function gets the current - * pre-treatment mode state. - * @details \b Inputs: currentPreTreatmentState - * @details \b Outputs: none - * @return currentPreTreatmentState - *************************************************************************/ -TD_PRE_TREATMENT_MODE_STATE_T getPreTreatmentSubState( void ) -{ - return currentPreTreatmentState; -} - -/*********************************************************************//** * @brief * The setPreTreatStateTransition function sets the actuators and variables * for the state transition in Pre-Treatment mode. @@ -283,7 +217,7 @@ break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: - transitionToDrySelfTests(); + // TODO: actuator configuration break; case TD_PRE_TREATMENT_PRIME_STATE: @@ -327,6 +261,7 @@ } /*********************************************************************//** + * @brief * The handleInstallState function calls Tube Set Install Service and * advances to Self Test Dry state once the service signals * completion. @@ -351,24 +286,16 @@ /*********************************************************************//** * @brief - * The handleDrySelfTestState function performs dry self-test. - * @details \b Inputs: none - * @details \b Outputs: transition to prime state on user request - * @return current state (sub-mode) + * The handleSelfTestDryState function executes the Self Test Dry state + * of pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. *************************************************************************/ -static TD_PRE_TREATMENT_MODE_STATE_T handleDrySelfTestState( void ) +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestDryState( void ) { TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_DRY_STATE; - if ( TRUE == alarmActionResumeReceived ) - { - alarmActionResumeReceived = FALSE; - signalResumeDrySelfTests(); - } - - execDrySelfTests(); - - // Handle install request to failure path if ( TRUE == goToInstallStateRequested ) { goToInstallStateRequested = FALSE; @@ -378,15 +305,6 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); state = TD_PRE_TREATMENT_PRIME_STATE; - if ( DRY_SELF_TESTS_COMPLETE_STATE == getDrySelfTestsState() ) - { - if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) - { - submodeCompleteTransitionTimeCounter = 0; - state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; - //transitionToPrime(); - } - } return state; } @@ -657,12 +575,9 @@ break; case ALARM_ACTION_RESUME: - if ( TD_PRE_TREATMENT_SELF_TEST_DRY_STATE == currentPreTreatmentState ) - { - signalResumeDrySelfTests(); - } - else if ( TD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) - { + resumePreTxAlarmResponseRequest = TRUE; + if ( TD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) + { signalResumePreTxRecirculate(); } else if ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) @@ -671,24 +586,10 @@ } else { - // No action required. + // No action required. } break; -// if ( TD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) -// { -// signalResumePreTxRecirculate(); -// } -// else if ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) -// { -// signalResumePreTxHeparinSetup(); -// } -// else -// { -// // No action required. -// } -// break; - case ALARM_ACTION_ACK: if ( ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) && ( TRUE == isPreTxHeparinAwaitingSyringeLoadConfirmation() ) && @@ -736,7 +637,7 @@ payload.mSubMode = (U32)currentPreTreatmentState; payload.mInstallState = (U32)getTubeSetInstallState(); - payload.mSelfTestDryState = getDrySelfTestsState(); + payload.mSelfTestDryState = 0; payload.mPrimeState = 0; payload.mRecirculateState = getPreTxRecirculateState(); payload.mConfirmRxState = 0;