/* 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_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);
}
/* CheckBGConsistency_Pkg::CheckBGConsistency */
void CheckBGConsistency_CheckBGConsistency_Pkg(
  /* CheckBGConsistency_Pkg::CheckBGConsistency::storedBGs */ positionedBGs_T_TrainPosition_Types_Pck *storedBGs,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::trainPosition */ trainPosition_T_TrainPosition_Types_Pck *trainPosition,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::mMode */ M_MODE mMode,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::trackSide_ForCheck */ TrackSide_ForCheck_T_Common_Types_Pkg *trackSide_ForCheck,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::q_nvlocacc */ Q_NVLOCACC q_nvlocacc,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::passedBG_out */ ReceivedMessage_T_Common_Types_Pkg *passedBG_out,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::applyServiceBrake */ kcg_bool *applyServiceBrake,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::badBaliseMessageToDMI */ kcg_bool *badBaliseMessageToDMI,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::errorLinkedBG */ kcg_bool *errorLinkedBG,
  /* CheckBGConsistency_Pkg::CheckBGConsistency::errorUnlinkedBG */ kcg_bool *errorUnlinkedBG)
{
  /* CheckBGConsistency_Pkg::CheckBGConsistency::IfBlock1 */ kcg_bool IfBlock1_clock;
  /* CheckBGConsistency_Pkg::CheckBGConsistency::startTheCheck */ kcg_bool startTheCheck;
  
  startTheCheck = /* 1 */ CheckMode_CheckBGConsistency_Pkg_SubFunction(mMode) &
    (*trackSide_ForCheck).valid;
  IfBlock1_clock = startTheCheck & ((*trainPosition).linkingIsUsedOnboard &
      (*trainPosition).valid) &
    ((*trackSide_ForCheck).telegramHeaders.Telegrams[0].telegramheader.q_link ==
      Q_LINK_Linked);
  if (IfBlock1_clock) {
    *errorUnlinkedBG = kcg_false;
    *badBaliseMessageToDMI = kcg_false;
    *applyServiceBrake = kcg_false;
    /* 1 */
    CaseLinkingInUse_CheckBGConsistency_Pkg(
      storedBGs,
      trackSide_ForCheck,
      q_nvlocacc,
      passedBG_out,
      errorLinkedBG);
  }
  else {
    *errorLinkedBG = kcg_false;
    if (startTheCheck) {
      /* 2 */
      CaseLinkingNotInUse_CheckBGConsistency_Pkg(
        trackSide_ForCheck,
        q_nvlocacc,
        applyServiceBrake,
        badBaliseMessageToDMI,
        passedBG_out,
        errorUnlinkedBG);
    }
    else {
      *badBaliseMessageToDMI = kcg_false;
      *applyServiceBrake = kcg_false;
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        passedBG_out,
        (ReceivedMessage_T_Common_Types_Pkg *)
          &cRecivedMesg_PlaceHolder_CheckBGConsistency_Pkg);
      *errorUnlinkedBG = kcg_false;
    }
  }
}
/* CheckBGConsistency_Pkg::SubFunction::WriteDirection2PassedBG */
void WriteDirection2PassedBG_CheckBGConsistency_Pkg_SubFunction(
  /* CheckBGConsistency_Pkg::SubFunction::WriteDirection2PassedBG::isNominal */ kcg_bool isNominal,
  /* CheckBGConsistency_Pkg::SubFunction::WriteDirection2PassedBG::passedBG_in */ ReceivedMessage_T_Common_Types_Pkg *passedBG_in,
  /* CheckBGConsistency_Pkg::SubFunction::WriteDirection2PassedBG::passedBG_out */ ReceivedMessage_T_Common_Types_Pkg *passedBG_out)
{
  /* 1 */ if (isNominal) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(passedBG_out, passedBG_in);
    (*passedBG_out).BG_Common_Header.trainOrientationToBG =
      cQDirLrbgNominal_CheckBGConsistency_Pkg;
    (*passedBG_out).BG_Common_Header.trainRunningDirectionToBG =
      cQqDirTrainNominal_CheckBGConsistency_Pkg;
  }
  else {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(passedBG_out, passedBG_in);
    (*passedBG_out).BG_Common_Header.trainOrientationToBG =
      cQDirLrbgRevers_CheckBGConsistency_Pkg;
    (*passedBG_out).BG_Common_Header.trainRunningDirectionToBG =
      cQqDirTrainRevers_CheckBGConsistency_Pkg;
  }
}
/* InformationFilter_Pkg::MessageBuffer */
void MessageBuffer_InformationFilter_Pkg(
  /* InformationFilter_Pkg::MessageBuffer::inMessageFromTrain */ ReceivedMessage_T_Common_Types_Pkg *inMessageFromTrain,
  /* InformationFilter_Pkg::MessageBuffer::inMessageFromLevelTransitionBuffer */ ReceivedMessage_T_Common_Types_Pkg *inMessageFromLevelTransitionBuffer,
  /* InformationFilter_Pkg::MessageBuffer::inMessageFromLevelTransitionBufferValid */ kcg_bool inMessageFromLevelTransitionBufferValid,
  /* InformationFilter_Pkg::MessageBuffer::inMessageFromRBCTransitionBuffer */ ReceivedMessage_T_Common_Types_Pkg *inMessageFromRBCTransitionBuffer,
  /* InformationFilter_Pkg::MessageBuffer::inMessageFromRBCTransitionBufferValid */ kcg_bool inMessageFromRBCTransitionBufferValid,
  outC_MessageBuffer_InformationFilter_Pkg *outC)
{
  /* InformationFilter_Pkg::MessageBuffer::_L36 */
  static kcg_bool _L36;
  
  /* 3 */
  FIFO_InformationFilter_Pkg_Common_3(
    inMessageFromLevelTransitionBuffer,
    inMessageFromLevelTransitionBufferValid,
    (kcg_bool) !(*inMessageFromTrain).valid,
    &outC->Context_3);
  _L36 = (*inMessageFromTrain).valid | outC->Context_3.outValid;
  /* 2 */
  FIFO_InformationFilter_Pkg_Common_3(
    inMessageFromRBCTransitionBuffer,
    inMessageFromRBCTransitionBufferValid,
    (kcg_bool) !_L36,
    &outC->Context_2);
  /* 1 */ if ((*inMessageFromTrain).valid) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->outMessage,
      inMessageFromTrain);
  }
  else /* 5 */ if (outC->Context_3.outValid) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->outMessage,
      &outC->Context_3.outData);
  }
  else {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->outMessage,
      &outC->Context_2.outData);
  }
  outC->outMessageValid = _L36 | outC->Context_2.outValid;
}
/* TA_Lib_internal::Eval_LRBG */
void Eval_LRBG_TA_Lib_internal(
  /* TA_Lib_internal::Eval_LRBG::MessageIn */ReceivedMessage_T_Common_Types_Pkg *MessageIn,
  outC_Eval_LRBG_TA_Lib_internal *outC)
{
  /* TA_Lib_internal::Eval_LRBG::LRBG */ kcg_int LRBG1;
  /* TA_Lib_internal::Eval_LRBG::LRBG */ kcg_int LRBG;
  /* TA_Lib_internal::Eval_LRBG::LRBG */ kcg_int LRBG2;
  /* TA_Lib_internal::Eval_LRBG::LRBG */ kcg_int LRBG3;
  
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L1, MessageIn);
  outC->_L14 = outC->_L1.source;
  outC->source = outC->_L14;
  outC->IfBlock1_clock = outC->source == ENUM_MsgSource_Balise_TA_Lib_internal;
  if (outC->IfBlock1_clock) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L1_IfBlock1, MessageIn);
    outC->_L2_IfBlock1 = outC->_L1_IfBlock1.BG_Common_Header.nid_bg;
    LRBG1 = outC->_L2_IfBlock1;
    outC->LRBG = LRBG1;
  }
  else {
    outC->else_clock_IfBlock1 = outC->source ==
      ENUM_MsgSource_Euroradio_TA_Lib_internal;
    if (outC->else_clock_IfBlock1) {
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        &outC->_L22_IfBlock1,
        MessageIn);
      outC->_L11_IfBlock1 = outC->_L22_IfBlock1.Radio_Common_Header.nid_lrbg;
      LRBG3 = outC->_L11_IfBlock1;
      LRBG = LRBG3;
    }
    else {
      outC->_L13_IfBlock1 = 0;
      LRBG2 = outC->_L13_IfBlock1;
      LRBG = LRBG2;
    }
    outC->LRBG = LRBG;
  }
}
/* InformationFilter_Pkg::TransitionBuffer_write_only */
void TransitionBuffer_write_only_InformationFilter_Pkg(
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Buffer_In */ TransitionBuffer_T_InformationFilter_Pkg *Buffer_In,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Stacksize_old */ kcg_int Stacksize_old,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Message_In */ ReceivedMessage_T_Common_Types_Pkg *Message_In,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Reset */ kcg_bool Reset,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Buffer_Out */ TransitionBuffer_T_InformationFilter_Pkg *Buffer_Out,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Stacksize_new */ kcg_int *Stacksize_new,
  /* InformationFilter_Pkg::TransitionBuffer_write_only::Message_out */ ReceivedMessage_T_Common_Types_Pkg *Message_out)
{
  /* InformationFilter_Pkg::TransitionBuffer_write_only */
  static array_100297 tmp;
  /* InformationFilter_Pkg::TransitionBuffer_write_only::_L2 */
  static kcg_int _L2;
  
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
    Message_out,
    (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
  /* 2 */ if (Reset) {
    _L2 = 0 + 1;
    kcg_copy_array_100297(
      &tmp,
      (array_100297 *) &DEFAULT_TransitionBuffer_t_InformationFilter_Pkg[0]);
  }
  else {
    _L2 = Stacksize_old + 1;
    kcg_copy_array_100297(&tmp, (array_100297 *) &(*Buffer_In)[0]);
  }
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
    &(&(*Buffer_Out)[0])[0],
    Message_In);
  kcg_copy_array_100297(&(*Buffer_Out)[1], &tmp);
  /* 1 */ if (_L2 > DIM_TransitionBuffer_InformationFilter_Pkg) {
    *Stacksize_new = DIM_TransitionBuffer_InformationFilter_Pkg;
  }
  else {
    *Stacksize_new = _L2;
  }
}
/* InformationFilter_Pkg::FilterSequence */
void FilterSequence_InformationFilter_Pkg(
    /* InformationFilter_Pkg::FilterSequence::message */ReceivedMessage_T_Common_Types_Pkg *message,
    /* InformationFilter_Pkg::FilterSequence::inLevel */M_LEVEL inLevel,
    /* InformationFilter_Pkg::FilterSequence::inFilterEvents */filterRelatedEvents_T_Common_Types_Pkg *inFilterEvents,
    /* InformationFilter_Pkg::FilterSequence::inSupervisingDevice */kcg_int inSupervisingDevice,
    /* InformationFilter_Pkg::FilterSequence::inMode */M_MODE inMode,
    /* InformationFilter_Pkg::FilterSequence::outMessage */ReceivedMessage_T_Common_Types_Pkg *outMessage,
    /* InformationFilter_Pkg::FilterSequence::bufferMessage */ReceivedMessage_T_Common_Types_Pkg *bufferMessage,
    /* InformationFilter_Pkg::FilterSequence::storeInBuffer */kcg_bool *storeInBuffer)
{
    /* InformationFilter_Pkg::FilterSequence::_L6 */
    static ReceivedMessage_T_Common_Types_Pkg _L6;
    /* InformationFilter_Pkg::FilterSequence::_L7 */
    static ReceivedMessage_T_Common_Types_Pkg _L7;
    /* InformationFilter_Pkg::FilterSequence::_L8 */
    static kcg_bool _L8;
    /* InformationFilter_Pkg::FilterSequence::_L9 */
    static ReceivedMessage_T_Common_Types_Pkg _L9;
    /* InformationFilter_Pkg::FilterSequence::_L11 */
    static kcg_bool _L11;

    /* 1 */
    FirstFilter_InformationFilter_Pkg_FirstFilter(
        message,
        inLevel,
        inFilterEvents,
        &_L6,
        &_L7,
        &_L8);
    /* 1 */
    SecondFilter_InformationFilter_Pkg_SecondFilter(
        &_L6,
        &_L7,
        inSupervisingDevice,
        &_L11,
        bufferMessage,
        &_L9);
    *storeInBuffer = _L8 | _L11;
    if (_L9.valid) {
        /* 1 */
        ThirdFilter_InformationFilter_Pkg_ThirdFilter(&_L9, inMode, outMessage);
    }
    else {
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(outMessage, &_L9);
    }
}
Exemple #9
0
/* TA_MA::Build_MA */
void Build_MA_TA_MA(
  /* TA_MA::Build_MA::MessageIn */ReceivedMessage_T_Common_Types_Pkg *MessageIn,
  /* TA_MA::Build_MA::NV_onboard_in */P003V1_OBU_T_TM_baseline2 *NV_onboard_in,
  outC_Build_MA_TA_MA *outC)
{
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L5, MessageIn);
  kcg_copy_CompressedPackets_T_Common_Types_Pkg(&outC->_L6, &outC->_L5.packets);
  /* 1 */ StoreRaw_MA_TA_MA(&outC->_L6, &outC->Context_1);
  outC->_L2 = outC->Context_1.vald_MA;
  outC->_L4 = outC->Context_1.new_MA;
  kcg_copy_P015_OBU_T_TM(&outC->_L3, &outC->Context_1.MA_onboard_out);
  kcg_copy_P003V1_OBU_T_TM_baseline2(&outC->_L7, NV_onboard_in);
  /* 1 */ Decode_P015_TA_MA(&outC->_L3, &outC->_L7, &outC->_1_Context_1);
  kcg_copy_MovementAuthority_t_TrackAtlasTypes(
    &outC->_L1,
    &outC->_1_Context_1.MA_decoded_out);
  kcg_copy_MovementAuthority_t_TrackAtlasTypes(
    &outC->MA_onboard_out,
    &outC->_L1);
  outC->new_MA = outC->_L4;
  outC->vald_MA = outC->_L2;
}
/* InformationFilter_Pkg::Common::FIFO */
void FIFO_InformationFilter_Pkg_Common_3(
  /* InformationFilter_Pkg::Common::FIFO::inData */ ReceivedMessage_T_Common_Types_Pkg *inData,
  /* InformationFilter_Pkg::Common::FIFO::inValid */ kcg_bool inValid,
  /* InformationFilter_Pkg::Common::FIFO::inReady */ kcg_bool inReady,
  outC_FIFO_InformationFilter_Pkg_Common_3 *outC)
{
  /* InformationFilter_Pkg::Common::FIFO */
  static kcg_int tmp1;
  /* InformationFilter_Pkg::Common::FIFO */
  static kcg_int tmp;
  /* InformationFilter_Pkg::Common::FIFO::entry */
  static kcg_int entry;
  /* InformationFilter_Pkg::Common::FIFO::_L38 */
  static kcg_int _L38;
  /* InformationFilter_Pkg::Common::FIFO::_L44 */
  static kcg_bool _L44;
  
  /* ck_inValid */ if (inValid) {
    /* fby_1_init_8 */ if (outC->init1) {
      entry = 0;
      for (_L38 = 0; _L38 < 3; _L38++) {
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
          &outC->_L4_IfBlock1[_L38],
          (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
      }
    }
    else {
      entry = outC->_L20_IfBlock1;
    }
    if ((0 <= entry) & (entry < 3)) {
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        &outC->_L4_IfBlock1[entry],
        inData);
    }
    kcg_copy_array_97860(&outC->buffer, &outC->_L4_IfBlock1);
    outC->_L20_IfBlock1 = (entry + 1) % 3;
    tmp1 = 1;
    outC->init1 = kcg_false;
  }
  else {
    /* last_init_ck_buffer */ if (outC->init) {
      for (_L38 = 0; _L38 < 3; _L38++) {
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
          &outC->buffer[_L38],
          (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
      }
    }
    tmp1 = 0;
  }
  /* fby_1_init_4 */ if (outC->init) {
    entry = 0;
    outC->init = kcg_false;
    _L38 = 0;
  }
  else {
    entry = outC->_L50;
    _L38 = outC->_L32;
  }
  if ((0 <= entry) & (entry < 3)) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->outData,
      &outC->buffer[entry]);
  }
  else {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->outData,
      (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
  }
  /* 1 */ if (_L38 <= 3) {
    outC->size = _L38;
  }
  else {
    outC->size = 3;
  }
  _L44 = inReady & (outC->size > 0);
  /* 8 */ if (_L44) {
    tmp = - 1;
    _L38 = 1;
    outC->outValid = kcg_true;
  }
  else {
    tmp = 0;
    _L38 = 0;
    outC->outValid = kcg_false;
  }
  outC->_L32 = outC->size + tmp1 + tmp;
  /* 7 */ if (inValid & (outC->size == 3)) {
    tmp = 1;
  }
  else {
    tmp = 0;
  }
  outC->_L50 = (entry + _L38 + tmp) % 3;
}
/* CheckBGConsistency_Pkg::CaseLinkingNotInUse */
void CaseLinkingNotInUse_CheckBGConsistency_Pkg(
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::trackSideForCheck */ TrackSide_ForCheck_T_Common_Types_Pkg *trackSideForCheck,
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::q_nvlocacc */ Q_NVLOCACC q_nvlocacc,
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::applyServiceBrake */ kcg_bool *applyServiceBrake,
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::badBaliseMessageToDMI */ kcg_bool *badBaliseMessageToDMI,
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::passedBG_out */ ReceivedMessage_T_Common_Types_Pkg *passedBG_out,
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::errorUnlinkedBG */ kcg_bool *errorUnlinkedBG)
{
  kcg_int tmp2;
  kcg_int tmp1;
  ReceivedMessage_T_Common_Types_Pkg tmp;
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::IfBlock1 */ kcg_bool IfBlock1_clock;
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::isComplete */ kcg_bool isComplete;
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::isSingle */ kcg_bool isSingle;
  /* CheckBGConsistency_Pkg::CaseLinkingNotInUse::lastTelegram */ Telegram_T_BG_Types_Pkg lastTelegram;
  
  /* 1 */
  CheckCompleteness_CheckBGConsistency_Pkg(
    &(*trackSideForCheck).telegramHeaders,
    &IfBlock1_clock,
    &isSingle,
    &lastTelegram);
  isComplete = IfBlock1_clock ^ isSingle;
  IfBlock1_clock = isComplete & isSingle;
  if (IfBlock1_clock) {
    *errorUnlinkedBG = kcg_false;
    /* 1 */
    BuildCheckedMessage_CheckBGConsistency_Pkg_SubFunction(
      trackSideForCheck,
      q_nvlocacc,
      passedBG_out);
  }
  else if (isComplete) {
    *errorUnlinkedBG = kcg_false;
    tmp2 = /* 16 */
      N_PIG2int_CheckBGConsistency_Pkg_SubFunction(
        lastTelegram.telegramheader.n_pig);
    tmp1 = /* 17 */
      N_PIG2int_CheckBGConsistency_Pkg_SubFunction(
        (*trackSideForCheck).telegramHeaders.Telegrams[0].telegramheader.n_pig);
    /* 2 */
    BuildCheckedMessage_CheckBGConsistency_Pkg_SubFunction(
      trackSideForCheck,
      q_nvlocacc,
      &tmp);
    /* 1 */
    WriteDirection2PassedBG_CheckBGConsistency_Pkg_SubFunction(
      (kcg_bool) (tmp2 > tmp1),
      &tmp,
      passedBG_out);
  }
  else {
    *errorUnlinkedBG = kcg_true;
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      passedBG_out,
      (ReceivedMessage_T_Common_Types_Pkg *)
        &cRecivedMesg_PlaceHolder_CheckBGConsistency_Pkg);
  }
  *applyServiceBrake = *errorUnlinkedBG;
  *badBaliseMessageToDMI = *errorUnlinkedBG;
}
/* ValidateDataDirection_Pkg::validateDataDirection */
void validateDataDirection_ValidateDataDirection_Pkg(
  /* ValidateDataDirection_Pkg::validateDataDirection::inMessage */ ReceivedMessage_T_Common_Types_Pkg *inMessage,
  /* ValidateDataDirection_Pkg::validateDataDirection::inLRBG */ positionedBG_T_TrainPosition_Types_Pck *inLRBG,
  /* ValidateDataDirection_Pkg::validateDataDirection::inPositionedBGs */ positionedBGs_T_TrainPosition_Types_Pck *inPositionedBGs,
  /* ValidateDataDirection_Pkg::validateDataDirection::trainPosition */ trainPosition_T_TrainPosition_Types_Pck *trainPosition,
  /* ValidateDataDirection_Pkg::validateDataDirection::outMessage */ ReceivedMessage_T_Common_Types_Pkg *outMessage)
{
  /* ValidateDataDirection_Pkg::validateDataDirection */ Q_DIRTRAIN tmp1;
  /* ValidateDataDirection_Pkg::validateDataDirection */ kcg_bool tmp;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else */ kcg_bool else_clock_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::IfBlock2::else::_L48 */ positionedBG_T_TrainPosition_Types_Pck _L48_IfBlock1_IfBlock2;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::IfBlock2 */ kcg_bool IfBlock2_clock_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::trainRunningDirection */ Q_DIRTRAIN trainRunningDirection_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::coordinateSystemAssigned */ kcg_bool coordinateSystemAssigned_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::_L22 */ positionedBG_T_TrainPosition_Types_Pck _L22_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1::else::then::_L107 */ kcg_bool _L107_IfBlock1;
  /* ValidateDataDirection_Pkg::validateDataDirection::IfBlock1 */ kcg_bool IfBlock1_clock;
  
  IfBlock1_clock = (*inMessage).source == msrc_Eurobalise_Common_Types_Pkg;
  /* ck_IfBlock1 */ if (IfBlock1_clock) {
    /* 2 */
    validateDataDirection_General_ValidateDataDirectionGeneral_Pkg(
      inMessage,
      (*inMessage).BG_Common_Header.trainRunningDirectionToBG,
      kcg_true,
      trainPosition,
      (kcg_bool)
        !(*inMessage).BG_Common_Header.noCoordinateSystemHasBeenAssigned,
      outMessage);
  }
  else {
    else_clock_IfBlock1 = (*inMessage).source ==
      msrc_Euroradio_Common_Types_Pkg;
    /* ck_anon_activ */ if (else_clock_IfBlock1) {
      /* 10 */
      getLRBGForRadioMessage_ValidateDataDirectionGeneral_Pkg_Subfunctions(
        inMessage,
        inPositionedBGs,
        &_L22_IfBlock1);
      _L107_IfBlock1 = (*trainPosition).valid &
        !(*trainPosition).trainPositionIsUnknown;
      /* 12 */ if (_L22_IfBlock1.valid) {
        trainRunningDirection_IfBlock1 =
          _L22_IfBlock1.infoFromPassing.BG_Header.trainRunningDirectionToBG;
        coordinateSystemAssigned_IfBlock1 =
          !_L22_IfBlock1.infoFromPassing.BG_Header.noCoordinateSystemHasBeenAssigned;
      }
      else {
        trainRunningDirection_IfBlock1 = Q_DIRTRAIN_Unknown;
        coordinateSystemAssigned_IfBlock1 = kcg_false;
      }
      IfBlock2_clock_IfBlock1 = (*inMessage).radioMetadata.q_dir &
        !((((*inMessage).Radio_Common_Header.q_dir == Q_DIR_Nominal) &
            (Q_DIRTRAIN_Nominal == trainRunningDirection_IfBlock1) &
            _L107_IfBlock1 & coordinateSystemAssigned_IfBlock1 &
            (*inLRBG).valid) | (((*inMessage).Radio_Common_Header.q_dir ==
              Q_DIR_Reverse) & (Q_DIRTRAIN_Reverse ==
              trainRunningDirection_IfBlock1) & _L107_IfBlock1 &
            coordinateSystemAssigned_IfBlock1 & (*inLRBG).valid) |
          ((*inMessage).Radio_Common_Header.q_dir == Q_DIR_Both_directions));
      /* ck_IfBlock2 */ if (IfBlock2_clock_IfBlock1) {
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(outMessage, inMessage);
        (*outMessage).valid = kcg_false;
      }
      else {
        /* 6 */
        getLRBGForRadioMessage_ValidateDataDirectionGeneral_Pkg_Subfunctions(
          inMessage,
          inPositionedBGs,
          &_L48_IfBlock1_IfBlock2);
        /* 9 */ if (_L48_IfBlock1_IfBlock2.valid) {
          tmp1 =
            _L48_IfBlock1_IfBlock2.infoFromPassing.BG_Header.trainRunningDirectionToBG;
          tmp =
            !_L48_IfBlock1_IfBlock2.infoFromPassing.BG_Header.noCoordinateSystemHasBeenAssigned;
        }
        else {
          tmp = kcg_false;
          tmp1 = Q_DIRTRAIN_Unknown;
        }
        /* 6 */
        validateDataDirection_General_ValidateDataDirectionGeneral_Pkg(
          inMessage,
          tmp1,
          (*inLRBG).valid,
          trainPosition,
          tmp,
          outMessage);
      }
    }
    else {
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(outMessage, inMessage);
    }
  }
}
/* InformationFilter_Pkg::SecondFilter::SecondFilter */
void SecondFilter_InformationFilter_Pkg_SecondFilter(
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::messageForFilter2 */ReceivedMessage_T_Common_Types_Pkg *messageForFilter2,
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::inMessageForBuffer */ReceivedMessage_T_Common_Types_Pkg *inMessageForBuffer,
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::inSupervisingDevice */kcg_int inSupervisingDevice,
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::storeInBuffer2 */kcg_bool *storeInBuffer2,
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::outMessageForBuffer */ReceivedMessage_T_Common_Types_Pkg *outMessageForBuffer,
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::messageForFilter3 */ReceivedMessage_T_Common_Types_Pkg *messageForFilter3)
{
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::IfBlock1::then::IfBlock2 */
  static kcg_bool IfBlock2_clock_IfBlock1;
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::IfBlock1::then::IfBlock2::then::IfBlock3::then::messagesForTransitionBuffer */
  static kcg_bool messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3;
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::IfBlock1::then::IfBlock2::then::IfBlock3 */
  static kcg_bool IfBlock3_clock_IfBlock1_IfBlock2;
  /* InformationFilter_Pkg::SecondFilter::SecondFilter::isFromRBC */
  static kcg_bool isFromRBC;
  
  isFromRBC = (*messageForFilter2).source == msrc_Euroradio_Common_Types_Pkg;
  if (isFromRBC) {
    IfBlock2_clock_IfBlock1 =
      !((*messageForFilter2).Radio_Common_Header.radioDevice ==
        inSupervisingDevice);
    if (IfBlock2_clock_IfBlock1) {
      switch ((*messageForFilter2).Radio_Common_Header.nid_message) {
        case 9 :
          IfBlock3_clock_IfBlock1_IfBlock2 = !kcg_true;
          break;
        case 18 :
          IfBlock3_clock_IfBlock1_IfBlock2 = !kcg_true;
          break;
        
        default :
          IfBlock3_clock_IfBlock1_IfBlock2 = !kcg_false;
      }
      if (IfBlock3_clock_IfBlock1_IfBlock2) {
        switch ((*messageForFilter2).Radio_Common_Header.nid_message) {
          case 8 :
            messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3 = !kcg_true;
            break;
          case 38 :
            messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3 = !kcg_true;
            break;
          case 39 :
            messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3 = !kcg_true;
            break;
          
          default :
            messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3 = !kcg_false;
        }
        if (messagesForTransitionBuffer_IfBlock1_IfBlock2_IfBlock3) {
          *storeInBuffer2 = kcg_true;
          (*messageForFilter3).valid = kcg_false;
          (*messageForFilter3).source = (*messageForFilter2).source;
          kcg_copy_RadioMetadata_T_Common_Types_Pkg(
            &(*messageForFilter3).radioMetadata,
            &(*messageForFilter2).radioMetadata);
          kcg_copy_BG_Header_T_BG_Types_Pkg(
            &(*messageForFilter3).BG_Common_Header,
            &(*messageForFilter2).BG_Common_Header);
          kcg_copy_Radio_TrackTrain_Header_T_Radio_Types_Pkg(
            &(*messageForFilter3).Radio_Common_Header,
            &(*messageForFilter2).Radio_Common_Header);
          kcg_copy_CompressedPackets_T_Common_Types_Pkg(
            &(*messageForFilter3).packets,
            &(*messageForFilter2).packets);
          kcg_copy_RBC_Id_T_Common_Types_Pkg(
            &(*messageForFilter3).sendingRBC,
            &(*messageForFilter2).sendingRBC);
          /* 1 */
          DetermineBufferMessage_InformationFilter_Pkg_SecondFilter(
            messageForFilter2,
            inMessageForBuffer,
            outMessageForBuffer);
        }
        else {
          *storeInBuffer2 = kcg_false;
          kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
            outMessageForBuffer,
            inMessageForBuffer);
          kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
            messageForFilter3,
            messageForFilter2);
        }
      }
      else {
        *storeInBuffer2 = kcg_false;
        (*messageForFilter3).valid = kcg_false;
        (*messageForFilter3).source = (*messageForFilter2).source;
        kcg_copy_RadioMetadata_T_Common_Types_Pkg(
          &(*messageForFilter3).radioMetadata,
          &(*messageForFilter2).radioMetadata);
        kcg_copy_BG_Header_T_BG_Types_Pkg(
          &(*messageForFilter3).BG_Common_Header,
          &(*messageForFilter2).BG_Common_Header);
        kcg_copy_Radio_TrackTrain_Header_T_Radio_Types_Pkg(
          &(*messageForFilter3).Radio_Common_Header,
          &(*messageForFilter2).Radio_Common_Header);
        kcg_copy_CompressedPackets_T_Common_Types_Pkg(
          &(*messageForFilter3).packets,
          &(*messageForFilter2).packets);
        kcg_copy_RBC_Id_T_Common_Types_Pkg(
          &(*messageForFilter3).sendingRBC,
          &(*messageForFilter2).sendingRBC);
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
          outMessageForBuffer,
          inMessageForBuffer);
      }
    }
    else {
      *storeInBuffer2 = kcg_false;
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        outMessageForBuffer,
        inMessageForBuffer);
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        messageForFilter3,
        messageForFilter2);
    }
  }
  else {
    *storeInBuffer2 = kcg_false;
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      outMessageForBuffer,
      inMessageForBuffer);
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      messageForFilter3,
      messageForFilter2);
  }
}
/* InformationFilter_Pkg::TransitionBuffer */
void TransitionBuffer_InformationFilter_Pkg(
  /* InformationFilter_Pkg::TransitionBuffer::In */ ReceivedMessage_T_Common_Types_Pkg *In,
  /* InformationFilter_Pkg::TransitionBuffer::Write */ kcg_bool Write,
  /* InformationFilter_Pkg::TransitionBuffer::Reset */ kcg_bool Reset,
  outC_TransitionBuffer_InformationFilter_Pkg *outC)
{
  /* InformationFilter_Pkg::TransitionBuffer::IfBlock1::else */ kcg_bool _1_else_clock_IfBlock1;
  /* InformationFilter_Pkg::TransitionBuffer::IfBlock1::else::else */ kcg_bool else_clock_IfBlock1;
  /* InformationFilter_Pkg::TransitionBuffer::buffer */ TransitionBuffer_T_InformationFilter_Pkg last_buffer;
  /* InformationFilter_Pkg::TransitionBuffer::stacksize */ kcg_int last_stacksize;
  /* InformationFilter_Pkg::TransitionBuffer::c_r */ kcg_bool c_r;
  
  c_r = !(*In).valid & Write;
  /* last_init_ck_stacksize */ if (outC->init) {
    outC->init = kcg_false;
    kcg_copy_TransitionBuffer_T_InformationFilter_Pkg(
      &last_buffer,
      (TransitionBuffer_T_InformationFilter_Pkg *)
        &DEFAULT_TransitionBuffer_t_InformationFilter_Pkg);
    last_stacksize = 0;
  }
  else {
    kcg_copy_TransitionBuffer_T_InformationFilter_Pkg(
      &last_buffer,
      &outC->buffer);
    last_stacksize = outC->outStacksize;
  }
  /* ck_c_r */ if (c_r) {
    /* 2 */
    TransitionBuffer_read_only_InformationFilter_Pkg(
      &last_buffer,
      last_stacksize,
      In,
      Reset,
      &outC->buffer,
      &outC->outStacksize,
      &outC->Out);
  }
  else {
    _1_else_clock_IfBlock1 = (*In).valid & Write;
    /* ck_anon_activ */ if (_1_else_clock_IfBlock1) {
      /* 1 */
      TransitionBuffer_read_write_InformationFilter_Pkg(
        &last_buffer,
        last_stacksize,
        In,
        Reset,
        &outC->buffer,
        &outC->outStacksize,
        &outC->Out);
    }
    else {
      else_clock_IfBlock1 = !Write & (*In).valid;
      /* ck_anon_activ */ if (else_clock_IfBlock1) {
        /* 1 */
        TransitionBuffer_write_only_InformationFilter_Pkg(
          &last_buffer,
          last_stacksize,
          In,
          Reset,
          &outC->buffer,
          &outC->outStacksize,
          &outC->Out);
      }
      else {
        kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->Out, In);
        /* 1 */ if (Reset) {
          outC->outStacksize = 0;
          kcg_copy_TransitionBuffer_T_InformationFilter_Pkg(
            &outC->buffer,
            (TransitionBuffer_T_InformationFilter_Pkg *)
              &DEFAULT_TransitionBuffer_t_InformationFilter_Pkg);
        }
        else {
          outC->outStacksize = last_stacksize;
          kcg_copy_TransitionBuffer_T_InformationFilter_Pkg(
            &outC->buffer,
            &last_buffer);
        }
      }
    }
  }
}
/* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
void Manage_TrackSideInformation_Integration_Manage_TrackSideInformation_Integration_Pkg(
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::fullChecks */ kcg_bool fullChecks,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::API_trackSide_Message */ API_TrackSideInput_T_API_Msg_Pkg *API_trackSide_Message,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::ActualOdometry */ odometry_T_Obu_BasicTypes_Pkg *ActualOdometry,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::reset */ kcg_bool reset,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::trainPosition */ trainPosition_T_TrainPosition_Types_Pck *trainPosition,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::modeAndLevel */ T_Mode_Level_Level_And_Mode_Types_Pkg *modeAndLevel,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::tNvContact */ T_internal_Type_Obu_BasicTypes_Pkg tNvContact,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::intrainVersion */ M_VERSION intrainVersion,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::lastRelevantEventTimestamp */ T_internal_Type_Obu_BasicTypes_Pkg lastRelevantEventTimestamp,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::radioStatus */ morcStatus_T_RCM_Session_Types_Pkg *radioStatus,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::inSupervisingRbcId */ connection_ids_T_Handover_Pkg *inSupervisingRbcId,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::inAnnouncedBGs */ positionedBGs_T_TrainPosition_Types_Pck *inAnnouncedBGs,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::q_nvlocacc */ Q_NVLOCACC q_nvlocacc,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::inActiveCab */ kcg_bool inActiveCab,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::inTrainDataValid */ kcg_bool inTrainDataValid,
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::inFilterEvents */ filterRelatedEvents_T_Common_Types_Pkg *inFilterEvents,
  outC_Manage_TrackSideInformation_Integration_Manage_TrackSideInformation_Integration_Pkg *outC)
{
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static ReceivedMessage_T_Common_Types_Pkg tmp5;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static ReceivedMessage_T_Common_Types_Pkg tmp4;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static positionedBG_T_TrainPosition_Types_Pck tmp3;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool tmp2;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool tmp1;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static NID_ERRORBG_BG_Types_Pkg tmp;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool _7_op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool _8_op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool _9_op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static kcg_bool _10_op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static NID_C op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration */
  static NID_ERRORBG_BG_Types_Pkg _6_op_call;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::doBaliseBranch */
  static kcg_bool doBaliseBranch;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::doRadio */
  static kcg_bool doRadio;
  /* Manage_TrackSideInformation_Integration_Pkg::Manage_TrackSideInformation_Integration::trainPositionTest */
  static trainPosition_T_TrainPosition_Types_Pck trainPositionTest;
  
  /* 1 */
  Receive_TrackSide_Msg_Receive_TrackSide_Msg_Pkg(
    reset,
    API_trackSide_Message,
    ActualOdometry,
    &outC->Context_1);
  doRadio = outC->Context_1.outTrackMessage_for_check.msg_type ==
    msrc_Euroradio_Common_Types_Pkg;
  /* ck_doRadio */ if (doRadio) {
    /* 1 */
    CheckEuroRadioMessage_CheckEuroradioMessage(
      &outC->Context_1.outTrackMessage_for_check,
      tNvContact,
      lastRelevantEventTimestamp,
      radioStatus,
      fullChecks,
      &outC->_1_Context_1);
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &tmp5,
      &outC->_1_Context_1.checkedMessage);
    _10_op_call = outC->_1_Context_1.radioSequenceError;
    _9_op_call = outC->_1_Context_1.tNvContactError;
    _8_op_call = outC->_1_Context_1.otherTimingError;
    _7_op_call = outC->_1_Context_1.radioMessageConsistencyError;
  }
  doBaliseBranch = outC->Context_1.outTrackMessage_for_check.valid &
    (msrc_Eurobalise_Common_Types_Pkg ==
      outC->Context_1.outTrackMessage_for_check.msg_type);
  kcg_copy_trainPosition_T_TrainPosition_Types_Pck(
    &trainPositionTest,
    trainPosition);
  trainPositionTest.trainPositionIsUnknown = kcg_false;
  kcg_copy_positionedBG_T_TrainPosition_Types_Pck(
    &tmp3,
    &(*trainPosition).LRBG);
  tmp3.valid = kcg_true;
  /* ck_doBaliseBranch */ if (doBaliseBranch) {
    /* 1 */
    CheckBGConsistency_CheckBGConsistency_Pkg(
      inAnnouncedBGs,
      &trainPositionTest,
      (*modeAndLevel).Mode,
      &outC->Context_1.outTrackMessage_for_check,
      q_nvlocacc,
      intrainVersion,
      &tmp4,
      &outC->ApplyServiceBrake,
      &outC->BadBaliseMessageToDMI,
      &outC->outCheckErrors.linkedBGError,
      &tmp2,
      &tmp1,
      &_6_op_call,
      &op_call);
  }
  else {
    outC->ApplyServiceBrake = kcg_false;
    outC->BadBaliseMessageToDMI = kcg_false;
    /* ck_doRadio */ if (doRadio) {
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&tmp4, &tmp5);
    }
    else {
      kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
        &tmp4,
        (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
    }
    tmp1 = kcg_false;
    tmp2 = kcg_false;
    outC->outCheckErrors.linkedBGError = kcg_false;
  }
  /* 1 */
  validateDataDirection_ValidateDataDirection_Pkg(
    &tmp4,
    &tmp3,
    inAnnouncedBGs,
    &trainPositionTest,
    &tmp5);
  /* 3 */
  InformationFilter_InformationFilter_Pkg(
    &tmp5,
    modeAndLevel,
    0,
    inFilterEvents,
    inActiveCab,
    inTrainDataValid,
    radioStatus,
    &outC->Context_3);
  kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
    &outC->outputMessage,
    &outC->Context_3.outMessage);
  kcg_copy_T_Data_From_Track_MASSPGradient_Available_Level_And_Mode_Types_Pkg(
    &outC->IF_toML,
    &outC->Context_3.IF_toML);
  outC->outCheckErrors.unlinkedBGError = tmp2;
  outC->outCheckErrors.BG_versionIncompatible = tmp1;
  /* ck_doRadio */ if (doRadio) {
    outC->outCheckErrors.radioSequenceError = _10_op_call;
    tmp2 = _9_op_call;
  }
  else {
    tmp2 = kcg_false;
    outC->outCheckErrors.radioSequenceError = kcg_false;
  }
  outC->outCheckErrors.tNvContactError = tmp2 | /* 1 */
    ContinuousTimeoutCheck_CheckEuroradioMessage(
      (*ActualOdometry).timestamp,
      tNvContact,
      lastRelevantEventTimestamp,
      fullChecks,
      radioStatus);
  /* ck_doRadio */ if (doRadio) {
    outC->outCheckErrors.otherTimingError = _8_op_call;
    tmp1 = _7_op_call;
  }
  else {
    tmp1 = kcg_false;
    outC->outCheckErrors.otherTimingError = kcg_false;
  }
  outC->outCheckErrors.radioMessageConsistencyError = tmp1;
  /* ck_doBaliseBranch */ if (doBaliseBranch) {
    outC->outCheckErrors.nid_c = op_call;
    tmp = _6_op_call;
  }
  else {
    outC->outCheckErrors.nid_c = 0;
    tmp = cUnknownBG_BG_Types_Pkg;
  }
  outC->outCheckErrors.nid_errorbg = tmp;
  outC->positionM = (kcg_real) (*ActualOdometry).odo.o_nominal / 100.0;
  /* 1 */
  checkOnErrors_xdebugSupport_Pkg(
    &outC->outCheckErrors,
    &outC->debug_ErrorMSG,
    &outC->errorBG);
  outC->countPackets = /* 1 */
    countPackets_xdebugSupport_Pkg(API_trackSide_Message);
}
/* InformationFilter_Pkg::InformationFilter */
void InformationFilter_InformationFilter_Pkg(
  /* InformationFilter_Pkg::InformationFilter::inMessage */ ReceivedMessage_T_Common_Types_Pkg *inMessage,
  /* InformationFilter_Pkg::InformationFilter::inModeLevel */ T_Mode_Level_Level_And_Mode_Types_Pkg *inModeLevel,
  /* InformationFilter_Pkg::InformationFilter::inSupervisingDevice */ kcg_int inSupervisingDevice,
  /* InformationFilter_Pkg::InformationFilter::inFilterEvents */ filterRelatedEvents_T_Common_Types_Pkg *inFilterEvents,
  /* InformationFilter_Pkg::InformationFilter::inActiveCab */ kcg_bool inActiveCab,
  /* InformationFilter_Pkg::InformationFilter::inTrainDataValid */ kcg_bool inTrainDataValid,
  /* InformationFilter_Pkg::InformationFilter::inMorcStatus */ morcStatus_T_RCM_Session_Types_Pkg *inMorcStatus,
  outC_InformationFilter_InformationFilter_Pkg *outC)
{
  /* InformationFilter_Pkg::InformationFilter */ kcg_int tmp2;
  /* InformationFilter_Pkg::InformationFilter */ ReceivedMessage_T_Common_Types_Pkg tmp1;
  /* InformationFilter_Pkg::InformationFilter */ kcg_bool tmp;
  /* InformationFilter_Pkg::InformationFilter::currBuffersize */ kcg_int last_currBuffersize;
  /* InformationFilter_Pkg::InformationFilter::SM1 */ _34_SSM_ST_SM1 SM1_state_sel;
  /* InformationFilter_Pkg::InformationFilter::SM1 */ _34_SSM_ST_SM1 SM1_state_act;
  /* InformationFilter_Pkg::InformationFilter::_L99 */ ReceivedMessage_T_Common_Types_Pkg _L99;
  
  /* last_init_ck_storeInBuffer */ if (outC->init) {
    SM1_state_sel = SSM_st_State1_SM1;
    last_currBuffersize = 0;
    tmp = kcg_false;
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &_L99,
      (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
  }
  else {
    SM1_state_sel = outC->SM1_state_nxt;
    last_currBuffersize = outC->currBuffersize;
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&_L99, &outC->bufferMsg);
    tmp = outC->storeInBuffer;
  }
  /* sel_SM1 */ switch (SM1_state_sel) {
    case SSM_st_State1_SM1 :
      SM1_state_act = _33_SSM_st_State2_SM1;
      break;
    case _33_SSM_st_State2_SM1 :
      /* last_init_ck_inSupervisingDevice */ if (outC->init) {
        tmp2 = 0;
      }
      else {
        tmp2 = outC->rem_inSupervisingDevice;
      }
      if (((inSupervisingDevice != tmp2) | (*inModeLevel).newLevel) &
        (last_currBuffersize > 0)) {
        SM1_state_act = SSM_st_State3_SM1;
      }
      else {
        SM1_state_act = _33_SSM_st_State2_SM1;
      }
      break;
    case SSM_st_State3_SM1 :
      if (last_currBuffersize == 0) {
        SM1_state_act = _33_SSM_st_State2_SM1;
      }
      else {
        SM1_state_act = SSM_st_State3_SM1;
      }
      break;
    
  }
  /* 4 */ if (_L99.valid & tmp) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&tmp1, &_L99);
  }
  else {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &tmp1,
      (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
  }
  /* act_SM1 */ switch (SM1_state_act) {
    case SSM_st_State3_SM1 :
      outC->bufferHasPriority = kcg_true;
      outC->SM1_state_nxt = SSM_st_State3_SM1;
      break;
    case _33_SSM_st_State2_SM1 :
      outC->bufferHasPriority = kcg_false;
      outC->SM1_state_nxt = _33_SSM_st_State2_SM1;
      break;
    case SSM_st_State1_SM1 :
      /* last_init_ck_bufferHasPriority */ if (outC->init) {
        outC->bufferHasPriority = kcg_false;
      }
      outC->SM1_state_nxt = SSM_st_State1_SM1;
      break;
    
  }
  /* 1 */
  TransitionBuffer_InformationFilter_Pkg(
    &tmp1,
    outC->bufferHasPriority,
    (kcg_bool)
      ((*inMorcStatus).session.phase == sp_terminated_RCM_Session_Types_Pkg),
    &outC->Context_1);
  outC->currBuffersize = outC->Context_1.outStacksize;
  /* 1 */ if ((*inMessage).valid & outC->bufferHasPriority) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->_L108, inMessage);
  }
  else /* 1_fby_1_init_4 */ if (outC->init) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->_L108,
      (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
  }
  outC->init = kcg_false;
  /* 3 */ if (outC->bufferHasPriority) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&_L99, &outC->Context_1.Out);
  }
  else /* 5 */ if (!kcg_comp_ReceivedMessage_T_Common_Types_Pkg(
      &outC->_L108,
      (struct_124791 *) &cDefaultRM_Common_Types_Pkg)) {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&_L99, &outC->_L108);
  }
  else {
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&_L99, inMessage);
  }
  /* 1 */
  flagsForLevelChange_InformationFilter_Pkg(
    inModeLevel,
    inMessage,
    inFilterEvents,
    &outC->_1_Context_1);
  kcg_copy_T_Data_From_Track_MASSPGradient_Available_Level_And_Mode_Types_Pkg(
    &outC->IF_toML,
    &outC->_1_Context_1.IF_toML);
  /* 2 */ if (_L99.valid) {
    /* FilterSequence */
    FilterSequence_InformationFilter_Pkg(
      &_L99,
      (*inModeLevel).level,
      &outC->_1_Context_1.outFilterEvents,
      inSupervisingDevice,
      (*inModeLevel).Mode,
      &outC->outMessage,
      &outC->bufferMsg,
      &outC->storeInBuffer);
  }
  else {
    outC->storeInBuffer = kcg_false;
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(
      &outC->bufferMsg,
      (ReceivedMessage_T_Common_Types_Pkg *) &cDefaultRM_Common_Types_Pkg);
    kcg_copy_ReceivedMessage_T_Common_Types_Pkg(&outC->outMessage, &_L99);
  }
  outC->rem_inSupervisingDevice = inSupervisingDevice;
}
Exemple #17
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;
}