Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -r40f46e196349e3dd730048a354df8bbb2e40407d -r31e778e30a996a0c75429c9a1e9fb34e5d9e373d --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 40f46e196349e3dd730048a354df8bbb2e40407d) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 31e778e30a996a0c75429c9a1e9fb34e5d9e373d) @@ -548,18 +548,21 @@ { BLOOD_LEAK_STATES_T state = BLOOD_LEAK_SELF_TEST_STATE; +#ifndef IGNORE_BLOOD_LEAK_SELF_TEST if ( SELF_TEST_STATUS_IN_PROGRESS == bloodLeakSelfTestStatus ) { if ( FALSE == noFPGABloodLeakDetected() ) // Faked blood leak caused by independent MCU board { bloodLeakSelfTestStatus = SELF_TEST_STATUS_PASSED; clearFPGABloodLeakSelfTest(); } +#endif else if ( TRUE == didTimeout( bloodLeakSelfTestStartTime, BLOOD_LEAK_TIMEOUT_MS ) ) { bloodLeakSelfTestStatus = SELF_TEST_STATUS_FAILED; - +#ifndef IGNORE_BLOOD_LEAK_ALARM activateAlarmNoData( ALARM_ID_HD_BLOOD_LEAK_SELF_TEST_FAILURE ); +#endif } } else Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r40f46e196349e3dd730048a354df8bbb2e40407d -r31e778e30a996a0c75429c9a1e9fb34e5d9e373d --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 40f46e196349e3dd730048a354df8bbb2e40407d) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 31e778e30a996a0c75429c9a1e9fb34e5d9e373d) @@ -90,8 +90,9 @@ #define TEN_PCT_OVER_ALLOWANCE 1.1 ///< Allow 10 percent over target before alarming on over travel. #define FIVE_PCT_OVER_ALLOWANCE 1.05 ///< Allow 5 percent over target before alarming on over travel. -/// Expected position of empty in relation to home postion. -#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.84 ) +/// Expected position of empty in relation to home position. +#define SYRINGE_PUMP_EMPTY_POS ( SYRINGE_ENCODER_COUNTS_PER_ML * 10.84 ) ///< get syringe volume from home to empty (11 mL is placeholder) + /// Margin of error for empty position determination. #define SYRINGE_PUMP_EMPTY_POS_MARGIN ( SYRINGE_ENCODER_COUNTS_PER_ML * 0.5 ) /// Minimum retract position. @@ -1165,6 +1166,9 @@ { SYRINGE_PUMP_STATE_T result = SYRINGE_PUMP_OFF_STATE; + isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_ENCODER_DIRECTION_ERROR, FALSE ); // reset direction alarm persistence when pump is off + isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_CONTROLLER_DIRECTION_ERROR, FALSE ); // reset direction alarm persistence when pump is off + #ifndef DISABLE_SYRINGE_PUMP_ALARMS // Check position is not changing while stopped if ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_SYRINGE_PUMP_NOT_STOPPED_ERROR, ( syringePumpLastPosition != getSyringePumpPosition() ) ) ) Index: firmware/App/HDCommon.h =================================================================== diff -u -r40f46e196349e3dd730048a354df8bbb2e40407d -r31e778e30a996a0c75429c9a1e9fb34e5d9e373d --- firmware/App/HDCommon.h (.../HDCommon.h) (revision 40f46e196349e3dd730048a354df8bbb2e40407d) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 31e778e30a996a0c75429c9a1e9fb34e5d9e373d) @@ -10,8 +10,8 @@ * @author (last) Dara Navaei * @date (last) 04-Jan-2022 * -* @author (original) Sean -* @date (original) 27-Feb-2020 +* @author (original) Sean +* @date (original) 27-Feb-2020 * ***************************************************************************/ @@ -25,7 +25,7 @@ #define HD_VERSION_MAJOR 0 #define HD_VERSION_MINOR 6 #define HD_VERSION_MICRO 0 -#define HD_VERSION_BUILD 31 +#define HD_VERSION_BUILD 186 // ********** development build switches ********** @@ -65,7 +65,7 @@ // #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks #define DISABLE_DIALYSATE_TEMP_CHECK 1 // Disable dialysate temperature check // #define DISABLE_VALVE_ALARMS 1 // Do not error on HD valve position - #define SKIP_CAL_CHECK 1 + #define SKIP_CAL_CHECK 1 // // #define RUN_PUMPS_OPEN_LOOP 1 // BP and DPi pumps will be run open loop (no flow sensor feedback) // #define READ_FPGA_ASYNC_DATA 1 // Test build reads non-priority register page every other time // #define EMC_TEST_BUILD 1 // EMC test build - HD/DG run separately but connected, HD pumps toggle on/off w/ stop button @@ -79,7 +79,7 @@ #define DISABLE_VOLTAGE_MONITOR 1 // Disable voltage monitoring/alarms #define ALLOW_1_MIN_TREATMENT_DURATION 1 // Allow user to change treatment duration to as low as 1 minute #define DISABLE_SYRINGE_PUMP_ALARMS 1 // Disable some syringe pump alarms that are triggering intermittently -// #define NO_PUMP_FLOW_LIMITS 1 // Allow any commanded flow rate for peristaltic pumps + #define NO_PUMP_FLOW_LIMITS 1 // Allow any commanded flow rate for peristaltic pumps #define DISABLE_BUBBLE_ALARMS 1 // Disable bubble alarms #define DISABLE_UI_POST_TEST 1 // Disable the UI POST // #define DISABLE_UI_COMM_TO_ALARM 1 // Disable UI comm timeouts @@ -91,12 +91,12 @@ #define DISABLE_SERVICE_RECORD 1 // Skip Pre-Treatment and get to treatment as soon as possible - #define SKIP_UI_INTERACTION 1 // Skip UI interaction. // TODO New config implemented - #define SKIP_SAMPLE_WATER 1 // Skip pre-treatment sample water // TODO New config implemented - #define SKIP_CONSUMABLE_TESTS 1 // Skip pre-treatment consumable Self-tests // TODO New config implemented - #define SKIP_DRY_SELF_TESTS 1 // Skip pre-treatment dry self-tests - #define SKIP_PRIMING 1 // Skip Pre-treatment Prime - #define SKIP_WET_SELF_TESTS 1 // Skip Pre-treatment prime wet self-tests +// #define SKIP_UI_INTERACTION 1 // Skip UI interaction. // TODO New config implemented +// #define SKIP_SAMPLE_WATER 1 // Skip pre-treatment sample water // TODO New config implemented +// #define SKIP_CONSUMABLE_TESTS 1 // Skip pre-treatment consumable Self-tests // TODO New config implemented +// #define SKIP_DRY_SELF_TESTS 1 // Skip pre-treatment dry self-tests +// #define SKIP_PRIMING 1 // Skip Pre-treatment Prime +// #define SKIP_WET_SELF_TESTS 1 // Skip Pre-treatment prime wet self-tests #include #include Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r40f46e196349e3dd730048a354df8bbb2e40407d -r31e778e30a996a0c75429c9a1e9fb34e5d9e373d --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 40f46e196349e3dd730048a354df8bbb2e40407d) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 31e778e30a996a0c75429c9a1e9fb34e5d9e373d) @@ -58,7 +58,7 @@ #define WET_SELF_TEST_FIRST_DISPLACEMENT_TARGET_VOLUME_ML 100.0 ///< Target of first displacement volume in ml. #define WET_SELF_TEST_SECOND_DISPLACEMENT_TARGET_VOLUME_ML 600.0 ///< Target of second displacement volume in ml. #define WET_SELF_TEST_INTEGRATED_VOLUME_TOLERANCE 5.0 ///< Tolerance on integrated volume in percentage. -#define WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G 12.0 ///< Tolerance in the load cell readings of the displacement in grams (2%). +#define WET_SELF_TEST_DISPLACEMENT_TOLERANCE_G 25.0 ///< Tolerance in the load cell readings of the displacement in grams (2%). #define WET_SELF_TEST_DISPLACEMENT_TIME_MS ( SEC_PER_MIN * MS_PER_SECOND ) ///< Time to displace dialysate in wet self-test in ms. #define RESERVOIR_SETTLE_TIME_MS ( 4 * MS_PER_SECOND ) ///< Time allotted for reservoir to settle in ms. @@ -324,7 +324,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 ); } } } @@ -836,10 +836,10 @@ { state = DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE; } - else - { - activateAlarmNoData( ALARM_ID_INSTALL_NEW_CARTRIDGE ); - } +// else +// { +// activateAlarmNoData( ALARM_ID_INSTALL_NEW_CARTRIDGE ); +// } if ( TRUE == doesAlarmStatusIndicateStop() ) { @@ -1181,11 +1181,13 @@ if ( ( BUBBLE_NOT_DETECTED == ADABubbleStatus ) && ( BUBBLE_NOT_DETECTED == ADVBubbleStatus ) ) #endif { + +#ifndef IGNORE_BLOOD_LEAK_SELF_TEST if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_BLOOD_LEAK_SELF_TEST ) != SW_CONFIG_ENABLE_VALUE ) { zeroBloodLeak(); } - +#endif state = WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_STATE; *result = SELF_TEST_STATUS_PASSED; } @@ -1211,8 +1213,10 @@ { WET_SELF_TESTS_STATE_T state = WET_SELF_TESTS_BLOOD_LEAK_DETECTOR_STATE; +#ifndef IGNORE_BLOOD_LEAK_SELF_TEST if ( ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_BLOOD_LEAK_SELF_TEST ) != SW_CONFIG_ENABLE_VALUE ) || ( SELF_TEST_STATUS_PASSED == getBloodLeakSelfTestStatus() ) ) +#endif { settleStartTime = getMSTimerCount(); state = WET_SELF_TESTS_FIRST_DISPLACEMENT_SETUP_STATE; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r40f46e196349e3dd730048a354df8bbb2e40407d -r31e778e30a996a0c75429c9a1e9fb34e5d9e373d --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 40f46e196349e3dd730048a354df8bbb2e40407d) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 31e778e30a996a0c75429c9a1e9fb34e5d9e373d) @@ -2406,7 +2406,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? @@ -5230,6 +5230,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 );