Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -r63e96158c3d4bff91167b2a0656a63f78ede8b41 -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 63e96158c3d4bff91167b2a0656a63f78ede8b41) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -22,6 +22,7 @@ #include "DryBiCart.h" #include "FpgaDD.h" #include "Heaters.h" +#include "Level.h" #include "ModeGenDialysate.h" #include "ModeStandby.h" #include "Messaging.h" @@ -254,6 +255,8 @@ *************************************************************************/ U32 execBalancingChamberControl( void ) { + LVL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); + updateBalChamberSwitchingPeriod(); // Increment counter indicating fill is in progress. @@ -262,6 +265,20 @@ if ( ( getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRY_BICARB ) == TRUE ) && ( balChamberExecState > BAL_CHAMBER_STATE_IDLE ) ) { +#ifdef CONDUCTIVE_LEVEL_SENSOR_ENABLED + if ( LVL_STATE_LOW == bicarbChamberLevel ) + { + if ( getCurrentBalancingChamberExecState() > BAL_CHAMBER_STATE_IDLE ) + { + if ( FALSE == setBicarbChamberFillRequested() ) + { + // TODO + //drybicart state machines are combined and so this is not an issue in future + //set alarm ? + } + } + } +#else // time based chamber F fill // Increment counter for dry bicarb chamber fill bicarbChamberPeriodicFillCounter += 1; // Fill bicarb chamber once every 60secs. @@ -275,6 +292,7 @@ } bicarbChamberPeriodicFillCounter = 0; } +#endif } switch ( balChamberExecState ) Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -r7d303b8558436dc19ca5bc77f1f2f4f61e12d62d -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 7d303b8558436dc19ca5bc77f1f2f4f61e12d62d) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -66,7 +66,11 @@ #define DRY_BICART_FILL_VENT_COMPLETE_PRESSURE 1.5F ///< Pressure reached to indicate the dry bicart venting being completed. // Bicarb chamber fill/Supply -#define DRY_BICART_SUPPLY_VALVE_D80_OPEN_TIME_MS ( 3 * MS_PER_SECOND ) ///< Max time allowed for supply (opening D80 valve) during bicarb chamber (F) fill. +#ifdef CONDUCTIVE_LEVEL_SENSOR_ENABLED +#define DRY_BICART_SUPPLY_VALVE_D80_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Max time allowed for supply (opening D80 valve) during bicarb chamber (F) fill. +#else +#define DRY_BICART_SUPPLY_VALVE_D80_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< Max time allowed for supply (opening D80 valve) during bicarb chamber (F) fill. +#endif #define DRY_BICART_SUPPLY_VENT_TIME_MS ( 1 * MS_PER_SECOND ) ///< Wait time to vent dry bicart gas before actuating Bicarb chamber(F) venting. #define DRY_BICART_SUPPLY_VENT_MAX_TIME_MS ( 1.1 * MS_PER_SECOND ) ///< Max time to vent both dry bicart and Chamber F. @@ -461,11 +465,11 @@ void execDryBicart( void ) { //( TRUE == getBicarbChamberFillRequested() ) - //supply dryBicartStartRequest = DRY_BICART_SUPPLY ; + // supply dryBicartStartRequest = DRY_BICART_SUPPLY ; //( TRUE == getBicartFillRequested() ) - //fill dryBicartStartRequest = DRY_BICART_INITIAL_FILL; + // fill dryBicartStartRequest = DRY_BICART_INITIAL_FILL; //( TRUE == getBicartDrainRequested() ) - //drain dryBicartStartRequest = DRY_BICART_DRAIN; + // drain dryBicartStartRequest = DRY_BICART_DRAIN; //else idle dryBicartStartRequest = DRY_BICART_IDLE; updateDrybicartOperation(); @@ -1201,6 +1205,7 @@ state = DRY_BICART_FILL_WATER_START_STATE; } + // alrm } return state; @@ -1512,22 +1517,18 @@ static BICARB_CHAMBER_FILL_EXEC_STATE_T handleBicarbChamberCheckLevelState( void ) { BICARB_CHAMBER_FILL_EXEC_STATE_T state = BICARB_CHAMBER_CHECK_LEVEL_STATE; - LEVEL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); + LVL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); // TODO: Confirm D80 open on chamber low or end of balancing chamber switching? - // TODO: Enable the below code once level sensor is working - //if ( LEVEL_STATE_LOW == bicarbChamberLevel ) + // if ( getBalancingChamberFillinProgressStatus() == FALSE ) { - // if ( getBalancingChamberFillinProgressStatus() == FALSE ) - { - // Open the Bicarb chamber inlet valve - setValveState( D80_VALV, VALVE_STATE_OPEN ); + // Open the Bicarb chamber inlet valve + setValveState( D80_VALV, VALVE_STATE_OPEN ); - // Start a timer when bicarb supply started to chamber F - dryBiCarbSupplyStartTime = getMSTimerCount(); + // Start a timer when bicarb supply started to chamber F + dryBiCarbSupplyStartTime = getMSTimerCount(); - state = BICARB_CHAMBER_FILL_STATE; - } + state = BICARB_CHAMBER_FILL_STATE; } // TODO: alarm @@ -1546,10 +1547,10 @@ { BICARB_CHAMBER_FILL_EXEC_STATE_T state = BICARB_CHAMBER_FILL_STATE; F32 d66Pressure = getFilteredPressure( D66_PRES ); - LEVEL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); + LVL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); // Once level reached, close the valve - if ( LEVEL_STATE_HIGH == bicarbChamberLevel ) + if ( LVL_STATE_HIGH == bicarbChamberLevel ) { setValveState( D80_VALV, VALVE_STATE_CLOSED ); state = BICARB_CHAMBER_PRESSURE_CHECK_STATE; @@ -1580,11 +1581,11 @@ { BICARB_CHAMBER_FILL_EXEC_STATE_T state = BICARB_CHAMBER_PRESSURE_CHECK_STATE; F32 d66Pressure = getFilteredPressure( D66_PRES ); - LEVEL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); + LVL_STATE_T bicarbChamberLevel = getBicarbChamberLevelStatus(); // Once level reached, close the valve - if ( ( LEVEL_STATE_HIGH == bicarbChamberLevel ) || - ( TRUE == didTimeout( dryBiCarbSupplyStartTime, DRY_BICART_SUPPLY_VALVE_D80_OPEN_TIME_MS ) ) ) + if ( ( LVL_STATE_HIGH == bicarbChamberLevel ) || + ( TRUE == didTimeout( dryBiCarbSupplyStartTime, DRY_BICART_SUPPLY_VALVE_D80_TIMEOUT_MS ) ) ) { setValveState( D65_VALV, VALVE_STATE_CLOSED ); setValveState( D80_VALV, VALVE_STATE_CLOSED ); @@ -1632,7 +1633,6 @@ //if ( TRUE == didTimeout( dryBiCarbSupplyStartTime, 10 ) ) #if 0 while ( tmpD66Pressure >= getDryBicartLowerCartPressure() && tmpD66Pressure >= setpoint ) { - //setpoint = d66Pressure - 1.0; // Venting loop: stay open until target PSI is reached setValveState( D64_VALV, VALVE_STATE_CLOSED ); @@ -1641,7 +1641,7 @@ while ( TRUE != didTimeout( startTime, 12 ) ) { } - // close the vallve + // close the valve setValveState( D85_VALV, VALVE_STATE_CLOSED ); setValveState( D64_VALV, VALVE_STATE_OPEN ); startTime = getMSTimerCount(); @@ -1696,7 +1696,7 @@ if ( TRUE == didTimeout( dryBiCarbSypplyVentStartTime, DRY_BICART_SUPPLY_VENT_TIME_MS ) ) { setValveState( D85_VALV, VALVE_STATE_CLOSED ); - //setValveState( D64_VALV, VALVE_STATE_CLOSED); + setValveState( D64_VALV, VALVE_STATE_OPEN); bicarbChamberFillRequested.data = FALSE; // for this request override also cleared Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r520b5b97e2a1a6d7af037e1144f1ffeb39153e3e -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 520b5b97e2a1a6d7af037e1144f1ffeb39153e3e) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -723,12 +723,12 @@ if ( D5_HEAT == heater ) { alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D6_LEVL ) != 0 )? FALSE : TRUE ); + isLevelLow = ( ( getFloaterStatus( D6_LEVL ) != LVL_STATE_EMPTY ) ? FALSE : TRUE ); } else { alarm = ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON; - isLevelLow = ( ( getLevelStatus( D46_LEVL ) != 0 )? FALSE : TRUE ); + isLevelLow = ( ( getLevelStatus( D46_LEVL ) != LEVEL_STATE_LOW ) ? FALSE : TRUE ); } checkPersistentAlarm( alarm, isLevelLow, 0.0F, 0.0F ); Index: firmware/App/DDCommon.h =================================================================== diff -u -r6e8f7ae0f311f6fcf4b41c791cc51340467e074a -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/DDCommon.h (.../DDCommon.h) (revision 6e8f7ae0f311f6fcf4b41c791cc51340467e074a) +++ firmware/App/DDCommon.h (.../DDCommon.h) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -26,6 +26,7 @@ #define DD_VERSION_MINOR 0 #define DD_VERSION_MICRO 0 #define DD_VERSION_BUILD 125 +#define DD_VERSION_BUILD 77 // ********** development build switches ********** @@ -56,6 +57,8 @@ //Uncomment below to disable revised heater model #define __REVISED_HEATER_MODEL__ 1 +// comment below to disable bicarb multi level sensor for time based chamber F fill +#define CONDUCTIVE_LEVEL_SENSOR_ENABLED 1 #include #include Index: firmware/App/Modes/FPModes/ModePreGenPermeate.c =================================================================== diff -u -r99e5d1b4d1e3627576d680318887ac23cd1f34ce -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 99e5d1b4d1e3627576d680318887ac23cd1f34ce) +++ firmware/App/Modes/FPModes/ModePreGenPermeate.c (.../ModePreGenPermeate.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -562,14 +562,14 @@ BOOL testValidatePreGenPChangeReq( U32 newSubMode ) { BOOL result = FALSE; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); if ( newSubMode < NUM_OF_FP_PRE_GENW_MODE_STATES ) { switch ( newSubMode ) { case FP_PRE_GENP_CONCENTRATE_FLUSH: - result = (( LEVEL_STATE_HIGH == level ) ? TRUE : FALSE); + result = (( LVL_STATE_HIGH == level ) ? TRUE : FALSE); break; case FP_PRE_GENP_INLET_PRESSURE_CHECK: Index: firmware/App/Modes/FPModes/StateFlushPermeate.c =================================================================== diff -u -rdc883aab56e769b2dec294e084f1378a178ba089 -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Modes/FPModes/StateFlushPermeate.c (.../StateFlushPermeate.c) (revision dc883aab56e769b2dec294e084f1378a178ba089) +++ firmware/App/Modes/FPModes/StateFlushPermeate.c (.../StateFlushPermeate.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -145,11 +145,11 @@ static FP_PERM_FLUSH_STATE_T handlePermeateFlushProgressState( void ) { FP_PERM_FLUSH_STATE_T state = PERM_FLUSH_IN_PROGRESS; - LEVEL_STATE_T level = getLevelStatus( P25_LEVL ); + LVL_STATE_T level = getFloaterStatus( P25_LEVL ); // Manual control of Permeate tank while in Permeate Flush // to prevent overfill. - if ( LEVEL_STATE_HIGH == level ) + if ( LVL_STATE_HIGH == level ) { setValveState( M4_VALV, VALVE_STATE_CLOSED ); if ( TRUE == isBoostPumpInstalled() ) @@ -161,7 +161,7 @@ isTankFilled = TRUE; } } - else if ( LEVEL_STATE_LOW == level ) + else if ( LVL_STATE_LOW == level ) { setValveState( M4_VALV, VALVE_STATE_OPEN ); // set boost pump to closed loop when M4 closed. Added Tank fill check to avoid reset during initial transition @@ -209,7 +209,6 @@ state = PERM_FLUSH_PAUSED; } } - } return state; Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r1e657954ae32d5261aa8b314d451f2d8abd91d2f -r7d7129ebe8a98694bea7cf4118f3bedf62f2157b --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 1e657954ae32d5261aa8b314d451f2d8abd91d2f) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 7d7129ebe8a98694bea7cf4118f3bedf62f2157b) @@ -583,19 +583,19 @@ { // Read floater switch BOOL result = FALSE; - LEVEL_STATE_T floaterLevel = getLevelStatus( D6_LEVL ); + LVL_STATE_T floaterLevel = getFloaterStatus( D6_LEVL ); BOOL balancingChambFillInProgress = getBalancingChamberFillinProgressStatus(); // High level is met - if ( LEVEL_STATE_HIGH == floaterLevel ) + if ( LVL_STATE_HIGH == floaterLevel ) { //turn off inlet water valve setValveState( D3_VALV, VALVE_STATE_CLOSED ); // Water level reached high. result = TRUE; } - else if ( LEVEL_STATE_LOW == floaterLevel || TRUE != balancingChambFillInProgress ) + else if ( LVL_STATE_LOW == floaterLevel || TRUE != balancingChambFillInProgress ) { // if level is not met,allow inlet water to hydraulics chamber setValveState( D3_VALV, VALVE_STATE_OPEN );