/* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage */ void getLRBGForRadioMessage_ValidateDataDirectionGeneral_Pkg_Subfunctions( /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage::inMessage */ ReceivedMessage_T_Common_Types_Pkg *inMessage, /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage::inPositionedBGs */ positionedBGs_T_TrainPosition_Types_Pck *inPositionedBGs, /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage::outLRBG */ positionedBG_T_TrainPosition_Types_Pck *outLRBG) { /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage */ static positionedBG_T_TrainPosition_Types_Pck acc; static kcg_int i; /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage::_L10 */ static NID_BG _L10; /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessage::_L9 */ static NID_C _L9; /* 1 */ Decode_NID_LRBG_TM((*inMessage).Radio_Common_Header.nid_lrbg, &_L9, &_L10); kcg_copy_positionedBG_T_TrainPosition_Types_Pck( outLRBG, (positionedBG_T_TrainPosition_Types_Pck *) &cEmptyLRBG_ValidateDataDirection_Pkg); for (i = 0; i < 41; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&acc, outLRBG); /* 1 */ getLRBGForRadioMessageIterator_ValidateDataDirectionGeneral_Pkg_Subfunctions( &acc, _L9, _L10, &(*inPositionedBGs)[i], outLRBG); } }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr */ void deleteBG_atIndex_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::iteratorIndex */ kcg_int iteratorIndex, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::indexOfBG */ kcg_int indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::BG_in */ positionedBG_T_TrainPosition_Types_Pck *BG_in, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::BG_shifted_in */ positionedBG_T_TrainPosition_Types_Pck *BG_shifted_in, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::cont */ kcg_bool *cont, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::IfBlock1::else */ static kcg_bool else_clock_IfBlock1; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBG_atIndex_itr::IfBlock1 */ static kcg_bool IfBlock1_clock; IfBlock1_clock = iteratorIndex < indexOfBG; /* ck_IfBlock1 */ if (IfBlock1_clock) { *cont = kcg_true; kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, BG_in); } else { else_clock_IfBlock1 = iteratorIndex == indexOfBG; /* ck_anon_activ */ if (else_clock_IfBlock1) { *cont = kcg_true; kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, BG_shifted_in); } else { *cont = (*BG_shifted_in).valid; kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, BG_shifted_in); } } }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr */ void deleteBGs_beforeIndex_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr::iteratorIndex */ kcg_int iteratorIndex, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr::indexOfBG */ kcg_int indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr::cont */ kcg_bool *cont, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex_itr */ static positionedBG_T_TrainPosition_Types_Pck tmp; if ((0 <= iteratorIndex) & (iteratorIndex < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*BGs_in)[iteratorIndex]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cEmptyPositionedBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg); } *cont = tmp.valid; if ((0 <= indexOfBG + iteratorIndex) & (indexOfBG + iteratorIndex < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( BG_out, &(*BGs_in)[indexOfBG + iteratorIndex]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( BG_out, (positionedBG_T_TrainPosition_Types_Pck *) &cEmptyPositionedBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg); } }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern */ void recalculate_BG_locations_astern_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::referenceBG */ positionedBG_T_TrainPosition_Types_Pck *referenceBG, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::BGs_out */ positionedBGs_T_TrainPosition_Types_Pck *BGs_out) { /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg acc; kcg_int i; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::_L3 */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg _L3; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern::_L4 */ positionedBGs_T_TrainPosition_Types_Pck _L4; kcg_copy_refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg( &_L3, (refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *) &cNoRefPrevBGs_CalculateTrainPosition_Pkg_BG_relocation_Pkg); kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&_L3.refBG, referenceBG); for (i = 0; i < 41; i++) { kcg_copy_refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg(&acc, &_L3); /* 1 */ recalculate_BG_locations_astern_itr_CalculateTrainPosition_Pkg_BG_relocation_Pkg( &acc, &(*BGs_in)[40 - i], trainProperties, &_L3, &_L4[i]); } for (i = 0; i < 41; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*BGs_out)[i], &_L4[40 - i]); } }
/* CheckBGConsistency_Pkg::SubFunction::IsBG_announced */ void IsBG_announced_CheckBGConsistency_Pkg_SubFunction( /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::recivedBG_header */ BG_Header_T_BG_Types_Pkg *recivedBG_header, /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::storedBGs */ positionedBGs_T_TrainPosition_Types_Pck *storedBGs, /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::isAnnounced */ kcg_bool *isAnnounced, /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::q_linkorintation */ Q_LINKORIENTATION *q_linkorintation) { /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced */ static positionedBG_T_TrainPosition_Types_Pck tmp; /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::IfBlock1::then::_L2 */ static positionedBG_T_TrainPosition_Types_Pck _L2_IfBlock1; /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::isStored */ static kcg_bool isStored; /* CheckBGConsistency_Pkg::SubFunction::IsBG_announced::indexLocal */ static kcg_int indexLocal; /* 1 */ isStored_iter_CheckBGConsistency_Pkg_SubFunction( storedBGs, recivedBG_header, &indexLocal, &isStored); /* ck_isStored */ if (isStored) { if ((0 <= indexLocal) & (indexLocal < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L2_IfBlock1, &(*storedBGs)[indexLocal]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L2_IfBlock1, (positionedBG_T_TrainPosition_Types_Pck *) &cNoStoredBG_CheckBGConsistency_Pkg); } *isAnnounced = _L2_IfBlock1.infoFromLinking.valid; *q_linkorintation = _L2_IfBlock1.infoFromLinking.linkingInfo.q_linkorientation; } else { *isAnnounced = kcg_false; if ((0 <= indexLocal) & (indexLocal < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*storedBGs)[indexLocal]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoStoredBG_CheckBGConsistency_Pkg); } *q_linkorintation = tmp.infoFromLinking.linkingInfo.q_linkorientation; } }
/* TA_Lib_internal::Get_Position_of_LRBG */ L_internal_Type_Obu_BasicTypes_Pkg Get_Position_of_LRBG_TA_Lib_internal( /* TA_Lib_internal::Get_Position_of_LRBG::MessageIn */ ReceivedMessage_T_Common_Types_Pkg *MessageIn, /* TA_Lib_internal::Get_Position_of_LRBG::balisegroups */ positionedBGs_T_TrainPosition_Types_Pck *balisegroups) { /* TA_Lib_internal::Get_Position_of_LRBG */ positionedBG_T_TrainPosition_Types_Pck mk_struct; /* TA_Lib_internal::Get_Position_of_LRBG */ positionedBG_T_TrainPosition_Types_Pck tmp; /* TA_Lib_internal::Get_Position_of_LRBG::_L3 */ kcg_bool _L3; /* TA_Lib_internal::Get_Position_of_LRBG::_L2 */ kcg_bool _L2; /* TA_Lib_internal::Get_Position_of_LRBG::_L1 */ kcg_int _L1; /* TA_Lib_internal::Get_Position_of_LRBG::_L5 */ kcg_int _L5; /* TA_Lib_internal::Get_Position_of_LRBG::_L6 */ kcg_int _L6; /* TA_Lib_internal::Get_Position_of_LRBG::_L9 */ kcg_bool _L9; /* TA_Lib_internal::Get_Position_of_LRBG::Position */ L_internal_Type_Obu_BasicTypes_Pkg Position; /* 1 */ Eval_LRBG_TA_Lib_internal(MessageIn, &_L9, &_L6, &_L5); mk_struct.valid = _L9; mk_struct.nid_c = _L6; mk_struct.nid_bg = _L5; mk_struct.q_link = DEFAULT_q_link_TA_Lib_internal; kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &mk_struct.location, (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &DEFAULT_location_TA_Lib_internal); mk_struct.seqNoOnTrack = 0; kcg_copy_infoFromLinking_T_TrainPosition_Types_Pck( &mk_struct.infoFromLinking, (infoFromLinking_T_TrainPosition_Types_Pck *) &DEFAULT_InfoFromLinking_TA_Lib_internal); kcg_copy_passedBG_T_BG_Types_Pkg( &mk_struct.infoFromPassing, (passedBG_T_BG_Types_Pkg *) &DEFAULT_InfoFromPassing_TA_Lib_internal); mk_struct.missed = kcg_false; /* 1 */ indexOfBG_by_id_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &mk_struct, balisegroups, kcg_true, &_L1, &_L2, &_L3); if ((0 <= _L1) & (_L1 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*balisegroups)[_L1]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &DEFAULT_positioned_BG_TA_Lib_internal); } Position = tmp.location.nominal; return Position; }
/* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessageIterator */ void getLRBGForRadioMessageIterator_ValidateDataDirectionGeneral_Pkg_Subfunctions( /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessageIterator::accumulator */ positionedBG_T_TrainPosition_Types_Pck *accumulator, /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessageIterator::nid_lrbg */ NID_LRBG nid_lrbg, /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessageIterator::positionedBG */ positionedBG_T_TrainPosition_Types_Pck *positionedBG, /* ValidateDataDirectionGeneral_Pkg::Subfunctions::getLRBGForRadioMessageIterator::LRBG */ positionedBG_T_TrainPosition_Types_Pck *LRBG) { if ((nid_lrbg == (*positionedBG).nid_bg) & (*positionedBG).valid) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(LRBG, positionedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(LRBG, accumulator); } }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack */ void indexOfBG_onTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::BG */ positionedBG_T_TrainPosition_Types_Pck *BG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::BGs */ positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::enable */ kcg_bool enable, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::indexOfBG */ kcg_int *indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::BG_found */ kcg_bool *BG_found, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack::indexValid */ kcg_bool *indexValid) { /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack */ static kcg_int acc; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack */ static kcg_bool cond_iterw; static kcg_int i; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfBG_onTrack */ static positionedBG_T_TrainPosition_Types_Pck tmp; *indexOfBG = cNoValidIndex_CalculateTrainPosition_Pkg; if (enable) { for (i = 0; i < 41; i++) { acc = *indexOfBG; /* 1 */ indexOfBG_onTrack_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( i, acc, BG, &(*BGs)[i], &cond_iterw, indexOfBG); if (!cond_iterw) { break; } } } *indexValid = *indexOfBG != cNoValidIndex_CalculateTrainPosition_Pkg; if ((0 <= *indexOfBG) & (*indexOfBG < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &(*BGs)[*indexOfBG]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } *BG_found = *indexValid & /* 1 */ positionedBGs_ids_equal_CalculateTrainPosition_Pkg_BG_utilities_Pkg( BG, &tmp); }
/* ProvidePositionReport_Pkg::op_3_6_5_1_4_j */ void op_3_6_5_1_4_j_ProvidePositionReport_Pkg( /* ProvidePositionReport_Pkg::op_3_6_5_1_4_j::LRBG */positionedBG_T_TrainPosition_Types_Pck *LRBG, /* ProvidePositionReport_Pkg::op_3_6_5_1_4_j::trainPos */trainPosition_T_TrainPosition_Types_Pck *trainPos, outC_op_3_6_5_1_4_j_ProvidePositionReport_Pkg *outC) { static kcg_bool tmp1; static NID_BG tmp; /* ProvidePositionReport_Pkg::op_3_6_5_1_4_j::_L17 */ static kcg_bool _L17; _L17 = (Q_LINK_Linked == (*LRBG).q_link) & (*LRBG).valid; if ((*trainPos).linkingIsUsedOnboard) { tmp1 = ((*LRBG).nid_bg == (*LRBG).infoFromLinking.linkingInfo.nid_bg) & _L17; } else { tmp1 = _L17; } if (outC->init) { outC->init = kcg_false; tmp = cPositionedBG_T_ProvidePositionReport_Pkg.nid_bg; } else { tmp = outC->rem_LRBG.nid_bg; } outC->trigger = tmp1 & ((*LRBG).nid_bg != tmp); kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&outC->rem_LRBG, LRBG); }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations */ void improveUnlinkedBGLocations_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations::BGs_in */positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations::BGs_out */positionedBGs_T_TrainPosition_Types_Pck *BGs_out) { static linkedBGs_indices_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg tmp1; static kcg_bool tmp; static kcg_int i; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations::_L6 */ static kcg_int _L6; /* 1 */ findLinkedBGs_CalculateTrainPosition_Pkg_BG_relocation_Pkg(BGs_in, &tmp1); for (i = 0; i < 41; i++) { /* 1 */ improveUnlinkedBGLocations_itr_CalculateTrainPosition_Pkg_BG_relocation_Pkg( &tmp1[i], BGs_in, &tmp, &(*BGs_out)[i]); _L6 = i + 1; if (!tmp) { break; } } #ifdef KCG_MAPW_CPY for (i = _L6; i < 41; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*BGs_out)[i], (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } #endif /* KCG_MAPW_CPY */ }
/* CalculateTrainPosition_Pkg::prevPassedLinkedBG */ void prevPassedLinkedBG_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::passedBG */ passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::last_BGs */ positionedBGs_T_TrainPosition_Types_Pck *last_BGs, /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::previouslyPassedBG */ positionedBG_T_TrainPosition_Types_Pck *previouslyPassedBG) { /* CalculateTrainPosition_Pkg::prevPassedLinkedBG */ static kcg_bool tmp; /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::_L61 */ static kcg_bool _L61; /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::_L60 */ static kcg_int _L60; /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::_L64 */ static positionedBG_T_TrainPosition_Types_Pck _L64; /* 1 */ indexOfLastPassedBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( kcg_true, last_BGs, (*passedBG).valid, &_L60, &_L61, &tmp); if ((0 <= _L60) & (_L60 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&_L64, &(*last_BGs)[_L60]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L64, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } tmp = /* 1 */ nidBG_nidc_equal_CalculateTrainPosition_Pkg_BG_utilities_Pkg( _L64.nid_c, _L64.nid_bg, (*passedBG).BG_Header.nid_c, (*passedBG).BG_Header.nid_bg); /* 1 */ if (_L61 & !tmp) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(previouslyPassedBG, &_L64); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( previouslyPassedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } }
/* CheckBGConsistency_Pkg::SubFunction::isStored_iter */ void isStored_iter_CheckBGConsistency_Pkg_SubFunction( /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::storedBGs */ positionedBGs_T_TrainPosition_Types_Pck *storedBGs, /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::bgHeader */ BG_Header_T_BG_Types_Pkg *bgHeader, /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::index */ kcg_int *index, /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::isStored */ kcg_bool *isStored) { /* CheckBGConsistency_Pkg::SubFunction::isStored_iter */ static BG_Header_T_BG_Types_Pkg acc; /* CheckBGConsistency_Pkg::SubFunction::isStored_iter */ static kcg_bool cond_iterw; static kcg_int i; /* CheckBGConsistency_Pkg::SubFunction::isStored_iter */ static positionedBG_T_TrainPosition_Types_Pck tmp; /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::_L9 */ static BG_Header_T_BG_Types_Pkg _L9; /* CheckBGConsistency_Pkg::SubFunction::isStored_iter::_L11 */ static kcg_int _L11; kcg_copy_BG_Header_T_BG_Types_Pkg(&_L9, bgHeader); for (i = 0; i < 41; i++) { kcg_copy_BG_Header_T_BG_Types_Pkg(&acc, &_L9); /* 1 */ isStored_CheckBGConsistency_Pkg_SubFunction( &acc, &(*storedBGs)[i], &cond_iterw, &_L9); _L11 = i + 1; if (!cond_iterw) { break; } } *index = _L11 - 1; if ((0 <= *index) & (*index < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*storedBGs)[*index]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoStoredBG_CheckBGConsistency_Pkg); } *isStored = tmp.valid; }
/* CalculateTrainPosition_Pkg::genPassedBG_SeqNo */ void genPassedBG_SeqNo_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::passedBG */passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::BGs */positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::reset */kcg_bool reset, outC_genPassedBG_SeqNo_CalculateTrainPosition_Pkg *outC) { /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::keepPassedBGSeqNo */ static kcg_bool keepPassedBGSeqNo; /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::_L5 */ static kcg_bool _L5; /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::_L4 */ static kcg_int _L4; /* CalculateTrainPosition_Pkg::genPassedBG_SeqNo::_L8 */ static positionedBG_T_TrainPosition_Types_Pck _L8; /* 1 */ indexOfPassedBG_by_id_CalculateTrainPosition_Pkg_BG_utilities_Pkg( passedBG, BGs, (*passedBG).valid, &_L4, &_L5, &keepPassedBGSeqNo); if ((0 <= _L4) & (_L4 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&_L8, &(*BGs)[_L4]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L8, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } keepPassedBGSeqNo = _L8.valid & _L8.infoFromPassing.valid & _L5; /* 1 */ countUp_CalculateTrainPosition_Pkg_gp_functions_Pkg( (kcg_bool) (!keepPassedBGSeqNo & (*passedBG).valid), reset, &outC->Context_1); if (keepPassedBGSeqNo) { outC->seqNo = _L8.seqNoOnTrack; } else { outC->seqNo = outC->Context_1.counter; } }
/* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed */ void twoConsecutiveLinkedBGs_missed_CalculateTrainPosition_Pkg_Linking_Pkg( /* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed::missed */ kcg_bool missed, /* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed::missedLinkedBG */ positionedBG_T_TrainPosition_Types_Pck *missedLinkedBG, /* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed::passedBG */ positionedBG_T_TrainPosition_Types_Pck *passedBG, /* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed::reset */ kcg_bool reset, outC_twoConsecutiveLinkedBGs_missed_CalculateTrainPosition_Pkg_Linking_Pkg *outC) { /* CalculateTrainPosition_Pkg::Linking_Pkg::twoConsecutiveLinkedBGs_missed::_L9 */ static positionedBG_T_TrainPosition_Types_Pck _L9; /* last_init_ck_storedMissedBG */ if (outC->init) { outC->init = kcg_false; kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L9, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L9, &outC->storedMissedBG); } outC->secondConsecutiveBG_missed = missed & /* 1 */ positionedBGs_ids_notEqual_CalculateTrainPosition_Pkg_BG_utilities_Pkg( missedLinkedBG, &_L9); /* 1 */ if (reset | ((*passedBG).valid & ((*passedBG).q_link == Q_LINK_Linked) & (*passedBG).infoFromLinking.valid)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->storedMissedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } else /* 4 */ if (missed) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->storedMissedBG, missedLinkedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->storedMissedBG, &_L9); } }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG */ void indexOfLastBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::linked */kcg_bool linked, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::BGs */positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::enable */kcg_bool enable, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::indexOfBG */kcg_int *indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::BG_found */kcg_bool *BG_found, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::indexOfLastBG::indexValid */kcg_bool *indexValid) { static kcg_int tmp2; static kcg_bool tmp1; static kcg_int i; static positionedBG_T_TrainPosition_Types_Pck tmp; *indexOfBG = cNoValidIndex_CalculateTrainPosition_Pkg; if (enable) { for (i = 0; i < 41; i++) { tmp2 = *indexOfBG; /* 1 */ indexOfLastBG_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( i, tmp2, linked, &(*BGs)[i], &tmp1, indexOfBG); if (!tmp1) { break; } } } *indexValid = *indexOfBG != cNoValidIndex_CalculateTrainPosition_Pkg; if ((0 <= *indexOfBG) & (*indexOfBG < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &(*BGs)[*indexOfBG]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } *BG_found = *indexValid & tmp.valid; }
/* CalculateTrainPosition_Pkg::indexOfBG_by_id */ void indexOfBG_by_id_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::indexOfBG_by_id::BG */ positionedBG_T_TrainPosition_Types_Pck *BG, /* CalculateTrainPosition_Pkg::indexOfBG_by_id::BGs */ positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::indexOfBG_by_id::enable */ kcg_bool enable, /* CalculateTrainPosition_Pkg::indexOfBG_by_id::indexOfBG */ kcg_int *indexOfBG, /* CalculateTrainPosition_Pkg::indexOfBG_by_id::BG_found */ kcg_bool *BG_found, /* CalculateTrainPosition_Pkg::indexOfBG_by_id::indexValid */ kcg_bool *indexValid) { kcg_int tmp2; kcg_bool tmp1; kcg_int i; positionedBG_T_TrainPosition_Types_Pck tmp; *indexOfBG = cNoValidIndex_CalculateTrainPosition_Pkg; if (enable) { for (i = 0; i < 64; i++) { tmp2 = *indexOfBG; /* 1 */ indexOfBG_by_id_itr_CalculateTrainPosition_Pkg( i, tmp2, BG, &(*BGs)[i], &tmp1, indexOfBG); if (!tmp1) { break; } } } *indexValid = *indexOfBG != cNoValidIndex_CalculateTrainPosition_Pkg; if ((0 <= *indexOfBG) & (*indexOfBG < 64)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &(*BGs)[*indexOfBG]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } *BG_found = *indexValid & tmp.valid; }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG */ void posInRangeOfBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::position */ LocWithInAcc_T_Obu_BasicTypes_Pkg *position, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::BGs */ positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::enable */ kcg_bool enable, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::isInRange */ kcg_bool *isInRange, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::indexOfBG */ kcg_int *indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG::BG */ positionedBG_T_TrainPosition_Types_Pck *BG) { /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG */ static kcg_int acc; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::posInRangeOfBG */ static kcg_bool cond_iterw; static kcg_int i; *indexOfBG = cNoValidIndex_CalculateTrainPosition_Pkg; if (enable) { for (i = 0; i < 41; i++) { acc = *indexOfBG; /* 1 */ posInRangeOfBG_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( i, acc, position, &(*BGs)[i], &cond_iterw, indexOfBG); if (!cond_iterw) { break; } } } if ((0 <= *indexOfBG) & (*indexOfBG < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG, &(*BGs)[*indexOfBG]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( BG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } *isInRange = (*BG).valid; }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex */ void deleteBGs_beforeIndex_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::BGs_in */positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::indexOfBG */kcg_int indexOfBG, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::del */kcg_bool del, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::BGs_out */positionedBGs_T_TrainPosition_Types_Pck *BGs_out) { static kcg_bool tmp; static kcg_int i; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::_L8 */ static kcg_bool _L8; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::_L20 */ static array__129125 _L20; /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::deleteBGs_beforeIndex::_L21 */ static kcg_int _L21; _L8 = del & (indexOfBG > 0) & (indexOfBG < cMaxNoOfStoredBGs_TrainPosition_Types_Pck); if (_L8) { for (i = 0; i < 41; i++) { /* 1 */ deleteBGs_beforeIndex_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( i, indexOfBG, BGs_in, &tmp, &_L20[i]); _L21 = i + 1; if (!tmp) { break; } } } else { _L21 = 0; } #ifdef KCG_MAPW_CPY for (i = _L21; i < 41; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L20[i], (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } #endif /* KCG_MAPW_CPY */ if (_L8) { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(BGs_out, &_L20); } else { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(BGs_out, BGs_in); } }
/* ProvidePositionReport_Pkg::op_GetLRBGfromBGs */ void op_GetLRBGfromBGs_ProvidePositionReport_Pkg( /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs::posBGs */ positionedBGs_T_TrainPosition_Types_Pck *posBGs, /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs::trainPos */ trainPosition_T_TrainPosition_Types_Pck *trainPos, /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs::found */ kcg_bool *found, /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs::lrbg */ positionedBG_T_TrainPosition_Types_Pck *lrbg) { /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs */ static kcg_bool acc; /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs */ static kcg_bool cond_iterw; static kcg_int i; /* ProvidePositionReport_Pkg::op_GetLRBGfromBGs::_L3 */ static kcg_int _L3; *found = kcg_false; for (i = 0; i < 41; i++) { acc = *found; /* 1 */ op_findBG_ProvidePositionReport_Pkg( acc, &(*posBGs)[i], (*trainPos).LRBG.nid_bg, &cond_iterw, found); _L3 = i + 1; if (!cond_iterw) { break; } } if ((0 <= _L3 - 1) & (_L3 - 1 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(lrbg, &(*posBGs)[_L3 - 1]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( lrbg, (positionedBG_T_TrainPosition_Types_Pck *) &cPassedBG_ProvidePositionReport_Pkg); } }
/* CalculateTrainPosition_Pkg::prevPassedLinkedBG */ void prevPassedLinkedBG_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::passedBG */ passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::lastPassedLinkedBG */ positionedBG_T_TrainPosition_Types_Pck *lastPassedLinkedBG, /* CalculateTrainPosition_Pkg::prevPassedLinkedBG::reset */ kcg_bool reset, outC_prevPassedLinkedBG_CalculateTrainPosition_Pkg *outC) { /* 1 */ RisingEdge_digital( (kcg_bool) ((*lastPassedLinkedBG).valid & (Q_LINK_Linked == (*lastPassedLinkedBG).q_link) & !/* 1 */ nidBG_nidc_equal_CalculateTrainPosition_Pkg( (*lastPassedLinkedBG).nid_c, (*lastPassedLinkedBG).nid_bg, (*passedBG).BG_Header.nid_c, (*passedBG).BG_Header.nid_bg) & ((*passedBG).BG_Header.q_link == Q_LINK_Linked) & (*passedBG).valid), &outC->Context_1); if (reset) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->previouslyPassedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } else if (outC->Context_1.RE_Output) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->previouslyPassedBG, lastPassedLinkedBG); } else if (outC->init) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->previouslyPassedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } outC->init = kcg_false; }
/* CalculateTrainPosition_Pkg::BG_utilities_Pkg::trimSeqNoOnTrack_itr */ void trimSeqNoOnTrack_itr_CalculateTrainPosition_Pkg_BG_utilities_Pkg( /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::trimSeqNoOnTrack_itr::prevSeqNo */ kcg_int prevSeqNo, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::trimSeqNoOnTrack_itr::BG_in */ positionedBG_T_TrainPosition_Types_Pck *BG_in, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::trimSeqNoOnTrack_itr::seqNo */ kcg_int *seqNo, /* CalculateTrainPosition_Pkg::BG_utilities_Pkg::trimSeqNoOnTrack_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* 1 */ if ((*BG_in).valid & (*BG_in).infoFromPassing.valid) { *seqNo = (*BG_in).seqNoOnTrack; } else { *seqNo = prevSeqNo + 1; } kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, BG_in); (*BG_out).seqNoOnTrack = *seqNo; }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation */ void improveUnlinkedBGLocation_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::passedLinkedBG_2 */ positionedBG_T_TrainPosition_Types_Pck *passedLinkedBG_2, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::passedLinkedBG_1 */ positionedBG_T_TrainPosition_Types_Pck *passedLinkedBG_1, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::unlinkedBG_in */ positionedBG_T_TrainPosition_Types_Pck *unlinkedBG_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::unlinkedBG_out */ positionedBG_T_TrainPosition_Types_Pck *unlinkedBG_out) { /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation */ static LocWithInAcc_T_Obu_BasicTypes_Pkg tmp; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::_L31 */ static kcg_bool _L31; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocation::_L30 */ static LocWithInAcc_T_Obu_BasicTypes_Pkg _L30; /* 1 */ odoLoc_2_refLocations_BasicLocationFunctions_Pkg( &(*passedLinkedBG_2).location, &(*passedLinkedBG_1).location, &(*passedLinkedBG_2).infoFromPassing.BG_Header.bgPosition.odo, &(*passedLinkedBG_1).infoFromPassing.BG_Header.bgPosition.odo, &(*unlinkedBG_in).infoFromPassing.BG_Header.bgPosition.odo, &tmp); /* 1 */ overlapOf_2_Locations_BasicLocationFunctions_Pkg( &tmp, &(*unlinkedBG_in).location, &_L30, &_L31); kcg_copy_positionedBG_T_TrainPosition_Types_Pck( unlinkedBG_out, unlinkedBG_in); /* 1 */ if ((*passedLinkedBG_2).valid & ((*passedLinkedBG_2).q_link == Q_LINK_Linked) & (*passedLinkedBG_2).infoFromPassing.valid & !kcg_comp_positionedBG_T_TrainPosition_Types_Pck( passedLinkedBG_2, passedLinkedBG_1) & ((*passedLinkedBG_1).valid & ((*passedLinkedBG_1).q_link == Q_LINK_Linked) & (*passedLinkedBG_1).infoFromPassing.valid) & ((*unlinkedBG_in).valid & ((*unlinkedBG_in).q_link == Q_LINK_Unlinked)) & _L31) { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &(*unlinkedBG_out).location, &_L30); } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &(*unlinkedBG_out).location, &(*unlinkedBG_in).location); } }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr */ void improveUnlinkedBGLocations_itr_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr::BG_index_in */ linkedBG_index_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *BG_index_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr::cont */ kcg_bool *cont, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr */ positionedBG_T_TrainPosition_Types_Pck tmp1; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr */ positionedBG_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::improveUnlinkedBGLocations_itr::_L2 */ positionedBG_T_TrainPosition_Types_Pck _L2; if ((0 <= (*BG_index_in).currentIndex) & ((*BG_index_in).currentIndex < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L2, &(*BGs_in)[(*BG_index_in).currentIndex]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &_L2, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } *cont = _L2.valid; if ((0 <= (*BG_index_in).subsequentLinkedBG_idx) & ((*BG_index_in).subsequentLinkedBG_idx < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp1, &(*BGs_in)[(*BG_index_in).subsequentLinkedBG_idx]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp1, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } if ((0 <= (*BG_index_in).previousLinkedBG_idx) & ((*BG_index_in).previousLinkedBG_idx < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*BGs_in)[(*BG_index_in).previousLinkedBG_idx]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ improveUnlinkedBGLocation_CalculateTrainPosition_Pkg_BG_relocation_Pkg( &tmp1, &tmp, &_L2, BG_out); }
/* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed */ void linkingIsUsed_CalculateTrainPosition_Pkg_Linking_Pkg( /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed::currentOdometry */ odometry_T_Obu_BasicTypes_Pkg *currentOdometry, /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed::BGs */ positionedBGs_T_TrainPosition_Types_Pck *BGs, /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed::recalculateBGs */ kcg_bool recalculateBGs, outC_linkingIsUsed_CalculateTrainPosition_Pkg_Linking_Pkg *outC) { /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed */ static positionedBG_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed */ static kcg_bool _1_op_call; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed */ static kcg_bool op_call; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed::lastLinkedBG */ static positionedBG_T_TrainPosition_Types_Pck lastLinkedBG; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkingIsUsed::_L28 */ static LocWithInAcc_T_Obu_BasicTypes_Pkg _L28; /* ck_recalculateBGs */ if (recalculateBGs) { /* 1 */ indexOfLastBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( kcg_true, BGs, recalculateBGs, &outC->_L9, &outC->_L10, &_1_op_call); /* 1 */ indexOfLastPassedBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( kcg_true, BGs, recalculateBGs, &outC->_L6, &outC->_L7, &op_call); } else if (outC->init) { outC->_L10 = kcg_false; outC->_L7 = kcg_false; outC->_L6 = cNoValidIndex_CalculateTrainPosition_Pkg; outC->_L9 = cNoValidIndex_CalculateTrainPosition_Pkg; } outC->init = kcg_false; if ((0 <= outC->_L9) & (outC->_L9 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &lastLinkedBG, &(*BGs)[outC->_L9]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &lastLinkedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } if ((0 <= outC->_L6) & (outC->_L6 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &(*BGs)[outC->_L6]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ positionDerivedFromPassedBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &(*currentOdometry).odo, &tmp, &_L28); outC->linkingIsUsed = !(_L28.nominal + _L28.d_min > lastLinkedBG.location.nominal + lastLinkedBG.location.d_max) & (outC->_L7 & (outC->_L6 < outC->_L9) & outC->_L10); }
/* CalculateTrainPosition_Pkg::addAnnouncedBGs */ void addAnnouncedBGs_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::addAnnouncedBGs::passedBG */ passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::addAnnouncedBGs::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::addAnnouncedBGs::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::addAnnouncedBGs::BGs_out */ positionedBGs_T_TrainPosition_Types_Pck *BGs_out, /* CalculateTrainPosition_Pkg::addAnnouncedBGs::overrun */ kcg_bool *overrun) { /* CalculateTrainPosition_Pkg::addAnnouncedBGs */ static positionedBGs_T_TrainPosition_Types_Pck tmp1; /* CalculateTrainPosition_Pkg::addAnnouncedBGs */ static positionedBG_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L10 */ static NID_BG _L10; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L9 */ static NID_C _L9; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L11 */ static kcg_bool _L11; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L14 */ static kcg_bool _L14; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L13 */ static kcg_bool _L13; /* CalculateTrainPosition_Pkg::addAnnouncedBGs::_L33 */ static positionedBGs_T_TrainPosition_Types_Pck _L33; static kcg_int i; _L11 = (*passedBG).valid & (*passedBG).linkedBGs[0].valid; /* 1 */ NIDLRBG_2_nidC_nidBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( _L11, (*passedBG).linkedBGs[0].nid_LRBG, &_L9, &_L10); kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); tmp.valid = _L11; tmp.nid_c = _L9; tmp.nid_bg = _L10; /* 1 */ indexOfBG_by_id_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &tmp, BGs_in, _L11, &i, &_L13, &_L14); if ((0 <= i) & (i < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &(*BGs_in)[i]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ positionLinkedBGs_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &tmp, &(*passedBG).linkedBGs, trainProperties, (linkedBGs_asPositionedBGs_T_TrainPosition_Types_Pck *) &tmp1[0]); for (i = 0; i < 8; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(&tmp1[33])[i], (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ mergeBGs_onTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg( BGs_in, &tmp1, &_L33, overrun); /* 1 */ trimSeqNoOnTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg(&_L33, BGs_out); }
/* CalculateTrainPosition_Pkg::passing_a_BG */ void passing_a_BG_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::passing_a_BG::passedBG */ passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::passing_a_BG::previouslyPassedLinkedBG */ positionedBG_T_TrainPosition_Types_Pck *previouslyPassedLinkedBG, /* CalculateTrainPosition_Pkg::passing_a_BG::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::passing_a_BG::passedBGSeqNo */ kcg_int passedBGSeqNo, /* CalculateTrainPosition_Pkg::passing_a_BG::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::passing_a_BG::passedPositionedBG */ positionedBG_T_TrainPosition_Types_Pck *passedPositionedBG, /* CalculateTrainPosition_Pkg::passing_a_BG::BGs_out */ positionedBGs_T_TrainPosition_Types_Pck *BGs_out, /* CalculateTrainPosition_Pkg::passing_a_BG::overrun */ kcg_bool *overrun, /* CalculateTrainPosition_Pkg::passing_a_BG::foundNotWhereAnnounced */ kcg_bool *foundNotWhereAnnounced, /* CalculateTrainPosition_Pkg::passing_a_BG::BGpassedInUnexpectedDirection */ kcg_bool *BGpassedInUnexpectedDirection) { /* CalculateTrainPosition_Pkg::passing_a_BG */ static positionedBG_T_TrainPosition_Types_Pck tmp1; /* CalculateTrainPosition_Pkg::passing_a_BG */ static positionedBGs_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::passing_a_BG::_L16 */ static positionedBGs_T_TrainPosition_Types_Pck _L16; /* CalculateTrainPosition_Pkg::passing_a_BG::_L17 */ static kcg_bool _L17; /* CalculateTrainPosition_Pkg::passing_a_BG::_L21 */ static positionedBGs_T_TrainPosition_Types_Pck _L21; /* CalculateTrainPosition_Pkg::passing_a_BG::_L22 */ static kcg_bool _L22; static kcg_int i; /* 1 */ indexOfPassedBG_by_id_CalculateTrainPosition_Pkg_BG_utilities_Pkg( passedBG, BGs_in, (*passedBG).valid, &i, &_L22, &_L17); /* 1 */ if (_L22) { if ((0 <= i) & (i < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp1, &(*BGs_in)[i]); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp1, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp1, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ passedBG_2_positionedBG_CalculateTrainPosition_Pkg( passedBG, &tmp1, previouslyPassedLinkedBG, passedBGSeqNo, trainProperties, passedPositionedBG, foundNotWhereAnnounced, BGpassedInUnexpectedDirection, (linkedBGs_asPositionedBGs_T_TrainPosition_Types_Pck *) &tmp[0]); /* 2 */ mergeBG_onTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg( passedPositionedBG, BGs_in, &_L16, &_L17); for (i = 0; i < 8; i++) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(&tmp[33])[i], (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } /* 1 */ mergeBGs_onTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &_L16, &tmp, &_L21, &_L22); *overrun = _L22 | _L17; /* 1 */ trimSeqNoOnTrack_CalculateTrainPosition_Pkg_BG_utilities_Pkg(&_L21, BGs_out); }
/* CalculateTrainPosition_Pkg::calculateTrainPosition */ void calculateTrainPosition_CalculateTrainPosition_Pkg( /* CalculateTrainPosition_Pkg::calculateTrainPosition::currentOdometry */ odometry_T_Obu_BasicTypes_Pkg *currentOdometry, /* CalculateTrainPosition_Pkg::calculateTrainPosition::passedBG */ passedBG_T_BG_Types_Pkg *passedBG, /* CalculateTrainPosition_Pkg::calculateTrainPosition::msgFromTrack */ ReceivedMessage_T_Common_Types_Pkg *msgFromTrack, /* CalculateTrainPosition_Pkg::calculateTrainPosition::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::calculateTrainPosition::reset */ kcg_bool reset, outC_calculateTrainPosition_CalculateTrainPosition_Pkg *outC) { positionedBGs_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::calculateTrainPosition::if_BGpassed_or_onlyAnnounced::then::_L10 */ positionedBGs_T_TrainPosition_Types_Pck _L10_if_BGpassed_or_onlyAnnounced; /* CalculateTrainPosition_Pkg::calculateTrainPosition::if_BGpassed_or_onlyAnnounced::else::then::_L13 */ kcg_bool _L13_if_BGpassed_or_onlyAnnounced; /* CalculateTrainPosition_Pkg::calculateTrainPosition::BGs_loc */ positionedBGs_T_TrainPosition_Types_Pck last_BGs_loc; /* CalculateTrainPosition_Pkg::calculateTrainPosition::if_BGpassed_or_onlyAnnounced */ kcg_bool if_BGpassed_or_onlyAnnounced_clock; /* CalculateTrainPosition_Pkg::calculateTrainPosition::BG_passed */ kcg_bool BG_passed; /* CalculateTrainPosition_Pkg::calculateTrainPosition::onlyBGsAnnouncedViaRadio */ kcg_bool onlyBGsAnnouncedViaRadio; /* CalculateTrainPosition_Pkg::calculateTrainPosition::errors_loc */ positionErrors_T_TrainPosition_Types_Pck errors_loc; /* CalculateTrainPosition_Pkg::calculateTrainPosition::passedBG_asPositionedBG */ positionedBG_T_TrainPosition_Types_Pck passedBG_asPositionedBG; /* CalculateTrainPosition_Pkg::calculateTrainPosition::trainPositionInfo */ trainPositionInfo_T_TrainPosition_Types_Pck trainPositionInfo; /* CalculateTrainPosition_Pkg::calculateTrainPosition::passedBG_loc */ passedBG_T_BG_Types_Pkg passedBG_loc; /* CalculateTrainPosition_Pkg::calculateTrainPosition::_L306 */ passedBG_T_BG_Types_Pkg _L306; outC->errors.doubleRepositioningError = kcg_false; if (outC->init) { outC->init = kcg_false; kcg_copy_positionedBGs_T_TrainPosition_Types_Pck( &last_BGs_loc, (positionedBGs_T_TrainPosition_Types_Pck *) &cNoPositionedBGs_CalculateTrainPosition_Pkg); } else { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(&last_BGs_loc, &outC->BGs); } /* 1 */ msg_2_passedBG_CalculateTrainPosition_Pkg_msgAdapter_Pkg( msgFromTrack, &_L306, &if_BGpassed_or_onlyAnnounced_clock, &_L13_if_BGpassed_or_onlyAnnounced); if ((*passedBG).valid) { BG_passed = (*passedBG).BG_Header.valid & (*passedBG).valid; onlyBGsAnnouncedViaRadio = !(*passedBG).BG_Header.valid & (*passedBG).valid; kcg_copy_passedBG_T_BG_Types_Pkg(&passedBG_loc, passedBG); } else { BG_passed = if_BGpassed_or_onlyAnnounced_clock; onlyBGsAnnouncedViaRadio = _L13_if_BGpassed_or_onlyAnnounced; kcg_copy_passedBG_T_BG_Types_Pkg(&passedBG_loc, &_L306); } if_BGpassed_or_onlyAnnounced_clock = BG_passed | reset; if (if_BGpassed_or_onlyAnnounced_clock) { if (reset) { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck( &tmp, (positionedBGs_T_TrainPosition_Types_Pck *) &cNoPositionedBGs_CalculateTrainPosition_Pkg); } else { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(&tmp, &last_BGs_loc); } /* 6 */ calculateBGLocations_CalculateTrainPosition_Pkg( &passedBG_loc, &tmp, reset, trainProperties, &outC->Context_6); kcg_copy_positionedBGs_T_TrainPosition_Types_Pck( &_L10_if_BGpassed_or_onlyAnnounced, &outC->Context_6.BGs); kcg_copy_positionErrors_T_TrainPosition_Types_Pck( &errors_loc, &outC->Context_6.errors); /* 2 */ delDispensableBGs_CalculateTrainPosition_Pkg( &_L10_if_BGpassed_or_onlyAnnounced, kcg_true, &outC->BGs); kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &passedBG_asPositionedBG, &outC->Context_6.passedPositionedBG); } else { if (onlyBGsAnnouncedViaRadio) { /* 1 */ addAnnouncedBGs_CalculateTrainPosition_Pkg( &passedBG_loc, &last_BGs_loc, trainProperties, &outC->BGs, &_L13_if_BGpassed_or_onlyAnnounced); kcg_copy_positionErrors_T_TrainPosition_Types_Pck( &errors_loc, (positionErrors_T_TrainPosition_Types_Pck *) &cNoPositionErrors_CalculateTrainPosition_Pkg); errors_loc.outOfMemSpace = _L13_if_BGpassed_or_onlyAnnounced; } else { kcg_copy_positionErrors_T_TrainPosition_Types_Pck( &errors_loc, (positionErrors_T_TrainPosition_Types_Pck *) &cNoPositionErrors_CalculateTrainPosition_Pkg); kcg_copy_positionedBGs_T_TrainPosition_Types_Pck( &outC->BGs, &last_BGs_loc); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &passedBG_asPositionedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } outC->errors.outOfMemSpace = errors_loc.outOfMemSpace; outC->errors.passedBG_foundNotWhereExpected = errors_loc.passedBG_foundNotWhereExpected; outC->errors.BGpassedInUnexpectedDirection = errors_loc.BGpassedInUnexpectedDirection; /* 1 */ calculateTrainPositionInfo_CalculateTrainPosition_Pkg( currentOdometry, &outC->BGs, (kcg_bool) (onlyBGsAnnouncedViaRadio | BG_passed | reset), &passedBG_asPositionedBG, reset, &outC->Context_1); outC->errors.positionCalculation_inconsistent = outC->Context_1.positionCalculationNotConsistent; kcg_copy_trainPositionInfo_T_TrainPosition_Types_Pck( &trainPositionInfo, &outC->Context_1.trainPositionInfo); /* 2 */ linkedBG_missed_CalculateTrainPosition_Pkg_Linking_Pkg( &trainPositionInfo.trainPosition, &outC->BGs, kcg_true, &outC->Context_2); outC->errors.linkedBGMissed = outC->Context_2.missed; outC->errors.BG_LinkingConsistencyError = outC->Context_2.missed | errors_loc.BG_LinkingConsistencyError; /* 1 */ twoConsecutiveLinkedBGs_missed_CalculateTrainPosition_Pkg_Linking_Pkg( outC->Context_2.missed, &outC->Context_2.BG, &passedBG_asPositionedBG, reset, &outC->_1_Context_1); outC->errors.twoConsecutiveLinkedBGs_missed = outC->_1_Context_1.secondConsecutiveBG_missed; if (outC->Context_2.missed) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->errors.bg, &outC->Context_2.BG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->errors.bg, &errors_loc.bg); } /* 1 */ calculateTrainpositionAttributes_CalculateTrainPosition_Pkg( &trainPositionInfo, currentOdometry, trainProperties, &outC->trainPosition); }
/* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed */ void linkedBG_missed_CalculateTrainPosition_Pkg_Linking_Pkg( /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::position */ LocWithInAcc_T_Obu_BasicTypes_Pkg *position, /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::BGs_in */ positionedBGs_T_TrainPosition_Types_Pck *BGs_in, /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::enable */ kcg_bool enable, outC_linkedBG_missed_CalculateTrainPosition_Pkg_Linking_Pkg *outC) { /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed */ static LocWithInAcc_T_Obu_BasicTypes_Pkg tmp1; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed */ static LocWithInAcc_T_Obu_BasicTypes_Pkg tmp; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::_L1 */ static kcg_bool _L1; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::_L52 */ static LocWithInAcc_T_Obu_BasicTypes_Pkg _L52; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::_L69 */ static kcg_bool _L69; /* CalculateTrainPosition_Pkg::Linking_Pkg::linkedBG_missed::_L67 */ static kcg_int _L67; /* last_init_ck_position */ if (outC->init) { outC->init = kcg_false; kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->BG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); outC->indexOfBG = cNoValidIndex_CalculateTrainPosition_Pkg; kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &_L52, (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &cLocWithInAcc_0_Obu_BasicTypes_Pkg); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&outC->BG, &outC->_L3); outC->indexOfBG = outC->_L2; kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg(&_L52, &outC->rem_position); } /* 2 */ sub_2_distances_BasicLocationFunctions_Pkg(position, &_L52, &tmp1); _L1 = tmp1.nominal >= 0; /* ck_movedAhead */ if (_L1) { tmp.nominal = (*position).nominal; tmp.d_min = _L52.nominal + _L52.d_min - (*position).nominal; tmp.d_max = (*position).d_max; } else { tmp.nominal = (*position).nominal; tmp.d_min = (*position).d_min; tmp.d_max = _L52.nominal + _L52.d_max - (*position).nominal; } /* 1 */ posInRangeOfBG_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &tmp, BGs_in, enable, &_L1, &outC->_L2, &outC->_L3); /* 1 */ FallingEdge_digital(_L1, &outC->Context_1); outC->missed = ((/* 1 */ positionedBGs_ids_notEqual_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &outC->_L3, &outC->BG) & _L1) | outC->Context_1.FE_Output) & (outC->BG.q_link == Q_LINK_Linked) & !outC->BG.infoFromPassing.valid; outC->BG.missed = outC->missed; /* 1 */ indexOfBG_by_id_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &outC->BG, BGs_in, outC->missed, &_L67, &_L1, &_L69); /* 1 */ if (_L1 & outC->missed) { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(&outC->BGs_out, BGs_in); if ((0 <= _L67) & (_L67 < 41)) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &outC->BGs_out[_L67], &outC->BG); } } else { kcg_copy_positionedBGs_T_TrainPosition_Types_Pck(&outC->BGs_out, BGs_in); } kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg(&outC->rem_position, position); }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr */ void recalculate_BG_locations_ahead_itr_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::refBGs_in */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *refBGs_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::BG_in */ positionedBG_T_TrainPosition_Types_Pck *BG_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::refBGs_out */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *refBGs_out, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr */ LocWithInAcc_T_Obu_BasicTypes_Pkg tmp1; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr */ positionedBG_T_TrainPosition_Types_Pck tmp; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::BGin_is_refBG */ kcg_bool BGin_is_refBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::refLocation */ LocWithInAcc_T_Obu_BasicTypes_Pkg refLocation; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::refBG */ positionedBG_T_TrainPosition_Types_Pck refBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::relocatedBG */ positionedBG_T_TrainPosition_Types_Pck relocatedBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::sumOfBestDistances */ LocWithInAcc_T_Obu_BasicTypes_Pkg sumOfBestDistances; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::_L96 */ kcg_bool _L96; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::_L106 */ kcg_bool _L106; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::_L137 */ kcg_bool _L137; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_ahead_itr::_L302 */ LocWithInAcc_T_Obu_BasicTypes_Pkg _L302; BGin_is_refBG = /* 3 */ positionedBGs_ids_equal_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &(*refBGs_in).refBG, BG_in); (*refBGs_out).recalculate = BGin_is_refBG | ((*refBGs_in).recalculate & (*BG_in).valid); /* calculateLocalBGInaccuracies */ calculateLocalBGInaccuracies_CalculateTrainPosition_Pkg_BG_relocation_Pkg( BG_in, trainProperties, &refLocation); kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &_L302, (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &cLocWithInAcc_0_Obu_BasicTypes_Pkg); _L302.nominal = (*BG_in).location.nominal; /* 6 */ add_2_Distances_BasicLocationFunctions_Pkg(&refLocation, &_L302, &tmp1); /* 1 */ overlapOf_2_Locations_BasicLocationFunctions_Pkg( &tmp1, &(*BG_in).location, &_L302, &_L106); /* 14 */ if (BGin_is_refBG) { /* 31 */ if (_L106) { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg(&refLocation, &_L302); } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &refLocation, &(*BG_in).location); } } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &refLocation, &(*BG_in).location); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &relocatedBG, &(*refBGs_in).refBG); kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &relocatedBG.location, &refLocation); /* 24 */ if (BGin_is_refBG) { /* 25 */ if ((*refBGs_in).refBG.valid & (*refBGs_in).refBG.infoFromLinking.valid) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&refBG, &relocatedBG); kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &refBG.infoFromLinking.expectedLocation, &refLocation); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&refBG, &relocatedBG); } } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &refBG, &(*refBGs_in).refBG); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&(*refBGs_out).refBG, &refBG); _L106 = Q_LINK_Linked == refBG.q_link; _L96 = BGin_is_refBG & !_L106 & refBG.infoFromPassing.valid & (*refBGs_in).prevLinkedBG.valid & (*refBGs_in).prevLinkedBG.infoFromPassing.valid; /* 2 */ sub_2_odoDistances_BasicLocationFunctions_Pkg( &refBG.infoFromPassing.BG_Header.bgPosition.odo, &(*refBGs_in).prevLinkedBG.infoFromPassing.BG_Header.bgPosition.odo, &tmp1); /* 9 */ add_2_Distances_BasicLocationFunctions_Pkg( &tmp1, &(*refBGs_in).prevLinkedBG.infoFromPassing.BG_Header.BG_centerDetectionInaccuraccuracies, &_L302); /* 27 */ if (BGin_is_refBG & (*BG_in).valid) { /* 30 */ if (_L96) { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg(&tmp1, &_L302); } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &tmp1, (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &cLocWithInAcc_0_Obu_BasicTypes_Pkg); } /* 4 */ sub_2_distances_BasicLocationFunctions_Pkg( (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &cLocWithInAcc_0_Obu_BasicTypes_Pkg, &tmp1, &sumOfBestDistances); } else /* 28 */ if ((*BG_in).valid & (*BG_in).infoFromLinking.valid) { /* 7 */ add_2_Distances_BasicLocationFunctions_Pkg( &(*BG_in).infoFromLinking.d_link, &(*refBGs_in).sumOfBestDistances, &sumOfBestDistances); } else /* 29 */ if ((*BG_in).valid & ((*BG_in).q_link == Q_LINK_Linked) & (*BG_in).infoFromPassing.valid & (*refBGs_in).prevLinkedBG.valid & (*refBGs_in).prevLinkedBG.infoFromPassing.valid) { /* 4 */ sub_2_odoDistances_BasicLocationFunctions_Pkg( &(*BG_in).infoFromPassing.BG_Header.bgPosition.odo, &(*refBGs_in).prevLinkedBG.infoFromPassing.BG_Header.bgPosition.odo, &refLocation); /* 8 */ add_2_Distances_BasicLocationFunctions_Pkg( &refLocation, &(*refBGs_in).sumOfBestDistances, &sumOfBestDistances); } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &sumOfBestDistances, &(*refBGs_in).sumOfBestDistances); } kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &(*refBGs_out).sumOfBestDistances, &sumOfBestDistances); /* 23 */ if ((*refBGs_in).recalculate) { /* 1 */ recalculate_BG_location_ahead_CalculateTrainPosition_Pkg_BG_relocation_Pkg( BG_in, &(*refBGs_in).prevLinkedBG, &(*refBGs_in).refBG, &sumOfBestDistances, trainProperties, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&relocatedBG, BG_in); } _L137 = Q_LINK_Unlinked == refBG.q_link; /* 17 */ if (BGin_is_refBG & _L106) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &refBG); } else /* 18 */ if (_L96) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*refBGs_in).prevLinkedBG); /* 2 */ sub_2_distances_BasicLocationFunctions_Pkg( &refBG.location, &_L302, &tmp.location); } else /* 19 */ if (Q_LINK_Linked == relocatedBG.q_link) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*refBGs_in).prevLinkedBG); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevLinkedBG, &tmp); /* 20 */ if (BGin_is_refBG & _L137) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &refBG); } else /* 21 */ if (BGin_is_refBG & !_L137 & refBG.infoFromPassing.valid & (*refBGs_in).prevUnlinkedBG.valid & (*refBGs_in).prevUnlinkedBG.infoFromPassing.valid) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*refBGs_in).prevUnlinkedBG); /* 3 */ sub_2_odoDistances_BasicLocationFunctions_Pkg( &refBG.infoFromPassing.BG_Header.bgPosition.odo, &(*refBGs_in).prevUnlinkedBG.infoFromPassing.BG_Header.bgPosition.odo, &refLocation); /* 12 */ add_2_Distances_BasicLocationFunctions_Pkg( &refLocation, &(*refBGs_in).prevUnlinkedBG.infoFromPassing.BG_Header.BG_centerDetectionInaccuraccuracies, &tmp1); /* 3 */ sub_2_distances_BasicLocationFunctions_Pkg( &refBG.location, &tmp1, &tmp.location); } else /* 22 */ if (Q_LINK_Unlinked == relocatedBG.q_link) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&tmp, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &tmp, &(*refBGs_in).prevUnlinkedBG); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevUnlinkedBG, &tmp); /* 26 */ if (BGin_is_refBG) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, &refBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, &relocatedBG); } }
/* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr */ void recalculate_BG_locations_astern_itr_CalculateTrainPosition_Pkg_BG_relocation_Pkg( /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::refBGs_in */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *refBGs_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::BG_in */ positionedBG_T_TrainPosition_Types_Pck *BG_in, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::trainProperties */ trainProperties_T_TrainPosition_Types_Pck *trainProperties, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::refBGs_out */ refBGs_T_CalculateTrainPosition_Pkg_BG_relocation_Pkg *refBGs_out, /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::BG_out */ positionedBG_T_TrainPosition_Types_Pck *BG_out) { /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr */ static LocWithInAcc_T_Obu_BasicTypes_Pkg tmp1; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr */ static LocWithInAcc_T_Obu_BasicTypes_Pkg tmp; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::BGin_is_refBG */ static kcg_bool BGin_is_refBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::refBG */ static positionedBG_T_TrainPosition_Types_Pck refBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::relocatedBG */ static positionedBG_T_TrainPosition_Types_Pck relocatedBG; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::sumOfBestDistances */ static LocWithInAcc_T_Obu_BasicTypes_Pkg sumOfBestDistances; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::_L106 */ static kcg_bool _L106; /* CalculateTrainPosition_Pkg::BG_relocation_Pkg::recalculate_BG_locations_astern_itr::_L137 */ static kcg_bool _L137; BGin_is_refBG = /* 1 */ positionedBGs_ids_equal_CalculateTrainPosition_Pkg_BG_utilities_Pkg( &(*refBGs_in).refBG, BG_in); (*refBGs_out).recalculate = BGin_is_refBG | ((*refBGs_in).recalculate & (*BG_in).valid); /* 13 */ if (BGin_is_refBG) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&refBG, BG_in); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &refBG, &(*refBGs_in).refBG); } kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&(*refBGs_out).refBG, &refBG); _L106 = Q_LINK_Linked == refBG.q_link; _L137 = (*BG_in).valid & ((*BG_in).q_link == Q_LINK_Linked); /* 16 */ if (BGin_is_refBG) { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &sumOfBestDistances, (LocWithInAcc_T_Obu_BasicTypes_Pkg *) &cLocWithInAcc_0_Obu_BasicTypes_Pkg); } else /* 17 */ if (!(*refBGs_in).prevLinkedBG.valid & (*refBGs_in).refBG.valid & ((*refBGs_in).refBG.q_link == Q_LINK_Unlinked) & (*refBGs_in).refBG.infoFromPassing.valid & (*BG_in).infoFromPassing.valid & _L137) { /* 2 */ sub_2_odoDistances_BasicLocationFunctions_Pkg( &(*refBGs_in).refBG.infoFromPassing.BG_Header.bgPosition.odo, &(*BG_in).infoFromPassing.BG_Header.bgPosition.odo, &tmp1); /* 3 */ sub_2_distances_BasicLocationFunctions_Pkg( &(*refBGs_in).sumOfBestDistances, &tmp1, &sumOfBestDistances); } else /* 14 */ if (_L137 & (*refBGs_in).prevLinkedBG.valid & (*refBGs_in).prevLinkedBG.infoFromLinking.valid) { /* 1 */ sub_2_distances_BasicLocationFunctions_Pkg( &(*refBGs_in).sumOfBestDistances, &(*refBGs_in).prevLinkedBG.infoFromLinking.d_link, &sumOfBestDistances); } else /* 15 */ if (_L137 & (*refBGs_in).prevLinkedBG.valid & !(*refBGs_in).prevLinkedBG.infoFromLinking.valid & (*refBGs_in).prevLinkedBG.infoFromPassing.valid & (*BG_in).infoFromPassing.valid) { /* 1 */ sub_2_odoDistances_BasicLocationFunctions_Pkg( &(*refBGs_in).prevLinkedBG.infoFromPassing.BG_Header.bgPosition.odo, &(*BG_in).infoFromPassing.BG_Header.bgPosition.odo, &tmp); /* 2 */ sub_2_distances_BasicLocationFunctions_Pkg( &(*refBGs_in).sumOfBestDistances, &tmp, &sumOfBestDistances); } else { kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &sumOfBestDistances, &(*refBGs_in).sumOfBestDistances); } kcg_copy_LocWithInAcc_T_Obu_BasicTypes_Pkg( &(*refBGs_out).sumOfBestDistances, &sumOfBestDistances); /* 9 */ if ((*refBGs_in).recalculate) { /* 1 */ recalculate_BG_location_astern_CalculateTrainPosition_Pkg_BG_relocation_Pkg( BG_in, &(*refBGs_in).prevLinkedBG, &(*refBGs_in).refBG, &sumOfBestDistances, trainProperties, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(&relocatedBG, BG_in); } _L137 = Q_LINK_Unlinked == refBG.q_link; /* 3 */ if (BGin_is_refBG & _L106) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevLinkedBG, &refBG); } else /* 4 */ if (BGin_is_refBG & !_L106) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevLinkedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } else /* 5 */ if (Q_LINK_Linked == relocatedBG.q_link) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevLinkedBG, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevLinkedBG, &(*refBGs_in).prevLinkedBG); } /* 8 */ if (BGin_is_refBG & _L137) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevUnlinkedBG, &refBG); } else /* 7 */ if (BGin_is_refBG & !_L137) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevUnlinkedBG, (positionedBG_T_TrainPosition_Types_Pck *) &cNoPositionedBG_CalculateTrainPosition_Pkg); } else /* 6 */ if (Q_LINK_Unlinked == relocatedBG.q_link) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevUnlinkedBG, &relocatedBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck( &(*refBGs_out).prevUnlinkedBG, &(*refBGs_in).prevUnlinkedBG); } /* 12 */ if (BGin_is_refBG) { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, &refBG); } else { kcg_copy_positionedBG_T_TrainPosition_Types_Pck(BG_out, &relocatedBG); } }