/* TA_Lib_internal::Update_SP_per_LRBG_loop */
void Update_SP_per_LRBG_loop_TA_Lib_internal(
  /* TA_Lib_internal::Update_SP_per_LRBG_loop::i */kcg_int i,
  /* TA_Lib_internal::Update_SP_per_LRBG_loop::SP */SSP_cat_t_TA_MRSP *SP,
  /* TA_Lib_internal::Update_SP_per_LRBG_loop::First_Section_To_Replace */kcg_int First_Section_To_Replace,
  /* TA_Lib_internal::Update_SP_per_LRBG_loop::new_SSP_received */SSP_cat_t_TA_MRSP *new_SSP_received,
  outC_Update_SP_per_LRBG_loop_TA_Lib_internal *outC)
{
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L20, SP);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L6, new_SSP_received);
  outC->_L11 = i;
  if ((0 <= outC->_L11) & (outC->_L11 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&outC->_L15, &outC->_L6[outC->_L11]);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(
      &outC->_L15,
      (SSP_section_t_TA_MRSP *) &DEFAULT_SSP_section_TA_MRSP);
  }
  outC->_L5 = i;
  outC->_L4 = First_Section_To_Replace;
  outC->_L7 = outC->_L5 + outC->_L4;
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L19, &outC->_L20);
  if ((0 <= outC->_L7) & (outC->_L7 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&outC->_L19[outC->_L7], &outC->_L15);
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->SpeedProfile_out, &outC->_L19);
}
/* TA_SpeedProfiles::SP_MaxTrainSpeed */
void SP_MaxTrainSpeed_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_MaxTrainSpeed::TrainDataIn */kcg_int TrainDataIn,
  outC_SP_MaxTrainSpeed_TA_SpeedProfiles *outC)
{
  kcg_int noname;
  
  kcg_copy_SSP_cat_t_TA_MRSP(
    &outC->_L2,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
  outC->_L1 = TrainDataIn;
  noname = outC->_L1;
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->MaxTrainSpeed, &outC->_L2);
}
/* TA_SpeedProfiles::SP_TSR */
void SP_TSR_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_TSR::PacketsIn */ReceivedMessage_T_Common_Types_Pkg *PacketsIn,
  outC_SP_TSR_TA_SpeedProfiles *outC)
{
  ReceivedMessage_T_Common_Types_Pkg noname;
  
  kcg_copy_SSP_cat_t_TA_MRSP(
    &outC->_L2,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->TSR, &outC->_L2);
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L1, PacketsIn);
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&noname, &outC->_L1);
}
/* TA_SpeedProfiles::SP_SignalingRelated */
void SP_SignalingRelated_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_SignalingRelated::MessageIn */ReceivedMessage_T_Common_Types_Pkg *MessageIn,
  outC_SP_SignalingRelated_TA_SpeedProfiles *outC)
{
  ReceivedMessage_T_Common_Types_Pkg noname;
  
  kcg_copy_SSP_cat_t_TA_MRSP(
    &outC->_L2,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L1, MessageIn);
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&noname, &outC->_L1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->SignalingRelated, &outC->_L2);
}
/* TA_Lib_internal::FindFirstRelevantSPForNewLRBG_Loop */
void FindFirstRelevantSPForNew_TA_Lib_internal(
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG_Loop::i */kcg_int i,
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG_Loop::Acc */kcg_int Acc,
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG_Loop::Profile_in */SSP_cat_t_TA_MRSP *Profile_in,
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG_Loop::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  outC_FindFirstRelevantSPForNew_TA_Lib_internal *outC)
{
  kcg_int noname;
  
  outC->_L182 = i;
  outC->_L176 = 0;
  outC->_L181 = outC->_L182 > outC->_L176;
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L170, Profile_in);
  outC->_L168 = i;
  if ((0 <= outC->_L168) & (outC->_L168 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&outC->_L172, &outC->_L170[outC->_L168]);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(
      &outC->_L172,
      (SSP_section_t_TA_MRSP *) &DEFAULT_SSP_section_TA_MRSP);
  }
  outC->_L173 = outC->_L172.target;
  outC->_L177 = outC->_L176 == outC->_L173;
  outC->_L178 = outC->_L181 & outC->_L177;
  outC->_L179 = !outC->_L178;
  outC->_L171 = Distance_2LRBGs;
  outC->_L174 = outC->_L173 < outC->_L171;
  outC->_L180 = outC->_L179 & outC->_L174;
  outC->cont = outC->_L180;
  outC->_L175 = i;
  outC->_L169 = Acc;
  noname = outC->_L169;
  outC->relevant_section = outC->_L175;
}
/* TA_Lib_internal::FindStartOfNewSpeedProfile_LOOP */
void FindStartOfNewSpeedProfil_TA_Lib_internal(
  /* TA_Lib_internal::FindStartOfNewSpeedProfile_LOOP::i */kcg_int i,
  /* TA_Lib_internal::FindStartOfNewSpeedProfile_LOOP::Acc */kcg_int Acc,
  /* TA_Lib_internal::FindStartOfNewSpeedProfile_LOOP::distance_in */D_STATIC distance_in,
  /* TA_Lib_internal::FindStartOfNewSpeedProfile_LOOP::Profile_in */SSP_cat_t_TA_MRSP *Profile_in,
  outC_FindStartOfNewSpeedProfil_TA_Lib_internal *outC)
{
  kcg_int noname;
  
  outC->_L14 = i;
  outC->_L12 = 0;
  outC->_L13 = outC->_L14 > outC->_L12;
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L2, Profile_in);
  outC->_L3 = i;
  if ((0 <= outC->_L3) & (outC->_L3 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&outC->_L4, &outC->_L2[outC->_L3]);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(
      &outC->_L4,
      (SSP_section_t_TA_MRSP *) &DEFAULT_SSP_section_TA_MRSP);
  }
  outC->_L5 = outC->_L4.target;
  outC->_L15 = outC->_L12 == outC->_L5;
  outC->_L16 = outC->_L13 & outC->_L15;
  outC->_L17 = !outC->_L16;
  outC->_L1 = distance_in;
  outC->_L6 = outC->_L5 < outC->_L1;
  outC->_L18 = outC->_L17 & outC->_L6;
  outC->_L8 = Acc;
  noname = outC->_L8;
  outC->_L7 = i;
  outC->relevant_section = outC->_L7;
  outC->cont = outC->_L18;
}
/* TA_SpeedProfiles::SP_TSR */
void SP_TSR_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_TSR::reset */ kcg_bool reset,
  /* TA_SpeedProfiles::SP_TSR::PacketsIn */ ReceivedMessage_T_Common_Types_Pkg *PacketsIn,
  /* TA_SpeedProfiles::SP_TSR::TSR */ SSP_cat_t_TA_MRSP *TSR)
{
  kcg_copy_SSP_cat_t_TA_MRSP(TSR, (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
}
/* TA_SpeedProfiles::SP_PBD_SR */
void SP_PBD_SR_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_PBD_SR::MessageIn */ReceivedMessage_T_Common_Types_Pkg *MessageIn,
  /* TA_SpeedProfiles::SP_PBD_SR::PBD_SR */SSP_cat_t_TA_MRSP *PBD_SR)
{
  kcg_copy_SSP_cat_t_TA_MRSP(
    PBD_SR,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
}
/* TA_Lib_internal::FindFirstRelevantSPForNewLRBG */
void FindFirstRelevantSPForNewLRBG_TA_Lib_internal(
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG::Profile_in */SSP_cat_t_TA_MRSP *Profile_in,
  /* TA_Lib_internal::FindFirstRelevantSPForNewLRBG::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  outC_FindFirstRelevantSPForNewLRBG_TA_Lib_internal *outC)
{
  kcg_int i2;
  kcg_int i1;
  kcg_int tmp;
  kcg_int i;
  kcg_int noname;
  
  outC->_L1 = Distance_2LRBGs;
  for (i2 = 0; i2 < 33; i2++) {
    outC->_L170[i2] = outC->_L1;
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L93, Profile_in);
  for (i1 = 0; i1 < 33; i1++) {
    kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L169[i1], &outC->_L93);
  }
  outC->_L100 = 0;
  outC->_L96 = kcg_true;
  outC->_L168 = outC->_L100;
  if (outC->_L96) {
    for (i = 0; i < 33; i++) {
      tmp = outC->_L168;
      /* 3 */
      FindFirstRelevantSPForNew_TA_Lib_internal(
        i,
        tmp,
        &outC->_L169[i],
        outC->_L170[i],
        &outC->Context_3[i]);
      outC->_L168 = outC->Context_3[i].relevant_section;
      outC->_L94 = i + 1;
      if (!outC->Context_3[i].cont) {
        break;
      }
    }
  }
  else {
    outC->_L94 = 0;
  }
  noname = outC->_L94;
  outC->relevant_section = outC->_L168;
}
/* TA_SpeedProfiles::SP_MaxTrainSpeed */
void SP_MaxTrainSpeed_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_MaxTrainSpeed::reset */kcg_bool reset,
  /* TA_SpeedProfiles::SP_MaxTrainSpeed::TrainDataIn */kcg_int TrainDataIn,
  /* TA_SpeedProfiles::SP_MaxTrainSpeed::MaxTrainSpeed */SSP_cat_t_TA_MRSP *MaxTrainSpeed)
{
  kcg_copy_SSP_cat_t_TA_MRSP(
    MaxTrainSpeed,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
}
/* TA_SpeedProfiles::SP_STM_SystemSpeed */
void SP_STM_SystemSpeed_TA_SpeedProf(
  /* TA_SpeedProfiles::SP_STM_SystemSpeed::reset */ kcg_bool reset,
  /* TA_SpeedProfiles::SP_STM_SystemSpeed::PacketsIn */ ReceivedMessage_T_Common_Types_ *PacketsIn,
  /* TA_SpeedProfiles::SP_STM_SystemSpeed::STM_SystemSpeed */ SSP_cat_t_TA_MRSP *STM_SystemSpeed)
{
  kcg_copy_SSP_cat_t_TA_MRSP(
    STM_SystemSpeed,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
}
/* TA_Lib_internal::Update_SP_per_LRBG */
void Update_SP_per_LRBG_TA_Lib_internal(
  /* TA_Lib_internal::Update_SP_per_LRBG::new_SP */SSP_cat_t_TA_MRSP *new_SP,
  /* TA_Lib_internal::Update_SP_per_LRBG::v_static_section1 */V_internal_Type_Obu_BasicTypes_Pkg v_static_section1,
  /* TA_Lib_internal::Update_SP_per_LRBG::section1_delay */SSP_section_t_TA_MRSP *section1_delay,
  /* TA_Lib_internal::Update_SP_per_LRBG::section1 */SSP_section_t_TA_MRSP *section1,
  /* TA_Lib_internal::Update_SP_per_LRBG::Last_SpeedProfile_in */SSP_cat_t_TA_MRSP *Last_SpeedProfile_in,
  /* TA_Lib_internal::Update_SP_per_LRBG::SpeedProfile_out */SSP_cat_t_TA_MRSP *SpeedProfile_out)
{
  SSP_section_t_TA_MRSP tmp1;
  SSP_cat_t_TA_MRSP tmp;
  kcg_int i;
  /* TA_Lib_internal::Update_SP_per_LRBG::_L1 */ kcg_int _L1;
  /* TA_Lib_internal::Update_SP_per_LRBG::_L39 */ array__11213 _L39;
  
  _L1 = /* 1 */
    FindStartOfNewSpeedProfile_TA_Lib_internal(Last_SpeedProfile_in, new_SP);
  if ((0 <= _L1 - 1) & (_L1 - 1 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&tmp1, &(*Last_SpeedProfile_in)[_L1 - 1]);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(
      &tmp1,
      (SSP_section_t_TA_MRSP *) &DEFAULT_SSP_section_TA_MRSP);
  }
  if ((_L1 > 0) & (tmp1.speed < v_static_section1)) {
    kcg_copy_SSP_section_t_TA_MRSP(&(&_L39[0])[0], section1_delay);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(&(&_L39[0])[0], section1);
  }
  kcg_copy_array__12126(&_L39[1], (array__12126 *) &(*new_SP)[1]);
  kcg_copy_SSP_cat_t_TA_MRSP(SpeedProfile_out, Last_SpeedProfile_in);
  for (i = 0; i < 33; i++) {
    kcg_copy_SSP_cat_t_TA_MRSP(&tmp, SpeedProfile_out);
    /* 1 */
    Update_SP_per_LRBG_loop_TA_Lib_internal(
      i,
      &tmp,
      _L1,
      &_L39,
      SpeedProfile_out);
  }
}
/* TA_SSP::Convert_P27_to_DistanceProfile */
void Convert_P27_to_DistanceProfile_TA_SSP(
  /* TA_SSP::Convert_P27_to_DistanceProfile::Packet27_in */P027V1_OBU_T_TM_baseline2 *Packet27_in,
  /* TA_SSP::Convert_P27_to_DistanceProfile::TrainLength */L_internal_Type_Obu_BasicTypes_Pkg TrainLength,
  /* TA_SSP::Convert_P27_to_DistanceProfile::SpeedProfile */SSP_cat_t_TA_MRSP *SpeedProfile,
  /* TA_SSP::Convert_P27_to_DistanceProfile::v_static_section1 */V_internal_Type_Obu_BasicTypes_Pkg *v_static_section1,
  /* TA_SSP::Convert_P27_to_DistanceProfile::section1_delay */SSP_section_t_TA_MRSP *section1_delay,
  /* TA_SSP::Convert_P27_to_DistanceProfile::section1 */SSP_section_t_TA_MRSP *section1)
{
  SSP_cat_t_TA_MRSP tmp;
  kcg_int i;
  /* TA_SSP::Convert_P27_to_DistanceProfile::_L84 */ array__11234 _L84;
  /* TA_SSP::Convert_P27_to_DistanceProfile::_L85 */ array__11351 _L85;
  
  kcg_copy_P027V1_section_enum_T_TM_baseline2(
    &_L85[0],
    (P027V1_section_enum_T_TM_baseline2 *)
      &DEFAULT_P027v1_OBU_section_TM_baseline2);
  kcg_copy_array__12119(&_L84[0], (array__12119 *) &(*Packet27_in).sections[1]);
  kcg_copy_array__11351(&_L84[32], &_L85);
  /* 3 */
  Convert_P27_to_DistanceProfile_1st_section_TA_SSP(
    (*Packet27_in).q_scale,
    &(*Packet27_in).sections[0],
    TrainLength,
    v_static_section1,
    section1_delay,
    section1);
  kcg_copy_SSP_cat_t_TA_MRSP(
    SpeedProfile,
    (SSP_cat_t_TA_MRSP *) &DEFAULT_SSP_cat_TA_MRSP);
  for (i = 0; i < 33; i++) {
    kcg_copy_SSP_cat_t_TA_MRSP(&tmp, SpeedProfile);
    /* 3 */
    Convert_P27_to_DistanceProfile_loop_TA_SSP(
      i,
      &tmp,
      &_L84,
      TrainLength,
      (*Packet27_in).q_scale,
      *v_static_section1,
      SpeedProfile);
  }
}
/* TA_SpeedProfiles::SP_ModeRelated */
void SP_ModeRelated_TA_SpeedProfiles(
  /* TA_SpeedProfiles::SP_ModeRelated::reset */ kcg_bool reset,
  /* TA_SpeedProfiles::SP_ModeRelated::SP_available */ kcg_bool SP_available,
  /* TA_SpeedProfiles::SP_ModeRelated::MessageIn */ ReceivedMessage_T_Common_Types_ *MessageIn,
  /* TA_SpeedProfiles::SP_ModeRelated::ModeDataIn */ T_Mode_Level_Level_And_Mode_Typ *ModeDataIn,
  /* TA_SpeedProfiles::SP_ModeRelated::ModeRelated */ SSP_cat_t_TA_MRSP *ModeRelated)
{
  kcg_copy_SSP_cat_t_TA_MRSP(
    ModeRelated,
    (SSP_cat_t_TA_MRSP *) &TOP_SSP_cat_TA_MRSP);
}
/* TA_MRSP::MRSP_FindLastSSPSection */
void MRSP_FindLastSSPSection_TA_MRSP(
  /* TA_MRSP::MRSP_FindLastSSPSection::SSP_Reverse_In */SSP_cat_t_TA_MRSP *SSP_Reverse_In,
  outC_MRSP_FindLastSSPSection_TA_MRSP *outC)
{
  SSP_Mark_ValidSSPsection_TA_MRSP tmp;
  kcg_int i;
  kcg_int noname;
  
  kcg_copy_SSP_Mark_ValidSSPsection_TA_MRSP(
    &outC->_L31,
    (SSP_Mark_ValidSSPsection_TA_MRSP *)
      &DEFAULT_SSP_Init_ValidSSPsection_TA_MRSP);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L1, SSP_Reverse_In);
  outC->_L16 = kcg_true;
  kcg_copy_SSP_Mark_ValidSSPsection_TA_MRSP(&outC->_L14, &outC->_L31);
  if (outC->_L16) {
    for (i = 0; i < 33; i++) {
      kcg_copy_SSP_Mark_ValidSSPsection_TA_MRSP(&tmp, &outC->_L14);
      /* 1 */
      MRSP_FindLastSSPSection_LOOP_TA_MRSP(
        i,
        &tmp,
        &outC->_L1[i],
        &outC->Context_1[i]);
      kcg_copy_SSP_Mark_ValidSSPsection_TA_MRSP(
        &outC->_L14,
        &outC->Context_1[i].i_out);
      outC->_L13 = i + 1;
      if (!outC->Context_1[i].cont) {
        break;
      }
    }
  }
  else {
    outC->_L13 = 0;
  }
  outC->_L28 = outC->_L14.Index;
  outC->_L29 = outC->_L14.Found;
  if ((0 <= outC->_L28) & (outC->_L28 < 33)) {
    kcg_copy_SSP_section_t_TA_MRSP(&outC->_L19, &outC->_L1[outC->_L28]);
  }
  else {
    kcg_copy_SSP_section_t_TA_MRSP(
      &outC->_L19,
      (SSP_section_t_TA_MRSP *) &DEFAULT_SSP_section_TA_MRSP);
  }
  outC->_L21 = outC->_L19.target;
  outC->_L30.found = outC->_L29;
  outC->_L30.index = outC->_L28;
  outC->_L30.target = outC->_L21;
  noname = outC->_L13;
  kcg_copy_SSP_valid_section_t_TA_MRSP(&outC->Index_Last, &outC->_L30);
}
/* TA_Lib_internal::MoveSPSectionsToNewLRBGafter */
void MoveSPSectionsToNewLRBGafter_TA_Lib_internal(
  /* TA_Lib_internal::MoveSPSectionsToNewLRBGafter::ProfileIn */SSP_cat_t_TA_MRSP *ProfileIn,
  /* TA_Lib_internal::MoveSPSectionsToNewLRBGafter::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  outC_MoveSPSectionsToNewLRBGafter_TA_Lib_internal *outC)
{
  kcg_int i2;
  kcg_int i1;
  SSP_cat_t_TA_MRSP tmp;
  kcg_int i;
  
  outC->_L3 = Distance_2LRBGs;
  for (i2 = 0; i2 < 33; i2++) {
    outC->_L6[i2] = outC->_L3;
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L2, ProfileIn);
  /* 1 */
  FindFirstRelevantSPForNewLRBG_TA_Lib_internal(
    &outC->_L2,
    outC->_L3,
    &outC->Context_1);
  outC->_L1 = outC->Context_1.relevant_section;
  for (i1 = 0; i1 < 33; i1++) {
    outC->_L5[i1] = outC->_L1;
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L4, &outC->_L2);
  for (i = 0; i < 33; i++) {
    kcg_copy_SSP_cat_t_TA_MRSP(&tmp, &outC->_L4);
    /* 1 */
    MoveSPSectionsToNewLRBGaf_TA_Lib_internal(
      i,
      &tmp,
      outC->_L5[i],
      outC->_L6[i],
      &outC->_1_Context_1[i]);
    kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L4, &outC->_1_Context_1[i].ProfileOut);
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->ProfileOut, &outC->_L4);
}
/* TA_MRSP::MRSP_Split_And_Reverse_SSP_matrix */
void MRSP_Split_And_Reverse_SS_TA_MRSP(
  /* TA_MRSP::MRSP_Split_And_Reverse_SSP_matrix::SSP_matrix_in */SSP_matrix_t_TA_MRSP *SSP_matrix_in,
  outC_MRSP_Split_And_Reverse_SS_TA_MRSP *outC)
{
  kcg_int i;
  
  kcg_copy_SSP_matrix_t_TA_MRSP(&outC->_L1, SSP_matrix_in);
  for (i = 0; i < 11; i++) {
    /* 1 */
    _19_MRSP_SplitAndReverseSSP_L_TA_MRSP(&outC->_L1[i], &outC->Context_1[i]);
    kcg_copy_SSP_t_cat_t_TA_MRSP(
      &outC->_L27[i],
      &outC->Context_1[i].SSP_reverse_t_cat_out);
    kcg_copy_SSP_cat_t_TA_MRSP(
      &outC->_L51[i],
      &outC->Context_1[i].SSP_reverse_cat_out);
  }
  kcg_copy_SSP_matrix_t_TA_MRSP(&outC->SSP_reverse_matrix_out, &outC->_L51);
  kcg_copy_SSP_t_matrix_t_TA_MRSP(&outC->SSP_reverse_t_matrix_out, &outC->_L27);
}
Example #18
0
/* TA_MRSP::Build_MRSP */
void Build_MRSP_TA_MRSP(
  /* TA_MRSP::Build_MRSP::MessageIn */ReceivedMessage_T_Common_Types_Pkg *MessageIn,
  /* TA_MRSP::Build_MRSP::TrainDataIn */kcg_int TrainDataIn,
  /* TA_MRSP::Build_MRSP::ModeDataIn */kcg_bool ModeDataIn,
  /* TA_MRSP::Build_MRSP::train_length */L_internal_Type_Obu_BasicTypes_Pkg train_length,
  /* TA_MRSP::Build_MRSP::train_position */trainPosition_T_TrainPosition_Types_Pck *train_position,
  outC_Build_MRSP_TA_MRSP *outC)
{
  MRSP_Profile_t_TrackAtlasTypes tmp;
  MRSP_Profile_t_TrackAtlasTypes tmp1;
  
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L16, MessageIn);
  /* 1 */ SP_ASP_TA_SpeedProfiles(&outC->_L16, &outC->Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L3, &outC->Context_1.ASP);
  /* 1 */ SP_LX_SR_TA_SpeedProfiles(&outC->_L16, &outC->_1_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L4, &outC->_1_Context_1.LX_SR);
  outC->_L17 = TrainDataIn;
  /* 1 */ SP_MaxTrainSpeed_TA_SpeedProfiles(outC->_L17, &outC->_2_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L5, &outC->_2_Context_1.MaxTrainSpeed);
  outC->_L18 = ModeDataIn;
  /* 1 */
  SP_ModeRelated_TA_SpeedProfiles(&outC->_L16, outC->_L18, &outC->_3_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L7, &outC->_3_Context_1.ModeRelated);
  /* 1 */ SP_OverrideRelated_TA_SpeedProfiles(&outC->_L16, &outC->_4_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L8, &outC->_4_Context_1.OverrideRelated);
  /* 1 */ SP_PBD_SR_TA_SpeedProfiles(&outC->_L16, &outC->_5_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L9, &outC->_5_Context_1.PBD_SR);
  /* 1 */
  SP_SignalingRelated_TA_SpeedProfiles(&outC->_L16, &outC->_6_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L11, &outC->_6_Context_1.SignalingRelated);
  outC->_L22 = train_length;
  kcg_copy_trainPosition_T_TrainPosition_Types_Pck(&outC->_L23, train_position);
  /* 1 */
  SP_SSP_TA_SpeedProfiles(
    &outC->_L16,
    outC->_L22,
    &outC->_L23,
    &outC->_7_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L21, &outC->_7_Context_1.SSP);
  outC->_L20 = outC->_7_Context_1.updated;
  /* 1 */ SP_STM_MaxSpeed_TA_SpeedProfiles(&outC->_L16, &outC->_8_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L13, &outC->_8_Context_1.STM_MaxSpeed);
  /* 1 */ SP_STM_SystemSpeed_TA_SpeedProfiles(&outC->_L16, &outC->_9_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L14, &outC->_9_Context_1.STM_SystemSpeed);
  /* 1 */ SP_TSR_TA_SpeedProfiles(&outC->_L16, &outC->_10_Context_1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L15, &outC->_10_Context_1.TSR);
  /* 1 */
  Build_SSP_Matrix_TA_SpeedProfiles(
    &outC->_L3,
    &outC->_L4,
    &outC->_L5,
    &outC->_L7,
    &outC->_L8,
    &outC->_L9,
    &outC->_L11,
    &outC->_L21,
    outC->_L20,
    &outC->_L13,
    &outC->_L14,
    &outC->_L15,
    &outC->_11_Context_1);
  outC->_L19 = outC->_11_Context_1.SSP_matrix_updated;
  kcg_copy_SSP_matrix_t_TA_MRSP(
    &outC->_L2,
    &outC->_11_Context_1.SSP_matrix_out);
  outC->newMRSP = outC->_L19;
  outC->tmp = outC->_L19;
  if (outC->tmp) {
    /* 1 */ Calculate_MRSP_TA_MRSP(&outC->_L2, &outC->_12_Context_1);
    kcg_copy_MRSP_Profile_t_TrackAtlasTypes(&tmp1, &outC->_12_Context_1.MRSP);
    kcg_copy_MRSP_Profile_t_TrackAtlasTypes(&outC->_L1, &tmp1);
  }
  else {
    if (outC->init) {
      kcg_copy_MRSP_Profile_t_TrackAtlasTypes(
        &tmp,
        (MRSP_Profile_t_TrackAtlasTypes *) &DEFAULT_MRSP_Profile_TA_MRSP);
    }
    else {
      kcg_copy_MRSP_Profile_t_TrackAtlasTypes(&tmp, &outC->_L1);
    }
    kcg_copy_MRSP_Profile_t_TrackAtlasTypes(&outC->_L1, &tmp);
  }
  kcg_copy_MRSP_Profile_t_TrackAtlasTypes(&outC->MRSP, &outC->_L1);
  outC->init = kcg_false;
}
/* TA_SpeedProfiles::Build_SSP_Matrix */
void Build_SSP_Matrix_TA_SpeedProfiles(
  /* TA_SpeedProfiles::Build_SSP_Matrix::ASP */SSP_cat_t_TA_MRSP *ASP,
  /* TA_SpeedProfiles::Build_SSP_Matrix::LX_SR */SSP_cat_t_TA_MRSP *LX_SR,
  /* TA_SpeedProfiles::Build_SSP_Matrix::MaxTrainSpeed */SSP_cat_t_TA_MRSP *MaxTrainSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::ModeRelated */SSP_cat_t_TA_MRSP *ModeRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::OverrideRelated */SSP_cat_t_TA_MRSP *OverrideRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::PBD_SR */SSP_cat_t_TA_MRSP *PBD_SR,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SignalingRelated */SSP_cat_t_TA_MRSP *SignalingRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP */SSP_cat_t_TA_MRSP *SSP,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP_updated */kcg_bool SSP_updated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::STM_MaxSpeed */SSP_cat_t_TA_MRSP *STM_MaxSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::STM_SystemSpeed */SSP_cat_t_TA_MRSP *STM_SystemSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::TSR */SSP_cat_t_TA_MRSP *TSR,
  outC_Build_SSP_Matrix_TA_SpeedProfiles *outC)
{
  outC->_L13 = SSP_updated;
  outC->SSP_matrix_updated = outC->_L13;
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L1, ASP);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L2, LX_SR);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L3, MaxTrainSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L4, ModeRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L5, OverrideRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L6, PBD_SR);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L7, SignalingRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L8, SSP);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L9, STM_MaxSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L10, STM_SystemSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L11, TSR);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[0], &outC->_L1);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[1], &outC->_L2);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[2], &outC->_L3);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[3], &outC->_L4);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[4], &outC->_L5);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[5], &outC->_L6);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[6], &outC->_L7);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[7], &outC->_L8);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[8], &outC->_L9);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[9], &outC->_L10);
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L12[10], &outC->_L11);
  kcg_copy_SSP_matrix_t_TA_MRSP(&outC->SSP_matrix_out, &outC->_L12);
}
/* TA_SpeedProfiles::Build_SSP_Matrix */
void Build_SSP_Matrix_TA_SpeedProfil(
  /* TA_SpeedProfiles::Build_SSP_Matrix::ASP */ SSP_cat_t_TA_MRSP *ASP,
  /* TA_SpeedProfiles::Build_SSP_Matrix::LX_SR */ SSP_cat_t_TA_MRSP *LX_SR,
  /* TA_SpeedProfiles::Build_SSP_Matrix::MaxTrainSpeed */ SSP_cat_t_TA_MRSP *MaxTrainSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::ModeRelated */ SSP_cat_t_TA_MRSP *ModeRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::OverrideRelated */ SSP_cat_t_TA_MRSP *OverrideRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::PBD_SR */ SSP_cat_t_TA_MRSP *PBD_SR,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SignalingRelated */ SSP_cat_t_TA_MRSP *SignalingRelated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP */ SSP_cat_t_TA_MRSP *SSP,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP_updated */ kcg_bool SSP_updated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::STM_MaxSpeed */ SSP_cat_t_TA_MRSP *STM_MaxSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::STM_SystemSpeed */ SSP_cat_t_TA_MRSP *STM_SystemSpeed,
  /* TA_SpeedProfiles::Build_SSP_Matrix::TSR */ SSP_cat_t_TA_MRSP *TSR,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP_matrix_updated */ kcg_bool *SSP_matrix_updated,
  /* TA_SpeedProfiles::Build_SSP_Matrix::SSP_matrix_out */ SSP_matrix_t_TA_MRSP *SSP_matrix_out)
{
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[0], ASP);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[1], LX_SR);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[2], MaxTrainSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[3], ModeRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[4], OverrideRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[5], PBD_SR);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[6], SignalingRelated);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[7], SSP);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[8], STM_MaxSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[9], STM_SystemSpeed);
  kcg_copy_SSP_cat_t_TA_MRSP(&(*SSP_matrix_out)[10], TSR);
  *SSP_matrix_updated = SSP_updated;
}
/* TA_SSP::Convert_P27_to_DistanceProfile */
void _17_Convert_P27_to_DistancePr_TA_SSP(
  /* TA_SSP::Convert_P27_to_DistanceProfile::Packet27_in */P027V1_OBU_T_TM_baseline2 *Packet27_in,
  /* TA_SSP::Convert_P27_to_DistanceProfile::TrainLength */L_internal_Type_Obu_BasicTypes_Pkg TrainLength,
  outC__17_Convert_P27_to_DistancePr_TA_SSP *outC)
{
  kcg_int i5;
  kcg_int i4;
  kcg_int i3;
  kcg_int i2;
  kcg_int i1;
  SSP_cat_t_TA_MRSP tmp;
  kcg_int i;
  
  kcg_copy_P027V1_section_enum_T_TM_baseline2(
    &outC->_L86,
    (P027V1_section_enum_T_TM_baseline2 *)
      &DEFAULT_P027v1_OBU_section_TM_baseline2);
  for (i5 = 0; i5 < 1; i5++) {
    kcg_copy_P027V1_section_enum_T_TM_baseline2(&outC->_L85[i5], &outC->_L86);
  }
  kcg_copy_P027V1_OBU_T_TM_baseline2(&outC->_L73, Packet27_in);
  kcg_copy_P027V1_OBU_sectionlist_enum_T_TM_baseline2(
    &outC->_L71,
    &outC->_L73.sections);
  kcg_copy_array__10599(&outC->_L64, (array__10599 *) &outC->_L71[1]);
  kcg_copy_array__10599(&outC->_L84[0], &outC->_L64);
  kcg_copy_array__10605(&outC->_L84[32], &outC->_L85);
  kcg_copy_P027V1_OBU_T_TM_baseline2(&outC->_L63, Packet27_in);
  outC->_L65 = outC->_L63.q_scale;
  kcg_copy_P027V1_OBU_T_TM_baseline2(&outC->_L70, Packet27_in);
  kcg_copy_P027V1_section_enum_T_TM_baseline2(
    &outC->_L62,
    &outC->_L70.sections[0]);
  outC->_L72 = TrainLength;
  /* 3 */
  Convert_P27_to_DistancePr_TA_SSP(
    outC->_L65,
    &outC->_L62,
    outC->_L72,
    &outC->Context_3);
  outC->_L68 = outC->Context_3.v_static_section1;
  kcg_copy_SSP_section_t_TA_MRSP(&outC->_L66, &outC->Context_3.section1_delay);
  kcg_copy_SSP_section_t_TA_MRSP(&outC->_L67, &outC->Context_3.section1);
  kcg_copy_SSP_section_t_TA_MRSP(&outC->section1, &outC->_L67);
  kcg_copy_SSP_section_t_TA_MRSP(&outC->section1_delay, &outC->_L66);
  outC->v_static_section1 = outC->_L68;
  kcg_copy_SSP_cat_t_TA_MRSP(
    &outC->_L83,
    (SSP_cat_t_TA_MRSP *) &DEFAULT_SSP_cat_TA_MRSP);
  for (i4 = 0; i4 < 33; i4++) {
    kcg_copy_array__10437(&outC->_L74[i4], &outC->_L84);
  }
  outC->_L69 = TrainLength;
  for (i3 = 0; i3 < 33; i3++) {
    outC->_L82[i3] = outC->_L69;
  }
  for (i2 = 0; i2 < 33; i2++) {
    outC->_L76[i2] = outC->_L65;
  }
  for (i1 = 0; i1 < 33; i1++) {
    outC->_L81[i1] = outC->_L68;
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->_L77, &outC->_L83);
  for (i = 0; i < 33; i++) {
    kcg_copy_SSP_cat_t_TA_MRSP(&tmp, &outC->_L77);
    /* 3 */
    _16_Convert_P27_to_DistancePr_TA_SSP(
      i,
      &tmp,
      &outC->_L74[i],
      outC->_L82[i],
      outC->_L76[i],
      outC->_L81[i],
      &outC->_1_Context_3[i]);
    kcg_copy_SSP_cat_t_TA_MRSP(
      &outC->_L77,
      &outC->_1_Context_3[i].SpeedProfile);
  }
  kcg_copy_SSP_cat_t_TA_MRSP(&outC->SpeedProfile, &outC->_L77);
}