Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rac6fc5b74e15c8925e4579c847ddfca8e1e361ad -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision ac6fc5b74e15c8925e4579c847ddfca8e1e361ad) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -74,6 +74,7 @@ /// Persist time (task intervals) for flow vs. motor speed error condition. static const U32 DIP_FLOW_VS_SPEED_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); +//static const U32 DIP_FLOW_VS_SPEED_PERSIST = ((60 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); //DN-03NOV2022 - Make it 1 minutes for testing /// Persist time (task intervals) for motor off error condition. static const U32 DIP_OFF_ERROR_PERSIST = ((5 * MS_PER_SECOND) / TASK_PRIORITY_INTERVAL); /// Persist time (task intervals) motor speed error condition. Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r8abde9a00d09d1e687be6fe88592e66706c1a81d -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 8abde9a00d09d1e687be6fe88592e66706c1a81d) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -93,6 +93,7 @@ /// Expected position of empty in relation to home position. #define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.84F ) + /// Margin of error for empty position determination. #define SYRINGE_PUMP_EMPTY_POS_MARGIN ( SYRINGE_ENCODER_COUNTS_PER_ML * 0.5F ) /// Minimum retract position. @@ -156,8 +157,10 @@ #define SYRINGE_PUMP_STALL_SPEED_THRESHOLD 0.05F ///< Minimum syringe pump speed to be considered not stalled. #define SYRINGE_PUMP_ADC_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Syringe pump ADC FPGA error timeout in milliseconds. + #define SYRINGE_PUMP_DAC_MAX_RETRIES 5 ///< Syringe pump DAC retries to write. #define SYRINGE_PUMP_DAC_TIMER ( 200 / TASK_PRIORITY_INTERVAL ) ///< Syringe pump DAC timer between retries. + /// Defined states for the syringe pump control state machine. typedef enum SyringePump_States { Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r06eb4485aab0b6f160610358395d8a568f239ed1 -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 06eb4485aab0b6f160610358395d8a568f239ed1) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -629,8 +629,7 @@ signalBloodPumpHardStop(); signalDialOutPumpHardStop(); - //setDialInPumpTargetFlowRate( DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialInPumpTargetFlowRate( 250, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); // TODO remove this line once the new flow control is implemented + setDialInPumpTargetFlowRate( DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); cmdStartDGTrimmerHeater(); } @@ -1175,6 +1174,7 @@ rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; rsrvrCmd.useLastTrimmerHeaterDC = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; + cmdSetDGActiveReservoir( &rsrvrCmd ); } } @@ -1185,6 +1185,7 @@ rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; rsrvrCmd.useLastTrimmerHeaterDC = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_2 ] = TRUE; + cmdSetDGActiveReservoir( &rsrvrCmd ); } } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r8abde9a00d09d1e687be6fe88592e66706c1a81d -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 8abde9a00d09d1e687be6fe88592e66706c1a81d) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -66,6 +66,7 @@ static OVERRIDE_U32_T standbyModePublishInterval = { DISINFECTS_DATA_PUB_INTERVAL, DISINFECTS_DATA_PUB_INTERVAL, DISINFECTS_DATA_PUB_INTERVAL, 0 }; static const U32 SERVICE_TIME_INTERVAL_S = (U32)( 365 * 0.5 * SECONDS_IN_A_DAY ); ///< HD/DG 6-month service interval in seconds. +static BOOL homingInitiated; ///< Flag indicates actuator homing has been initiated from standby mode. // ********** private function prototypes ********** @@ -109,6 +110,7 @@ heatDisinfectStartReqReceived = FALSE; chemDisinfectStartReqReceived = FALSE; disinfectCancelReqID = GENERIC_CONFIRM_ID_NONE; + homingInitiated = FALSE; dgDisinfectState = DG_DISINFECT_NOT_RUNNING_STATE; homingInitiated = FALSE; } Index: firmware/App/Modes/Prime.c =================================================================== diff -u -reaffb84a318bb78cbc28d8867f158ba35e19b552 -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Modes/Prime.c (.../Prime.c) (revision eaffb84a318bb78cbc28d8867f158ba35e19b552) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -597,8 +597,6 @@ rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - cmdSetDGActiveReservoir( &rsrvrCmd ); - if ( TRUE == hasDGCompletedReservoirSwitch() ) { U32 dialyzerDialysateVolume = getDialyzerDialysateVolume(); @@ -611,7 +609,7 @@ signalBloodPumpHardStop(); setDialInPumpTargetFlowRate( DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialOutPumpTargetRate( DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialOutPumpTargetRate( 225, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); // 225 target flow rate matches PWM duty cycle for DPi pump @ 300. // Calculate the time out value that must passed prior to checking for the steady state volume in the reservoir primeDialysateDialyzerTimeLimit = (U32)( ( ( DIALYSATE_DIALYZER_TUBE_VOLUME_ML + dialyzerDialysateVolume ) * SEC_PER_MIN * MS_PER_SECOND ) / DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN ); Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rdb8b8238311857411e128e68c72a3ceace46c7b2 -re408267b7e73d664051a46e65ac248749af8e5be --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision db8b8238311857411e128e68c72a3ceace46c7b2) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision e408267b7e73d664051a46e65ac248749af8e5be) @@ -354,7 +354,7 @@ } else { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT, currentNoCartSelfTestsState ); +// SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_NO_CART_SELF_TEST_TIMEOUT, currentNoCartSelfTestsState ); } } } @@ -1312,8 +1312,8 @@ { if ( TRUE == isSyringePumpPrimed() ) { + syringeOcclusionDelayStartTime = getMSTimerCount(); // Get the current time to check for occlusion after 1 second has elapsed state = DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_DETECTION_STATE; - syringeOcclusionDelayStartTime = getMSTimerCount(); // Get the current time to check for occlusion after 3 seconds has elapsed } else {