Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -r5e9d9388f584f461cbbc623c56512eb187eaad25 -r79ee09c165f80decd4d5953f036baa311b6afc76 --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 5e9d9388f584f461cbbc623c56512eb187eaad25) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 79ee09c165f80decd4d5953f036baa311b6afc76) @@ -21,6 +21,7 @@ #include "AlarmMgmt.h" #include "BloodLeak.h" +#include "DialInFlow.h" #include "FPGA.h" #include "NVDataMgmtHDRecords.h" #include "OperationModes.h" @@ -866,7 +867,7 @@ { case MODE_TREA: case MODE_SERV: - if ( FALSE == isDialysateLineInBypass() ) + if ( ( FALSE == isDialysateLineInBypass() ) && ( getTreatmentState() != TREATMENT_RECIRC_STATE ) && ( getDialysisState() != DIALYSIS_SALINE_BOLUS_STATE ) ) { if ( BLOOD_LEAK_DETECTED == getBloodLeakStatus() ) { @@ -930,7 +931,10 @@ bloodLeakStatus.data = getFPGABloodDetectProcessedStatus(); - if ( BLOOD_LEAK_NOT_DETECTED == getBloodLeakStatus() ) + // Check if the blood is not detected but at the same time the Dialin pump should be running to make sure we are in the + // blood recovery state of the treatment stop so the blood detection recovery is not done on the stagnant fluid + // NOTE: should we check of the measured flow is about 600 mL/min? + if ( ( BLOOD_LEAK_NOT_DETECTED == getBloodLeakStatus() ) && ( TRUE == isDialInPumpRunning() ) ) { if ( TRUE == didTimeout( bloodLeakRecoveryStartTimeMS, BLOOD_LEAK_DETECT_RECOVERY_MIN_TIME_MS ) ) { @@ -1764,7 +1768,6 @@ status &= ( VALVE_POSITION_C_CLOSE == getValvePosition( VDI ) ? TRUE : FALSE ); status &= ( VALVE_POSITION_C_CLOSE == getValvePosition( VDO ) ? TRUE : FALSE ); - status &= ( getMeasuredDialInPumpSpeed() <= NEARLY_ZERO ? TRUE : FALSE ); return status; } Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r5e9d9388f584f461cbbc623c56512eb187eaad25 -r79ee09c165f80decd4d5953f036baa311b6afc76 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 5e9d9388f584f461cbbc623c56512eb187eaad25) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 79ee09c165f80decd4d5953f036baa311b6afc76) @@ -1596,6 +1596,9 @@ if ( FALSE == isRequestFromTreatmentStop ) { + // The pressure window is widened to prevent pressure alarm in bypassing the dialyzer. + // The spike occurs due to bypassing VDi valve would result in all of the blood flow going through + // the dialyzer and pressure cannot go across the dialyzer. signalInitiatePressureStabilization( USE_NORMAL_STABILIZATION_PERIOD ); } Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -r9ee7c24686170b9d7f4cb867622eac159351a7d7 -r79ee09c165f80decd4d5953f036baa311b6afc76 --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 9ee7c24686170b9d7f4cb867622eac159351a7d7) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 79ee09c165f80decd4d5953f036baa311b6afc76) @@ -38,7 +38,7 @@ // ********** private definitions ********** -#define DEFAULT_RINSEBACK_VOLUME_ML 350.0F ///< Default rinseback volume (in mL). +#define DEFAULT_RINSEBACK_VOLUME_ML 300.0F ///< Default rinseback volume (in mL). #define MAX_TOTAL_ADDITIONAL_RINSEBACK_VOLUME_ML 300.0F ///< Maximum total additional rinseback volume allowed : all additionals (in mL). #define TARGET_ADDITIONAL_RINSEBACK_VOLUME_ML 50.0F ///< Target rinseback volume for an additional volume request (in mL). #define RINSEBACK_FLOW_RATE_ADJ_ML_MIN 25 ///< Adjustment amount (in mL/min) to apply when user requests increase/decrease in flow rate. Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r5e9d9388f584f461cbbc623c56512eb187eaad25 -r79ee09c165f80decd4d5953f036baa311b6afc76 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 5e9d9388f584f461cbbc623c56512eb187eaad25) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 79ee09c165f80decd4d5953f036baa311b6afc76) @@ -94,6 +94,11 @@ U32 enableChemicalDisinfect; ///< Enable/disable chemical disinfect. } HD_INSTITUTIONAL_LOCAL_RECORD_T; +typedef struct +{ + U08 topLevelSN[ MAX_TOP_LEVEL_SN_CHARS ]; +} LOCAL_TOP_SN_T; + // ********** private data ********** #ifndef CARTRIDGE_TEST_BUILD @@ -3335,10 +3340,6 @@ *************************************************************************/ void handleHDSerialNumberRequest( void ) { - typedef struct - { - U08 topLevelSN[ MAX_TOP_LEVEL_SN_CHARS ]; - } LOCAL_TOP_SN_T; MESSAGE_T msg; HD_SYSTEM_RECORD_T system; U08 i; @@ -3708,7 +3709,7 @@ memcpy( payloadPtr, instit, sizeof( HD_INSTITUTIONAL_LOCAL_RECORD_T ) ); // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_NOT_REQUIRED ); + serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); } /*********************************************************************//**