Index: firmware/App/Services/TDInterface.c =================================================================== diff -u -r12623fcb04a27427fc9bf894eac6fda798f17207 -ra46f63725893e7645354c726ce9a91a0935c81d3 --- firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision 12623fcb04a27427fc9bf894eac6fda798f17207) +++ firmware/App/Services/TDInterface.c (.../TDInterface.c) (revision a46f63725893e7645354c726ce9a91a0935c81d3) @@ -44,7 +44,7 @@ #define TD_DIALYSATE_FLOWRATE_MAX_ML_MIN ( 600.0F ) ///< TD Max dialysate flow rate (mL/min) #define TD_UF_RATE_MIN_ML_MIN ( 0.0F ) ///< TD Min UF rate (mL/min) -#define TD_UF_RATE_MAX_ML_MIN ( 400.0F ) ///< TD Max UF rate (mL/min) +#define TD_UF_RATE_MAX_ML_MIN ( 2000.0F ) ///< TD Max UF rate (mL/min) #define TD_DIALYSATE_TEMP_MIN_DEGC ( 35.0F ) ///< TD Min dialysate temperature (deg C) #define TD_DIALYSATE_TEMP_MAX_DEGC ( 38.0F ) ///< TD Max dialysate temperature (deg C) @@ -70,15 +70,8 @@ // TD status static TD_OP_MODE_T tdCurrentOpMode; ///< Current TD operation mode. static U32 tdSubMode; ///< Current state (sub-mode) of current TD operation mode. -static F32 tdDialysateFlowrate; ///< TD dialysate flow rate -static F32 tdUFRate; ///< TD ultrafiltration rate -static F32 tdTargetDialysateTemp; ///< TD target dialysate temperature static BOOL tdDialyzerBypass; ///< TD dialyzer bypass -static DD_ACID_TYPES_T tdAcidType; ///< TD Acid type. -static DD_BICARB_TYPES_T tdBicarbType; ///< TD Bicarb type -static BOOL tdDialyzerBypass; ///< TD dialyzer bypass - static BOOL tdOpModeDataFreshFlag = FALSE; ///< Flag to signal/process fresh TD op mode data static OVERRIDE_F32_T tdDialysateFlowrateOverride; ///< TD override Dialysate flow rate @@ -100,32 +93,37 @@ *************************************************************************/ void initTDInterface( void ) { - // Initialize unit variables - tdCurrentOpMode = MODE_INIT; - tdSubMode = 0U; - tdDialyzerBypass = FALSE; + // Initialize unit state variables + tdCurrentOpMode = MODE_INIT; + tdSubMode = 0U; + tdDialyzerBypass = FALSE; tdOpModeDataFreshFlag = FALSE; - // Intialize for override variables + // Initialize F32 overrides + tdDialysateFlowrateOverride.data = 0.0F; tdDialysateFlowrateOverride.ovData = 0.0F; tdDialysateFlowrateOverride.ovInitData = TD_DIALYSATE_FLOWRATE_MIN_ML_MIN; tdDialysateFlowrateOverride.override = OVERRIDE_RESET; - tdUFRateOverride.ovData = 0.0F; - tdUFRateOverride.ovInitData = TD_UF_RATE_MIN_ML_MIN; - tdUFRateOverride.override = OVERRIDE_RESET; + tdUFRateOverride.data = 0.0F; + tdUFRateOverride.ovData = 0.0F; + tdUFRateOverride.ovInitData = TD_UF_RATE_MIN_ML_MIN; + tdUFRateOverride.override = OVERRIDE_RESET; - tdDialysateTempOverride.ovData = 0.0F; - tdDialysateTempOverride.ovInitData = TD_DIALYSATE_TEMP_MIN_DEGC; - tdDialysateTempOverride.override = OVERRIDE_RESET; + tdDialysateTempOverride.data = 0.0F; + tdDialysateTempOverride.ovData = 0.0F; + tdDialysateTempOverride.ovInitData = TD_DIALYSATE_TEMP_MIN_DEGC; + tdDialysateTempOverride.override = OVERRIDE_RESET; - tdAcidTypeOverride.ovData = TD_ACID_TYPE_MIN; - tdAcidTypeOverride.ovInitData = TD_ACID_TYPE_MIN; - tdAcidTypeOverride.override = OVERRIDE_RESET; + tdAcidTypeOverride.data = TD_ACID_TYPE_MIN; + tdAcidTypeOverride.ovData = TD_ACID_TYPE_MIN; + tdAcidTypeOverride.ovInitData = TD_ACID_TYPE_MIN; + tdAcidTypeOverride.override = OVERRIDE_RESET; - tdBicarbTypeOverride.ovData = TD_BICARB_TYPE_MIN; - tdBicarbTypeOverride.ovInitData = TD_BICARB_TYPE_MIN; - tdBicarbTypeOverride.override = OVERRIDE_RESET; + tdBicarbTypeOverride.data = TD_BICARB_TYPE_MIN; + tdBicarbTypeOverride.ovData = TD_BICARB_TYPE_MIN; + tdBicarbTypeOverride.ovInitData = TD_BICARB_TYPE_MIN; + tdBicarbTypeOverride.override = OVERRIDE_RESET; } /**********************************************************************//** @@ -230,40 +228,40 @@ * The setTDDialysateFlowrate function sets the latest TD dialysate flow * rate. * @details \b Inputs: none - * @details \b Outputs: tdDialysateFlowrate + * @details \b Outputs: tdDialysateFlowrateOverride * @param dialysate flow rate. * @return none. *************************************************************************/ void setTDDialysateFlowrate( F32 dialFlowrate ) { - tdDialysateFlowrate = dialFlowrate; + tdDialysateFlowrateOverride.data = dialFlowrate; } /*********************************************************************//** * @brief * The setTDUFRate function sets the latest TD UF rate. * @details \b Inputs: none - * @details \b Outputs: tdUFRate + * @details \b Outputs: tdUFRateOverride * @param ultrafiltration flow rate. * @return none. *************************************************************************/ void setTDUFRate( F32 ufRate ) { - tdUFRate = ufRate; + tdUFRateOverride.data = ufRate; } /*********************************************************************//** * @brief * The setTDTargetDialysateTemperature function sets the latest TD dialysate * temperature. * @details \b Inputs: none - * @details \b Outputs: tdTargetDialysateTemp + * @details \b Outputs: tdDialysateTempOverride * @param Target dialysate temperature. * @return none. *************************************************************************/ void setTDTargetDialysateTemperature( F32 dialTemperature ) { - tdTargetDialysateTemp = dialTemperature; + tdDialysateTempOverride.data = dialTemperature; } /*********************************************************************//** @@ -292,47 +290,47 @@ *************************************************************************/ void setTDAcidAndBicarbType( U32 acid, U32 bicarb ) { - tdAcidType = (DD_ACID_TYPES_T)acid; - tdBicarbType = (DD_BICARB_TYPES_T)bicarb; + tdAcidTypeOverride.data = (DD_ACID_TYPES_T)acid; + tdBicarbTypeOverride.data = (DD_BICARB_TYPES_T)bicarb; } /*********************************************************************//** * @brief * The getTDDialysateFlowrate function gets the latest TD dialysate flow * rate. - * @details \b Inputs: tdDialysateFlowrate + * @details \b Inputs: tdDialysateFlowrateOverride * @details \b Outputs: none * @return Latest TD dialysate flow rate. *************************************************************************/ F32 getTDDialysateFlowrate( void ) { - return tdDialysateFlowrate; + return getF32OverrideValue( &tdDialysateFlowrateOverride ); } /*********************************************************************//** * @brief * The getTDUFrate function gets the latest TD ultrafiltration flow * rate. - * @details \b Inputs: tdUFRate + * @details \b Inputs: tdUFRateOverride * @details \b Outputs: none * @return Latest UF rate. *************************************************************************/ F32 getTDUFRate( void ) { - return tdUFRate; + return getF32OverrideValue( &tdUFRateOverride ); } /*********************************************************************//** * @brief * The getTDTargetDialysateTemperature function gets the latest TD * target dialysate temperature rate. - * @details \b Inputs: tdTargetDialysateTemp + * @details \b Inputs: tdDialysateTempOverride * @details \b Outputs: none * @return Latest target dialysate temperature. *************************************************************************/ F32 getTDTargetDialysateTemperature( void ) { - return tdTargetDialysateTemp; + return getF32OverrideValue( &tdDialysateTempOverride ); } /*********************************************************************//** @@ -352,26 +350,26 @@ * @brief * The getTDAcidConcentrateType function gets the latest Acid concentrate * type. - * @details \b Inputs: tdAcidType + * @details \b Inputs: tdAcidTypeOverride * @details \b Outputs: none * @return Latest acid concentrate type. *************************************************************************/ DD_ACID_TYPES_T getTDAcidConcentrateType( void ) { - return tdAcidType; + return ( DD_ACID_TYPES_T )tdAcidTypeOverride.data; } /*********************************************************************//** * @brief * The getTDBicarbConcentrateType function gets the latest Bicarb concentrate * type. - * @details \b Inputs: tdBicarbType + * @details \b Inputs: tdBicarbTypeOverride * @details \b Outputs: none * @return Latest bicarb concentrate type. *************************************************************************/ DD_BICARB_TYPES_T getTDBicarbConcentrateType( void ) { - return tdBicarbType; + return ( DD_BICARB_TYPES_T )tdBicarbTypeOverride.data; } /*********************************************************************//** @@ -516,7 +514,6 @@ *************************************************************************/ - /****************************************************************************** * @brief * Handles TD treatment parameter override requests. @@ -527,7 +524,7 @@ * @param message Pointer to the override message received from Dialin. * @return TRUE if the override is successfully applied, FALSE otherwise. ******************************************************************************/ -BOOL testTDTreatmentParamsOverride( MESSAGE_T *message ) +static BOOL testTDTreatmentParamsOverride( MESSAGE_T *message ) { BOOL result = FALSE; TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; @@ -538,88 +535,61 @@ if ( ( TRUE == isTestingActivated() ) && ( DD_MODE_GEND == getCurrentOperationMode() ) && ( ovType != OVERRIDE_INVALID ) && ( ovType < NUM_OF_OVERRIDE_TYPES ) ) { switch ( (TD_TREATMENT_OVERRIDE_INDEX_T)payload.index ) + { + case TD_TREATMENT_OVERRIDE_DIALYSATE_FLOWRATE: + { + F32 value = payload.state.f32; + if ( ( ovType == OVERRIDE_OVERRIDE ) && ( ( value < TD_DIALYSATE_FLOWRATE_MIN_ML_MIN ) || ( value > TD_DIALYSATE_FLOWRATE_MAX_ML_MIN ) ) ) { - case TD_TREATMENT_OVERRIDE_DIALYSATE_FLOWRATE: - { - // Dialysate flow rate (mL/min) - if ( OVERRIDE_OVERRIDE == ovType ) - { - F32 value = payload.state.f32; - if ( ( value >= TD_DIALYSATE_FLOWRATE_MIN_ML_MIN ) && ( value <= TD_DIALYSATE_FLOWRATE_MAX_ML_MIN ) ) - { - result = f32Override( message, &tdDialysateFlowrateOverride ); - } - else - { - result = FALSE; - } - } - else - { - result = f32Override( message, &tdDialysateFlowrateOverride ); - } - break; - } + result = FALSE; + } + else + { + result = f32Override( message, &tdDialysateFlowrateOverride ); + } + break; + } - case TD_TREATMENT_OVERRIDE_UF_RATE: - { - // UF rate (mL/min) - if ( OVERRIDE_OVERRIDE == ovType ) - { - F32 value = payload.state.f32; - if ( ( value >= TD_UF_RATE_MIN_ML_MIN ) && ( value <= TD_UF_RATE_MAX_ML_MIN ) ) - { - result = f32Override( message, &tdUFRateOverride ); - } - else - { - result = FALSE; - } - } - else - { - result = f32Override( message, &tdUFRateOverride ); - } - break; - } + case TD_TREATMENT_OVERRIDE_UF_RATE: + { + F32 value = payload.state.f32; + if ( ( ovType == OVERRIDE_OVERRIDE ) && ( ( value < TD_UF_RATE_MIN_ML_MIN ) || ( value > TD_UF_RATE_MAX_ML_MIN ) ) ) + { + result = FALSE; + } + else + { + result = f32Override( message, &tdDialysateFlowrateOverride ); + } + break; + } - case TD_TREATMENT_OVERRIDE_DIALYSATE_TEMP: - { - // Dialysate temperature (deg C) - if ( OVERRIDE_OVERRIDE == ovType ) - { - F32 value = payload.state.f32; - if ( ( value >= TD_DIALYSATE_TEMP_MIN_DEGC ) && ( value <= TD_DIALYSATE_TEMP_MAX_DEGC ) ) - { - result = f32Override( message, &tdDialysateTempOverride ); - } - else - { - result = FALSE; - } - } - else - { - result = f32Override( message, &tdDialysateTempOverride ); - } - break; - } + case TD_TREATMENT_OVERRIDE_DIALYSATE_TEMP: + { + F32 value = payload.state.f32; + if ( ( ovType == OVERRIDE_OVERRIDE ) && ( ( value < TD_DIALYSATE_TEMP_MIN_DEGC ) || ( value > TD_DIALYSATE_TEMP_MAX_DEGC ) ) ) + { + result = FALSE; + } + else + { + result = f32Override( message, &tdDialysateTempOverride ); + } + break; + } case TD_TREATMENT_OVERRIDE_ACID_TYPE: - // Acid type (dd_acid_types range) result = u32Override( message, &tdAcidTypeOverride, TD_ACID_TYPE_MIN, TD_ACID_TYPE_MAX ); break; case TD_TREATMENT_OVERRIDE_BICARB_TYPE: - // Bicarb type (dd_bicarb_types range) result = u32Override( message, &tdBicarbTypeOverride, TD_BICARB_TYPE_MIN, TD_BICARB_TYPE_MAX ); break; default: result = FALSE; break; } - if ( TRUE == result ) { setTreatmentParamUpdate();