Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r5bf62ff1373f2e9eea858244a97167323bff33f8 -r8466e63f95f65a3ffb18c3af85ac99328e41167b --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 5bf62ff1373f2e9eea858244a97167323bff33f8) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8466e63f95f65a3ffb18c3af85ac99328e41167b) @@ -22,6 +22,7 @@ #include "ModePreTreat.h" #include "ModeTreatmentParams.h" #include "OperationModes.h" +#include "PresOccl.h" #include "PreTreatmentRecirc.h" #include "Prime.h" #include "SelfTests.h" @@ -77,6 +78,8 @@ 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. +/// 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 }; static U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T currentReservoirMgmtState; ///< Current pre-treatment reservoir management state. @@ -218,7 +221,6 @@ break; default: - currentPreTreatmentState = HD_PRE_TREATMENT_START_STATE; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE, (U32)currentPreTreatmentState ); break; } @@ -329,9 +331,11 @@ BOOL accepted = FALSE; REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == patientConnectionConfirm ) +#ifdef SKIP_UI_INTERACTION + patientConnectionConfirm = TRUE; #endif + + if ( TRUE == patientConnectionConfirm ) { if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE == currentPreTreatmentState ) ) { @@ -414,7 +418,7 @@ static void publishPreTreatmentState( void ) { // Broadcast treatment time and state data at interval - if ( ++preTreatmentPublishTimerCounter >= PRE_TREATMENT_DATA_PUB_INTERVAL ) + if ( ++preTreatmentPublishTimerCounter >= getU32OverrideValue( &preTreatmentModePublishInterval ) ) { PRE_TREATMENT_STATE_DATA_T preTreatmentData; @@ -616,9 +620,11 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; -#ifndef SKIP_UI_INTERACTION - if ( TRUE == confirmInstallRequested ) +#ifdef SKIP_UI_INTERACTION + confirmInstallRequested = TRUE; #endif + + if ( TRUE == confirmInstallRequested ) { confirmInstallRequested = FALSE; state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; @@ -656,6 +662,7 @@ { if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) { + setOcclusionInstallLevels(); // Record occlusion pressure levels after a new cartridge is installed. submodeCompleteTransitionTimeCounter = 0; state = HD_PRE_TREATMENT_PRIME_STATE; transitionToPrime(); @@ -729,9 +736,11 @@ execPreTreatmentRecirc(); -#ifndef SKIP_UI_INTERACTION - if ( TRUE == continueToTreatmentRequested ) +#ifdef SKIP_UI_INTERACTION + continueToTreatmentRequested = TRUE; #endif + + if ( TRUE == continueToTreatmentRequested ) { continueToTreatmentRequested = FALSE; state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; @@ -997,8 +1006,12 @@ if ( FALSE == reservoirFlushedStatus[ DG_RESERVOIR_1 ] ) { +#ifdef SKIP_PRIMING + reservoirFilledStatus[ DG_RESERVOIR_1 ] = TRUE; +#else reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); +#endif } else if ( ( TRUE == reservoirFlushedStatus[ DG_RESERVOIR_1 ] ) && ( FALSE == reservoirFlushedStatus[ DG_RESERVOIR_2 ] ) ) { @@ -1041,4 +1054,57 @@ return state; } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + + +/*********************************************************************//** + * @brief + * The testSetPreTreatmentModePublishIntervalOverride function sets the override of the + * pre-treatment mode data publication interval. + * @details Inputs: none + * @details Outputs: preTreatmentModePublishInterval + * @param ms milliseconds between pre-treatment mode broadcasts + * @return TRUE if override set successful, FALSE if not + *************************************************************************/ +BOOL testSetPreTreatmentModePublishIntervalOverride( U32 ms ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + U32 intvl = ms / TASK_GENERAL_INTERVAL; + + result = TRUE; + preTreatmentModePublishInterval.ovData = intvl; + preTreatmentModePublishInterval.override = OVERRIDE_KEY; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The testResetPreTreatmentModePublishIntervalOverride function resets the override of the + * pre-treatment mode data publication interval. + * @details Inputs: none + * @details Outputs: preTreatmentModePublishInterval + * @return TRUE if override reset successful, FALSE if not + *************************************************************************/ +BOOL testResetPreTreatmentModePublishIntervalOverride( void ) +{ + BOOL result = FALSE; + + if ( TRUE == isTestingActivated() ) + { + result = TRUE; + preTreatmentModePublishInterval.override = OVERRIDE_RESET; + preTreatmentModePublishInterval.ovData = preTreatmentModePublishInterval.ovInitData; + } + + return result; +} + /**@}*/