Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -479,6 +479,18 @@ /*********************************************************************//** * @brief + * The resetPreLoadStatus function resets the syringe pump pre-load status. + * @details Inputs: none + * @details Outputs: syringePumpPreLoadCompleted + * @return none + *************************************************************************/ +void resetPreLoadStatus( void ) +{ + syringePumpPreLoadCompleted = FALSE; +} + +/*********************************************************************//** + * @brief * The stopSyringePump function requests syringe pump be stopped. * @details Inputs: none * @details Outputs: syringePumpSetRate, syringePumpState, heparinDeliveryState @@ -1399,7 +1411,6 @@ syringePumpPlungerFound = FALSE; syringeVolumeAdequate = FALSE; syringePumpPrimeCompleted = FALSE; - syringePumpPreLoadCompleted = FALSE; syringePumpVolumeRequired = 0.0F; // Clear insufficient volume alarm condition in case we're retracting to allow user to resolve alarm clearAlarmCondition( ALARM_ID_HD_SYRINGE_PUMP_NOT_ENOUGH_HEPARIN_ALARM ); @@ -1519,7 +1530,6 @@ syringePumpVolumeDelivered.data = 0.0; syringePumpSafetyVolumeDelivered = 0.0; syringePumpVolumeStartPosition = pos; - syringePumpPreLoadCompleted = FALSE; // Check estimated syringe volume needed for treatment vs. volume detected - if insufficient for treatment needs, alarm (check only applies in pre-tx mode) if ( ( syringeVol >= txVolume ) || ( getCurrentOperationMode() != MODE_PRET ) ) @@ -1581,7 +1591,6 @@ syringePumpVolumeDelivered.data = 0.0; syringePumpSafetyVolumeDelivered = 0.0; syringePumpVolumeStartPosition = syringePumpPosition.data; - syringePumpPreLoadCompleted = FALSE; } // Has syringe been removed? Index: firmware/App/Controllers/SyringePump.h =================================================================== diff -u -r0a4dcd288d4347b85baaa0b07da568b6add5eac7 -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Controllers/SyringePump.h (.../SyringePump.h) (revision 0a4dcd288d4347b85baaa0b07da568b6add5eac7) +++ firmware/App/Controllers/SyringePump.h (.../SyringePump.h) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -87,6 +87,7 @@ void setHeparinStopped( void ); void setHeparinCompleted( void ); HEPARIN_STATE_T getHeparinState( void ); +void resetPreLoadStatus( void ); void stopSyringePump( void ); BOOL retractSyringePump( void ); BOOL preloadSyringePlunger( void ); Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -134,6 +134,7 @@ resetAirTrap(); resetBloodPumpRotorCount(); resetDialInPumpRotorCount(); + resetPreLoadStatus(); // Set user alarm recovery actions allowed in this mode setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -133,7 +133,7 @@ static void broadcastTreatmentSettingsRanges( void ); static void broadcastTreatmentPeriodicData(); -static U32 getTreatmentTimeInMinutes( void ); +static U32 getMinTreatmentTimeInMinutes( void ); static TREATMENT_STATE_T handleTreatmentStartState( void ); static TREATMENT_STATE_T handleTreatmentBloodPrimeState( void ); static TREATMENT_STATE_T handleTreatmentDialysisState( void ); @@ -965,7 +965,7 @@ // Check if we are in an appropriate treatment state for settings adjustment if ( ( MODE_TREA == currMode ) && ( currentTreatmentState > TREATMENT_START_STATE ) && ( currentTreatmentState < TREATMENT_END_STATE ) && - ( CALC_ELAPSED_TREAT_TIME_IN_MIN() < treatmentTime ) && ( treatmentTime >= getTreatmentTimeInMinutes() ) ) + ( CALC_ELAPSED_TREAT_TIME_IN_MIN() < treatmentTime ) && ( treatmentTime >= getMinTreatmentTimeInMinutes() ) ) { F32 uFVolume; U32 dialVolume = getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ) * treatmentTime; // In mL @@ -1009,7 +1009,7 @@ { rejectReason = REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE; } - else if ( treatmentTime < getTreatmentTimeInMinutes() ) + else if ( treatmentTime < getMinTreatmentTimeInMinutes() ) { rejectReason = REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM; } @@ -1087,7 +1087,7 @@ pendingUFRateChange = 0.0; } // Verify treatment duration change would be valid (leave zero if not valid - UI will disable option) - if ( ( trtTime <= MAX_TREATMENT_TIME_MINUTES ) && ( trtTime >= getTreatmentTimeInMinutes() ) && + if ( ( trtTime <= MAX_TREATMENT_TIME_MINUTES ) && ( trtTime >= getMinTreatmentTimeInMinutes() ) && ( dialVolume <= MAX_DIALYSATE_VOLUME_ML ) ) { result = TRUE; @@ -1440,7 +1440,7 @@ // Compute minimum treatment duration U32 presTime = ( presTreatmentTimeSecs / SEC_PER_MIN ); U32 elapseTime = CALC_ELAPSED_TREAT_TIME_IN_MIN(); - U32 minTime = MAX( (elapseTime + 2), getTreatmentTimeInMinutes() ); // Treatment duration cannot be < 1 hour. add two minutes to cover rounding and ensure it is valid for next minute + U32 minTime = MAX( (elapseTime + 2), getMinTreatmentTimeInMinutes() ); // Treatment duration cannot be < 1 hour. add two minutes to cover rounding and ensure it is valid for next minute // Compute maximum treatment duration (from both UF and dialysate volume perspectives) U32 maxTimeRem = ( MAX_UF_VOLUME_ML - (U32)getUltrafiltrationReferenceVolume() ) / ( presUFRate > 0.0 ? (U32)presUFRate : 1 ); U32 maxTime1 = minTime + maxTimeRem; @@ -1522,24 +1522,23 @@ /*********************************************************************//** * @brief - * The getTreatmentTimeInMinutes function returns the treatment time in minutes. - * @details Inputs: none + * The getMinTreatmentTimeInMinutes function returns the minimum treatment + * time (in minutes) that the user could set treatment duration to. + * @details Inputs: MIN_TREATMENT_TIME_MINUTES * @details Outputs: none - * @return treatment time in minutes + * @return minimum treatment time in minutes *************************************************************************/ -static U32 getTreatmentTimeInMinutes( void ) +static U32 getMinTreatmentTimeInMinutes( void ) { - // Assuming a 1 minute treatment - // NOTE: no # define for the 1 minute treatment time since this is only used for testing - U32 treatmentTime = 1; + U32 treatmentTime = MIN_TREATMENT_TIME_MINUTES; #ifndef _RELEASE_ // Check if the 1 minute treatment software configuration has not been enabled - if ( getSoftwareConfigStatus( SW_CONFIG_ENABLE_1_MIN_TREATMENT ) != SW_CONFIG_ENABLE_VALUE ) -#endif + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_1_MIN_TREATMENT ) ) { - treatmentTime = MIN_TREATMENT_TIME_MINUTES; + treatmentTime = 1; } +#endif return treatmentTime; } Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -73,7 +73,7 @@ #define WET_SELF_TEST_FIRST_DISPLACEMENT_TARGET_VOLUME_ML 100.0F ///< Target of first displacement volume in ml. #define WET_SELF_TEST_SECOND_DISPLACEMENT_TARGET_VOLUME_ML 600.0F ///< Target of second displacement volume in ml. -#define WET_SELF_TEST_INTEGRATED_VOLUME_PCT_TOLERANCE 0.05F ///< Tolerance on integrated volume as a percentage (5%). +#define WET_SELF_TEST_INTEGRATED_VOLUME_PCT_TOLERANCE 0.10F ///< Tolerance on integrated volume as a percentage (10%). #define WET_SELF_TEST_INTEGRATED_VOLUME_TOLERANCE 20.0F ///< Tolerance on integrated volume in grams. #define WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G 20.0F ///< Tolerance in the load cell readings of the displacement in grams. #define WET_SELF_TEST_DISPLACEMENT_TIME_MS ( SEC_PER_MIN * MS_PER_SECOND ) ///< Time to displace dialysate in wet self-test in ms. Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -998,17 +998,17 @@ else { if ( alarmStatus.alarmsState < NUM_OF_ALARM_PRIORITIES ) -#ifndef _RELEASE_ { +#ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_ALARM_AUDIO ) != SW_CONFIG_ENABLE_VALUE ) +#endif { setAlarmAudioState( alarmStatus.alarmsState, ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_GAIN], ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_DIVIDER] ); } } else -#endif { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_AUDIO_INVALID_ALARM_STATE, alarmStatus.alarmsState ) setAlarmAudioState( ALARM_PRIORITY_HIGH, Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r43d1739837a207e6d4d2960f3f0442af85b22a8c -r9e1b9e39a5723fd9f49b5257e8516022a4bc0229 --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 43d1739837a207e6d4d2960f3f0442af85b22a8c) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 9e1b9e39a5723fd9f49b5257e8516022a4bc0229) @@ -1,7 +1,4 @@ - -// TODO the copyright will be added automatically - #include // For reservoir management calculations #include "DGInterface.h" @@ -75,11 +72,6 @@ static const F32 RESERVOIR_DILUTION_RATIO = MAX_RESERVOIR_DILUTION / ( 1.0 - MAX_RESERVOIR_DILUTION ); ///< Reservoir dilution ratio. -// TODO remove -// FALSE for reservoir 1 and TRUE for reservoir 2 -static BOOL test = TRUE; -// TODO remove - // ********** private function prototypes ********** // Reservoir management functions @@ -610,38 +602,22 @@ rsrvrCmd.reservoirID = (U32)inactiveRes; rsrvrCmd.useLastTrimmerHeaterDC = TRUE; - // TODO test code remove - //if ( TRUE == test ) // TODO comment the if statement - { - // Signal dialysis sub-mode to capture baseline volume for next reservoir. - setStartReservoirVolume( inactiveRes ); + // Signal dialysis sub-mode to capture baseline volume for next reservoir. + setStartReservoirVolume( inactiveRes ); - // Command DG to switch reservoirs - cmdSetDGActiveReservoir( &rsrvrCmd ); + // Command DG to switch reservoirs + cmdSetDGActiveReservoir( &rsrvrCmd ); - // Signal dialysis sub-mode to switch reservoirs - signalReservoirsSwitched(); - } - // TODO test code + // Signal dialysis sub-mode to switch reservoirs + signalReservoirsSwitched(); // Get ready for the next delivery volSpentML = 0.0; // Wait for used reservoir to settle reservoirSwitchStartTimeMS = getMSTimerCount(); - // TODO test code - // For reservoir test, it should go back to start state - /*if ( FALSE == test ) - { - state = TREATMENT_RESERVOIR_MGMT_START_STATE; - } - else*/ // TODO comment the code above it is test code - { - state = TREATMENT_RESERVOIR_MGMT_WAIT_FOR_SWITCH_SETTLE_STATE; - test = FALSE; - } - // TODO test code + state = TREATMENT_RESERVOIR_MGMT_WAIT_FOR_SWITCH_SETTLE_STATE; } return state;