/* TM_lib_internal::C_P005_us_array */
void C_P005_us_array_TM_lib_internal(
  /* TM_lib_internal::C_P005_us_array::i */ kcg_int i,
  /* TM_lib_internal::C_P005_us_array::n_iter_int */ kcg_int n_iter_int,
  /* TM_lib_internal::C_P005_us_array::flat */ P005_sections_array_flat_T_TM *flat,
  /* TM_lib_internal::C_P005_us_array::cont */ kcg_bool *cont,
  /* TM_lib_internal::C_P005_us_array::sections */ P005_section_enum_T_TM *sections)
{
  /* TM_lib_internal::C_P005_us_array::_L16 */ kcg_int _L16;
  
  (*sections).valid = kcg_true;
  _L16 = i * DIM_P005_n_sections_TM_lib_internal;
  (*sections).d_link = /* 1 */
    CAST_Int_to_D_LINK_TM_conversions(
      /* 1 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 0));
  (*sections).q_newcountry = /* 1 */
    CAST_Int_to_Q_NEWCOUNTRY_TM_conversions(
      /* 2 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 1));
  (*sections).nid_c = /* 1 */
    CAST_Int_to_NID_C_TM_conversions(
      /* 3 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 2));
  (*sections).nid_bg = /* 1 */
    CAST_Int_to_NID_BG_TM_conversions(
      /* 4 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 3));
  (*sections).q_linkorientation = /* 1 */
    CAST_Int_to_Q_LINKORIENTATION_TM_conversions(
      /* 5 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 4));
  (*sections).q_linkreaction = /* 1 */
    CAST_Int_to_Q_LINKREACTION_TM_conversions(
      /* 6 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 5));
  (*sections).q_locacc = /* 1 */
    CAST_Int_to_Q_LOCACC_TM_conversions(
      /* 7 */ C_P005_extract_el_section_TM_lib_internal(_L16, flat, 6));
  *cont = n_iter_int > i;
}
/* TM_conversions::C_P131_compr_onboard */
void C_P131_compr_onboard_TM_conversions(
  /* TM_conversions::C_P131_compr_onboard::PacketData */ CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions::C_P131_compr_onboard::Metadata_Element */ MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  /* TM_conversions::C_P131_compr_onboard::P131_onboard */ P131_OBU_T_TM *P131_onboard)
{
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1::else */ kcg_bool _2_else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1 */ kcg_bool IfBlock1_clock_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else::else */ kcg_bool else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else */ kcg_bool _1_else_clock_1_IfBlock1;
  /* TM_conversions::C_P131_compr_onboard::_L34 */ array_int_9 _L34;
  
  kcg_copy_array_int_9(&_L34, (array_int_9 *) &(*PacketData)[0]);
  (*P131_onboard).valid = _L34[0] == 131;
  else_clock_1_IfBlock1 = _L34[1] == INT_Q_DIR_nomiinal_TM_conversions;
  IfBlock1_clock_1 = _L34[3] == INT_Q_SCALE_10cm_TM_conversions;
  /* 1_ck_IfBlock1 */ if (else_clock_1_IfBlock1) {
    (*P131_onboard).q_dir = ENUM_Q_DIR_nominal_TM_conversions;
  }
  else {
    _2_else_clock_1_IfBlock1 = _L34[1] == INT_Q_DIR_reverse_TM_conversions;
    /* 1_ck_anon_activ */ if (_2_else_clock_1_IfBlock1) {
      (*P131_onboard).q_dir = ENUM_Q_DIR_reverse_TM_conversions;
    }
    else {
      _1_else_clock_1_IfBlock1 = _L34[1] == INT_Q_DIR_both_TM_conversions;
      /* 1_ck_anon_activ */ if (_1_else_clock_1_IfBlock1) {
        (*P131_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
      else {
        (*P131_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
    }
  }
  /* 1_ck_IfBlock1 */ if (IfBlock1_clock_1) {
    (*P131_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversions;
  }
  else {
    _1_else_clock_1_IfBlock1 = _L34[3] == INT_Q_SCALE_1m_TM_conversions;
    /* 1_ck_anon_activ */ if (_1_else_clock_1_IfBlock1) {
      (*P131_onboard).q_scale = ENUM_Q_SCALE_1m_TM_conversions;
    }
    else {
      else_clock_1_IfBlock1 = _L34[3] == INT_Q_SCALE_10m_TM_conversions;
      /* 1_ck_anon_activ */ if (else_clock_1_IfBlock1) {
        (*P131_onboard).q_scale = ENUM_Q_SCALE_10m_TM_conversions;
      }
      else {
        (*P131_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversions;
      }
    }
  }
  (*P131_onboard).d_rbctr = /* 1 */ CAST_Int_to_D_RBCTR_TM_conversions(_L34[4]);
  (*P131_onboard).nid_c = /* 1 */ CAST_Int_to_NID_C_TM_conversions(_L34[5]);
  (*P131_onboard).nid_rbc = /* 1 */ CAST_Int_to_NID_RBC_TM_conversions(_L34[6]);
  (*P131_onboard).nid_radio = /* 1 */
    CAST_Int_to_NID_RADIO_TM_conversions(_L34[7]);
  (*P131_onboard).q_sleepsession = /* 1 */
    CAST_Int_to_Q_SLEEPSESSION_TM_conversions(_L34[8]);
}
/* TM_conversions::DECODE_NID_LRBG */
void DECODE_NID_LRBG_TM_conversions(
  /* TM_conversions::DECODE_NID_LRBG::nid_lrbg */NID_LRBG nid_lrbg,
  /* TM_conversions::DECODE_NID_LRBG::nid_c */NID_C *nid_c,
  /* TM_conversions::DECODE_NID_LRBG::nid_bg */NID_BG *nid_bg)
{
  *nid_bg = /* 1 */ CAST_Int_to_NID_BG_TM_conversions(nid_lrbg % 100000);
  *nid_c = /* 1 */ CAST_Int_to_NID_C_TM_conversions(nid_lrbg / 100000);
}
/* TM_lib_internal::C_P003V1_us_array */
void C_P003V1_us_array_TM_lib_internal(
  /* TM_lib_internal::C_P003V1_us_array::i */ kcg_int i,
  /* TM_lib_internal::C_P003V1_us_array::n_iter_int */ kcg_int n_iter_int,
  /* TM_lib_internal::C_P003V1_us_array::flat */ P003V1_OBU_sectionlist_int_T_TM_baseline2 *flat,
  /* TM_lib_internal::C_P003V1_us_array::cont */ kcg_bool *cont,
  /* TM_lib_internal::C_P003V1_us_array::sections */ P003V1_section_enum_T_TM_baseline2 *sections)
{
  (*sections).valid = kcg_true;
  (*sections).nid_c = /* 2 */
    CAST_Int_to_NID_C_TM_conversions(
      /* 2 */ C_P003V1_extract_el_section_TM_lib_internal(i, flat));
  *cont = n_iter_int > i;
}
/* TM_conversions::CASTLIB_BaliseHeaders */
void CASTLIB_BaliseHeaders_TM_conversions(
  /* TM_conversions::CASTLIB_BaliseHeaders::In */BaliseTelegramHeader_int_T_TM *In,
  /* TM_conversions::CASTLIB_BaliseHeaders::Out */TelegramHeader_T_BG_Types_Pkg *Out)
{
  (*Out).q_updown = /* 1 */ CAST_Int_to_Q_UPDOWN_TM_conversions((*In).q_updown);
  (*Out).m_version = /* 1 */
    CAST_Int_to_M_VERSION_TM_conversions((*In).m_version);
  (*Out).q_media = /* 1 */ CAST_Int_to_Q_MEDIA_TM_conversions((*In).q_media);
  (*Out).n_pig = /* 1 */ CAST_Int_to_N_PIG_TM_conversions((*In).n_pig);
  (*Out).n_total = /* 1 */ CAST_Int_to_N_TOTAL_TM_conversions((*In).n_total);
  (*Out).m_dup = /* 1 */ CAST_Int_to_M_DUP_TM_conversions((*In).m_dup);
  (*Out).m_mcount = /* 1 */ CAST_Int_to_M_MCOUNT_TM_conversions((*In).m_mcount);
  (*Out).nid_c = /* 1 */ CAST_Int_to_NID_C_TM_conversions((*In).nid_c);
  (*Out).nid_bg = /* 1 */ CAST_Int_to_NID_BG_TM_conversions((*In).nid_bg);
  (*Out).q_link = /* 1 */ CAST_Int_to_Q_LINK_TM_conversions((*In).q_link);
}
/* TM_conversions::C_P042_compr_onboard */
void C_P042_compr_onboard_TM_conversions(
  /* TM_conversions::C_P042_compr_onboard::PacketData */ CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions::C_P042_compr_onboard::Metadata_Element */ MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  /* TM_conversions::C_P042_compr_onboard::P131_onboard */ P42_SessionManagement_T_Packet_Types_Pkg *P131_onboard)
{
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1 */
  static kcg_bool IfBlock1_clock_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1::else::else */
  static kcg_bool else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1::else */
  static kcg_bool _1_else_clock_1_IfBlock1;
  
  (*P131_onboard).valid = (*PacketData)[0] == 42;
  IfBlock1_clock_1 = (*PacketData)[1] == INT_Q_DIR_nomiinal_TM_conversions;
  /* 1_ck_IfBlock1 */ if (IfBlock1_clock_1) {
    (*P131_onboard).q_dir = ENUM_Q_DIR_nominal_TM_conversions;
  }
  else {
    _1_else_clock_1_IfBlock1 = (*PacketData)[1] ==
      INT_Q_DIR_reverse_TM_conversions;
    /* 1_ck_anon_activ */ if (_1_else_clock_1_IfBlock1) {
      (*P131_onboard).q_dir = ENUM_Q_DIR_reverse_TM_conversions;
    }
    else {
      else_clock_1_IfBlock1 = (*PacketData)[1] == INT_Q_DIR_both_TM_conversions;
      /* 1_ck_anon_activ */ if (else_clock_1_IfBlock1) {
        (*P131_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
      else {
        (*P131_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
    }
  }
  (*P131_onboard).q_rbc = /* 1 */
    CAST_Int_to_Q_RBC_TM_conversions((*PacketData)[3]);
  (*P131_onboard).nid_c = /* 1 */
    CAST_Int_to_NID_C_TM_conversions((*PacketData)[4]);
  (*P131_onboard).nid_rbc = /* 1 */
    CAST_Int_to_NID_RBC_TM_conversions((*PacketData)[5]);
  (*P131_onboard).nid_radio = /* 1 */
    CAST_Int_to_NID_RADIO_TM_conversions((*PacketData)[6]);
  (*P131_onboard).q_sleepsession = /* 1 */
    CAST_Int_to_Q_SLEEPSESSION_TM_conversions((*PacketData)[7]);
}
/* DATA::Packets::EVC_to_DMI::CAST_int_to_DMI_Dynamic */
void CAST_int_to_DMI_Dynamic_DATA_Packets_EVC_to_DMI(
  /* DATA::Packets::EVC_to_DMI::CAST_int_to_DMI_Dynamic::dmi_dynamic_int */ DMI_Dynamic_int_array_T_DATA *dmi_dynamic_int,
  /* DATA::Packets::EVC_to_DMI::CAST_int_to_DMI_Dynamic::dmi_dynamic_ct */ DMI_Dynamic_T_DMI_Messages_EVC_to_DMI_Pkg *dmi_dynamic_ct)
{
  (*dmi_dynamic_ct).system_clock = (*dmi_dynamic_int)[1];
  (*dmi_dynamic_ct).v_train = (*dmi_dynamic_int)[2];
  (*dmi_dynamic_ct).location_front_train = (*dmi_dynamic_int)[3];
  (*dmi_dynamic_ct).location_brake_target = (*dmi_dynamic_int)[4];
  (*dmi_dynamic_ct).v_target = (*dmi_dynamic_int)[5];
  (*dmi_dynamic_ct).v_permitted = (*dmi_dynamic_int)[6];
  (*dmi_dynamic_ct).v_release = (*dmi_dynamic_int)[7];
  (*dmi_dynamic_ct).location_brake_curve_starting_point = (*dmi_dynamic_int)[8];
  (*dmi_dynamic_ct).v_intervention = (*dmi_dynamic_int)[9];
  (*dmi_dynamic_ct).location_LOA = (*dmi_dynamic_int)[17];
  (*dmi_dynamic_ct).v_LOA = (*dmi_dynamic_int)[18];
  (*dmi_dynamic_ct).location_KP_Balise_Track = (*dmi_dynamic_int)[19];
  (*dmi_dynamic_ct).distance_KP_Balise = (*dmi_dynamic_int)[20];
  (*dmi_dynamic_ct).distance_to_TSA = (*dmi_dynamic_int)[21];
  (*dmi_dynamic_ct).distanceIndicationPoint = (*dmi_dynamic_int)[23];
  (*dmi_dynamic_ct).valid = /* 2 */
    Int_to_Bool_Utilities((*dmi_dynamic_int)[0]);
  (*dmi_dynamic_ct).mode = /* 1 */
    CAST_Int_to_M_MODE_TM_conversions((*dmi_dynamic_int)[10]);
  /* 1 */
  CAST_int_to_DMI_level_DATA_Variables(
    (*dmi_dynamic_int)[11],
    (*dmi_dynamic_int)[12],
    &(*dmi_dynamic_ct).level);
  (*dmi_dynamic_ct).nid_c = /* 1 */
    CAST_Int_to_NID_C_TM_conversions((*dmi_dynamic_int)[13]);
  (*dmi_dynamic_ct).nid_c_valid = /* 1 */
    Int_to_Bool_Utilities((*dmi_dynamic_int)[14]);
  (*dmi_dynamic_ct).m_warning = /* 1 */
    CAST_int_to_M_SupervisionDisplay_DATA_Variables((*dmi_dynamic_int)[15]);
  (*dmi_dynamic_ct).sup_status = /* 1 */
    CAST_int_to_M_SUPERVISION_STATUS_DATA_Variables((*dmi_dynamic_int)[16]);
  (*dmi_dynamic_ct).radioConnectionStatus = /* 1 */
    CAST_int_to_connectionStatusRadioUnit_DATA_Variables(
      (*dmi_dynamic_int)[22]);
}
/* TM_lib_internal::C_P003V1_us_array */
void C_P003V1_us_array_TM_lib_internal(
  /* TM_lib_internal::C_P003V1_us_array::i */kcg_int i,
  /* TM_lib_internal::C_P003V1_us_array::n_iter_int */kcg_int n_iter_int,
  /* TM_lib_internal::C_P003V1_us_array::flat */P003V1_OBU_sectionlist_int_T_TM_baseline2 *flat,
  outC_C_P003V1_us_array_TM_lib_internal *outC)
{
  outC->_L35 = i;
  kcg_copy_P003V1_OBU_sectionlist_int_T_TM_baseline2(&outC->_L37, flat);
  /* 2 */
  C_P003V1_extract_el_section_TM_lib_internal(
    outC->_L35,
    &outC->_L37,
    &outC->Context_2);
  outC->_L34 = outC->Context_2.element;
  /* 2 */ CAST_Int_to_NID_C_TM_conversions(outC->_L34, &outC->_1_Context_2);
  outC->_L41 = outC->_1_Context_2.nid_c;
  outC->_L40 = kcg_true;
  outC->_L36 = n_iter_int;
  outC->_L39 = outC->_L36 > outC->_L35;
  outC->_L38.valid = outC->_L40;
  outC->_L38.nid_c = outC->_L41;
  outC->cont = outC->_L39;
  kcg_copy_P003V1_section_enum_T_TM_baseline2(&outC->sections, &outC->_L38);
}