Index: firmware/App/Controllers/BloodLeak.h =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -60,7 +60,7 @@ SELF_TEST_STATUS_T execBloodLeakSelfTest( void ); BLOOD_LEAK_STATUS_T getBloodLeakStatus( void ); -SELF_TEST_STATUS_T getBloodLeakSelfTestStatus( void ); +SELF_TEST_STATUS_T getBloodLeakSelfTestStatus( void ); BOOL testSetBloodLeakDataPublishIntervalOverride( U32 value ); BOOL testResetBloodLeakDataPublishIntervalOverride( void ); Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -rd7b793881e8414f2daf75825d5de4e25a25d10ac -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision d7b793881e8414f2daf75825d5de4e25a25d10ac) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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,7 @@ // 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 +452,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/DGInterface.h =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -145,6 +145,7 @@ F32 getReservoirBackupWeightLargeFilter( DG_RESERVOIR_ID_T resID ); F32 getDialysateTemperature( void ); DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ); +F32 getDialysateTemperature( void ); DG_MIXING_RATIOS_T getDGMixingRatios( void ); void getHDVersionDGServiceAndUsageData( DG_SERVICE_AND_USAGE_DATA_T* data ); Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r6049f1beb825619a6b2a2441b3abb7db13e21b72 -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 6049f1beb825619a6b2a2441b3abb7db13e21b72) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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/PresOccl.c =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -71,6 +71,7 @@ #define PSI_TO_MMHG ( 51.7149F ) ///< Conversion factor for converting PSI to mmHg. +// The new arterial pressure sensor is the same as the venous pressure sensor #define VENOUS_PRESSURE_NORMAL_OP 0 ///< Venous pressure status bits indicate normal operation. #define VENOUS_PRESSURE_CMD_MODE 1 ///< Venous pressure status bits indicate sensor in command mode. #define VENOUS_PRESSURE_STALE_DATA 2 ///< Venous pressure status bits indicate data is stale (no new data since last fpga read). @@ -638,7 +639,7 @@ // and setOcclusionInstallLevel has been called. if ( MODE_PRET == getCurrentOperationMode() ) { - if ( getPreTreatmentSubState() > HD_PRE_TREATMENT_CART_INSTALL_STATE && getDrySelfTestsState() > DRY_SELF_TESTS_START_STATE ) + if( getPreTreatmentSubState() > HD_PRE_TREATMENT_CART_INSTALL_STATE && getDrySelfTestsState() > DRY_SELF_TESTS_START_STATE ) { // Check for occlusion if ( bpOccl > ( OCCLUSION_THRESHOLD_OFFSET + bloodPumpOcclusionAfterCartridgeInstall ) ) @@ -648,7 +649,6 @@ } } } - // Check for occlusion in Treatment modes where pumps are moving else if ( MODE_TREA == getCurrentOperationMode() ) { Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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/Controllers/Temperatures.c =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -288,9 +288,10 @@ if ( ( temperature > MAX_ALLOWED_TEMPERATURE ) || ( temperature < MIN_ALLOWED_TEMPERATURE ) ) { - isTempOutOfRange |= TRUE; - lastFaultSensor = sensor; + isTempOutOfRange = TRUE; + lastFaultSensor = sensor; } + } checkPersistentAlarm( ALARM_ID_HD_TEMPERATURES_OUT_OF_RANGE, isTempOutOfRange, lastFaultSensor, MAX_ALLOWED_TEMPERATURE ); Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r563f11fe3cdd440f8f3dd5bb125a6dccff94b981 -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 563f11fe3cdd440f8f3dd5bb125a6dccff94b981) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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(); } @@ -1177,6 +1176,7 @@ rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; rsrvrCmd.useLastTrimmerHeaterDC = FALSE; reservoirFlushedStatus[ DG_RESERVOIR_1 ] = TRUE; + cmdSetDGActiveReservoir( &rsrvrCmd ); } } @@ -1187,6 +1187,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 -r563f11fe3cdd440f8f3dd5bb125a6dccff94b981 -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 563f11fe3cdd440f8f3dd5bb125a6dccff94b981) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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/SelfTests.c =================================================================== diff -u -raa7b1f5f68aae23c1c52b32658fcb625c29accfb -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision aa7b1f5f68aae23c1c52b32658fcb625c29accfb) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -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 ); } } } @@ -1306,8 +1306,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 -rd7b793881e8414f2daf75825d5de4e25a25d10ac -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d7b793881e8414f2daf75825d5de4e25a25d10ac) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -5251,6 +5251,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 ); Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rd7b793881e8414f2daf75825d5de4e25a25d10ac -r714e5bc990074b9b73a46af011bf7204f0d5d5e1 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision d7b793881e8414f2daf75825d5de4e25a25d10ac) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 714e5bc990074b9b73a46af011bf7204f0d5d5e1) @@ -833,9 +833,6 @@ // MSG_ID_HD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE BOOL sendBloodLeakEmbeddedModeCommandResponse( U32 responseLen, U08* response ); -// MSG_ID_HD_SEND_ALARMS_COMMAND -void handleResendAllAlarmsCommand( MESSAGE_T* message ); - // MSG_ID_HD_BLOOD_PUMP_SET_PWM void handleTestBloodPumpSetPWM( MESSAGE_T* message );