Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -rc4e1d97e73dd863ddffe895833d209e172b5ae4a -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision c4e1d97e73dd863ddffe895833d209e172b5ae4a) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -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 ) ); @@ -944,10 +944,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 ) ); @@ -1216,7 +1217,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 -rc4e1d97e73dd863ddffe895833d209e172b5ae4a -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision c4e1d97e73dd863ddffe895833d209e172b5ae4a) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -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 -r0253afcc2b02def4d57a4a21a20a9b3a6fe65f22 -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision 0253afcc2b02def4d57a4a21a20a9b3a6fe65f22) +++ firmware/App/Controllers/RinsePump.c (.../RinsePump.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -275,8 +275,13 @@ 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 ) ) { + // Current Beta 1.9 system uses on/off bit + setValveState( D88_79_VALV, VALVE_STATE_CLOSED ); + } + else + { F32 pwmPercent; // Set PWM to zero to stop the logical rinse pump @@ -285,11 +290,6 @@ pwmPercent = rinsePumpPwmPercentage.data; setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } - else - { - // Current Beta 1.9 system uses on/off bit - setValveState( D88_79_VALV, VALVE_STATE_CLOSED ); - } return state; } @@ -305,8 +305,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; rinsePumpPwmPercentage.data = RINSE_PUMP_DEFAULT_PWM_PERCENT; @@ -315,11 +320,6 @@ // Turn on logical rinse pump with given PWM value setRinsePumpPwm( D79_RINSE_PUMP, pwmPercent ); } - 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 -r0253afcc2b02def4d57a4a21a20a9b3a6fe65f22 -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/DDCommon.h (.../DDCommon.h) (revision 0253afcc2b02def4d57a4a21a20a9b3a6fe65f22) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -25,7 +25,7 @@ #define DD_VERSION_MAJOR 0 #define DD_VERSION_MINOR 0 #define DD_VERSION_MICRO 0 -#define DD_VERSION_BUILD 85 +#define DD_VERSION_BUILD 147 // ********** 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 -r94691a0258fe496cfcdc4aaeaa2a5efba4a843ba -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision 94691a0258fe496cfcdc4aaeaa2a5efba4a843ba) +++ firmware/App/Drivers/ConductivitySensors.c (.../ConductivitySensors.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -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/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r5514c6bf48facd532e58b0790d9f02aaa6776b28 -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 5514c6bf48facd532e58b0790d9f02aaa6776b28) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -203,7 +203,6 @@ { setBoostPumpTargetPressure( VERIFY_WATER_BOOST_PUMP_TGT_PSI ); } - //TODO change target flow to 750 + rinse pump rate setROPumpTargetFlowRateMLPM( VERIFY_WATER_RO_PUMP_TGT_FLOW_ML, TRUE ); verifyWaterTimer = getMSTimerCount(); break; Index: firmware/App/Monitors/Level.c =================================================================== diff -u -rc4e1d97e73dd863ddffe895833d209e172b5ae4a -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Monitors/Level.c (.../Level.c) (revision c4e1d97e73dd863ddffe895833d209e172b5ae4a) +++ firmware/App/Monitors/Level.c (.../Level.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -135,35 +135,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; @@ -447,44 +447,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 @@ -527,6 +525,7 @@ // upperlevel == TRUE while lowerlevel == FALSE - illegal status = LVL_STATE_ILLEGAL; } + return status; } Index: firmware/App/Monitors/Temperature.c =================================================================== diff -u -rc4e1d97e73dd863ddffe895833d209e172b5ae4a -rbc22e4fbb56800101e22ac1752c2f1b67541ba02 --- firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision c4e1d97e73dd863ddffe895833d209e172b5ae4a) +++ firmware/App/Monitors/Temperature.c (.../Temperature.c) (revision bc22e4fbb56800101e22ac1752c2f1b67541ba02) @@ -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; @@ -482,30 +482,45 @@ 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; + //data.d28AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D28 ].dialTempAvgC; + if ( getTestConfigStatus( TEST_CONFIG_DD_FP_ENABLE_BETA_1_9_HW ) == TRUE ) + { + data.d28AvgTemp = getTeensyConductivityTemperatureValue( D27_COND ); + } + else + { + data.d28AvgTemp = getFilteredConductivitySensorTemperature( D27_COND ); + } + data.d30AvgTemp = dialTempMovingAvgData[ DIAL_TEMP_D30 ].dialTempAvgC; data.d78AvgTemp = getFilteredTemperatureValue( D78_TEMP ); + +#ifdef __USE_D1_TEMP_ + data.d9PresTemp = getFilteredTemperatureValue( D1_TEMP ); +#else data.d9PresTemp = getFilteredPressureSensorTemperature( D9_PRES ); +#endif + data.d66PresTemp = getFilteredPressureSensorTemperature( D66_PRES ); data.d51PresTemp = getFilteredPressureSensorTemperature( D51_PRES ); data.d18PresTemp = getFilteredPressureSensorTemperature( D18_PRES );