Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rbfd1ad206360b585a01b75ce2310bfba3ffd9e1f -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision bfd1ad206360b585a01b75ce2310bfba3ffd9e1f) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -78,6 +78,7 @@ #define HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL 0.2F ///< Heaters max voltage out of range tolerance. #define D5_HEATER_DEADBAND_CONTROL 0.1F ///< Heater dead band range for control. +//#define D5_HEAT_CONTROL_INTERVAL_MS 30000 /// Primary heater control interval in milli seconds #define D5_HEAT_CONTROL_INTERVAL_MS 3000 /// Primary heater control interval in milli seconds #define D5_HEAT_CONTROL_INTERVAL_COUNT ( D5_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. #define D45_HEAT_CONTROL_INTERVAL_MS ( 1 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds @@ -472,17 +473,17 @@ // finds the delta temperature to be added with the target temperature // to maintain the target temperature at dialyzer. // Lets calculate the B1,B2 and B3 heat dissipation factors - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { + heatDissipation_b3 = calculateHeatDissipationB3(); + heatDissipation_b1b2 = calculateHeatDissipationB1andB2(); + } + else + { // based on Beta2.0 heat loss model heatDissipation_b3 = calculateBeta2HeatDissipationB3(); heatDissipation_b1b2 = calculateBeta2HeatDissipationB1andB2(); } - else - { - heatDissipation_b3 = calculateHeatDissipationB3(); - heatDissipation_b1b2 = calculateHeatDissipationB1andB2(); - } // Reverse calculation of target temp at D28 to get the target dialyzer temperature targetTempAtD28 = calculateInitialTemp( targetTemp, heatDissipation_b3 ); @@ -512,12 +513,10 @@ if ( ++primaryTargetTempAdjCounter >= d5OuterLoopControlInterval ) { #ifdef __USE_D1_TEMP_ - // Use new RTD sensor placed closed to dialyzer, connected to D1 port measuredTempAtDialyzer = getFilteredTemperatureValue( D1_TEMP ); - #else - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) == TRUE ) { measuredTempAtDialyzer = getTeensyConductivityTemperatureValue( D27_COND ); } Index: firmware/App/Controllers/Ultrafiltration.c =================================================================== diff -u -rc90f3d61bde2a2b47d1048635be4dadf282e2195 -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision c90f3d61bde2a2b47d1048635be4dadf282e2195) +++ firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -244,14 +244,14 @@ { if ( ( ++currentUFCompCounter >= UF_COMP_INTERVAL ) || ( TRUE == isUFRateUpdated ) ) { - F32 freshDensity = 0.0F; - F32 spentDensity = 0.0F; - F32 compFreshFlowrate = 0.0F; - F32 compSpentFlowrate = 0.0F; - F32 balancingError = 0.0F; + F32 freshDensity; + F32 spentDensity; + F32 compFreshFlowrate; + F32 compSpentFlowrate; + F32 balancingError; // Fresh side dialysate density - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { freshDensity = ( COMP_SLOPE * getFilteredTemperatureValue( D4_TEMP ) ) + COMP_INTERCEPT; } Index: firmware/App/DDCommon.h =================================================================== diff -u -rc90f3d61bde2a2b47d1048635be4dadf282e2195 -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/DDCommon.h (.../DDCommon.h) (revision c90f3d61bde2a2b47d1048635be4dadf282e2195) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -25,7 +25,7 @@ #define DD_VERSION_MAJOR 0 #define DD_VERSION_MINOR 0 #define DD_VERSION_MICRO 0 -#define DD_VERSION_BUILD 81 +#define DD_VERSION_BUILD 143 // ********** development build switches ********** @@ -39,24 +39,34 @@ //Uncomment below if barometric pressure sensor reading available //#define __BARO_PRES_SENSOR__ 1 -//Uncomment below if required hardware available ( baro and cond sensor) for testing -//#define ENABLE_ALARM_1 +//Uncomment below if TD is integrated with DD +#define ENABLE_ALARM_1 //Uncomment below once characterization/study completed //#define ENABLE_ALARM_2 //Uncomment below for bicarb chamber filling //#define __BICARB_CHAMBER_FILL__ 1 +//UnComment below for DryBicarb testing +//#define __DRY_BICARB__ 1 + //Uncomment below to disable heaters debug message #define __HEATERS_DEBUG__ 1 //Uncomment below if D1 placement is used for Temp control at dialyzer -#define __USE_D1_TEMP_ 1 +//#define __USE_D1_TEMP_ 1 + // comment below to disable bicarb multi level sensor for time based chamber F fill #define CONDUCTIVE_LEVEL_SENSOR_ENABLED 1 +//Uncomment below to enable d30 heater alarm(as all units are not equipped with d30 temp sensor) +//#define ENABLE_ALARM_3 +//Define to enable the DD too-many-bad-message-CRCs alarm. +//#define __BAD_MSG_CRC_ALARM_ENABLED__ 1 + + #include #include #endif Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rc90f3d61bde2a2b47d1048635be4dadf282e2195 -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision c90f3d61bde2a2b47d1048635be4dadf282e2195) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -61,11 +61,11 @@ #define ZERO_DIAL_FLOW_RATE 0.0F ///< Zero dialysate flow rate #define SPENT_CHAMBER_FILL_MAX_COUNT 10 ///< Total number of spent chamber fill allowed. #define BICARB_CHAMBER_FILL_TIMEOUT ( 1 * MS_PER_SECOND ) ///< Bicarb chamber fill timeout. - #define PUMP_SPEED_SLOPE_FACTOR_DIENER_2000 1.24F ///< D48 Diener 2000 pump speed slope (y = 1.24x + 30). #define PUMP_SPEED_INTERCEPT_FACTOR_DIENER_2000 30.0F ///< D48 Diener 2000 pump speed intercept. #define PUMP_SPEED_SLOPE_FACTOR_DIENER_1000 2.869F ///< D48 Diener 1000 pump speed slope (y = 2.869x + 25.956). #define PUMP_SPEED_INTERCEPT_FACTOR_DIENER_1000 25.956F ///< D48 Diener 1000 pump speed intercept. + #define BICARB_CHAMBER_FILL_TIMEOUT ( 1 * MS_PER_SECOND ) ///< Bicarb chamber fill timeout. //Testing @@ -270,7 +270,7 @@ startHeater( D5_HEAT ); //Turn on Trimmer heater - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } @@ -319,7 +319,7 @@ startHeater( D5_HEAT ); //Turn on Trimmer heater - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); } Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -rc90f3d61bde2a2b47d1048635be4dadf282e2195 -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision c90f3d61bde2a2b47d1048635be4dadf282e2195) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -349,13 +349,13 @@ { CONDUCTIVITY_SENSORS_T sensor = ( DIAL_TEMP_D28 == i ? D27_COND : D29_COND ); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) != TRUE ) { - temperatureC = getTeensyConductivityTemperatureValue( sensor ); + temperatureC = getConductivityTemperature( sensor ); } else { - temperatureC = getConductivityTemperature( sensor ); + temperatureC = getTeensyConductivityTemperatureValue( sensor ); } currentIndex = dialTempMovingAvgData[ i ].dialTempSamplesNextIndex; @@ -382,6 +382,7 @@ *************************************************************************/ void checkDialysateTemperatureSensors( void ) { +#ifdef ENABLE_ALARM_3 DD_OP_MODE_T op = getCurrentOperationMode(); if ( ( DD_MODE_GEND == op ) || ( DD_MODE_HEAT == op ) ) @@ -405,6 +406,10 @@ tempDriftEventCheck = FALSE; } } +#else + resetPersistentAlarmTimer( ALARM_ID_DD_DIALYSATE_TEMPERATURE_SENSORS_OUT_OF_RANGE ); + tempDriftEventCheck = FALSE; +#endif } /*********************************************************************//** @@ -477,28 +482,28 @@ data.d99Temp = getTemperatureValue( D99_TEMP ); data.boardTemp = getTemperatureValue( BRD_TEMP ); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) != TRUE ) { - data.d16CondTemp = getTeensyConductivityTemperatureValue( D17_COND ); - data.d28CondTemp = getTeensyConductivityTemperatureValue( D27_COND ); - data.d30CondTemp = getTeensyConductivityTemperatureValue( D29_COND ); - data.d44CondTemp = getTeensyConductivityTemperatureValue( D43_COND ); - data.d75CondTemp = getConductivityTemperature( D74_COND ); - } - else - { data.d16CondTemp = getConductivityTemperature( D17_COND ); data.d28CondTemp = getConductivityTemperature( D27_COND ); data.d30CondTemp = getConductivityTemperature( D29_COND ); data.d44CondTemp = getConductivityTemperature( D43_COND ); data.d75CondTemp = getConductivityTemperature( D74_COND ); } + else + { + data.d16CondTemp = getTeensyConductivityTemperatureValue( D17_COND ); + data.d28CondTemp = getTeensyConductivityTemperatureValue( D27_COND ); + data.d30CondTemp = getTeensyConductivityTemperatureValue( D29_COND ); + data.d44CondTemp = getTeensyConductivityTemperatureValue( D43_COND ); + data.d75CondTemp = getConductivityTemperature( D74_COND ); + } data.d4AvgTemp = getFilteredTemperatureValue( D4_TEMP ); data.d50AvgTemp = getFilteredTemperatureValue( D50_TEMP ); data.d99AvgTemp = getFilteredTemperatureValue( D99_TEMP ); //data.d28AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempAvgC; - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) == TRUE ) { data.d28AvgTemp = getTeensyConductivityTemperatureValue( D27_COND ); } Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -rabe1c4a42afb385a660381e48bd007331f60950c -r87ee9712a928c58e3fe8b456bce567df0c6a2038 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision abe1c4a42afb385a660381e48bd007331f60950c) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 87ee9712a928c58e3fe8b456bce567df0c6a2038) @@ -59,19 +59,20 @@ #define TD_BICARBONATE_MAX ( 40U ) ///< TD Max acid type index #define BICARBONATE_CONVERSION_FACTOR 0.07337F ///< Bicarbonate conversion factor mS/cm per mmol/L +#define MAX_ACID_CONC_TYPES 10 ///< Number of acid concentrate conversion factors // TODO move to institutional records once implemented /// Acid concentration conversion factors for each acid type -const F32 ACID_CONVERSION_FACTOR[ NUM_OF_ACID_TYPE - 1 ] = { 0.11192F, - 0.11313F, - 0.11435F, - 0.0F, - 0.0F, - 0.0F, - 0.0F, - 0.0F, - 0.0F, - 0.0F }; +const F32 ACID_CONVERSION_FACTOR[ MAX_ACID_CONC_TYPES ] = { 0.11192F, + 0.11313F, + 0.11435F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F, + 0.0F }; /// Enumeration of TD Treatment Overrides typedef enum TD_Treatment_Override