Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -r07a352d02dc7e062dd5b6742891ac0b57679858c -rf88ce1aa5a00106b6ba51a625fe4c1d8f0408cfd --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 07a352d02dc7e062dd5b6742891ac0b57679858c) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision f88ce1aa5a00106b6ba51a625fe4c1d8f0408cfd) @@ -54,20 +54,20 @@ /// Treatment parameter properties (types, ranges and defaults). const TREATMENT_PARAMS_PROPERTIES_T treatParamsProperties[ NUM_OF_TREATMENT_PARAMS ] = { - { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=1500}, {.uInt=10} }, // TREATMENT_PARAM_BLOOD_FLOW - { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=1600}, {.uInt=10} }, // TREATMENT_PARAM_DIALYSATE_FLOW - { CRITICAL_DATA_TYPE_U32, {.uInt=60}, {.uInt=1480}, {.uInt=10} }, // TREATMENT_PARAM_TREATMENT_DURATION - { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=1120}, {.uInt=10} }, // TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME - { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=1300}, {.uInt=1100} }, // TREATMENT_PARAM_SALINE_BOLUS_VOLUME - { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=12}, {.uInt=10} }, // TREATMENT_PARAM_ACID_CONCENTRATE - { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=10}, {.uInt=10} }, // TREATMENT_PARAM_BICARB_CONCENTRATE - { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=13}, {.uInt=10} }, // TREATMENT_PARAM_DIALYZER_TYPE + { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=500}, {.uInt=100} }, // TREATMENT_PARAM_BLOOD_FLOW + { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=600}, {.uInt=100} }, // TREATMENT_PARAM_DIALYSATE_FLOW + { CRITICAL_DATA_TYPE_U32, {.uInt=60}, {.uInt=480}, {.uInt=240} }, // TREATMENT_PARAM_TREATMENT_DURATION + { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=120}, {.uInt=0} }, // TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME + { CRITICAL_DATA_TYPE_U32, {.uInt=100}, {.uInt=300}, {.uInt=100} }, // TREATMENT_PARAM_SALINE_BOLUS_VOLUME + { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=2}, {.uInt=0} }, // TREATMENT_PARAM_ACID_CONCENTRATE + { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=0}, {.uInt=0} }, // TREATMENT_PARAM_BICARB_CONCENTRATE + { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=3}, {.uInt=0} }, // TREATMENT_PARAM_DIALYZER_TYPE + { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=60}, {.uInt=30} }, // TREATMENT_PARAM_BP_MEAS_INTERVAL + { CRITICAL_DATA_TYPE_U32, {.uInt=50}, {.uInt=150}, {.uInt=75} }, // TREATMENT_PARAM_RINSEBACK_FLOW_RATE { CRITICAL_DATA_TYPE_S32, {.sInt=-300}, {.sInt=200}, {.sInt=-300} }, // TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT { CRITICAL_DATA_TYPE_S32, {.sInt=-300}, {.sInt=200}, {.sInt=100} }, // TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT { CRITICAL_DATA_TYPE_S32, {.sInt=-100}, {.sInt=600}, {.sInt=-100} }, // TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT { CRITICAL_DATA_TYPE_S32, {.sInt=-100}, {.sInt=600}, {.sInt=400} }, // TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT - { CRITICAL_DATA_TYPE_U32, {.uInt=0}, {.uInt=160}, {.uInt=130} }, // TREATMENT_PARAM_BP_MEAS_INTERVAL - { CRITICAL_DATA_TYPE_U32, {.uInt=50}, {.uInt=1150}, {.uInt=175} }, // TREATMENT_PARAM_RINSEBACK_FLOW_RATE { CRITICAL_DATA_TYPE_F32, {.sFlt=0.0}, {.sFlt=1.0}, {.sFlt=0.0} }, // TREATMENT_PARAM_HEPARIN_DISPENSE_RATE { CRITICAL_DATA_TYPE_F32, {.sFlt=0.0}, {.sFlt=2.0}, {.sFlt=0.0} }, // TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME { CRITICAL_DATA_TYPE_F32, {.sFlt=35.0}, {.sFlt=38.0}, {.sFlt=37.0} }, // TREATMENT_PARAM_DIALYSATE_TEMPERATURE @@ -94,6 +94,7 @@ static BOOL checkTreatmentParamsDependencies( U32 *reasons ); static BOOL isTreatmentParamInRange( TREATMENT_PARAM_T param, CRITICAL_DATAS_T value ); static void extractTreatmentParamsFromPayload( TREATMENT_PARAMS_DATA_PAYLOAD_T payload ); +static void sendTreatmentParamsResponse( BOOL valid, U32 *reasons ); /*********************************************************************//** * @brief @@ -367,8 +368,7 @@ } // respond to set treatment parameters request message - sendTreatmentParametersResponseMsg( paramsAreValid, (U08*)(&rejReasons[0]), - ( NUM_OF_TREATMENT_PARAMS - 1 ) * sizeof(U32) ); // UF vol. param not included in reject reasons + sendTreatmentParamsResponse( paramsAreValid, &rejReasons[0] ); return paramsAreValid; } @@ -537,6 +537,43 @@ /*********************************************************************//** * @brief + * The sendTreatmentParamsResponse function responds to the treatment parameters \n + * received from the UI. An over-all ok/rejected flag as well as individual reject \n + * reason codes for each parameter are provided back to the UI. + * @details + * Inputs : none + * Outputs : Response to treatment parameters message constructed and sent. + * @param valid 1 if valid, 0 if not + * @param reasons array of reject reason codes for each parameter (0=not rejected) + * @return none + *************************************************************************/ +static void sendTreatmentParamsResponse( BOOL valid, U32 *reasons ) +{ + U32 respPayload[NUM_OF_TREATMENT_PARAMS]; + + respPayload[ 0 ] = reasons[ TREATMENT_PARAM_BLOOD_FLOW ]; + respPayload[ 1 ] = reasons[ TREATMENT_PARAM_DIALYSATE_FLOW ]; + respPayload[ 2 ] = reasons[ TREATMENT_PARAM_TREATMENT_DURATION ]; + respPayload[ 3 ] = reasons[ TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ]; + respPayload[ 4 ] = reasons[ TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ]; + respPayload[ 5 ] = reasons[ TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ]; + respPayload[ 6 ] = reasons[ TREATMENT_PARAM_SALINE_BOLUS_VOLUME ]; + respPayload[ 7 ] = reasons[ TREATMENT_PARAM_ACID_CONCENTRATE ]; + respPayload[ 8 ] = reasons[ TREATMENT_PARAM_BICARB_CONCENTRATE ]; + respPayload[ 9 ] = reasons[ TREATMENT_PARAM_DIALYZER_TYPE ]; + respPayload[ 10 ] = reasons[ TREATMENT_PARAM_DIALYSATE_TEMPERATURE ]; + respPayload[ 11 ] = reasons[ TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT ]; + respPayload[ 12 ] = reasons[ TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT ]; + respPayload[ 13 ] = reasons[ TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT ]; + respPayload[ 14 ] = reasons[ TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT ]; + respPayload[ 15 ] = reasons[ TREATMENT_PARAM_BP_MEAS_INTERVAL ]; + respPayload[ 16 ] = reasons[ TREATMENT_PARAM_RINSEBACK_FLOW_RATE ]; + + sendTreatmentParametersResponseMsg( valid, (U08*)(&respPayload[0]), ( NUM_OF_TREATMENT_PARAMS - 1 ) * sizeof(U32) ); // UF vol. param not included in reject reasons +} + +/*********************************************************************//** + * @brief * The setTreatmentParameterU32 function sets a given unsigned integer \n * treatment parameter to a given value. * @details