Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -551,18 +551,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(); } + 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 @@ -573,6 +576,7 @@ state = BLOOD_LEAK_NORMAL_STATE; } } +#endif return state; } Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -329,26 +329,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/DialOutFlow.c =================================================================== diff -u -rd7e01dce5b2ebb1ea02832a9ced81550a919b67b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision d7e01dce5b2ebb1ea02832a9ced81550a919b67b) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -933,7 +933,9 @@ if ( lastDialOutPumpDirectionCount != dirErrorCnt ) { lastDialOutPumpDirectionCount = dirErrorCnt; +#ifndef DISABLE_PUMP_DIRECTION_CHECKS SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_DIALYSATE_OUTLET_PUMP ) +#endif } dopMCDir = ( getMeasuredDialOutPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE ); Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -67,6 +67,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). Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -90,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. @@ -1896,6 +1897,7 @@ *************************************************************************/ + /*********************************************************************//** * @brief * The testSetSyringePumpDataPublishIntervalOverride function overrides the Index: firmware/App/HDCommon.h =================================================================== diff -u -rc609f1a12b2c029c5b5a9dc6a5fd3ddf56df7e45 -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision c609f1a12b2c029c5b5a9dc6a5fd3ddf56df7e45) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -10,8 +10,8 @@ * @author (last) Dara Navaei * @date (last) 22-Feb-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 41 +#define HD_VERSION_BUILD 257 // ********** development build switches ********** @@ -38,16 +38,17 @@ // #define RUN_WITHOUT_DG 1 // Run HD w/o DG // #define SIMULATE_UI 1 // Build w/o requirement that UI be there // #define TASK_TIMING_OUTPUT_ENABLED 1 // Re-purposes alarm lamp pins for task timing - #define DISABLE_BATT_COMM 1 // Disable battery communication + + #define DISABLE_BATT_COMM 1 // Disable battery communication // #define READ_FPGA_ASYNC_DATA 1 // Test build reads non-priority register page every other time // #define DISABLE_FPGA_COUNTER_CHECKS 1 // Disable alarms associated with FPGA read/error counters // #define EMC_TEST_BUILD 1 // EMC test build - HD/DG run separately but connected, HD pumps toggle on/off w/ stop button #define DISABLE_WD_AND_SFTY_POST_TESTS 1 // Disable watchdog and safety shutdown POST tests #define DISABLE_UI_POST_TEST 1 // Disable the UI POST -// #define PBA_ESTIMATION 1 // Estimate arterial pressure rather than look at PBA sensor // Part of DVT build switch + #define PBA_ESTIMATION 1 // Estimate arterial pressure rather than look at PBA sensor // Part of DVT build switch // TODO stays as a build switch until the calibration structure is updated with the build - #define SKIP_CAL_CHECK 1 // Implement software configuration + #define SKIP_CAL_CHECK 1 // Implement software configuration once the build switch is done #include #include Index: firmware/App/Modes/ConsumableSelfTest.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Modes/ConsumableSelfTest.c (.../ConsumableSelfTest.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -87,6 +87,7 @@ if ( TRUE == consumableInstallConfirmed ) { consumableInstallConfirmed = FALSE; + #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_CONSUMABLES_TESTS ) != SW_CONFIG_ENABLE_VALUE ) { Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -41,7 +41,7 @@ #define PUMP_RUN_SELF_TEST_TIME_MS ( 15 * MS_PER_SECOND ) ///< Self-test time to run pumps in ms. #define PUMP_SELF_TEST_FLOW_RATE_ML_MIN 100 ///< Self-test pump flow rate in mL/min. -#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 3 * MS_PER_SECOND ) ///< Delay 3 seconds then check for syringe pump prime occlusion. +#define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 3 seconds then check for syringe pump prime occlusion. #define BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 5 * MS_PER_SECOND ) ///< Pressure self-test time to run blood pump in ms. #define NORMALIZED_PRESSURE_SELF_TEST_TIME ( 4 * MS_PER_SECOND ) ///< Time to wait for pressure to normalize in ms. @@ -325,7 +325,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 ); } } } @@ -883,10 +883,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() ) { @@ -1031,8 +1031,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 { @@ -1111,6 +1111,7 @@ if ( TRUE == selfTestsResumeRequested ) { selfTestsResumeRequested = FALSE; + #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRY_SELF_TESTS ) != SW_CONFIG_ENABLE_VALUE ) { Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -52,8 +52,7 @@ #define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< CRC error window #define MSG_NOT_ACKED_TIMEOUT_MS 150 ///< Maximum time for a Denali message that requires ACK to be ACK'd - -#define MSG_NOT_ACKED_TIMEOUT_MS_INIT 5000 ///< Maximum time for a Denali message that requires ACK to be ACK'd on the INIT state for the first (UI version request) message of the POST +#define MSG_NOT_ACKED_TIMEOUT_MS_INIT 5000 ///< Maximum time for a Denali message that requires ACK to be ACK'd on the INIT state for the first (UI version request) message of the POST #define MSG_NOT_ACKED_MAX_RETRIES 3 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm #define PENDING_ACK_LIST_SIZE 25 ///< Maximum number of Denali messages that can be pending ACK at any given time @@ -1618,10 +1617,6 @@ handleTestSyringePumpHeprinBolusTargetRateOverrideRequest( message ); break; - case MSG_ID_HD_REQ_CURRENT_TREATMENT_PARAMETERS: - handleTestCurrentTreamtmentParametersRequest( message ); - break; - case MSG_ID_HD_FANS_DUTY_CYCLE_OVERRIDE: handleSetFansDutyCycleOverrideRequest( message ); break; @@ -1634,6 +1629,10 @@ handleSetHDSoftwareConfigRecord( message ); break; + case MSG_ID_HD_REQ_CURRENT_TREATMENT_PARAMETERS: + handleTestCurrentTreamtmentParametersRequest( message ); + break; + default: // Unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -1824,7 +1824,7 @@ payload.alarmsFlags |= ( almStatus.alarmsToEscalate ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_ALARMS_TO_ESCALATE) : 0 ); payload.alarmsFlags |= ( almStatus.alarmsSilenced ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_ALARMS_SILENCED) : 0 ); payload.alarmsFlags |= ( almStatus.lampOn ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_LAMP_ON) : 0 ); - payload.alarmsFlags |= ( almStatus.noDialRecirc ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_DIALYSATE_RECIRC) : 0 ); + //payload.alarmsFlags |= ( almStatus.noDialRecirc ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_DIALYSATE_RECIRC) : 0 ); // DEBUG_DENALI payload.alarmsFlags |= ( almStatus.noMinimize ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_NO_MINIMIZE) : 0 ); payload.alarmsFlags |= ( almStatus.topAlarmConditionDetected ? BIT_BY_POS(ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION) : 0 ); @@ -2325,7 +2325,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? @@ -5151,6 +5151,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 ); Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -r27a68f930508638f2eb6265ebb381c8918cbc37b -rc5f3dfc2a87c35036f21f969f6e762ae779839f2 --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 27a68f930508638f2eb6265ebb381c8918cbc37b) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision c5f3dfc2a87c35036f21f969f6e762ae779839f2) @@ -176,7 +176,7 @@ { F32 v24 = getIntADCVoltageConverted( INT_ADC_24V_ACTUATORS ); F32 audioCurrent = getFPGABackupAlarmAudioCurrent(); - + // Verify 24V is down when w.d. expired if ( v24 > MAX_24V_LEVEL_ON_WATCHDOG_EXPIRED ) {