Index: firmware/.launches/HD.launch
===================================================================
diff -u -rf5f00981805e265ce63058f650d784f06db4d188 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/.launches/HD.launch (.../HD.launch) (revision f5f00981805e265ce63058f650d784f06db4d188)
+++ firmware/.launches/HD.launch (.../HD.launch) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -10,6 +10,7 @@
+
@@ -26,15 +27,18 @@
+
+
+
Index: firmware/App/Controllers/BloodFlow.c
===================================================================
diff -u -re4cc37257141c5227186ac6d8ca3d6c87d009042 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision e4cc37257141c5227186ac6d8ca3d6c87d009042)
+++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -1126,7 +1126,9 @@
if ( lastBloodPumpDirectionCount != dirErrorCnt )
{
lastBloodPumpDirectionCount = dirErrorCnt;
+#ifndef DISABLE_PUMP_DIRECTION_CHECKS
SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_BLOOD_PUMP )
+#endif
}
bpMCDir = ( getMeasuredBloodPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE );
Index: firmware/App/Controllers/DialInFlow.c
===================================================================
diff -u -re4cc37257141c5227186ac6d8ca3d6c87d009042 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision e4cc37257141c5227186ac6d8ca3d6c87d009042)
+++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -1097,7 +1097,9 @@
if ( lastDialInPumpDirectionCount != dirErrorCnt )
{
lastDialInPumpDirectionCount = dirErrorCnt;
+#ifndef DISABLE_PUMP_DIRECTION_CHECKS
SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_PUMP_DIRECTION_STATUS_ERROR, (U32)HD_PUMP_DIALYSATE_INLET_PUMP )
+#endif
}
dipMCDir = ( getMeasuredDialInPumpMCSpeed() >= 0.0 ? MOTOR_DIR_FORWARD : MOTOR_DIR_REVERSE );
Index: firmware/App/Controllers/DialOutFlow.c
===================================================================
diff -u -re4cc37257141c5227186ac6d8ca3d6c87d009042 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision e4cc37257141c5227186ac6d8ca3d6c87d009042)
+++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -797,7 +797,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/Temperatures.c
===================================================================
diff -u -r184261dfbd96bafe85c32c70bda406957ad0c128 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision 184261dfbd96bafe85c32c70bda406957ad0c128)
+++ firmware/App/Controllers/Temperatures.c (.../Temperatures.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -403,7 +403,7 @@
sensorsData.pbaADCTempSensor = getTemperatureValue( TEMPSENSOR_PBA_ADC_SENSOR );
// Broadcast the temperatures data
- broadcastTemperaturesData( &sensorsData );
+ broadcastData( MSG_ID_HD_TEMPERATURES_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&sensorsData, sizeof( TEMPERATURES_DATA_T ) );
// Reset the counter
dataPublishCounter = 0;
Index: firmware/App/HDCommon.h
===================================================================
diff -u -r8f217e3f4f171dba78c9ac69a3470af442941a89 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/HDCommon.h (.../HDCommon.h) (revision 8f217e3f4f171dba78c9ac69a3470af442941a89)
+++ firmware/App/HDCommon.h (.../HDCommon.h) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -5,13 +5,13 @@
* THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN
* WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER.
*
-* @file HDCommon.h
+* @file HDCommon.h
*
-* @author (last) Sean Nash
-* @date (last) 14-Oct-2020
+* @author (last) Sean Nash
+* @date (last) 14-Oct-2020
*
-* @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 0
+#define HD_VERSION_BUILD 82
// ********** development build switches **********
@@ -54,7 +54,8 @@
#define DISABLE_SYRINGE_PUMP 1 // Disable syringe pump functionality
#define ALWAYS_ALLOW_SYRINGE_PUMP_CMDS 1 // Allow syringe pump commands at any time except when pump is busy
#define DISABLE_PRESSURE_CHECKS 1 // Do not error on HD pressure checks
-// #define DISABLE_UF_ALARMS 1 // Do not error on HD ultrafiltration checks
+ #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 RUN_PUMPS_OPEN_LOOP 1 // BP and DPi pumps will be run open loop (no flow sensor feedback)
@@ -68,7 +69,7 @@
#define DISABLE_OCCLUSION_SELF_TEST 1 // Skip occlusion sensor self-test.
// #define SKIP_CARTRIDGE_REMOVAL 1 // Skip cartridge removal check
// #define DISABLE_FPGA_COUNTER_CHECKS 1 // Disable alarms associated with FPGA read/error counters
-// #define DISABLE_VOLTAGE_MONITOR 1 // Disable voltage monitoring/alarms
+ #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
Index: firmware/App/Modes/ModePreTreat.c
===================================================================
diff -u -re4cc37257141c5227186ac6d8ca3d6c87d009042 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e4cc37257141c5227186ac6d8ca3d6c87d009042)
+++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -376,6 +376,10 @@
case ALARM_ACTION_END_TREATMENT:
if ( HD_PRE_TREATMENT_PRIME_STATE > currentPreTreatmentState )
{
+ if ( HD_PRE_TREATMENT_WATER_SAMPLE_STATE == currentPreTreatmentState )
+ {
+ cmdDGSampleWater( SAMPLE_WATER_CMD_END );
+ }
requestNewOperationMode( MODE_STAN );
}
else
Index: firmware/App/Modes/ModeStandby.c
===================================================================
diff -u -r2a60f0eba906f0641e22a5d7f5c7ba1750911dcd -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 2a60f0eba906f0641e22a5d7f5c7ba1750911dcd)
+++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -664,7 +664,7 @@
data.disinfectSubModeHDState = (U32)dgDisinfectState;
- broadcastDisinfectsData( &data );
+ broadcastData( MSG_ID_HD_DISINFECT_STANDBY_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( DISINFECTS_DATA_T ) );
dataPublishCounter = 0;
}
Index: firmware/App/Modes/ModeTreatment.c
===================================================================
diff -u -rc62b21415ad7b2a77be6d0b0adf06316d2ccb51b -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision c62b21415ad7b2a77be6d0b0adf06316d2ccb51b)
+++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -610,6 +610,11 @@
activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER );
}
+ if ( currentTreatmentState != TREATMENT_END_STATE )
+ {
+ checkDialysateTemperature();
+ }
+
// Treatment mode state machine
switch ( currentTreatmentState )
{
Index: firmware/App/Modes/OperationModes.c
===================================================================
diff -u -r50fc6ca962c381ac98c9f032115973a5fff2a761 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 50fc6ca962c381ac98c9f032115973a5fff2a761)
+++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -128,6 +128,7 @@
if ( currentMode != newMode )
{
// Handle transition to new mode
+ priorSubMode = 0;
lastMode = currentMode;
transitionToNewOperationMode( newMode );
currentMode = newMode;
@@ -176,14 +177,11 @@
} // End switch
// Send sub-mode change event when appropriate
- if ( lastMode != currentMode )
+ if ( priorSubMode != currentSubMode )
{
- priorSubMode = 0;
- }
- if ( ( priorSubMode != currentSubMode ) || ( lastMode != currentMode ) )
- {
SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_MODE_CHANGE, priorSubMode, currentSubMode )
}
+ priorSubMode = currentSubMode;
// Broadcast current operation mode on interval
broadcastOperationMode();
@@ -375,8 +373,12 @@
{
if ( ++broadcastModeIntervalCtr >= getU32OverrideValue( &opModePublishInterval ) )
{
+ OP_MODE_PAYLOAD_T data;
+
broadcastModeIntervalCtr = 0;
- broadcastHDOperationMode( (U32)currentMode, currentSubMode );
+ data.opMode = (U32)currentMode;
+ data.subMode = currentSubMode;
+ broadcastData( MSG_ID_HD_OP_MODE, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( OP_MODE_PAYLOAD_T ) );
}
}
Index: firmware/App/Modes/Prime.c
===================================================================
diff -u -r88e0f56fa5eb3af397fee7cebb49efdab54f8491 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/Prime.c (.../Prime.c) (revision 88e0f56fa5eb3af397fee7cebb49efdab54f8491)
+++ firmware/App/Modes/Prime.c (.../Prime.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -319,7 +319,7 @@
primeData.totalTime = MAX_PRIME_TIME;
primeData.remainingTime = MAX_PRIME_TIME - elapsedPrimeTimeInSecs;
- broadcastPrimeData( &primeData );
+ broadcastData( MSG_ID_HD_PRIMING_STATUS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&primeData, sizeof( PRIMING_DATA_PAYLOAD_T ) );
primeStatusBroadcastTimerCounter = 0;
}
}
Index: firmware/App/Modes/SelfTests.c
===================================================================
diff -u -re4cc37257141c5227186ac6d8ca3d6c87d009042 -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision e4cc37257141c5227186ac6d8ca3d6c87d009042)
+++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -601,6 +601,7 @@
signalBloodPumpHardStop();
signalDialInPumpHardStop();
signalDialOutPumpHardStop();
+ selfTestStartTime = getMSTimerCount();
// TODO: Use appropriate sensor driver
if ( STATE_CLOSED == getFPGADoorState() )
@@ -758,6 +759,9 @@
{
NO_CART_SELF_TESTS_STATE_T state = NO_CART_SELF_TESTS_STOPPED_STATE;
+ // Restart self-test start time
+ selfTestStartTime = getMSTimerCount();
+
if ( TRUE == selfTestsResumeRequested )
{
selfTestsResumeRequested = FALSE;
@@ -780,6 +784,9 @@
{
DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE;
+ // Restart self-test start time
+ selfTestStartTime = getMSTimerCount();
+
// TODO: Use appropriate sensor driver
if ( STATE_CLOSED == getFPGADoorState() )
{
@@ -1000,6 +1007,9 @@
{
DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_STOPPED_STATE;
+ // Restart self-test start time
+ selfTestStartTime = getMSTimerCount();
+
if ( TRUE == selfTestsResumeRequested )
{
selfTestsResumeRequested = FALSE;
Index: firmware/App/Services/SystemComm.c
===================================================================
diff -u -r0eb91611fd84b139f3a35c7be0743b46e4f1bc8b -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 0eb91611fd84b139f3a35c7be0743b46e4f1bc8b)
+++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -1779,6 +1779,14 @@
handleTestPostTreatmentModeSendIntervalOverrideRequest( message );
break;
+ case MSG_ID_HD_BLOCK_MESSAGE_TRANSMISSION:
+ handleTestBlockMessagesRequest( message );
+ break;
+
+ case MSG_ID_HD_SYRINGE_PUMP_FORCE_SENSOR_DAC_CALIBRATE:
+ handleTestSyringePumpForceSensorCalibrateRequest( message );
+ break;
+
default:
// Unrecognized message ID received - ignore
break;
Index: firmware/App/Services/SystemCommMessages.c
===================================================================
diff -u -rc62b21415ad7b2a77be6d0b0adf06316d2ccb51b -rb14efe97c6baf3cca79d9199fd0575768262eb9f
--- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c62b21415ad7b2a77be6d0b0adf06316d2ccb51b)
+++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision b14efe97c6baf3cca79d9199fd0575768262eb9f)
@@ -2254,7 +2254,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?
@@ -5223,6 +5223,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 );