/* TargetLimits_Pkg::v_SBI2 */ void v_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::v_SBI2::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_SBI2::V_est */ V_internal_real_Type_SDM_Types_Pkg V_est, /* TargetLimits_Pkg::v_SBI2::V_target */ V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_SBI2::V_bec */ V_internal_real_Type_SDM_Types_Pkg V_bec, /* TargetLimits_Pkg::v_SBI2::D_maxsafefront */ L_internal_real_Type_SDM_Types_Pkg D_maxsafefront, /* TargetLimits_Pkg::v_SBI2::D_bec */ L_internal_real_Type_SDM_Types_Pkg D_bec, /* TargetLimits_Pkg::v_SBI2::T_bs2 */ T_internal_real_Type_SDM_Types_Pkg T_bs2, /* TargetLimits_Pkg::v_SBI2::V_SBI1 */ V_internal_real_Type_SDM_Types_Pkg *V_SBI1, /* TargetLimits_Pkg::v_SBI2::valid */ kcg_bool *valid) { V_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::v_SBI2::_L5 */ kcg_real _L5; /* TargetLimits_Pkg::v_SBI2::_L11 */ kcg_bool _L11; /* TargetLimits_Pkg::v_SBI2::_L19 */ L_internal_real_Type_SDM_Types_Pkg _L19; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L11, &_L19); _L5 = D_bec + D_maxsafefront + V_est * T_bs2; _L11 = _L19 > _L5; if (_L11) { /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L5, valid, &tmp); *V_SBI1 = tmp - (V_bec - V_est); } else { *valid = kcg_false; *V_SBI1 = V_target; } }
/* TargetLimits_Pkg::d_limits */ void d_limits_TargetLimits_Pkg( /* TargetLimits_Pkg::d_limits::V_est */ V_internal_real_Type_SDM_Types_Pkg V_est, /* TargetLimits_Pkg::d_limits::SBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *SBDcurve, /* TargetLimits_Pkg::d_limits::SBI2valid */ kcg_bool SBI2valid, /* TargetLimits_Pkg::d_limits::D_SBI2_V_est */ L_internal_real_Type_SDM_Types_Pkg D_SBI2_V_est, /* TargetLimits_Pkg::d_limits::D_estfront */ L_internal_real_Type_SDM_Types_Pkg D_estfront, /* TargetLimits_Pkg::d_limits::D_maxsafefront */ L_internal_real_Type_SDM_Types_Pkg D_maxsafefront, /* TargetLimits_Pkg::d_limits::T */ T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::d_limits::GUIcurve */ ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve, /* TargetLimits_Pkg::d_limits::guiCurveEnabled */ kcg_bool guiCurveEnabled, /* TargetLimits_Pkg::d_limits::D_I */ L_internal_real_Type_SDM_Types_Pkg *D_I, /* TargetLimits_Pkg::d_limits::D_P */ L_internal_real_Type_SDM_Types_Pkg *D_P, /* TargetLimits_Pkg::d_limits::D_W */ L_internal_real_Type_SDM_Types_Pkg *D_W, /* TargetLimits_Pkg::d_limits::D_FLOI */ L_internal_real_Type_SDM_Types_Pkg *D_FLOI, /* TargetLimits_Pkg::d_limits::FLOIisSBI1 */ kcg_bool *FLOIisSBI1) { /* TargetLimits_Pkg::d_limits */ static kcg_bool tmp1; /* TargetLimits_Pkg::d_limits */ static L_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::d_limits::_L31 */ static kcg_bool _L31; /* TargetLimits_Pkg::d_limits::_L37 */ static kcg_bool _L37; /* 1 */ d_SBI1_TargetLimits_Pkg(SBDcurve, V_est, T, &tmp1, &tmp); *FLOIisSBI1 = /* 2 */ isLEValid_TargetLimits_Pkg( tmp1, tmp - D_estfront, SBI2valid, D_SBI2_V_est - D_maxsafefront); /* 1 */ if (*FLOIisSBI1) { *D_FLOI = tmp; } else { *D_FLOI = D_SBI2_V_est; } *D_W = *D_FLOI - T_warning_SDM_Types_Pkg * V_est; /* ck_guiCurveEnabled */ if (guiCurveEnabled) { /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(GUIcurve, V_est, &tmp1, &tmp); } else { tmp1 = kcg_false; tmp = 0.0; } /* 1 */ selectLEValid_TargetLimits_Pkg( kcg_true, *D_FLOI - V_est * T_driver_SDM_Types_Pkg, tmp1, tmp, &_L31, &_L37, D_P); *D_I = *D_P - V_est * (*T).indication; }
/* TargetLimits_Pkg::d_SBI1 */ void d_SBI1_TargetLimits_Pkg( /* TargetLimits_Pkg::d_SBI1::SBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *SBDcurve, /* TargetLimits_Pkg::d_SBI1::V */V_internal_real_Type_SDM_Types_Pkg V, /* TargetLimits_Pkg::d_SBI1::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::d_SBI1::valid */kcg_bool *valid, /* TargetLimits_Pkg::d_SBI1::D_SBD1 */L_internal_real_Type_SDM_Types_Pkg *D_SBD1) { /* TargetLimits_Pkg::d_SBI1::_L5 */ static L_internal_real_Type_SDM_Types_Pkg _L5; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(SBDcurve, V, valid, &_L5); *D_SBD1 = _L5 - V * (*T).bs1; }
/* TargetLimits_Pkg::d_SBI2 */ void d_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::d_SBI2::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::d_SBI2::bec */ bec_t_TargetLimits_Pkg *bec, /* TargetLimits_Pkg::d_SBI2::v_est */ V_internal_real_Type_SDM_Types_Pkg v_est, /* TargetLimits_Pkg::d_SBI2::T */ T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::d_SBI2::valid */ kcg_bool *valid, /* TargetLimits_Pkg::d_SBI2::D_SBI2 */ L_internal_real_Type_SDM_Types_Pkg *D_SBI2) { /* TargetLimits_Pkg::d_SBI2::_L70 */ static L_internal_real_Type_SDM_Types_Pkg _L70; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, (*bec).v, valid, &_L70); *D_SBI2 = _L70 - (*bec).d - v_est * (*T).bs2; }
/* TargetLimits_Pkg::d_SBI2 */ void d_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::d_SBI2::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::d_SBI2::V_bec */ V_internal_real_Type_SDM_Types_Pkg V_bec, /* TargetLimits_Pkg::d_SBI2::D_bec */ L_internal_real_Type_SDM_Types_Pkg D_bec, /* TargetLimits_Pkg::d_SBI2::v_est */ V_internal_real_Type_SDM_Types_Pkg v_est, /* TargetLimits_Pkg::d_SBI2::T_bs2 */ T_internal_real_Type_SDM_Types_Pkg T_bs2, /* TargetLimits_Pkg::d_SBI2::valid */ kcg_bool *valid, /* TargetLimits_Pkg::d_SBI2::D_SBI2 */ L_internal_real_Type_SDM_Types_Pkg *D_SBI2) { /* TargetLimits_Pkg::d_SBI2::_L70 */ L_internal_real_Type_SDM_Types_Pkg _L70; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_bec, valid, &_L70); *D_SBI2 = _L70 - D_bec - v_est * T_bs2; }
/* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA */ L_internal_real_Type_SDM_Types_Pkg CalculateEBDFootForMRSPorLOA_CalcBrakingCurves_Pkg_internalOperators( /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::IsMRSPorLOATarget */ kcg_bool IsMRSPorLOATarget, /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::target */ Target_real_T_TargetManagement_types *target, /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::aSafe */ ASafe_T_CalcBrakingCurves_types *aSafe) { BCAccumulator_type_CalcBrakingCurves_Pkg tmp1; kcg_int i; ParabolaCurve_T_CalcBrakingCurves_types tmp; /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::_L5 */ BCAccumulator_type_CalcBrakingCurves_Pkg _L5; /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::_L10 */ kcg_bool _L10; /* CalcBrakingCurves_Pkg::internalOperators::CalculateEBDFootForMRSPorLOA::Output1 */ L_internal_real_Type_SDM_Types_Pkg Output1; /* InitilizeAccForEBDFootCalc */ InitilizeAccForEBDFootCalc_CalcBrakingCurves_Pkg_internalOperators( target, aSafe, &_L5); if (IsMRSPorLOATarget) { for (i = 0; i < 24; i++) { kcg_copy_BCAccumulator_type_CalcBrakingCurves_Pkg(&tmp1, &_L5); /* 1 */ BCFoldOperatorForward_CalcBrakingCurves_Pkg_internalOperators( i, &tmp1, aSafe, (*target).speed, &_L10, &_L5); if (!_L10) { break; } } } /* 1 */ SortByDistances_CalcBrakingCurves_Pkg_internalOperators(&_L5.BC, &tmp); /* 1 */ getLocationOnCurve_CalcBrakingCurves_types( &tmp, (*target).speed, &_L10, &Output1); return Output1; }
/* TargetLimits_Pkg::d_EBI_non_est */ void d_EBI_non_est_TargetLimits_Pkg( /* TargetLimits_Pkg::d_EBI_non_est::V */ V_internal_real_Type_SDM_Types_Pkg V, /* TargetLimits_Pkg::d_EBI_non_est::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::d_EBI_non_est::T */ T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::d_EBI_non_est::D_SBI2 */ L_internal_real_Type_SDM_Types_Pkg *D_SBI2, /* TargetLimits_Pkg::d_EBI_non_est::valid */ kcg_bool *valid) { /* TargetLimits_Pkg::d_EBI_non_est */ V_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::d_EBI_non_est::_L4 */ L_internal_real_Type_SDM_Types_Pkg _L4; /* TargetLimits_Pkg::d_EBI_non_est::_L6 */ kcg_real _L6; /* TargetLimits_Pkg::d_EBI_non_est::_L19 */ kcg_bool _L19; _L19 = !(*T).inhComp; /* ck__L19 */ if (_L19) { tmp = /* 1 */ f_41_TargetLimits_Pkg(V); } else { tmp = 0.0; } _L6 = tmp + V; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, _L6, valid, &_L4); *D_SBI2 = _L4 - _L6 * ((*T).Traction + (*T).berem) - V * (*T).bs2; }
/* TargetLimits_Pkg::v_SBI2 */ void v_SBI2_TargetLimits_Pkg( /* TargetLimits_Pkg::v_SBI2::EBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_SBI2::V_est */V_internal_real_Type_SDM_Types_Pkg V_est, /* TargetLimits_Pkg::v_SBI2::V_target */V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_SBI2::bec */bec_t_TargetLimits_Pkg *bec, /* TargetLimits_Pkg::v_SBI2::D_maxsafefront */L_internal_real_Type_SDM_Types_Pkg D_maxsafefront, /* TargetLimits_Pkg::v_SBI2::t_driver */T_internal_real_Type_SDM_Types_Pkg t_driver, /* TargetLimits_Pkg::v_SBI2::guiCurveEnabled */kcg_bool guiCurveEnabled, /* TargetLimits_Pkg::v_SBI2::GUIcurve */ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve, /* TargetLimits_Pkg::v_SBI2::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_SBI2::valid */kcg_bool *valid, /* TargetLimits_Pkg::v_SBI2::V_SBI2 */V_internal_real_Type_SDM_Types_Pkg *V_SBI2) { static kcg_bool tmp3; static V_internal_real_Type_SDM_Types_Pkg tmp2; static kcg_bool tmp1; static V_internal_real_Type_SDM_Types_Pkg tmp; /* TargetLimits_Pkg::v_SBI2::_L33 */ static kcg_bool _L33; /* TargetLimits_Pkg::v_SBI2::_L49 */ static kcg_real _L49; /* TargetLimits_Pkg::v_SBI2::_L48 */ static kcg_bool _L48; /* TargetLimits_Pkg::v_SBI2::_L47 */ static kcg_bool _L47; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L33, &tmp); _L49 = D_maxsafefront + V_est * ((*T).bs2 + t_driver) + (*bec).d; if (guiCurveEnabled) { /* 3 */ getLocationOnCurve_CalcBrakingCurves_types( GUIcurve, V_target, &tmp3, &tmp2); } else { tmp3 = kcg_false; tmp2 = 0.0; } _L33 = (tmp3 & (tmp2 > D_maxsafefront)) | (tmp > _L49); tmp1 = tmp3 & _L33; if (tmp1) { /* 2 */ getSpeedOnCurve_CalcBrakingCurves_types( GUIcurve, D_maxsafefront, &tmp3, &tmp2); } else { tmp3 = kcg_false; tmp2 = 0.0; } if (_L33) { /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L49, &tmp1, &tmp); } else { tmp1 = kcg_false; tmp = 0.0; } /* 1 */ selectLEValid_TargetLimits_Pkg( tmp3, tmp2, tmp1, tmp - ((*bec).v - V_est), &_L47, &_L48, &_L49); *valid = !_L33 | _L48; if (_L33) { *V_SBI2 = _L49; } else { *V_SBI2 = V_target; } }
/* TargetLimits_Pkg::v_ReleaseOnboardIterator */ void v_ReleaseOnboardIterator_TargetLimits_Pkg( /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release */V_internal_real_Type_SDM_Types_Pkg V_release, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::EBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_ura */V_internal_real_Type_SDM_Types_Pkg V_ura, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_target */V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::D_tripEOA */L_internal_real_Type_SDM_Types_Pkg D_tripEOA, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::run_condition */kcg_bool *run_condition, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release_next */V_internal_real_Type_SDM_Types_Pkg *V_release_next) { /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L20 */ static kcg_bool _L20; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L24 */ static kcg_real _L24; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L25 */ static kcg_real _L25; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L28 */ static V_internal_real_Type_SDM_Types_Pkg _L28; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L32 */ static L_internal_real_Type_SDM_Types_Pkg _L32; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L31 */ static kcg_bool _L31; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L40 */ static kcg_real _L40; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L50 */ static kcg_bool _L50; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L31, &_L32); _L20 = !(*T).inhComp; _L24 = /* 1 */ f_41_TargetLimits_Pkg(V_release); if (_L20) { if (V_ura >= _L24) { _L40 = V_ura; } else { _L40 = _L24; } } else { _L40 = 0.0; } _L24 = D_tripEOA + (V_release + _L40) * ((*T).berem + (*T).Traction); /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, _L24, &_L20, &_L28); _L50 = _L31 & _L20; _L25 = _L28 - _L40; if ((_L32 <= _L24) | (_L25 <= V_target)) { _L28 = V_target; } else { _L28 = _L25; } if (_L50) { *V_release_next = _L28; } else { *V_release_next = - 1.0; } _L40 = _L28 - V_release; if (0. <= _L40) { _L24 = _L40; } else { _L24 = - _L40; } *run_condition = _L50 & !(_L24 <= 1.0 / 3.6); }
/* TargetLimits_Pkg::v_ReleaseOnboardIterator */ void v_ReleaseOnboardIterator_TargetLimits_Pkg( /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release */ V_internal_real_Type_SDM_Types_Pkg V_release, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::EBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_ura */ V_internal_real_Type_SDM_Types_Pkg V_ura, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_target */ V_internal_real_Type_SDM_Types_Pkg V_target, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::D_tripEOA */ L_internal_real_Type_SDM_Types_Pkg D_tripEOA, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::T */ T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::run_condition */ kcg_bool *run_condition, /* TargetLimits_Pkg::v_ReleaseOnboardIterator::V_release_next */ V_internal_real_Type_SDM_Types_Pkg *V_release_next) { /* TargetLimits_Pkg::v_ReleaseOnboardIterator */ static kcg_real tmp; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::v_delta0rsob */ static V_internal_real_Type_SDM_Types_Pkg v_delta0rsob; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L21 */ static V_internal_real_Type_SDM_Types_Pkg _L21; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L20 */ static kcg_bool _L20; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L32 */ static L_internal_real_Type_SDM_Types_Pkg _L32; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L31 */ static kcg_bool _L31; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L40 */ static kcg_real _L40; /* TargetLimits_Pkg::v_ReleaseOnboardIterator::_L50 */ static kcg_bool _L50; _L21 = /* 1 */ f_41_TargetLimits_Pkg(V_release); _L20 = !(*T).inhComp; /* ck__L10 */ if (_L20) { /* 2 */ if (V_ura >= _L21) { v_delta0rsob = V_ura; } else { v_delta0rsob = _L21; } } else { v_delta0rsob = 0.0; } tmp = D_tripEOA + (V_release + v_delta0rsob) * ((*T).berem + (*T).Traction); /* 1 */ getSpeedOnCurve_CalcBrakingCurves_types(EBDcurve, tmp, &_L20, &_L21); _L40 = _L21 - v_delta0rsob; /* 1 */ getLocationOnCurve_CalcBrakingCurves_types(EBDcurve, V_target, &_L31, &_L32); /* 1 */ if ((_L32 <= tmp) | (_L40 <= V_target)) { _L21 = V_target; } else { _L21 = _L40; } _L40 = _L21 - V_release; _L50 = _L31 & _L20; /* 2 */ if (0. <= _L40) { tmp = _L40; } else { tmp = - _L40; } *run_condition = _L50 & !(tmp <= 1.0 / 3.6); /* 2 */ if (_L50) { *V_release_next = _L21; } else { *V_release_next = - 1.0; } }