Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -107,7 +107,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 ********** @@ -631,7 +631,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 ) ); @@ -949,10 +949,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 ) ); @@ -1226,7 +1227,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 -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -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/RinsePump.c =================================================================== diff -u -r8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -275,15 +275,15 @@ rinsePumpTargetSpeedRPM = 0; - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { - // Set PWM count zero to stop the logical rinse pump - setRinsePumpPwmCount( D79_RINSE_PUMP, RINSE_PUMP_OFF_COUNT ); + // Current Beta 1.9 system uses on/off bit + setValveState( D88_79_VALV, VALVE_STATE_CLOSED ); } else { - // Current Beta 1.9 system uses on/off bit - setValveState( D88_79_VALV, VALVE_STATE_CLOSED ); + // Set PWM count zero to stop the logical rinse pump + setRinsePumpPwmCount( D79_RINSE_PUMP, RINSE_PUMP_OFF_COUNT ); } return state; @@ -300,8 +300,13 @@ { RINSE_PUMP_STATE_T state = RINSE_PUMP_STATE_ON; - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { + // Current Beat 1.9 system uses on/off bit + setValveState( D88_79_VALV, VALVE_STATE_OPEN ); + } + else + { F32 pwmPercent = getF32OverrideValue( &rinsePumpPwmPercentage ); // TODO should this conversion happen in setPWMCount function? U32 pwmInCount = (U32)( ( pwmPercent / RINSE_PUMP_MAX_PWM_PERCENT ) * RINSE_PUMP_PWM_IN_COUNT_MAX ); @@ -310,11 +315,6 @@ // Turn on logical rinse pump with given PWM value setRinsePumpPwmCount( D79_RINSE_PUMP, (U32)pwmInCount ); } - else - { - // Current Beat 1.9 system uses on/off bit - setValveState( D88_79_VALV, VALVE_STATE_OPEN ); - } return state; } Index: firmware/App/DDCommon.h =================================================================== diff -u -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/DDCommon.h (.../DDCommon.h) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -22,10 +22,10 @@ // ********** version ********** -#define DD_VERSION_MAJOR 0 -#define DD_VERSION_MINOR 0 -#define DD_VERSION_MICRO 0 -#define DD_VERSION_BUILD 81 +#define DD_VERSION_MAJOR 0 +#define DD_VERSION_MINOR 0 +#define DD_VERSION_MICRO 0 +#define DD_VERSION_BUILD 144 // ********** development build switches ********** @@ -48,9 +48,15 @@ //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 + //Uncomment below to disable revised heater model #define __REVISED_HEATER_MODEL__ 1 Index: firmware/App/Drivers/ConductivitySensors.c =================================================================== diff -u -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -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 ); + } /*********************************************************************//** @@ -356,7 +356,6 @@ // Check which counter, assign it, and assign read bool to TRUE per sensor for ( sensor = FIRST_DD_COND_SENSOR; sensor < NUM_OF_CONDUCTIVITY_SENSORS; sensor++ ) { - if ( FALSE == conductivitySensorStatus[ sensor ].haveAllCalSlotsBeenRead ) { @@ -915,6 +914,7 @@ alpha = conductivitySensorCoefficients[ sensorNum ].alpha_high; k = conductivitySensorCoefficients[ sensorNum ].K_high; } + calculateResistance( sensorNum, isFPSensor ); calculateTemperature( sensorNum ); @@ -1190,4 +1190,5 @@ return result; } + /**@}*/ Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -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 ) ); } @@ -1022,8 +1022,6 @@ // Get the target temperature from TD //targetHydChamberFluidTemp.data = getTDTargetDialysateTemperature(); calculateTargetDialysateTemp(); - //Reset flag - signaltoResetPrimaryHeaterAdjustedTargetTemp(); // Update the target temperature for heater control setHeaterTargetTemperature( D5_HEAT, getGenDialysateTargetTemperature() ); Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 -ra2ea8edd918761b403cbe2c00e1bfe2fc69be5ea --- firmware/App/Monitors/Level.c (.../Level.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision a2ea8edd918761b403cbe2c00e1bfe2fc69be5ea) @@ -134,35 +134,35 @@ break; case D63_LEVL: - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD63LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; + currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } else { - currentLevelStatus = ( processLevelCount( getFPGAD63LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD63LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } break; case D98_LEVL: - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD98LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; + currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } else { - currentLevelStatus = ( processLevelCount( getFPGAD98LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD98LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } break; case D46_LEVL: - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) ) { - currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD46LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; + currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); } else { - currentLevelStatus = ( processLevelCount( getFPGAD46LevelSensor() ) == LEVEL_SENSOR_LIQUID ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW ); + currentLevelStatus = ( LEVEL_SENSOR_LIQUID == getFPGAD46LevelSensor() ) ? LEVEL_STATE_HIGH : LEVEL_STATE_LOW; } break; @@ -446,44 +446,42 @@ { levelStatus = getFPGAD6LevelStatus(); - if ( ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE ) && - ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) == TRUE ) { // Beta 1.9 behavior currentLevelStatus = getLevelStateBeta19( levelStatus ); } - else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) == TRUE ) + else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) { - // Beta 2.0 behavior - currentLevelStatus = getLevelState( levelStatus ); + // Beta 1.0 behavior + currentLevelStatus = getLevelStateBeta10( levelStatus ); } else { - // Beta 1.0 behavior - currentLevelStatus = getLevelStateBeta10( levelStatus ); + // Beta 2.0 behavior + currentLevelStatus = getLevelState( levelStatus ); } } else if ( P25_LEVL == levelId ) { levelStatus = getFPGAP25FloaterState(); - if ( ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) != TRUE ) && - ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) != TRUE ) ) + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) == TRUE ) { // Beta 1.9 behavior currentLevelStatus = getLevelStateBeta19( levelStatus ); } - else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_2_0_HW ) == TRUE ) - { - // Beta 2.0 behavior - currentLevelStatus = getLevelState( levelStatus ); - } - else + else if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_0_HW ) == TRUE ) { // Beta 1.0 behavior currentLevelStatus = getLevelStateBeta10( levelStatus ); } + else + { + // Beta 2.0 behavior + currentLevelStatus = getLevelState( levelStatus ); + } } else @@ -526,6 +524,7 @@ // upperlevel == TRUE while lowerlevel == FALSE - illegal status = LVL_STATE_ILLEGAL; } + return status; }