/* InfraLib::TrackDiscontinuity_CalcTrainPos */ void TrackDiscontinuity_CalcTr_InfraLib( /* InfraLib::TrackDiscontinuity_CalcTrainPos::DeltaIn */kcg_int DeltaIn, /* InfraLib::TrackDiscontinuity_CalcTrainPos::StartSection */kcg_int StartSection, /* InfraLib::TrackDiscontinuity_CalcTrainPos::SectionDataIn */TrackSectionData_T_InfraLib *SectionDataIn, outC_TrackDiscontinuity_CalcTr_InfraLib *outC) { kcg_copy_TrackSectionData_T_InfraLib(&outC->_L27, SectionDataIn); kcg_copy_TrainPosRaw_T_InfraLib(&outC->_L29, &outC->_L27.TrainPosRaw); outC->_L31 = outC->_L29.TrainPos_in; outC->_L30 = outC->_L29.OffsetTotal; outC->_L26 = (kcg_real) outC->_L30; outC->_L23 = outC->_L31 - outC->_L26; outC->_L15 = DeltaIn; outC->_L19 = 0; outC->_L18 = outC->_L15 >= outC->_L19; outC->_L22 = 1; outC->_L20 = - 1; if (outC->_L18) { outC->_L21 = outC->_L22; } else { outC->_L21 = outC->_L20; } outC->_L24 = (kcg_real) outC->_L21; outC->_L25 = outC->_L23 * outC->_L24; outC->_L28 = StartSection; outC->_L33 = (kcg_real) outC->_L28; outC->_L32 = outC->_L25 + outC->_L33; outC->TrainPosCalibrated = outC->_L32; }
/* InfraLib::TrackDiscontinuity */ void TrackDiscontinuity_InfraLib( /* InfraLib::TrackDiscontinuity::SectionData_in */TrackSectionData_T_InfraLib *SectionData_in, /* InfraLib::TrackDiscontinuity::StartSection */kcg_int StartSection, /* InfraLib::TrackDiscontinuity::EndSection */kcg_int EndSection, /* InfraLib::TrackDiscontinuity::SectionData_out */TrackSectionData_T_InfraLib *SectionData_out) { static kcg_int tmp; /* InfraLib::TrackDiscontinuity::NewOffset */ static kcg_int NewOffset; /* InfraLib::TrackDiscontinuity::_L49 */ static kcg_int _L49; /* InfraLib::TrackDiscontinuity::_L63 */ static kcg_bool _L63; _L49 = EndSection - StartSection; if (0 <= _L49) { tmp = _L49; } else { tmp = - _L49; } NewOffset = (*SectionData_in).TrainPosRaw.OffsetTotal + tmp; _L63 = ((*SectionData_in).TrainPosRaw.TrainPos_in >= (kcg_real) (*SectionData_in).TrainPosRaw.OffsetTotal) & ((*SectionData_in).TrainPosRaw.TrainPos_in < (kcg_real) NewOffset); kcg_copy_TrackSectionData_T_InfraLib(SectionData_out, SectionData_in); kcg_copy_TrainPosRaw_T_InfraLib( &(*SectionData_out).TrainPosRaw, &(*SectionData_in).TrainPosRaw); (*SectionData_out).TrainPosRaw.OffsetTotal = NewOffset; if (_L63) { (*SectionData_out).TrainPosRaw.TrainPosCalibrated = /* 2 */ TrackDiscontinuity_CalcTrainPos_InfraLib( _L49, StartSection, SectionData_in); } else { (*SectionData_out).TrainPosRaw.TrainPosCalibrated = 0.0; } }
/* InfraLib::TrackDiscontinuity */ void TrackDiscontinuity_InfraLib( /* InfraLib::TrackDiscontinuity::SectionData_in */TrackSectionData_T_InfraLib *SectionData_in, /* InfraLib::TrackDiscontinuity::StartSection */kcg_int StartSection, /* InfraLib::TrackDiscontinuity::EndSection */kcg_int EndSection, outC_TrackDiscontinuity_InfraLib *outC) { static kcg_real tmp; kcg_copy_TrackSectionData_T_InfraLib(&outC->_L16, SectionData_in); kcg_copy_TrainPosRaw_T_InfraLib(&outC->_L81, &outC->_L16.TrainPosRaw); outC->_L83 = outC->_L81.OffsetTotal; outC->_L8_3 = 0; outC->_L3 = EndSection; outC->_L2 = StartSection; outC->_L49 = outC->_L3 - outC->_L2; outC->A_Input_3 = outC->_L49; outC->_L5_3 = outC->A_Input_3; outC->_L1_3 = outC->_L8_3 <= outC->_L5_3; outC->_L3_3 = - outC->_L5_3; if (outC->_L1_3) { outC->_L2_3 = outC->_L5_3; } else { outC->_L2_3 = outC->_L3_3; } outC->A_Output_3 = outC->_L2_3; outC->_L50 = outC->A_Output_3; outC->_L57 = outC->_L83 + outC->_L50; outC->NewOffset = outC->_L57; outC->_L91 = outC->NewOffset; kcg_copy_TrainPosRaw_T_InfraLib(&outC->_L90, &outC->_L81); if (kcg_true) { outC->_L90.OffsetTotal = outC->_L91; } outC->_L82 = outC->_L81.TrainPos_in; outC->_L60 = (kcg_real) outC->_L83; outC->_L61 = outC->_L82 >= outC->_L60; outC->_L59 = (kcg_real) outC->_L57; outC->_L62 = outC->_L82 < outC->_L59; outC->_L63 = outC->_L61 & outC->_L62; outC->tmp = outC->_L63; kcg_copy_TrackSectionData_T_InfraLib(&outC->_L80, SectionData_in); if (outC->tmp) { /* 2 */ TrackDiscontinuity_CalcTr_InfraLib( outC->_L49, outC->_L2, &outC->_L80, &outC->Context_2); tmp = outC->Context_2.TrainPosCalibrated; outC->_L79 = tmp; } else { outC->_L79 = 0.0; } kcg_copy_TrainPosRaw_T_InfraLib(&outC->_L89, &outC->_L90); if (kcg_true) { outC->_L89.TrainPosCalibrated = outC->_L79; } kcg_copy_TrackSectionData_T_InfraLib(&outC->_L88, &outC->_L16); if (kcg_true) { kcg_copy_TrainPosRaw_T_InfraLib(&outC->_L88.TrainPosRaw, &outC->_L89); } kcg_copy_TrackSectionData_T_InfraLib(&outC->SectionData_out, &outC->_L88); }