/* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelNotDup */
kcg_bool CheckFirstTelNotDup_CheckBGConsistency_Pkg_SubFunction_DuplicationCheck(
    /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelNotDup::telegramHeader_in */ TelegramHeader_T_BG_Types_Pkg *telegramHeader_in)
{
    /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelNotDup::_L4 */ kcg_int _L4;
    /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelNotDup::isTheFirst */ kcg_bool isTheFirst;

    _L4 = /* 1 */
        N_PIG2int_CheckBGConsistency_Pkg_SubFunction((*telegramHeader_in).n_pig);
    isTheFirst = (/* 1 */
                     N_TOTAL2int_CheckBGConsistency_Pkg_SubFunction(
                         (*telegramHeader_in).n_total) == _L4) | (_L4 == 1);
    return isTheFirst;
}
/* CheckBGConsistency_Pkg::CheckCompleteness */
void CheckCompleteness_CheckBGConsistency_Pkg(
  /* CheckBGConsistency_Pkg::CheckCompleteness::bgMessage */ BG_Message_T_BG_Types_Pkg *bgMessage,
  /* CheckBGConsistency_Pkg::CheckCompleteness::isComplete */ kcg_bool *isComplete,
  /* CheckBGConsistency_Pkg::CheckCompleteness::isSingleBG */ kcg_bool *isSingleBG,
  /* CheckBGConsistency_Pkg::CheckCompleteness::lastTelegram */ Telegram_T_BG_Types_Pkg *lastTelegram)
{
  /* CheckBGConsistency_Pkg::CheckCompleteness::IfBlock1::else */
  static kcg_bool else_clock_IfBlock1;
  /* CheckBGConsistency_Pkg::CheckCompleteness::IfBlock1::else::then::_L1 */
  static kcg_bool _L1_IfBlock1;
  /* CheckBGConsistency_Pkg::CheckCompleteness::IfBlock1::else::then::_L5 */
  static kcg_int _L5_IfBlock1;
  /* CheckBGConsistency_Pkg::CheckCompleteness::IfBlock1 */
  static kcg_bool IfBlock1_clock;
  
  IfBlock1_clock = (*bgMessage).numberBalises == 1;
  /* ck_IfBlock1 */ if (IfBlock1_clock) {
    *isComplete = kcg_false;
    *isSingleBG = /* 1 */
      CheckSingleBG_CheckBGConsistency_Pkg_SubFunction(
        &(*bgMessage).Telegrams[0]);
    kcg_copy_Telegram_T_BG_Types_Pkg(lastTelegram, &(*bgMessage).Telegrams[0]);
  }
  else {
    else_clock_IfBlock1 = !((*bgMessage).numberBalises > /* 1 */
        N_TOTAL2int_CheckBGConsistency_Pkg_SubFunction(
          (*bgMessage).Telegrams[0].telegramheader.n_total)) &
      ((*bgMessage).numberBalises > 0);
    /* ck_anon_activ */ if (else_clock_IfBlock1) {
      *isSingleBG = kcg_false;
      /* 1 */
      CompletenessFirstCheck_CheckBGConsistency_Pkg_SubFunction(
        &(*bgMessage).Telegrams,
        &_L1_IfBlock1,
        lastTelegram,
        &_L5_IfBlock1);
      *isComplete = _L1_IfBlock1 & (_L5_IfBlock1 == (*bgMessage).numberBalises);
    }
    else {
      *isSingleBG = kcg_false;
      *isComplete = kcg_false;
      kcg_copy_Telegram_T_BG_Types_Pkg(
        lastTelegram,
        (Telegram_T_BG_Types_Pkg *) &cTelegram_CheckBGConsistency_Pkg);
    }
  }
}
/* CheckBGConsistency_Pkg::SubFunction::CheckTelegramHeader */
kcg_bool CheckTelegramHeader_CheckBGConsistency_Pkg_SubFunction(
  /* CheckBGConsistency_Pkg::SubFunction::CheckTelegramHeader::telegramHeader_in */ TelegramHeader_T_BG_Types_Pkg *telegramHeader_in)
{
  /* CheckBGConsistency_Pkg::SubFunction::CheckTelegramHeader::_L48 */ kcg_int _L48;
  /* CheckBGConsistency_Pkg::SubFunction::CheckTelegramHeader::isConsistent */ kcg_bool isConsistent;
  
  _L48 = /* 1 */
    N_TOTAL2int_CheckBGConsistency_Pkg_SubFunction(
      (*telegramHeader_in).n_total);
  isConsistent = (/* 1 */
      N_PIG2int_CheckBGConsistency_Pkg_SubFunction(
        (*telegramHeader_in).n_pig) <= _L48) & (_L48 > 0) &
    (cTheTelegramFitsWithAll_CheckBGConsistency_Pkg >=
      (*telegramHeader_in).m_mcount) & ((*telegramHeader_in).m_mcount !=
      cTheTelegramNeverFitsAnyMessage_CheckBGConsistency_Pkg);
  return isConsistent;
}
/* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelDup */
kcg_bool CheckFirstTelDup_CheckBGConsistency_Pkg_SubFunction_DuplicationCheck(
  /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelDup::telegramHeader_in */ TelegramHeader_T_BG_Types_Pkg *telegramHeader_in)
{
  /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelDup::_L20 */
  static kcg_int _L20;
  /* CheckBGConsistency_Pkg::SubFunction::DuplicationCheck::CheckFirstTelDup::isTheFirst */
  static kcg_bool isTheFirst;
  
  _L20 = /* 3 */
    N_PIG2int_CheckBGConsistency_Pkg_SubFunction((*telegramHeader_in).n_pig);
  isTheFirst = ((M_DUP_This_balise_is_a_duplicate_of_the_next_balise ==
        (*telegramHeader_in).m_dup) & (/* 3 */
        N_TOTAL2int_CheckBGConsistency_Pkg_SubFunction(
          (*telegramHeader_in).n_total) - 1 == _L20)) | ((_L20 == 2) &
      ((*telegramHeader_in).m_dup ==
        M_DUP_This_balise_is_a_duplicate_of_the_previous_balise));
  return isTheFirst;
}