/* MessageLibBaseline2::Send_P042 */
void Send_P042_MessageLibBaseline2(
  /* MessageLibBaseline2::Send_P042::B_data_in */CompressedPackets_T_Common_Types_Pkg *B_data_in,
  /* MessageLibBaseline2::Send_P042::P042 */P042_trackside_int_T_TM *P042,
  outC_Send_P042_MessageLibBaseline2 *outC)
{
  static CompressedPackets_T_Common_Types_Pkg tmp;
  static kcg_bool tmp1;
  static kcg_bool noname;
  
  kcg_copy_P042_trackside_int_T_TM(&outC->_L4, P042);
  outC->_L5 = outC->_L4.valid;
  outC->tmp = outC->_L5;
  kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->_L3, B_data_in);
  if (outC->tmp) {
    /* 1 */ Write_P042_TM_trackside(&outC->_L4, &outC->_L3, &outC->Context_1);
    tmp1 = outC->Context_1.Error;
    kcg_copy_CompressedPackets_T_Common_Types_Pkg(
      &tmp,
      &outC->Context_1.RadioPacketsOut);
    kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->_L7, &tmp);
  }
  else {
    kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->_L7, &outC->_L3);
  }
  outC->_L8 = kcg_false;
  if (outC->tmp) {
    outC->_L6 = tmp1;
  }
  else {
    outC->_L6 = outC->_L8;
  }
  noname = outC->_L6;
  kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->B_data_out, &outC->_L7);
}
Esempio n. 2
0
/* TM_trackside::Write_P042 */
void Write_P042_TM_trackside(
  /* TM_trackside::Write_P042::Packet42 */P042_trackside_int_T_TM *Packet42,
  /* TM_trackside::Write_P042::Packets */CompressedPackets_T_Common_Types_Pkg *Packets,
  outC_Write_P042_TM_trackside *outC)
{
  kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->_L40, Packets);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->_L42,
    &outC->_L40.PacketData);
  kcg_copy_P042_trackside_int_T_TM(&outC->_L1, Packet42);
  /* 1 */ C_P042_tracksim_compr_TM_conversions(&outC->_L1, &outC->Context_1);
  kcg_copy_MetadataElement_T_Common_Types_Pkg(
    &outC->_L43,
    &outC->Context_1.Header);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->_L44,
    &outC->Context_1.P042_compressed);
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->_L41, &outC->_L40.PacketHeaders);
  /* 1 */
  SEND_WriteBaliseMessageHeader_TM_lib_internal(
    &outC->_L41,
    &outC->_L43,
    &outC->_1_Context_1);
  kcg_copy_Metadata_T_Common_Types_Pkg(
    &outC->_L4,
    &outC->_1_Context_1.HeadersOut);
  outC->_L21 = outC->_1_Context_1.NewStartAddr;
  outC->_L22 = outC->_1_Context_1.NewEndAddr;
  /* 1 */
  SEND_MessageData_TM_lib_internal(
    outC->_L21,
    outC->_L22,
    &outC->_L42,
    &outC->_L44,
    &outC->_2_Context_1);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->_L10,
    &outC->_2_Context_1.DataOut);
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->_L39.PacketHeaders, &outC->_L4);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->_L39.PacketData,
    &outC->_L10);
  outC->_L18 = kcg_false;
  outC->Error = outC->_L18;
  kcg_copy_CompressedPackets_T_Common_Types_Pkg(
    &outC->RadioPacketsOut,
    &outC->_L39);
}
/* RBC_Model_Pkg::RBC__PingTrain */
void RBC__PingTrain_RBC_Model_Pkg(
  /* RBC_Model_Pkg::RBC__PingTrain::inForceTrigger */kcg_bool inForceTrigger,
  /* RBC_Model_Pkg::RBC__PingTrain::inDataBus */RBC_Data_T_RBC_DataBus_Pkg *inDataBus,
  /* RBC_Model_Pkg::RBC__PingTrain::inRadioTrainTrackMessage */Radio_TrainTrack_Message_T_Radio_Types_Pkg *inRadioTrainTrackMessage,
  /* RBC_Model_Pkg::RBC__PingTrain::inTriggeredRadioTrackTrainMessage */CompressedRadioMessage_TM *inTriggeredRadioTrackTrainMessage,
  outC_RBC__PingTrain_RBC_Model_Pkg *outC)
{
  static Radio_TrackTrain_Header_T_TM tmp5;
  static NationalParams_T tmp4;
  static RadioTrackTrainMessageQueueEntry_T tmp3;
  static CompressedRadioMessage_TM tmp2;
  static NID_LRBG tmp1;
  static P042_trackside_int_T_TM tmp;
  /* RBC_Model_Pkg::RBC__PingTrain::IfBlock1::then::_L87 */
  static kcg_bool _L87_IfBlock1;
  /* RBC_Model_Pkg::RBC__PingTrain::IfBlock1::then::_L79 */
  static M_LEVEL _L79_IfBlock1;
  /* RBC_Model_Pkg::RBC__PingTrain::IfBlock1::then::_L21 */
  static PosData_T _L21_IfBlock1;
  /* RBC_Model_Pkg::RBC__PingTrain::Level_2_or_3 */
  static kcg_bool last_Level_2_or_3;
  /* RBC_Model_Pkg::RBC__PingTrain::trigger */
  static kcg_bool trigger;
  
  kcg_copy_CompressedRadioMessage_TM(
    &outC->outTriggeredRadioTrackTrainMessage,
    inTriggeredRadioTrackTrainMessage);
  kcg_copy_Radio_TrainTrack_Message_T_Radio_Types_Pkg(
    &outC->outRadioTrainTrackMessage,
    inRadioTrainTrackMessage);
  if (outC->init) {
    last_Level_2_or_3 = kcg_false;
  }
  else {
    last_Level_2_or_3 = outC->Level_2_or_3;
  }
  trigger = /* 2 */
    RadioTrackTrainMessage__IsValid_RBC_Messaging_Pkg_RBC_RadioTrackTrain_Pkg(
      &(*inDataBus).lastSentTrackTrainMessage);
  if (trigger) {
    /* 2 */
    RadioTrackTrainMessage__GetHeader_RBC_Messaging_Pkg_RBC_RadioTrackTrain_Pkg(
      &(*inDataBus).lastSentTrackTrainMessage,
      &tmp5);
    outC->lastRadioTrackTrainMessageWasSentTimestamp = /* 2 */
      RadioTrackTrainHeader__Get_T_TRAIN_RBC_Messaging_Pkg_RBC_RadioTrackTrain_Pkg(
        &tmp5);
  }
  else if (outC->init) {
    outC->lastRadioTrackTrainMessageWasSentTimestamp = T_TRAIN_MIN;
  }
  outC->init = kcg_false;
  /* 1 */
  DynamicConfig__GetNationalParams_RBC_Config_Pkg(&(*inDataBus).config, &tmp4);
  tmp1 = /* 1 */ NationalParams__Get_T_NVCONTACT_RBC_Config_Pkg(&tmp4);
  trigger = inForceTrigger | ((/* 1 */
        RadioTrackTrainMessageQueue__GetRemainingCapacity_RBC_Collections_Pkg(
          &(*inDataBus).messageQueue) ==
        RADIO_TRACK_TRAIN_MESSAGE_QUEUE_CAPACITY) & (/* 1 */
        Clock__GetSeconds_RBC_Time_Pkg(&(*inDataBus).clockk) -
        outC->lastRadioTrackTrainMessageWasSentTimestamp >= T_NVCONTACT_FACTOR *
        tmp1) & ((tmp1 > T_NVCONTACT_DEFAULT) & (tmp1 <
          T_NVCONTACT_UNLIMITED)));
  kcg_copy_RBC_Data_T_RBC_DataBus_Pkg(&outC->outDataBus, inDataBus);
  if (trigger) {
    /* 11 */
    SessionManagement__GetPosData_RBC_Session_Pkg(
      &(*inDataBus).session,
      &_L21_IfBlock1);
    _L79_IfBlock1 = /* 8 */
      PosData__Get_M_LEVEL_RBC_Session_Pkg(&_L21_IfBlock1);
    _L87_IfBlock1 = (M_LEVEL_Level_3 == _L79_IfBlock1) | (_L79_IfBlock1 ==
        M_LEVEL_Level_2);
    outC->Level_2_or_3 = _L87_IfBlock1;
    tmp1 = /* 3 */ PosData__Get_NID_LRBG_RBC_Session_Pkg(&_L21_IfBlock1);
    if ((!_L87_IfBlock1 & last_Level_2_or_3) | inForceTrigger) {
      kcg_copy_P042_trackside_int_T_TM(
        &tmp,
        (P042_trackside_int_T_TM *) &P042_RequestSessionTermination);
    }
    else {
      kcg_copy_P042_trackside_int_T_TM(
        &tmp,
        (P042_trackside_int_T_TM *) &P042_DEFAULT);
    }
    /* 1 */
    RadioTrackTrainFactory__CreateMsg024_BSL2_RBC_Messaging_Pkg_RBC_RadioTrackTrainFactory_Pkg(
      T_TRAIN_MIN,
      M_ACK_No_acknowledgement_required,
      tmp1,
      (P003V1_trackside_int_T_TM_baseline2 *) &P003_DEFAULT,
      (P005_trackside_int_T_TM *) &P005_DEFAULT,
      &tmp,
      (P057_trackside_int_T_TM *) &P057_DEFAULT,
      (P058_trackside_int_T_TM *) &P058_DEFAULT,
      &tmp2);
    /* 2 */
    RadioTrackTrainMessageQueueEntry__Create_RBC_Collections_Pkg(&tmp2, &tmp3);
    /* 2 */
    RadioTrackTrainMessageQueue__TryPut_RBC_Collections_Pkg(
      &(*inDataBus).messageQueue,
      &tmp3,
      &outC->outDataBus.messageQueue);
  }
  else {
    outC->Level_2_or_3 = last_Level_2_or_3;
    kcg_copy_RadioTrackTrainMessageQueue_T(
      &outC->outDataBus.messageQueue,
      &(*inDataBus).messageQueue);
  }
}
/* TM_conversions::C_P042_tracksim_compr */
void C_P042_tracksim_compr_TM_conversions(
  /* TM_conversions::C_P042_tracksim_compr::P042_from_track */P042_trackside_int_T_TM *P042_from_track,
  outC_C_P042_tracksim_compr_TM_conversions *outC)
{
  static kcg_int i;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _10_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _9_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _8_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _7_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _6_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _5_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _4_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _3_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _2_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _1_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool error_1;
  static kcg_bool noname_1;
  
  kcg_copy_P042_trackside_int_T_TM(&outC->_L1, P042_from_track);
  outC->_L389 = outC->_L1.Q_SLEEPSESSION;
  outC->_L390 = outC->_L1.NID_RADIO;
  outC->_L391 = outC->_L1.NID_RBC;
  outC->_L392 = outC->_L1.NID_C;
  outC->_L217 = outC->_L1.Q_RBC;
  outC->_L216 = outC->_L1.L_PACKET;
  outC->_L215 = outC->_L1.Q_DIR;
  outC->_L387 = outC->_L1.NID_PACKET;
  /* 1 */
  T_Build_Metadata_Packet_ID_TM_lib_internal(
    outC->_L387,
    outC->_L215,
    0,
    42,
    INT_M_VERSION_2_0_TM,
    &outC->Context_1);
  outC->_L393 = outC->Context_1.nid_packet_meta;
  outC->_L388 = DIM_MaxElementsPacket042_TM;
  outC->_L373[0] = outC->_L387;
  outC->_L373[1] = outC->_L215;
  outC->_L373[2] = outC->_L216;
  outC->_L373[3] = outC->_L217;
  outC->_L373[4] = outC->_L392;
  outC->_L373[5] = outC->_L391;
  outC->_L373[6] = outC->_L390;
  outC->_L373[7] = outC->_L389;
  outC->_L336 = 0;
  for (i = 0; i < 492; i++) {
    outC->_L209[i] = outC->_L336;
  }
  kcg_copy_array_int_8(&outC->_L383[0], &outC->_L373);
  kcg_copy_array_int_492(&outC->_L383[8], &outC->_L209);
  outC->q_dir_int_1 = outC->_L215;
  outC->_L12_1 = outC->q_dir_int_1;
  outC->q_dir_in_1 = outC->_L12_1;
  outC->IfBlock1_clock_1 = outC->q_dir_in_1 ==
    INT_Q_DIR_nomiinal_TM_conversions;
  if (outC->IfBlock1_clock_1) {
    outC->_L4_13_IfBlock1 = ENUM_Q_DIR_nominal_TM_conversions;
    _10_q_dir_1 = outC->_L4_13_IfBlock1;
    outC->q_dir_1 = _10_q_dir_1;
  }
  else {
    outC->_2_else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
      INT_Q_DIR_reverse_TM_conversions;
    if (outC->_2_else_clock_1_IfBlock1) {
      outC->_L3_1_IfBlock1 = ENUM_Q_DIR_reverse_TM_conversions;
      q_dir_1 = outC->_L3_1_IfBlock1;
      _8_q_dir_1 = q_dir_1;
    }
    else {
      outC->else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
        INT_Q_DIR_both_TM_conversions;
      if (outC->else_clock_1_IfBlock1) {
        outC->_L2_11_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _5_q_dir_1 = outC->_L2_11_IfBlock1;
        _2_q_dir_1 = _5_q_dir_1;
      }
      else {
        outC->_L2_1_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _3_q_dir_1 = outC->_L2_1_IfBlock1;
        _2_q_dir_1 = _3_q_dir_1;
      }
      _8_q_dir_1 = _2_q_dir_1;
    }
    outC->q_dir_1 = _8_q_dir_1;
  }
  outC->_L356 = outC->q_dir_1;
  outC->_L214 = outC->_L1.valid;
  outC->_L213 = 1;
  outC->_L212 = outC->_L388 - outC->_L213;
  outC->_L206 = 0;
  outC->_L204.nid_packet = outC->_L393;
  outC->_L204.q_dir = outC->_L356;
  outC->_L204.valid = outC->_L214;
  outC->_L204.startAddress = outC->_L206;
  outC->_L204.endAddress = outC->_L212;
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->Header, &outC->_L204);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->P042_compressed,
    &outC->_L383);
  if (outC->IfBlock1_clock_1) {
    outC->_L5_14_IfBlock1 = kcg_false;
    _9_error_1 = outC->_L5_14_IfBlock1;
    outC->error_1 = _9_error_1;
  }
  else {
    if (outC->_2_else_clock_1_IfBlock1) {
      outC->_L5_1_IfBlock1 = kcg_false;
      error_1 = outC->_L5_1_IfBlock1;
      _7_error_1 = error_1;
    }
    else {
      if (outC->else_clock_1_IfBlock1) {
        outC->_L4_1_IfBlock1 = kcg_false;
        _6_error_1 = outC->_L4_1_IfBlock1;
        _1_error_1 = _6_error_1;
      }
      else {
        outC->_L1_1_IfBlock1 = kcg_true;
        _4_error_1 = outC->_L1_1_IfBlock1;
        _1_error_1 = _4_error_1;
      }
      _7_error_1 = _1_error_1;
    }
    outC->error_1 = _7_error_1;
  }
  outC->_L13_1 = outC->error_1;
  noname_1 = outC->_L13_1;
}