Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -108,7 +108,7 @@ static U32 bcSwitchingBasedOnClosedPeriodCounter; ///< Valve-close segments remaining before first-cycle relaxations clear after Qd timing apply. //TODO: remove later once level sensor working -static U32 bicarbChamberPeriodicFillCounter; +static U32 bicarbChamberPeriodicFillCounter; // ********** private function prototypes ********** @@ -632,7 +632,7 @@ freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); @@ -946,10 +946,11 @@ acidVolume = getF32OverrideValue( &acidDoseVolume ); bicarbVolume = getF32OverrideValue( &bicarbDoseVolume ); } + freshDialPressure = getFilteredPressure( D18_PRES ); spentDialPressure = getFilteredPressure( D51_PRES ); - if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) ) { //Set Trimmer heater Target temp every BC cycle to catch up fresh dialysate temp setHeaterTargetTemperature( D45_HEAT, getFilteredTemperatureValue( D4_TEMP ) ); @@ -1219,7 +1220,7 @@ // Check if a request made was to activate the balancing chamber switching. if ( TRUE == isBalChamberSwitchingOnRequested ) { - //Clear the request flag to indicate that the request was processed. + //Clear request was processed. isBalChamberSwitchingOnRequested = FALSE; // Set flag to indicate that balancing chamber switching is active Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -41,7 +41,7 @@ #define CONCENTRATE_PUMP_CLEANING_SPD_OUT_OF_RANGE_TOL_PCT 0.05F ///< Concentrate pump cleaning mode speed out of range tolerance when on in percentage. #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM 0.5F ///< Concentrate pump speed out of range tolerance when slow in mL/min. #define CONCENTRATE_PUMP_LOW_SPEED_THRESHOLD_MLPM 5.0F ///< Concentrate pump low speed threshold in mL/min. -#define CONCENTRATE_PUMP_ZERO_FLOW_RATE 0xFFFFFFFF ///< Pulse width value when zero flow rate or pump is off +#define CONCENTRATE_PUMP_ZERO_FLOW_RATE 0xFFFFFFFF ///< Pulse width value when zero flow rate or pump is off. #define CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER 0.4F ///< Volume output every revolution (mL). #define CONCENTRATE_PUMP_VOLUME_PER_REV 0.1F ///< Volume output every revolution (mL). Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -rb6411a65e0c78fe8b296c047a1d6940c55fa64f5 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision b6411a65e0c78fe8b296c047a1d6940c55fa64f5) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -48,7 +48,6 @@ #define DRY_BICART_PERSISTENCE_DURATION_MS 200 ///< Fill persistence duration to overcome the pressure overshoot/ drop for beta 1.9 and above. // Dry Bicart Fill - #define DRY_BICART_FILL_COMPLETE_TIME_MS ( 1 * MS_PER_SECOND ) ///< Wait time to reset the request flag after fill complete #define DRY_BICART_WCID2_FILL_COMPLETE_PRESSURE_PSI ( 10.0F + WCDI2_PRESSURE_OFFSET_PSI ) ///< Maximum pressure reached to indicate the dry bicart fill being completed for WCID2 #define DRY_BICART_WCID1_FILL_COMPLETE_PRESSURE_PSI ( 10.0F + WCID1_PRESSURE_OFFSET_PSI ) ///< Maximum pressure reached to indicate the dry bicart fill being completed for WCID1 @@ -85,6 +84,10 @@ #define DRY_BICART_DRAIN_COND_ZERO_THRESH 0.05F ///< Zero conductivity threshold #define DRY_BICART_DRAIN_COND_STABLE_SAMPLES 10U ///< De-bounce samples (10*50ms=500ms) +#define STD_MIX_BC_VOLUME 30.0F ///< Standard balancing chamber volume +#define TARGET_ADJ_BICARB_SETTING 137.0F ///< User defined Bicarb setting +#define TARGET_ADJ_NA_SETTINGS 32.0F ///< User defined Na setting + /// Payload record structure for dry bicart fill request typedef struct { Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -r3b64586791accd0b9e8d8978b40e2509bb86dfbe -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 3b64586791accd0b9e8d8978b40e2509bb86dfbe) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -52,7 +52,7 @@ #define MAX_CONDUCTIVITY_SENSOR_FAILURES 2 ///< Number of failures before alarming in timed window count. #define MAX_CONDUCTIVITY_SENSOR_FAILURE_WINDOW_MS ( 60 * MS_PER_SECOND ) ///< Set time for timed window count. -#define MAX_ALLOWED_UNCHANGED_CONDUCTIVITY_READS ( 500 / TASK_PRIORITY_INTERVAL ) ///< New reading every 333ms, expect to get valid new reading in 500ms. +#define MAX_ALLOWED_UNCHANGED_CONDUCTIVITY_READS ( 800 / TASK_PRIORITY_INTERVAL ) ///< New reading every 333ms, expect to get valid new reading in 500ms. #define COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Conductivity sensors FPGA error timeout in milliseconds. #define COND_SENSORS_READ_ERR_MAX_CNT 255 ///< Conductivity sensors read and error count max value. @@ -124,7 +124,6 @@ *************************************************************************/ void initConductivitySensors( void ) { - /// TODO: Revert back to init state. currentConductivityState = CONDUCTIVITY_INIT_STATE; CONDUCTIVITY_SENSORS_T sensor; @@ -195,6 +194,7 @@ initFPGAPersistentAlarm( FPGA_PERS_ERROR_D74_COND_SENSOR, ALARM_ID_DD_D74_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_P9_COND_SENSOR, ALARM_ID_FP_P9_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); initFPGAPersistentAlarm( FPGA_PERS_ERROR_P18_COND_SENSOR, ALARM_ID_FP_P18_COND_SENSOR_FPGA_FAULT, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS, COND_SENSORS_FPGA_ERROR_TIMEOUT_MS ); + } /*********************************************************************//** @@ -978,6 +978,7 @@ alpha = conductivitySensorCoefficients[ sensorNum ].alpha_high; k = conductivitySensorCoefficients[ sensorNum ].K_high; } + calculateResistance( sensorNum, isFPSensor ); calculateTemperature( sensorNum ); @@ -1293,4 +1294,5 @@ return result; } + /**@}*/ Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -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/Tasks/TaskGeneral.c =================================================================== diff -u -r145fd716a856f864f39fb0f9884865f6e45b9256 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 145fd716a856f864f39fb0f9884865f6e45b9256) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -30,6 +30,7 @@ #include "PermeateTank.h" #include "RinsePump.h" #include "ROPump.h" +#include "SubstitutionPump.h" #include "SystemCommDD.h" #include "TaskGeneral.h" #include "WatchdogMgmt.h" @@ -104,6 +105,9 @@ execDryBicart(); } + // Control Substitution pump + execSubstitutionPumpController(); + // Control RO pump execROPumpController(); Index: firmware/source/sys_main.c =================================================================== diff -u -rb6411a65e0c78fe8b296c047a1d6940c55fa64f5 -r99e330b5b872f68fdf2d842bd0597e54044d9ba9 --- firmware/source/sys_main.c (.../sys_main.c) (revision b6411a65e0c78fe8b296c047a1d6940c55fa64f5) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 99e330b5b872f68fdf2d842bd0597e54044d9ba9) @@ -99,6 +99,7 @@ #include "StateFlushFilterDefeatured.h" #include "StateFlushPermeate.h" #include "StateInletPressureCheck.h" +#include "SubstitutionPump.h" #include "SystemCommDD.h" #include "TaskBG.h" #include "TDInterface.h" @@ -209,6 +210,7 @@ initUltrafiltration(); initRinsePump(); initDryBiCart(); + initSubstitutionPump(); initMixingControl(); initIntegrity();