/* SDM_Types_Pkg::getMRSFromMRSP */ V_internal_real_Type_SDM_Types_Pkg getMRSFromMRSP_SDM_Types_Pkg( /* SDM_Types_Pkg::getMRSFromMRSP::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP, /* SDM_Types_Pkg::getMRSFromMRSP::d_max_safe_front */ L_internal_real_Type_SDM_Types_Pkg d_max_safe_front) { /* SDM_Types_Pkg::getMRSFromMRSP */ static MRSP_internal_section_T_TargetManagement_types tmp; /* SDM_Types_Pkg::getMRSFromMRSP */ static MRSP_internal_section_T_TargetManagement_types acc; static kcg_int i; /* SDM_Types_Pkg::getMRSFromMRSP::V_MRSP */ static V_internal_real_Type_SDM_Types_Pkg V_MRSP; kcg_copy_MRSP_internal_section_T_TargetManagement_types(&tmp, &(*MRSP)[0]); for (i = 0; i < 110; i++) { kcg_copy_MRSP_internal_section_T_TargetManagement_types(&acc, &tmp); /* 1 */ if ((*MRSP)[i].valid & ((*MRSP)[i].Loc_Abs <= d_max_safe_front)) { kcg_copy_MRSP_internal_section_T_TargetManagement_types( &tmp, &(*MRSP)[i]); } else { kcg_copy_MRSP_internal_section_T_TargetManagement_types(&tmp, &acc); } } V_MRSP = tmp.MRS; return V_MRSP; }
/* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt */ void extractTargetsFromMRSPInt_TargetManagement_pkg_internalOperators( /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::index */kcg_int index, /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::ACCU */extractTargetsMRSPACC_TargetManagement_pkg *ACCU, /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::MRSP */MRSP_internal_T_TargetManagement_types *MRSP, /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::endCondition */kcg_bool *endCondition, /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::ACCUout */extractTargetsMRSPACC_TargetManagement_pkg *ACCUout) { /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::_L14 */ static MRSP_internal_section_T_TargetManagement_types _L14; /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::_L15 */ static MRSP_internal_section_T_TargetManagement_types _L15; /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSPInt::_L34 */ static kcg_int _L34; if ((0 <= index + 1) & (index + 1 < 110)) { kcg_copy_MRSP_internal_section_T_TargetManagement_types( &_L15, &(*MRSP)[index + 1]); } else { kcg_copy_MRSP_internal_section_T_TargetManagement_types( &_L15, (MRSP_internal_section_T_TargetManagement_types *) &emptyMRSPSection_TargetManagement_pkg); } *endCondition = _L15.valid; _L34 = 1 + (*ACCU).lastInsertedTargetIndex; if ((0 <= index) & (index < 110)) { kcg_copy_MRSP_internal_section_T_TargetManagement_types( &_L14, &(*MRSP)[index]); } else { kcg_copy_MRSP_internal_section_T_TargetManagement_types( &_L14, (MRSP_internal_section_T_TargetManagement_types *) &emptyMRSPSection_TargetManagement_pkg); } if ((_L14.MRS > _L15.MRS) & _L14.valid & *endCondition) { (*ACCUout).lastInsertedTargetIndex = _L34; kcg_copy_Target_list_MRSP_real_T_TargetManagement_types( &(*ACCUout).targetList, &(*ACCU).targetList); if ((0 <= _L34) & (_L34 < 110)) { (*ACCUout).targetList[_L34].targetType = MRSP_TargetManagement_types; (*ACCUout).targetList[_L34].distance = _L15.Loc_Abs; (*ACCUout).targetList[_L34].speed = _L15.MRS; } } else { kcg_copy_extractTargetsMRSPACC_TargetManagement_pkg(ACCUout, ACCU); } }
/* TargetLimits_Pkg::MRSPPreindicationSelector */ void MRSPPreindicationSelector_TargetLimits_Pkg( /* TargetLimits_Pkg::MRSPPreindicationSelector::MRSP */MRSP_internal_T_TargetManagement_types *MRSP, /* TargetLimits_Pkg::MRSPPreindicationSelector::EBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *EBDcurve, /* TargetLimits_Pkg::MRSPPreindicationSelector::SBDcurve */ParabolaCurve_T_CalcBrakingCurves_types *SBDcurve, /* TargetLimits_Pkg::MRSPPreindicationSelector::GUIcurve */ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve, /* TargetLimits_Pkg::MRSPPreindicationSelector::guiCurveEnabled */kcg_bool guiCurveEnabled, /* TargetLimits_Pkg::MRSPPreindicationSelector::isEoA */kcg_bool isEoA, /* TargetLimits_Pkg::MRSPPreindicationSelector::T */T_trac_t_TargetLimits_Pkg *T, /* TargetLimits_Pkg::MRSPPreindicationSelector::D_preindication */L_internal_real_Type_SDM_Types_Pkg *D_preindication, /* TargetLimits_Pkg::MRSPPreindicationSelector::D_I_V_MRSP */L_internal_real_Type_SDM_Types_Pkg *D_I_V_MRSP, /* TargetLimits_Pkg::MRSPPreindicationSelector::valid */kcg_bool *valid) { static struct__130732 tmp1; static kcg_bool tmp; static kcg_int i; /* TargetLimits_Pkg::MRSPPreindicationSelector::_L1 */ static MRSP_internal_section_T_TargetManagement_types _L1; /* TargetLimits_Pkg::MRSPPreindicationSelector::_L69 */ static ParabolaCurve_T_CalcBrakingCurves_types _L69; /* TargetLimits_Pkg::MRSPPreindicationSelector::_L75 */ static T_trac_t_TargetLimits_Pkg _L75; _L1.Loc_Abs = 0.0; _L1.MRS = 0.0; _L1.valid = kcg_false; if (isEoA) { kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(&_L69, SBDcurve); kcg_copy_T_trac_t_TargetLimits_Pkg(&_L75, T); _L75.berem = 0.0; _L75.Traction = 0.0; _L75.bs2 = (*T).bs1; } else { kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(&_L69, EBDcurve); kcg_copy_T_trac_t_TargetLimits_Pkg(&_L75, T); } for (i = 0; i < 110; i++) { kcg_copy_MRSP_internal_section_T_TargetManagement_types(&tmp1, &_L1); /* 1 */ MRSPPreindicationIterator_TargetLimits_Pkg( i, &tmp1, &(*MRSP)[i], &_L69, guiCurveEnabled, GUIcurve, &_L75, &tmp, &_L1); if (!tmp) { break; } } *valid = _L1.valid; *D_preindication = _L1.Loc_Abs; *D_I_V_MRSP = T_preindication_SDM_Types_Pkg * _L1.MRS + *D_preindication; }
/* TargetLimits_Pkg::MRSPPreindicationSelector */ void MRSPPreindicationSelector_TargetLimits_Pkg( /* TargetLimits_Pkg::MRSPPreindicationSelector::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP, /* TargetLimits_Pkg::MRSPPreindicationSelector::curve */ ParabolaCurve_T_CalcBrakingCurves_types *curve, /* TargetLimits_Pkg::MRSPPreindicationSelector::GUIcurve */ ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve, /* TargetLimits_Pkg::MRSPPreindicationSelector::guiCurveEnabled */ kcg_bool guiCurveEnabled, /* TargetLimits_Pkg::MRSPPreindicationSelector::T_Traction */ T_internal_real_Type_SDM_Types_Pkg T_Traction, /* TargetLimits_Pkg::MRSPPreindicationSelector::T_berem */ T_internal_real_Type_SDM_Types_Pkg T_berem, /* TargetLimits_Pkg::MRSPPreindicationSelector::T_bs */ T_internal_real_Type_SDM_Types_Pkg T_bs, /* TargetLimits_Pkg::MRSPPreindicationSelector::D_preindication */ L_internal_real_Type_SDM_Types_Pkg *D_preindication, /* TargetLimits_Pkg::MRSPPreindicationSelector::valid */ kcg_bool *valid) { MRSP_internal_section_T_TargetManagement_types tmp1; kcg_bool tmp; kcg_int i; /* TargetLimits_Pkg::MRSPPreindicationSelector::_L1 */ MRSP_internal_section_T_TargetManagement_types _L1; _L1.Loc_Abs = 0.0; _L1.MRS = 0.0; _L1.valid = kcg_false; for (i = 0; i < 200; i++) { kcg_copy_MRSP_internal_section_T_TargetManagement_types(&tmp1, &_L1); /* 1 */ MRSPPreindicationIterator_TargetLimits_Pkg( i, &tmp1, &(*MRSP)[i], curve, T_Traction, T_berem, guiCurveEnabled, GUIcurve, T_bs, &tmp, &_L1); if (!tmp) { break; } } *D_preindication = _L1.Loc_Abs; *valid = _L1.valid; }