Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r00fc092615d0b6b518754cb4de6a8abfaf946b33 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 00fc092615d0b6b518754cb4de6a8abfaf946b33) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -235,7 +235,7 @@ void execDGInterfaceMonitor( void ) { // Trigger alarm if not receiving new load cell data message in timely manner - checkDGDataFreshness( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, &dgLoadCellDataFreshFlag ); + /*checkDGDataFreshness( ALARM_ID_HD_NEW_LOAD_CELL_DATA_MESSAGE_NOT_RECEIVE, &dgLoadCellDataFreshFlag ); // Trigger alarm if not receiving new dialysate temperature data message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_DIALYSATE_TEMPERATURE_DATA_MESSAGE_NOT_RECEIVE, &dgDialysateTemperatureDataFreshFlag ); @@ -246,7 +246,8 @@ // Trigger alarm if not receiving new DG op mode message in timely manner checkDGDataFreshness( ALARM_ID_HD_NEW_DG_OPERATION_MODE_MESSAGE_NOT_RECEIVE, &dgOpModeDataFreshFlag ); - // Check to see if DG has restarted + // Check to see if DG has restarted*/ + checkDGRestart(); // Check the status of the trimmer heater @@ -452,26 +453,26 @@ /*********************************************************************//** * @brief - * The getDialysateTemperature function gets the latest dialysate temperature. - * @details Inputs: dgDialysateTemp + * The getDGDisinfectsStates function returns the DG disinfects readings. + * @details Inputs: none * @details Outputs: none - * @return the current dialysate temperature + * @return the current DG disinfects readings *************************************************************************/ -F32 getDialysateTemperature( void ) +DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ) { - return dgDialysateTemp; + return disinfectsStatus; } /*********************************************************************//** * @brief - * The getDGDisinfectsStates function returns the DG disinfects readings. - * @details Inputs: none + * The getDialysateTemperature function gets the latest dialysate temperature. + * @details Inputs: dgDialysateTemp * @details Outputs: none - * @return the current DG disinfects readings + * @return the current dialysate temperature *************************************************************************/ -DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ) +F32 getDialysateTemperature( void ) { - return disinfectsStatus; + return dgDialysateTemp; } /*********************************************************************//** Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r3f5b2cfad9edd2a67c0c6bbc9fd7f74021d566b8 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 3f5b2cfad9edd2a67c0c6bbc9fd7f74021d566b8) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -91,6 +91,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. @@ -154,8 +155,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 -r00fc092615d0b6b518754cb4de6a8abfaf946b33 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 00fc092615d0b6b518754cb4de6a8abfaf946b33) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -620,8 +620,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(); } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r34d0843fa73e79ba3b085dd4aaa393a1ec126fd4 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 34d0843fa73e79ba3b085dd4aaa393a1ec126fd4) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -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; } @@ -619,18 +621,25 @@ } // If homing has been initiated, wait for syringe pump to home and the verify force sensor calibration - if ( ( TRUE == homingInitiated ) && ( TRUE == isSyringePumpHome() ) ) +#ifndef _RELEASE_ + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_SYRINGE_PUMP ) == SW_CONFIG_ENABLE_VALUE ) { - syringePumpVerifyForceSensorDACCalibration(); - homingInitiated = FALSE; // reset for next time state = STANDBY_WAIT_FOR_TREATMENT_STATE; // Go to wait for treatment state after above check } + else +#endif + { + if ( ( TRUE == homingInitiated ) && ( TRUE == isSyringePumpHome() ) ) + { + syringePumpVerifyForceSensorDACCalibration(); + homingInitiated = FALSE; // reset for next time + state = STANDBY_WAIT_FOR_TREATMENT_STATE; // Go to wait for treatment state after above check + } + } return state; } -// Verify calibration - /*********************************************************************//** * @brief * The handleStandbyModeWaitForTreatmentState function handles wait for Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rc3f8a0d846621b3b10330eea578aeee89e734a91 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c3f8a0d846621b3b10330eea578aeee89e734a91) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -43,7 +43,7 @@ #define PUMP_SELF_TEST_FLOW_RATE_ML_MIN 100 ///< Self-test pump flow rate in mL/min. #define BLOOD_PUMP_PRESSURE_SELF_TEST_FLOW 100 #define DIAL_IN_PUMP_PRESSURE_SELF_TEST_FLOW 400 -#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 3 seconds then check for syringe pump prime occlusion. +#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 1 second then check for syringe pump prime occlusion. #define BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) ///< Pressure self-test time to run blood pump in ms. #define DIAL_IN_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) @@ -353,7 +353,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 ); } } } @@ -1299,8 +1299,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 { Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r3f5b2cfad9edd2a67c0c6bbc9fd7f74021d566b8 -rb3a7b408db8f17514fbd013ad19722e0efed6094 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3f5b2cfad9edd2a67c0c6bbc9fd7f74021d566b8) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision b3a7b408db8f17514fbd013ad19722e0efed6094) @@ -5219,6 +5219,7 @@ if ( sizeof( TEST_OVERRIDE_PAYLOAD_T ) == message->hdr.payloadLen ) { memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); + if ( FALSE == payload.reset ) { result = testSetBatteryRemainingPercentOverride( payload.state.f32 );