Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -r581f75133863205963703e6e6970ac66ee5228c1 -r2a7a55296061f227c35ab95addfe87a2c9faca4b --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 581f75133863205963703e6e6970ac66ee5228c1) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision 2a7a55296061f227c35ab95addfe87a2c9faca4b) @@ -30,6 +30,7 @@ #include "PressureSensor.h" #include "PersistentAlarm.h" #include "Pressure.h" +#include "TDInterface.h" #include "TaskGeneral.h" #include "TemperatureSensors.h" #include "Timers.h" @@ -105,19 +106,99 @@ #define ACID_TYPE_2K_2_5_CA 11313.62F ///< standard acid conductivity for 2K #define ACID_TYPE_3K_2_5_CA 11435.68F ///< standard acid conductivity for 3K -#define MIN_BICARB_CONDUCTIVITY 2000 ///< Minimum Bicarb conductivity limit -#define MAX_BICARB_CONDUCTIVITY 4000 ///< Maximum Bicarb conductivity limit - #define MIX_NO_FEED_FORWARD 0.0F ///< Feedforward term for dialysate closed loop control #define MIX_CONTROL_INTERVAL_MS ( 15 * MS_PER_SECOND ) ///< Dialysate mixing control interval in ms + #define BICARB_MIX_CONTROL_INTERVAL ( 3 * MS_PER_SECOND /\ - TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate mix is controlled. + TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the biarb mix is controlled. + #define ACID_MIX_CONTROL_INTERVAL ( MIX_CONTROL_INTERVAL_MS /\ - TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate mix is controlled. + TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the Acid mix is controlled. + #define BICARB_DEADBAND_CONTROL 50.0F ///< Dry Bicarb dead band control #define ACID_DEADBAND_CONTROL 100.0F ///< Acid dead band control +// Proportioning Ratios: 1 Part Acid : 1.72 Parts Bicarb : 42.28 Parts Water +// Total parts = 1 + 1.72 + 42.28 = 45.0 +#define STD_45X_CONC_MIX_ACID_PART 1.0F ///< Acid portion of 45X concentration mix +#define STD_45X_CONC_MIX_BICARB_PART 1.72F ///< Bicarb portion of 45X concentration mix +#define STD_45X_CONC_MIX_WATER_PART 42.28F ///< Water portion of 45X concentration mix + +#define TOTAL_STD_45X_MIX_PART ( STD_45X_CONC_MIX_ACID_PART + \ + STD_45X_CONC_MIX_BICARB_PART + \ + STD_45X_CONC_MIX_WATER_PART ) ///< Total 45X mix + +#define ACID_PCT_IN_DIALYSTATE ( ( STD_45X_CONC_MIX_ACID_PART /\ + TOTAL_STD_45X_MIX_PART ) ) ///< Acid percent in Dialysate + +#define BICARB_PCT_IN_DIALYSATE ( ( STD_45X_CONC_MIX_BICARB_PART /\ + TOTAL_STD_45X_MIX_PART) ) ///< Bicarb Percent in Dialysate + +#define WATER_PCT_IN_DIALYSATE ( ( STD_45X_CONC_MIX_WATER_PART /\ + TOTAL_STD_45X_MIX_PART) ) ///< Water percent in Dialysate + +#define RO_WATER_VOLUME_ML ( BAL_CHAMBER_FILL_VOLUME_ML * \ + WATER_PCT_IN_DIALYSATE ) ///< Water volume + +#define ACID_MIX_VOLUME_ML ( BAL_CHAMBER_FILL_VOLUME_ML * \ + ACID_PCT_IN_DIALYSTATE ) ///< Acid volume + +#define BICARB_MIX_VOLUME_ML ( BAL_CHAMBER_FILL_VOLUME_ML * \ + BICARB_PCT_IN_DIALYSATE ) ///< Bicarb volume + +#define STD_DILUTION_ACID_POST_MIX_NA 100.0F ///< Acid post mix Sodium +#define STD_DILUTION_BICARB_POST_MIX_NA 37.0F ///< Bicarb post mix Sodium +#define STD_DILUTION_BICARB_POST_MIX_CHO3 33.0F ///< Post mix bicarbonate + +#define DIALYSATE_TARGET_STD_NA_SETTINGS 137.0F ///< Standard target sodium +#define DIALYSATE_TARGET_STD_BICARB_SETTING 33.0F ///< Standard bicarb +#define DIALYSATE_TARGET_ADJ_NA_SETTING 137.0F ///< User Sodium +#define DIALYSATE_TARGET_ADJ_BICARB_SETTING 33.0F ///< User bicarb + +#define BICARB_PERCENT_CHANGE ( 1 + ( ( DIALYSATE_TARGET_ADJ_BICARB_SETTING - \ + DIALYSATE_TARGET_STD_BICARB_SETTING) / \ + DIALYSATE_TARGET_STD_BICARB_SETTING ) )///< Bicarb percentage change + +#define BICARB_PERCENT_CHANGE_NA ( STD_DILUTION_BICARB_POST_MIX_NA *\ + BICARB_PERCENT_CHANGE ) ///< Percent change of sodium + +#define BICARB_PERCENT_CHANGE_NAHCO3 ( STD_DILUTION_BICARB_POST_MIX_CHO3 *\ + BICARB_PERCENT_CHANGE ) ///< Percentage change of bicarbonate + +#define ACID_TARGET_CONCENTRATE_NA ( DIALYSATE_TARGET_ADJ_NA_SETTING - \ + BICARB_PERCENT_CHANGE_NA ) ///< Acid Target concentrate sodium + +#define ACID_PERCENT_CHANGE ( ( 1 + ( ACID_TARGET_CONCENTRATE_NA - \ + STD_DILUTION_ACID_POST_MIX_NA ) / \ + STD_DILUTION_ACID_POST_MIX_NA ) ) ///< Acid percentage change + +#define FINAL_NA_ADJ_MIX ( ACID_TARGET_CONCENTRATE_NA + \ + BICARB_PERCENT_CHANGE_NA ) ///< Final adjusted sodium + +#define FINAL_NAHCO3_ADJ_MIX ( BICARB_PERCENT_CHANGE_NAHCO3 ) + +#define FINAL_ACID_MIX ( ACID_MIX_VOLUME_ML * \ + ACID_PERCENT_CHANGE ) ///< Final Acid Mix + +#define FINAL_BICARB_MIX ( BICARB_MIX_VOLUME_ML * \ + BICARB_PERCENT_CHANGE ) ///< Final bicarb mix + +#define BICARB_CONDUCTIVITY_PRE ( STD_DILUTION_BICARB_POST_MIX_NA * \ + BICARB_PERCENT_CHANGE * \ + getTDBicarbConversionFactor() ) ///< Theoretical bicarb conductivity pre mix + +#define BICARB_CONDUCTIVITY_POST ( STD_DILUTION_BICARB_POST_MIX_CHO3 * \ + BICARB_PERCENT_CHANGE * \ + getTDBicarbConversionFactor() ) ///< Theoretical bicarb conductivity post mix + +#define ACID_CONDUCTIVITY_POST ( STD_DILUTION_ACID_POST_MIX_NA * \ + ACID_PERCENT_CHANGE * \ + getTDAcidConversionFactor() ) ///< Theoretical Acid conductivity post mix + +#define TOTAL_CONDUCTIVITY ( ACID_CONDUCTIVITY_POST +\ + BICARB_CONDUCTIVITY_POST ) ///< Theoretical Dialysate conductivity + /// Payload record structure for dry bicart fill request typedef struct { @@ -211,11 +292,16 @@ static OVERRIDE_F32_T dryBiCartBicarbTargetConductivity; ///< Target bicarb conductivity static OVERRIDE_F32_T dryBiCartBicarbDeltaConductivity; ///< Target delta conductivity -static OVERRIDE_F32_T dryBiCartDialysateTargetConductivity; ///< Acid bicarb mix conductivity -static OVERRIDE_F32_T dryBiCartDialysateDeltaConductivity; ///< Acid bicarb delta conductivity +static OVERRIDE_F32_T dryBiCartDialysateTargetConductivity; ///< Target Dialysate conductivity +static OVERRIDE_F32_T dryBiCartDialysateDeltaConductivity; ///< Delta Target Dialysate conductivity -static OVERRIDE_U32_T dryBiCartMixControlInterval; ///< Mix control interval +static OVERRIDE_F32_T dryBiCartStdMixingBCVolume; ///< Standard mixing Balancing chamber volume +static OVERRIDE_F32_T dryBiCartTargetAdjNaSettings; ///< Dialysate Target Settings Adjusted Na +static OVERRIDE_F32_T dryBiCartTargetAdjBicarbSettings; ///< Dialysate Target Settings Adjusted bicarb +static OVERRIDE_U32_T dryBiCartBicarbMixControlInterval; ///< Bicarb Mix control interval +static OVERRIDE_U32_T dryBiCartAcidMixControlInterval; ///< Acid Mix control interval + static PI_CONTROLLER_SIGNALS_DATA bicarbControlSignals; ///< Bicarb closed loop control signal data static PI_CONTROLLER_SIGNALS_DATA acidControlSignals; ///< Acid closed loop control signal data @@ -321,38 +407,42 @@ dryBiCartType.ovInitData = 0; dryBiCartType.override = OVERRIDE_RESET; - dryBiCartAcidMixVolume.data = DEFAULT_ACID_VOLUME_ML; - dryBiCartAcidMixVolume.ovData = DEFAULT_ACID_VOLUME_ML; + dryBiCartAcidMixVolume.data = FINAL_ACID_MIX; + dryBiCartAcidMixVolume.ovData = FINAL_ACID_MIX; dryBiCartAcidMixVolume.ovInitData = 0.0F; dryBiCartAcidMixVolume.override = OVERRIDE_RESET; - dryBiCartBicarbMixVolume.data = DEFAULT_BICARB_VOLUME_ML; - dryBiCartBicarbMixVolume.ovData = DEFAULT_BICARB_VOLUME_ML; + dryBiCartBicarbMixVolume.data = FINAL_BICARB_MIX; + dryBiCartBicarbMixVolume.ovData = FINAL_BICARB_MIX; dryBiCartBicarbMixVolume.ovInitData = 0.0F; dryBiCartBicarbMixVolume.override = OVERRIDE_RESET; + // TODO : remove the debug Kp Ki gain dryBiCartAcidMixVolumeKpGain.data = ACID_VOL_CONTROL_P_COEFFICIENT; dryBiCartAcidMixVolumeKpGain.ovData = ACID_VOL_CONTROL_P_COEFFICIENT; dryBiCartAcidMixVolumeKpGain.ovInitData = 0.0F; dryBiCartAcidMixVolumeKpGain.override = OVERRIDE_RESET; + // TODO : remove the debug Kp Ki gain dryBiCartAcidMixVolumeKiGain.data = ACID_VOL_CONTROL_I_COEFFICIENT; dryBiCartAcidMixVolumeKiGain.ovData = ACID_VOL_CONTROL_I_COEFFICIENT; dryBiCartAcidMixVolumeKiGain.ovInitData = 0.0F; dryBiCartAcidMixVolumeKiGain.override = OVERRIDE_RESET; + // TODO : remove the debug Kp Ki gain dryBiCartBicarbMixVolumeKpGain.data = BICARB_VOL_CONTROL_P_COEFFICIENT; dryBiCartBicarbMixVolumeKpGain.ovData = BICARB_VOL_CONTROL_P_COEFFICIENT; dryBiCartBicarbMixVolumeKpGain.ovInitData = 0.0F; dryBiCartBicarbMixVolumeKpGain.override = OVERRIDE_RESET; + // TODO : remove the debug Kp Ki gain dryBiCartBicarbMixVolumeKiGain.data = BICARB_VOL_CONTROL_I_COEFFICIENT; dryBiCartBicarbMixVolumeKiGain.ovData = BICARB_VOL_CONTROL_I_COEFFICIENT; dryBiCartBicarbMixVolumeKiGain.ovInitData = 0.0F; dryBiCartBicarbMixVolumeKiGain.override = OVERRIDE_RESET; - dryBiCartBicarbTargetConductivity.data = DRY_BICARB_TARGET_CONDUCTIVITY; - dryBiCartBicarbTargetConductivity.ovData = DRY_BICARB_TARGET_CONDUCTIVITY; + dryBiCartBicarbTargetConductivity.data = BICARB_CONDUCTIVITY_PRE; + dryBiCartBicarbTargetConductivity.ovData = BICARB_CONDUCTIVITY_PRE; dryBiCartBicarbTargetConductivity.ovInitData = 0.0F; dryBiCartBicarbTargetConductivity.override = OVERRIDE_RESET; @@ -361,8 +451,8 @@ dryBiCartBicarbDeltaConductivity.ovInitData = 0.0F; dryBiCartBicarbDeltaConductivity.override = OVERRIDE_RESET; - dryBiCartDialysateTargetConductivity.data = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; - dryBiCartDialysateTargetConductivity.ovData = DRY_ACID_BICARB_TARGET_CONDUCTIVITY; + dryBiCartDialysateTargetConductivity.data = TOTAL_CONDUCTIVITY; + dryBiCartDialysateTargetConductivity.ovData = TOTAL_CONDUCTIVITY; dryBiCartDialysateTargetConductivity.ovInitData = 0.0F; dryBiCartDialysateTargetConductivity.override = OVERRIDE_RESET; @@ -381,11 +471,33 @@ dryBiCartLowerCartPressure.ovInitData = 0.0F; dryBiCartLowerCartPressure.override = OVERRIDE_RESET; - dryBiCartMixControlInterval.data = BICARB_MIX_CONTROL_INTERVAL; - dryBiCartMixControlInterval.ovData = BICARB_MIX_CONTROL_INTERVAL; - dryBiCartMixControlInterval.ovInitData = 0; - dryBiCartMixControlInterval.override = OVERRIDE_RESET; + dryBiCartStdMixingBCVolume.data = BAL_CHAMBER_FILL_VOLUME_ML; + dryBiCartStdMixingBCVolume.ovData = BAL_CHAMBER_FILL_VOLUME_ML; + dryBiCartStdMixingBCVolume.ovInitData = 0.0F; + dryBiCartStdMixingBCVolume.override = OVERRIDE_RESET; + // TODO : remove the override once testing completed. Its implemented if TD is not used + dryBiCartTargetAdjNaSettings.data = getTDSodiumConcentration(); + dryBiCartTargetAdjNaSettings.ovData = getTDSodiumConcentration(); + dryBiCartTargetAdjNaSettings.ovInitData = 0.0F; + dryBiCartTargetAdjNaSettings.override = OVERRIDE_RESET; + + // TODO : remove the override once testing completed. Its implemented if TD is not used + dryBiCartTargetAdjBicarbSettings.data = getTDBicarbonateConcentration(); + dryBiCartTargetAdjBicarbSettings.ovData = getTDBicarbonateConcentration(); + dryBiCartTargetAdjBicarbSettings.ovInitData = 0.0F; + dryBiCartTargetAdjBicarbSettings.override = OVERRIDE_RESET; + + dryBiCartBicarbMixControlInterval.data = BICARB_MIX_CONTROL_INTERVAL; + dryBiCartBicarbMixControlInterval.ovData = BICARB_MIX_CONTROL_INTERVAL; + dryBiCartBicarbMixControlInterval.ovInitData = 0; + dryBiCartBicarbMixControlInterval.override = OVERRIDE_RESET; + + dryBiCartAcidMixControlInterval.data = ACID_MIX_CONTROL_INTERVAL; + dryBiCartAcidMixControlInterval.ovData = ACID_MIX_CONTROL_INTERVAL; + dryBiCartAcidMixControlInterval.ovInitData = 0; + dryBiCartAcidMixControlInterval.override = OVERRIDE_RESET; + dryBiCartPressureDecayStartTimeFlag = FALSE; dryBiCartFillStartTime = 0; lastFillDurationInMS = 0; @@ -1009,20 +1121,34 @@ /*********************************************************************//** * @brief - * The getDryBicartMixControlInterval function gets the bicart mix control interval - * @details \b Inputs: dryBiCartMixControlInterval + * The getDryBicartBicarbMixControlInterval function gets the bicart bicarb mix control interval + * @details \b Inputs: dryBiCartBicarbMixControlInterval * @details \b Outputs: none * @return TRUE if successful, FALSE if not. *************************************************************************/ -static U32 getDryBicartMixControlInterval( void ) +static U32 getDryBicartBicarbMixControlInterval( void ) { - U32 result = getU32OverrideValue( &dryBiCartMixControlInterval ); + U32 result = getU32OverrideValue( &dryBiCartBicarbMixControlInterval ); return result; } /*********************************************************************//** * @brief + * The getDryBicartAcidMixControlInterval function gets the bicart acid mix control interval + * @details \b Inputs: dryBiCartAcidMixControlInterval + * @details \b Outputs: none + * @return TRUE if successful, FALSE if not. + *************************************************************************/ +static U32 getDryBicartAcidMixControlInterval( void ) +{ + U32 result = getU32OverrideValue( &dryBiCartAcidMixControlInterval ); + + return result; +} + +/*********************************************************************//** + * @brief * The handleDialysateOpenLoopState function handles the dialysate open loop state of * the dialysate mix controller state machine. * @details \b Inputs: D17_COND, D29_COND @@ -1112,7 +1238,7 @@ if ( BICARB_MIX_ID == mixId ) { // control interval for bicarb - if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= getDryBicartMixControlInterval() ) ) + if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= getDryBicartBicarbMixControlInterval() ) ) { F32 bicarbMixVol; @@ -1140,7 +1266,7 @@ if ( ACID_MIX_ID == mixId ) { // control interval for acid - if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= ACID_MIX_CONTROL_INTERVAL ) ) + if ( ( ++dialysateMix[ mixId ].controlTimerCounter >= getDryBicartAcidMixControlInterval() ) ) { F32 acidMixVol; @@ -1946,10 +2072,14 @@ // TODO: remove after feature testing data.dryBiCartBicarbMixingKPgain = getBicarbKpGainCoefficient(); + // TODO: remove after feature testing data.dryBiCartBicarbMixingKIgain = getBicarbKiGainCoefficient(); + // TODO: remove after feature testing data.dryBiCartAcidMixingKPgain = getAcidKpGainCoefficient(); + + // TODO: remove after feature testing data.dryBiCartAcidMixingKIgain = getAcidKiGainCoefficient(); broadcastData( MSG_ID_DD_DRY_BICART_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( DRY_BICART_DATA_T ) ); @@ -1985,8 +2115,8 @@ * @brief * The testDryBiCartFillCycleMaxCountOverride function sets the override value * of the max dry bicart fill cycle count. - * @details Inputs: biCartMaxFillCycleCount - * @details Outputs: biCartMaxFillCycleCount + * @details \b Inputs: biCartMaxFillCycleCount + * @details \b Outputs: biCartMaxFillCycleCount * @param message Override message from Dialin which includes the override * value to override the max dry bicart fill cycle count. * @return TRUE if override successful, FALSE if not @@ -2068,8 +2198,8 @@ * @brief * The testDryBiCartAcidMixVolumeOverride function sets the override value * of the acid concentrate mixing volume. - * @details Inputs: dryBiCartAcidMixVolume - * @details Outputs: dryBiCartAcidMixVolume + * @details \b Inputs: dryBiCartAcidMixVolume + * @details \b Outputs: dryBiCartAcidMixVolume * @param message Override message from Dialin which includes the override * value to override the acid concentrate mixing volume. * @return TRUE if override successful, FALSE if not @@ -2085,8 +2215,8 @@ * @brief * The testDryBiCartBicarbMixVolumeOverride function sets the override value * of the bicarb concentrate mixing volume. - * @details Inputs: dryBiCartBicarbMixVolume - * @details Outputs: dryBiCartBicarbMixVolume + * @details \b Inputs: dryBiCartBicarbMixVolume + * @details \b Outputs: dryBiCartBicarbMixVolume * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate mixing volume. * @return TRUE if override successful, FALSE if not @@ -2102,8 +2232,8 @@ * @brief * The testDryBiCartBicarbMixVolControlKpGainOverride function sets the override value * of the Kp gain coefficient for closed loop bicarb mixing volume control - * @details Inputs: dryBiCartBicarbMixVolumeKpGain - * @details Outputs: dryBiCartBicarbMixVolumeKpGain + * @details \b Inputs: dryBiCartBicarbMixVolumeKpGain + * @details \b Outputs: dryBiCartBicarbMixVolumeKpGain * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate mixing volume kp gain. * @return TRUE if override successful, FALSE if not @@ -2123,8 +2253,8 @@ * @brief * The testDryBiCartBicarbMixVolControlKiGainOverride function sets the override value * of the Ki gain coefficient for closed loop bicarb concentrate mixing volume control - * @details Inputs: dryBiCartBicarbMixVolumeKiGain - * @details Outputs: dryBiCartBicarbMixVolumeKiGain + * @details \b: dryBiCartBicarbMixVolumeKiGain + * @details \b Outputs: dryBiCartBicarbMixVolumeKiGain * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate mixing volume ki gain. * @return TRUE if override successful, FALSE if not @@ -2144,8 +2274,8 @@ * @brief * The testDryBiCartAcidMoxVolControlKpGainOverride function sets the override value * of the Kp gain coefficient for closed loop acid concentrate mixing volume control - * @details Inputs: dryBiCartAcidMixVolumeKpGain - * @details Outputs: dryBiCartAcidMixVolumeKpGain + * @details \b Inputs: dryBiCartAcidMixVolumeKpGain + * @details \b Outputs: dryBiCartAcidMixVolumeKpGain * @param message Override message from Dialin which includes the override * value to override the acid concentrate mixing volume kp gain. * @return TRUE if override successful, FALSE if not @@ -2165,8 +2295,8 @@ * @brief * The testDryBiCartAcidMixVolControlKiGainOverride function sets the override value * of the Ki gain coefficient for closed loop acid concentrate mixing volume control - * @details Inputs: dryBiCartAcidMixVolumeKiGain - * @details Outputs: dryBiCartAcidMixVolumeKiGain + * @details \b Inputs: dryBiCartAcidMixVolumeKiGain + * @details \b Outputs: dryBiCartAcidMixVolumeKiGain * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate mixing volume ki gain. * @return TRUE if override successful, FALSE if not @@ -2186,8 +2316,8 @@ * @brief * The testDryBiCartTargetConductivityOverride function sets the override value * of target conductivity for closed loop control - * @details Inputs: dryBiCartTargetConductivity - * @details Outputs: dryBiCartTargetConductivity + * @details \b Inputs: dryBiCartTargetConductivity + * @details \b Outputs: dryBiCartTargetConductivity * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate target conductivity. * @return TRUE if override successful, FALSE if not @@ -2203,8 +2333,8 @@ * @brief * The testDryBiCartDeltaConductivityOverride function sets the override value * of delta target conductivity for closed loop control - * @details Inputs: dryBiCartDeltaConductivity - * @details Outputs: dryBiCartDeltaConductivity + * @details \b Inputs: dryBiCartDeltaConductivity + * @details \b Outputs: dryBiCartDeltaConductivity * @param message Override message from Dialin which includes the override * value to override the bicarb concentrate delta target conductivity. * @return TRUE if override successful, FALSE if not @@ -2220,8 +2350,8 @@ * @brief * The testDryBiCartAcidBicarbTargetConductivityOverride function sets the override value * of acid bicarb mix target conductivity for closed loop control - * @details Inputs: dryBiCartAcidBicarbMixTargetConductivity - * @details Outputs: dryBiCartAcidBicarbMixTargetConductivity + * @details \b Inputs: dryBiCartAcidBicarbMixTargetConductivity + * @details \b Outputs: dryBiCartAcidBicarbMixTargetConductivity * @param message Override message from Dialin which includes the override * value to override the acid bicarb mix target conductivity. * @return TRUE if override successful, FALSE if not @@ -2237,9 +2367,8 @@ * @brief * The testDryBiCartAcidBicarbDeltaConductivityOverride function sets the override value * of delta target conductivity for acid bicarb mix closed loop control - * @details Inputs: dryBiCartDeltaConductivity - * - * @details Outputs: dryBiCartDeltaConductivity + * @details \b Inputs: dryBiCartDeltaConductivity + * @details \b Outputs: dryBiCartDeltaConductivity * @param message Override message from Dialin which includes the override * value to override the acid bicarb mix target delta conductivity. * @return TRUE if override successful, FALSE if not @@ -2255,8 +2384,8 @@ * @brief * The testDryBiCartUpperCartPressureOverride function sets the override value * of bicart upper cart pressure - * @details Inputs: dryBiCartUpperCartPressure - * @details Outputs: dryBiCartUpperCartPressure + * @details \b Inputs: dryBiCartUpperCartPressure + * @details \b Outputs: dryBiCartUpperCartPressure * @param message Override message from Dialin which includes the override * value to override the bicart upper cart pressure * @return TRUE if override successful, FALSE if not @@ -2272,8 +2401,8 @@ * @brief * The testDryBiCartLowerCartPressureOverride function sets the override value * of Lowercart pressure - * @details Inputs: dryBiCartLowerCartPressure - * @details Outputs: dryBiCartLowerCartPressure + * @details \b Inputs: dryBiCartLowerCartPressure + * @details \b Outputs: dryBiCartLowerCartPressure * @param message Override message from Dialin which includes the override * value to override the bicart lower pressure. * @return TRUE if override successful, FALSE if not @@ -2287,19 +2416,86 @@ /*********************************************************************//** * @brief - * The testDryBiCartMixControlIntervalOverride function sets the override value - * of mix control interval - * @details Inputs: dryBiCartMixControlInterval - * @details Outputs: dryBiCartMixControlInterval + * The testDryBiCartBicarbMixControlIntervalOverride function sets the override value + * of bicarb mix control interval + * @details \b Inputs: dryBiCartBicarbMixControlInterval + * @details \b Outputs: dryBiCartBicarbMixControlInterval * @param message Override message from Dialin which includes the override * value to override the bicart lower pressure. * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testDryBiCartMixControlIntervalOverride( MESSAGE_T *message ) +BOOL testDryBiCartBicarbMixControlIntervalOverride( MESSAGE_T *message ) { - BOOL result = u32Override( message, &dryBiCartMixControlInterval, 0, BICARB_MIX_CONTROL_INTERVAL ); + BOOL result = u32Override( message, &dryBiCartBicarbMixControlInterval, 0, BICARB_MIX_CONTROL_INTERVAL ); return result; } +/*********************************************************************//** + * @brief + * The testDryBiCartAcidMixControlIntervalOverride function sets the override value + * of acid mix control interval + * @details \b Inputs: dryBiCartAcidMixControlInterval + * @details \b Outputs: dryBiCartAcidMixControlInterval + * @param message Override message from Dialin which includes the override + * value to override the bicart lower pressure. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDryBiCartAcidMixControlIntervalOverride( MESSAGE_T *message ) +{ + BOOL result = u32Override( message, &dryBiCartAcidMixControlInterval, 0, BICARB_MIX_CONTROL_INTERVAL ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testDryBiCartStdMixingBCVolumeOverride function sets the override value + * of Balancing chamber Volume override + * @details \b Inputs: dryBiCartStdMixingBCVolume + * @details \b Outputs: dryBiCartStdMixingBCVolume + * @param message Override message from Dialin which includes the override + * value to override the bicart lower pressure. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDryBiCartStdMixingBCVolumeOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &dryBiCartStdMixingBCVolume ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testDryBiCartTargetAdjNASettingOverride function sets the override value + * of user sodium + * @details \b Inputs: dryBiCartTargetAdjNaSettings + * @details \b Outputs: dryBiCartTargetAdjNaSettings + * @param message Override message from Dialin which includes the override + * value to override the bicart lower pressure. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDryBiCartTargetAdjNASettingOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &dryBiCartTargetAdjNaSettings ); + + return result; +} + +/*********************************************************************//** + * @brief + * The testDryBiCartAcidMixControlIntervalOverride function sets the override value + * of user bicarb + * @details \b Inputs: dryBiCartTargetAdjBicarbSettings + * @details \b Outputs: dryBiCartTargetAdjBicarbSettings + * @param message Override message from Dialin which includes the override + * value to override the bicart lower pressure. + * @return TRUE if override successful, FALSE if not + *************************************************************************/ +BOOL testDryBiCartTargetAdjBicarbSettingOverride( MESSAGE_T *message ) +{ + BOOL result = f32Override( message, &dryBiCartTargetAdjBicarbSettings ); + + return result; +} /**@}*/ Index: firmware/App/Controllers/DryBiCart.h =================================================================== diff -u -ra6737c3bcc8286c153b778c2c395f465e76aaafb -r2a7a55296061f227c35ab95addfe87a2c9faca4b --- firmware/App/Controllers/DryBiCart.h (.../DryBiCart.h) (revision a6737c3bcc8286c153b778c2c395f465e76aaafb) +++ firmware/App/Controllers/DryBiCart.h (.../DryBiCart.h) (revision 2a7a55296061f227c35ab95addfe87a2c9faca4b) @@ -64,7 +64,6 @@ F32 dryBiCartAcidMixingKIgain; ///< Dry bicart acid mixing control ki gain } DRY_BICART_DATA_T; - #pragma pack(pop) // ********** public function prototypes ********** @@ -113,7 +112,13 @@ BOOL testDryBiCartUpperCartPressureOverride( MESSAGE_T *message ); BOOL testDryBiCartLowerCartPressureOverride( MESSAGE_T *message ); -BOOL testDryBiCartMixControlIntervalOverride( MESSAGE_T *message ); +BOOL testDryBiCartBicarbMixControlIntervalOverride( MESSAGE_T *message ); +BOOL testDryBiCartAcidMixControlIntervalOverride( MESSAGE_T *message ); + +BOOL testDryBiCartStdMixingBCVolumeOverride( MESSAGE_T *message ); +BOOL testDryBiCartTargetAdjNASettingOverride( MESSAGE_T *message ); +BOOL testDryBiCartTargetAdjBicarbSettingOverride( MESSAGE_T *message ); + /**@}*/ #endif