Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -reef41b7363d82763095a1317f1757f360f0d9ec1 -rf8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision eef41b7363d82763095a1317f1757f360f0d9ec1) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision f8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab) @@ -254,9 +254,9 @@ // initPostTreatmentMode(); resetAirTrap(); // Send UI default pressure settings since user is not asked to set them. -// respRecord.artPresLimitWindowmmHg = getTreatmentParameterS32DefaultValue( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); -// respRecord.venPresLimitWindowmmHg = getTreatmentParameterS32DefaultValue( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); -// respRecord.venPresLimitAsymmetricmmHg = getTreatmentParameterS32DefaultValue( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); +// respRecord.artPresLimitWindowmmHg = getTreatmentParameterU32DefaultValue( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ); +// respRecord.venPresLimitWindowmmHg = getTreatmentParameterU32DefaultValue( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ); +// respRecord.venPresLimitAsymmetricmmHg = getTreatmentParameterU32DefaultValue( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); // sendPressureLimitsChangeResponse( &respRecord ); // Start treatment workflow with pretreatment mode requestNewOperationMode( MODE_PRET ); Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -reef41b7363d82763095a1317f1757f360f0d9ec1 -rf8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision eef41b7363d82763095a1317f1757f360f0d9ec1) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision f8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab) @@ -1080,7 +1080,7 @@ { SALINE_BOLUS_DATA_PAYLOAD_T data; - data.tgtSalineVolumeMl = getTreatmentParameterU32( TREATMENT_PARAM_SALINE_BOLUS_VOLUME ); + data.tgtSalineVolumeMl = getTreatmentParameterU32( TREATMENT_PARAM_FLUID_BOLUS_VOLUME ); data.cumSalineVolumeMl = 0.0F; // TODO data.bolSalineVolumeMl = 0.0F; // TODO Index: firmware/App/Monitors/Pressures.c =================================================================== diff -u -reef41b7363d82763095a1317f1757f360f0d9ec1 -rf8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab --- firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision eef41b7363d82763095a1317f1757f360f0d9ec1) +++ firmware/App/Monitors/Pressures.c (.../Pressures.c) (revision f8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab) @@ -484,10 +484,10 @@ if ( PRESSURE_LIMITS_STATE_STABLE == currPresLimitsState ) { // apply pressure windows when stable - S32 artOffset = getTreatmentParameterS32( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ) / 2; - S32 venMinOffset = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); - S32 venMaxOffset = getTreatmentParameterS32( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ) - venMinOffset; - S32 tmpOffset = getTreatmentParameterS32( TREATMENT_PARAM_TMP_PRES_LIMIT_WINDOW ) / 2; + S32 artOffset = getTreatmentParameterU32( TREATMENT_PARAM_ART_PRES_LIMIT_WINDOW ) / 2; + S32 venMinOffset = getTreatmentParameterU32( TREATMENT_PARAM_VEN_PRES_LIMIT_ASYMMETRIC ); + S32 venMaxOffset = getTreatmentParameterU32( TREATMENT_PARAM_VEN_PRES_LIMIT_WINDOW ) - venMinOffset; + S32 tmpOffset = getTreatmentParameterU32( TREATMENT_PARAM_TMP_PRES_LIMIT_WINDOW ) / 2; currentArterialMinLimit = stableArterialPressure - artOffset; currentArterialMinLimit = MAX( currentArterialMinLimit, ARTERIAL_PRESSURE_LIMIT_MIN_MMHG ); Index: firmware/App/Services/TxParams.c =================================================================== diff -u -r6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543 -rf8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab --- firmware/App/Services/TxParams.c (.../TxParams.c) (revision 6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543) +++ firmware/App/Services/TxParams.c (.../TxParams.c) (revision f8531a3d3a626d68f6f4c5a01babadbdfa7dc1ab) @@ -481,6 +481,55 @@ /*********************************************************************//** * @brief + * The isTreatmentParamApplicable function checks whether received + * treatment parameters applicable for a given treatment type. + * @details \b Inputs: stagedParams[] + * @details \b Outputs: none + * @param reasons Pointer to array of reject reason codes for each parameter + * @return TRUE if treatment parameters is applicable, FALSE if not + *************************************************************************/ +static BOOL isTreatmentParamApplicable( TREATMENT_TYPE_T txType, TREATMENT_PARAM_T param ) +{ + BOOL result = FALSE; + + switch ( txType ) + { + case TREATMENT_MODALITY_HDF: + result = TRUE; + break; + + case TREATMENT_MODALITY_HD: + if ( ( param == TREATMENT_PARAM_HDF_TREATMENT_MODE ) || ( param == TREATMENT_PARAM_SUBST_FLUID_VOLUME ) ) + { + result = FALSE; + } + else + { + result = TRUE; + } + break; + + case TREATMENT_MODALITY_ISOLATED_UF: + if ( TRUE ) // TODO add condition for all 9 params + { + result = FALSE; + } + else + { + result = TRUE; + } + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_PARAM, (U32)txType ) // TODO add new INVALID_TREATMENT_TYPE in SW fault + break; + } + + return result; +} + +/*********************************************************************//** + * @brief * The checkTreatmentParamsInRange function checks whether received * treatment parameters are in range. * @details \b Inputs: stagedParams[] @@ -551,27 +600,27 @@ { BOOL result = TRUE; U32 txDur = stagedParams[ TREATMENT_PARAM_TREATMENT_DURATION ].uInt; - U32 hepST = stagedParams[ TREATMENT_PARAM_HEPARIN_STOP_TIME ].uInt; + U32 hepST = stagedParams[ TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ].uInt; F32 hepDR = stagedParams[ TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ].sFlt; F32 hepBV = stagedParams[ TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ].sFlt; F32 txVol = hepBV + ( hepDR * ( hepST / (F32)SEC_PER_MIN ) ) + SYRINGE_PUMP_PRIME_VOLUME_ML + SYRINGE_PUMP_FILL_VOLUME_OFFSET_ML; // Verify Heparin stop time is only set if Heparin dispense rate is set if ( ( hepST > 0 ) && ( hepDR < NEARLY_ZERO ) ) { - reasons[ TREATMENT_PARAM_HEPARIN_STOP_TIME ] = REQUEST_REJECT_REASON_HEPARIN_STOP_TIME_WITH_NO_DISPENSE; + reasons[ TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ] = REQUEST_REJECT_REASON_HEPARIN_STOP_TIME_WITH_NO_DISPENSE; result = FALSE; } // Verify Heparin stop time does not exceed Tx duration else if ( hepST > txDur ) { - reasons[ TREATMENT_PARAM_HEPARIN_STOP_TIME ] = REQUEST_REJECT_REASON_HEPARIN_STOP_TIME_EXCEEDS_DURATION; + reasons[ TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ] = REQUEST_REJECT_REASON_HEPARIN_STOP_TIME_EXCEEDS_DURATION; result = FALSE; } // Verify Heparin stop time does not exceed max 10 mL Heparin volume else if ( txVol > MAX_HEPARIN_VOLUME_ML ) { - reasons[ TREATMENT_PARAM_HEPARIN_STOP_TIME ] = REQUEST_REJECT_REASON_HEPARIN_VOLUME_EXCEEDS_10_ML; + reasons[ TREATMENT_PARAM_HEPARIN_DELIVERY_DURATION ] = REQUEST_REJECT_REASON_HEPARIN_VOLUME_EXCEEDS_10_ML; result = FALSE; }