Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -re4f4d7c87dc50fe7a166f26a903547315671fd17 -r05104b2f8b6371b100c5c31bb55c4efde50890ac --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision e4f4d7c87dc50fe7a166f26a903547315671fd17) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 05104b2f8b6371b100c5c31bb55c4efde50890ac) @@ -59,7 +59,7 @@ #define MIN_HEPARIN_CONTINUOUS_RATE 0.2F ///< Minimum continuous Heparin flow rate (in mL/hr). #define MAX_HEPARIN_CONTINUOUS_RATE 1.0F ///< Maximum continuous Heparin flow rate (in mL/hr). -#define HEPARIN_BOLUS_TARGET_RATE 40.0F ///< Heparin bolus target rate (in ml/hr); +#define HEPARIN_BOLUS_TARGET_RATE 720.0F ///< Heparin bolus target rate (in ml/hr); #define SYRINGE_PUMP_RETRACT_RATE 3600.0F ///< Retract rate is 5 mL/ 5 s = 1 mL/s = 3,600 mL/hr. #define SYRINGE_PUMP_SEEK_RATE 3600.0F ///< Seek plunger rate is 5 mL/ 5 s = 1 mL/s = 3,600 mL/hr. #define SYRINGE_PUMP_PRIME_RATE 635.0F ///< Prime rate is 0.5 mm ^ 2 x PI x 450 mm = 0.353 mL / 2s = 635 mL/hr. @@ -68,7 +68,6 @@ #define SYRINGE_PUMP_RATE_ALARM_PERSISTENCE 3000 ///< Alarm persistence period (in ms) for syringe pump speed check alarms. #define SYRINGE_PUMP_DIR_ALARM_PERSISTENCE 3000 ///< Alarm persistence period (in ms) for syringe pump direction check alarms. #define SYRINGE_PUMP_OFF_ALARM_PERSISTENCE 1000 ///< Alarm persistence period (in ms) for syringe pump off check alarms. -#define SYRINGE_PUMP_OCCLUSION_ALARM_PERSISTENCE 30 ///< Alarm persistence period (in ms) for syringe pump occlusion alarms. #define SYRINGE_PUMP_ADC_READ_PERSISTENCE 100 ///< Syringe pump ADC stale read alarm persistence time (in ms). #define STEPS_TO_MICROSTEPS( s ) ( (s) * 32.0F ) ///< Macro conversion from steps to microsteps. @@ -91,6 +90,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. @@ -318,7 +318,6 @@ initPersistentAlarm( ALARM_ID_HD_SYRINGE_PUMP_RUNNING_WHILE_BP_OFF_ERROR, 0, SYRINGE_PUMP_OFF_ALARM_PERSISTENCE ); initPersistentAlarm( ALARM_ID_HD_SYRINGE_PUMP_NOT_STOPPED_ERROR, 0, SYRINGE_PUMP_OFF_ALARM_PERSISTENCE ); initPersistentAlarm( ALARM_ID_HD_SYRINGE_PUMP_SPEED_ERROR, 0, SYRINGE_PUMP_RATE_ALARM_PERSISTENCE ); - initPersistentAlarm( ALARM_ID_HD_SYRINGE_PUMP_OCCLUSION, 0, SYRINGE_PUMP_OCCLUSION_ALARM_PERSISTENCE ); // Reset request flags resetSyringePumpRequestFlags(); @@ -1577,10 +1576,9 @@ F32 forceDelta = forceAtEndOfPriming - forceAtEndOfSeek; // Occlusion is detected if force at end of prime is > than force at end of seek by 0.5 volts or more BOOL occlusionDetected = ( forceDelta >= SYRINGE_FORCE_OCCLUSION_DIFF_V ? TRUE : FALSE ); - if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_OCCLUSION, occlusionDetected ) ) + if ( TRUE == occlusionDetected ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_SYRINGE_PUMP_OCCLUSION, forceAtEndOfSeek, forceAtEndOfPriming ) // reuse this alarm after prime - forceAtEndOfSeek = 0.0; // reset this value in case we want to prime again result = TRUE; } @@ -1889,6 +1887,7 @@ *************************************************************************/ + /*********************************************************************//** * @brief * The testSetSyringePumpDataPublishIntervalOverride function overrides the Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -redbe7477408438824f39a8e1ff96eff4a0115ff4 -r05104b2f8b6371b100c5c31bb55c4efde50890ac --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision edbe7477408438824f39a8e1ff96eff4a0115ff4) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 05104b2f8b6371b100c5c31bb55c4efde50890ac) @@ -999,7 +999,7 @@ } // Scale to seconds countdown /= ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ); - + data.isCompleted = FALSE; data.targetRinsebackVolumeMl = rinsebackTargetVolume_mL; rinsebackPublishTimerCtr = 0; // If we have completed rinseback, timeout is no longer in force - indicate by zeroing timeout. Also include any additionals to target. @@ -1016,7 +1016,10 @@ } data.timeout = timeout; data.countdown = countdown; - data.unused = 0.0; // TODO - remove when UI no longer looks for this field + if ( data.deliveredRinsebackVolumeMl >= rinsebackTargetVolume_mL ) + { + data.isCompleted = TRUE; + } broadcastData( MSG_ID_HD_RINSEBACK_PROGRESS, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( RINSEBACK_DATA_PAYLOAD_T ) ); } } Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r89e21ce50fba7e91573780b0f57b6378e3cad84a -r05104b2f8b6371b100c5c31bb55c4efde50890ac --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 89e21ce50fba7e91573780b0f57b6378e3cad84a) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 05104b2f8b6371b100c5c31bb55c4efde50890ac) @@ -28,7 +28,6 @@ #include "Fans.h" #include "FPGA.h" #include "ModeStandby.h" -#include "ModeTreatmentParams.h" #include "OperationModes.h" #include "RTC.h" #include "SampleWater.h" @@ -2311,7 +2310,7 @@ TEMPERATURE_SENSORS_DATA_T payload; memcpy( &payload, message->payload, sizeof( TEMPERATURE_SENSORS_DATA_T ) ); - setDialysateTemperatureReadings( payload.inletDialysate, payload.outletRedundant ); + setDialysateTemperatureReadings( payload.TDi, payload.TRo ); } // TODO - what to do if invalid payload length? // TODO - how to know if DG stops sending these? @@ -5137,6 +5136,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.u32 );