Index: firmware/App/Services/TxParams.c =================================================================== diff -u -rea02f813a3b84bfbb5f1d3b4adbba6152ba9316d -r7652af03a25dfbaa4af4a7aeb0a228a16dcf979f --- firmware/App/Services/TxParams.c (.../TxParams.c) (revision ea02f813a3b84bfbb5f1d3b4adbba6152ba9316d) +++ firmware/App/Services/TxParams.c (.../TxParams.c) (revision 7652af03a25dfbaa4af4a7aeb0a228a16dcf979f) @@ -71,10 +71,15 @@ U32 bloodFlowRate_mL_min; ///< Original blood flow rate (in mL/min) set by user before treatment start U32 dialysateFlowRate_mL_min; ///< Original dialysate flow rate (in mL/min) set by user before treatment start U32 treatmentDuration_min; ///< Original treatment duration (in min) set by user before treatment start - S32 arterialPressureLimitWindow_mmHg; ///< Original alarm limit window for arterial pressure (in mmHg) set by user before treatment start - S32 venousPressureLimitWindow_mmHg; ///< Original alarm limit window for venous pressure (in mmHg) set by user before treatment start - S32 venousPressureLimitAsymmetric_mmHg; ///< Original alarm limit asymmetric for venous pressure (in mmHg) set by user before treatment start - S32 tmpLimitWindow_mmHg; ///< Original alarm limit window for trans-membrane pressure (in mmHg) set by user before treatment start + U32 arterialPressureLimitWindow_mmHg; ///< Original alarm limit window for arterial pressure (in mmHg) set by user before treatment start + U32 venousPressureLimitWindow_mmHg; ///< Original alarm limit window for venous pressure (in mmHg) set by user before treatment start + U32 venousPressureLimitAsymmetric_mmHg; ///< Original alarm limit asymmetric for venous pressure (in mmHg) set by user before treatment start + U32 tmpLimitWindow_mmHg; ///< Original alarm limit window for trans-membrane pressure (in mmHg) set by user before treatment start + U32 systolicBPLowAlarmLimit_mmHg; ///< Original systolic BP low alarm limit (in mmHg) set by user before treatment start + U32 systolicBPHighAlarmLimit_mmHg; ///< Original systolic BP high alarm limit (in mmHg) set by user before treatment start + U32 heartRateLowAlarmLimit_BPM; ///< Original heart rate low alarm limit (in BPM) set by user before treatment start + U32 heartRateHighAlarmLimit_BPM; ///< Original heart rate high alarm limit (in BPM) set by user before treatment start + U32 pressureAlarmPersistence_sec; ///< Original pressure alarm persistence (in seconds) set by user before treatment start F32 uFVolume_L; ///< Original ultrafiltration volume (in L) set by user before treatment start } ADJ_TREATMENT_PARAMS_T; @@ -249,44 +254,6 @@ /*********************************************************************//** * @brief - * The setTreatmentParameterS32 function sets a given signed integer treatment - * parameter to a given value. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid - * @details \b Inputs: treatmentParameters[] - * @details \b Outputs: treatmentParameters[] - * @param param ID of treatment parameter to set signed integer value for - * @param value signed integer value to assign to given treatment parameter - * @return TRUE if set was successful, FALSE if not - *************************************************************************/ -BOOL setTreatmentParameterS32( TREATMENT_PARAM_T param, S32 value ) -{ - CRITICAL_DATAS_T unsignedIntData; - BOOL result = FALSE; - - unsignedIntData.sInt = value; - result = isTreatmentParamInRange( param, unsignedIntData ); - - // Validate parameter - if ( ( param >= TREATMENT_PARAM_FIRST_INT ) && ( param <= TREATMENT_PARAM_LAST_INT ) ) - { - if ( TRUE == result ) - { - CRITICAL_DATAS_T data = treatmentParameters[ param ].data; - - data.sInt = value; - result = setCriticalData( &treatmentParameters[ param ], data ); - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_SET_S32_PARAM, (U32)param ) - } - - return result; -} - -/*********************************************************************//** - * @brief * The setTreatmentParameterF32 sets a given floating point treatment parameter * to a given value. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid @@ -354,35 +321,6 @@ /*********************************************************************//** * @brief - * The getTreatmentParameterS32 function gets the value of a given signed - * integer treatment parameter. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid - * @details \b Inputs: treatmentParameters[] - * @details \b Outputs: none - * @param param ID of treatment parameter to get signed integer value for - * @return value of given signed integer treatment parameter - *************************************************************************/ -S32 getTreatmentParameterS32( TREATMENT_PARAM_T param ) -{ - S32 result = 1; - - // Validate parameter - if ( ( param >= TREATMENT_PARAM_FIRST_INT ) && ( param <= TREATMENT_PARAM_LAST_INT ) ) - { - CRITICAL_DATAS_T data = getCriticalData( &treatmentParameters[ param ] ); - - result = data.sInt; - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_GET_S32_PARAM, (U32)param ) - } - - return result; -} - -/*********************************************************************//** - * @brief * The getTreatmentParameterF32 function gets the value of a given floating point * treatment parameter. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid @@ -412,20 +350,6 @@ /*********************************************************************//** * @brief - * The getTreatmentParameterS32DefaultValue function gets the defaultvalue - * of a given signed integer treatment parameter. - * @details \b Inputs: TREAT_PARAMS_PROPERTIES[] - * @details \b Outputs: none - * @param param ID of treatment parameter to get signed integer default value for - * @return default value of given signed integer treatment parameter - *************************************************************************/ -S32 getTreatmentParameterS32DefaultValue( TREATMENT_PARAM_T param ) -{ - return TREAT_PARAMS_PROPERTIES[ param ].def.sInt; -} - -/*********************************************************************//** - * @brief * The validateAndSetTreatmentParameters function validates received * treatment parameters. * @details \b Message \b Sent: MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE @@ -518,29 +442,30 @@ result = ( ( ( param == TREATMENT_PARAM_HDF_TREATMENT_MODE ) || ( param == TREATMENT_PARAM_SUBST_FLUID_VOLUME ) ) ? TRUE : FALSE ); break; - case TREATMENT_MODALITY_ISOLATED_UF: - switch ( param ) - { - // Treatment parameters that are not applicable for isolated UF - case TREATMENT_PARAM_HDF_TREATMENT_MODE: - case TREATMENT_PARAM_SUBST_FLUID_VOLUME: - case TREATMENT_PARAM_DIALYSATE_FLOW: - case TREATMENT_PARAM_DIALYSATE_TEMPERATURE: - case TREATMENT_PARAM_ACID_K_PLUS: - case TREATMENT_PARAM_ACID_CA2_PLUS: - case TREATMENT_PARAM_SODIUM: - case TREATMENT_PARAM_BICARBONATE: - case TREATMENT_PARAM_DRY_BICARB_CART_SIZE: - result = TRUE; - break; + // TODO uncomment in phase 2 when ISO UF feature is required +// case TREATMENT_MODALITY_ISOLATED_UF: +// switch ( param ) +// { +// // Treatment parameters that are not applicable for isolated UF +// case TREATMENT_PARAM_HDF_TREATMENT_MODE: +// case TREATMENT_PARAM_SUBST_FLUID_VOLUME: +// case TREATMENT_PARAM_DIALYSATE_FLOW: +// case TREATMENT_PARAM_DIALYSATE_TEMPERATURE: +// case TREATMENT_PARAM_ACID_K_PLUS: +// case TREATMENT_PARAM_ACID_CA2_PLUS: +// case TREATMENT_PARAM_SODIUM: +// case TREATMENT_PARAM_BICARBONATE: +// case TREATMENT_PARAM_DRY_BICARB_CART_SIZE: +// result = TRUE; +// break; +// +// // Treatment parameters applicable for isolated UF +// default: +// result = FALSE; +// break; +// } +// break; - // Treatment parameters applicable for isolated UF - default: - result = FALSE; - break; - } - break; - default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_TREATMENT_MODALITY, (U32)txType ) break; @@ -603,58 +528,61 @@ result = FALSE; } - // TODO should execute the below for loop only if result is true? - // Range check treatment parameters excluding treatment modality and up to (but not including) UF volume - for ( param = TREATMENT_PARAM_HDF_TREATMENT_MODE; param < TREATMENT_PARAM_UF_VOLUME; param++ ) + // TODO should execute the below for loop only if result is true, should I have this conditional check? + if ( TRUE == result ) { - reasons[ param ] = REQUEST_REJECT_REASON_NONE; - - // Check if not applicable parameter is not set - if ( TRUE == isTreatmentParamNotApplicable( param ) ) + // Range check treatment parameters excluding treatment modality and up to (but not including) UF volume + for ( param = TREATMENT_PARAM_HDF_TREATMENT_MODE; param < TREATMENT_PARAM_UF_VOLUME; param++ ) { - // reject if the not applicable parameter is set to non-zero - if ( FALSE == isNotApplicableTreatmentParamZero( param ) ) + reasons[ param ] = REQUEST_REJECT_REASON_NONE; + + // Check if not applicable parameter is not set + if ( TRUE == isTreatmentParamNotApplicable( param ) ) { - reasons[ param ] = REQUEST_REJECT_REASON_PARAM_NOT_APPLICABLE; - result = FALSE; - } - } - // do a range check for the applicable parameter - else - { -#if 0 -// if ( FALSE == isTreatmentParamInRange( param, stagedParams[ param ] ) ) // TODO - restore when institutional settings implemented (and remove range checks below) -// { -// reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; -// result = FALSE; -// } -#else - if ( param <= TREATMENT_PARAM_LAST_UINT ) - { - if ( ( stagedParams[ param ].uInt < TREAT_PARAMS_PROPERTIES[ param ].min.uInt ) || - ( stagedParams[ param ].uInt > TREAT_PARAMS_PROPERTIES[ param ].max.uInt ) ) + // reject if the not applicable parameter is set to non-zero + if ( FALSE == isNotApplicableTreatmentParamZero( param ) ) { - reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + reasons[ param ] = REQUEST_REJECT_REASON_PARAM_NOT_APPLICABLE; result = FALSE; } } - else if ( param <= TREATMENT_PARAM_LAST_INT ) + // do a range check for the applicable parameter + else { - if ( ( stagedParams[ param ].sInt < TREAT_PARAMS_PROPERTIES[ param ].min.sInt ) || - ( stagedParams[ param ].sInt > TREAT_PARAMS_PROPERTIES[ param ].max.sInt ) ) +#if 0 +// if ( FALSE == isTreatmentParamInRange( param, stagedParams[ param ] ) ) // TODO - restore when institutional settings implemented (and remove range checks below) +// { +// reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; +// result = FALSE; +// } +#else + if ( param <= TREATMENT_PARAM_LAST_UINT ) { - reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; - result = FALSE; + if ( ( stagedParams[ param ].uInt < TREAT_PARAMS_PROPERTIES[ param ].min.uInt ) || + ( stagedParams[ param ].uInt > TREAT_PARAMS_PROPERTIES[ param ].max.uInt ) ) + { + reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + result = FALSE; + } } - } - else - { - if ( ( stagedParams[ param ].sFlt < TREAT_PARAMS_PROPERTIES[ param ].min.sFlt ) || - ( stagedParams[ param ].sFlt > TREAT_PARAMS_PROPERTIES[ param ].max.sFlt ) ) + else if ( param <= TREATMENT_PARAM_LAST_INT ) { - reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; - result = FALSE; + if ( ( stagedParams[ param ].sInt < TREAT_PARAMS_PROPERTIES[ param ].min.sInt ) || + ( stagedParams[ param ].sInt > TREAT_PARAMS_PROPERTIES[ param ].max.sInt ) ) + { + reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + result = FALSE; + } } + else + { + if ( ( stagedParams[ param ].sFlt < TREAT_PARAMS_PROPERTIES[ param ].min.sFlt ) || + ( stagedParams[ param ].sFlt > TREAT_PARAMS_PROPERTIES[ param ].max.sFlt ) ) + { + reasons[ param ] = REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE; + result = FALSE; + } + } } } } @@ -1045,7 +973,7 @@ // } } else - { + {; SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_PARAM, (U32)param ) } @@ -1054,64 +982,6 @@ /*********************************************************************//** * @brief - * The getS32TreatmentParamLowerRangeLimit function returns the lower range - * limit for a given signed integer treatment parameter. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid - * @details \b Inputs: treatmentParameters[] - * @details \b Outputs: none - * @param param ID of parameter to get lower range limit for - * @return lower range limit for given signed integer treatment parameter - *************************************************************************/ -S32 getS32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_T param ) -{ - S32 result = 0; - - if ( param < NUM_OF_TREATMENT_PARAMS ) - { - CRITICAL_DATAS_T value; - // getInstitutionalRecordEdgeValue( param, &value, TRUE ); TODO - value = treatmentParameters[ param ].minimum; - result = value.sInt; - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_GET_S32_PARAM_MIN_LIMIT, (U32)param ) - } - - return result; -} - -/*********************************************************************//** - * @brief - * The getS32TreatmentParamUpperRangeLimit function returns the upper range - * limit for a given signed integer treatment parameter. - * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid. - * @details \b Inputs: treatmentParameters[] - * @details \b Outputs: none - * @param param ID of parameter to get upper range limit for - * @return upper range limit for given signed integer treatment parameter - *************************************************************************/ -S32 getS32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_T param ) -{ - S32 result = 0; - - if ( param < NUM_OF_TREATMENT_PARAMS ) - { - CRITICAL_DATAS_T value; -// getInstitutionalRecordEdgeValue( param, &value, FALSE ); // TODO - value = treatmentParameters[ param ].maximum; - result = value.sInt; - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_GET_S32_PARAM_MAX_LIMIT, (U32)param ) - } - - return result; -} - -/*********************************************************************//** - * @brief * The getU32TreatmentParamLowerRangeLimit function returns the lower range * limit for a given unsigned integer treatment parameter. * @details \b Alarm: ALARM_ID_TD_SOFTWARE_FAULT if given param is invalid. @@ -1228,23 +1098,6 @@ /*********************************************************************//** * @brief - * The getS32DefaultTreatmentParamEdge function returns the min or max of - * the default treatment parameters - * @details \b Inputs: TREAT_PARAMS_PROPERTIES[] - * @details \b Outputs: none - * @param param ID of parameter - * @param isMin to indicate whether minimum is needed for maximum - * @return the requested min or max value - *************************************************************************/ -S32 getS32DefaultTreatmentParamEdge( TREATMENT_PARAM_T param, BOOL isMin ) -{ - S32 value = ( TRUE == isMin ? TREAT_PARAMS_PROPERTIES[ param ].min.sInt : TREAT_PARAMS_PROPERTIES[ param ].max.sInt ); - - return value; -} - -/*********************************************************************//** - * @brief * The getU32DefaultTreatmentParamEdge function returns the min or max of * the default treatment parameters * @details \b Inputs: TREAT_PARAMS_PROPERTIES[] @@ -1312,14 +1165,10 @@ { result = setTreatmentParameterU32( (TREATMENT_PARAM_T)payload.paramID, payload.value.uInt ); } - else if ( (TREATMENT_PARAM_T)payload.paramID >= TREATMENT_PARAM_FIRST_F32 ) + else { result = setTreatmentParameterF32( (TREATMENT_PARAM_T)payload.paramID, payload.value.sFlt ); } - else - { - result = setTreatmentParameterS32( (TREATMENT_PARAM_T)payload.paramID, payload.value.sInt ); - } } }