NR 5G MIB和SIB(sib1-sib9)结构体定义代码(C语言)

/**********************************************************************************************************
*Author: HeJian
*Date: 2019-08-23
***********************************************************************************************************/
/ ************ Basic Type *************/

typedef unsigned short  NR_COnTrolResOurceSetZerO;	     /* CONTROLRESOURCESETZERO */
typedef unsigned short  NR_SEaRchSpaCeZerO;               /* SEARCHSPACEZERO */
typedef short	        NR_Q_RXLEvMin;                     /* Q-RXLEVMIN */   /* FFS range */
typedef short	        NR_Q_QUaLMin;                      /* Q-QUALMIN */   /* FFS range */
typedef unsigned short  NR_MCC_MNC_DIgIt;                 /* MCC_MNC_Digit */
typedef unsigned short  NR_FReQBanDIndIcatorNR;          /* FREQBANDINDICATORNR */
typedef unsigned short  NR_ADdItionalSpeCtrumEmiSsion;  /* ADDITIONALSPECTRUMEMISSION */
typedef short           NR_P_MAx;                           /* P-MAX */
typedef char            NullType;                               /* Nulltype*/
typedef unsigned short  NR_COnTrolResOurceSetId;          /* CONTROL-RESOURCE-SET-ID */
typedef unsigned short  NR_TCI_STaTeId;                     /* TCI_StateId */
typedef unsigned short  NR_SEaRchSpaCeId;                   /* SearchSpaceId */
typedef unsigned int    NR_ARFCN_VAlUeNR;                   /* ARFCN_ValueNR */
typedef unsigned short  NR_UAC_BArRingInfOSetIndEx;        /* UAC_BarringInfoSetIndex */
typedef ossBoolean      NR_EUTRA_PReSenceAntEnnaPorT1;    /* EUTRA-PRESENCE-ANTENNA-PORT1 */
typedef unsigned short  NR_EUTRA_PHySCelLId;                /* EUTRA-PHYS-CELL-ID */
typedef unsigned int    NR_ARFCN_VAlUeEUTRA;                /* ARFCN-VALUEEUTRA */
typedef unsigned short  NR_FReQBanDIndIcatorEUTRA;         /* FREQ-BAND-INDICATOR-EUTRA */
typedef unsigned short  NR_REsElectionThrEshold;           /* RESELECTION-THRESHOLD */
typedef unsigned short  NR_REsElectionThrEsholdQ;          /* RESELECTION-THRESHOLDQ */
typedef unsigned short  NR_CElLResElectionPriOrity;        /* CELLRESELECTIONPRIORITY */
typedef unsigned short  NR_PHySCelLId;                       /* PHYS-CELL-ID */
typedef unsigned short  RRC_RSRP_Range;                       /* RSRP_Range */
typedef unsigned short  RRC_RSRQ_Range;                        /* RSRQ_Range */
typedef unsigned short  RRC_SINR_Range;                        /* SINR_Range */
typedef unsigned short  RRC_RAN_AreaCode;                      /* RAN-AREACODE */

/***********************************/

/*************** Bit ***************/
typedef struct NRRRC_bit1 {
   
    unsigned short  length;  /* number of significant bits */
    unsigned char   *value;
} NRRRC_bit1;

/***********************************/

/*************** Enum **************/
typedef enum NRRRC_enum1 {
   
    NRRRC_pos2 = 0,
    NRRRC_dmrs_TypeA_Position_pos3 = 1
} NRRRC_enum1;

typedef enum NRRRC_enum2 {
   
    NRRRC_s30_1 = 0,
    NRRRC_s60_1 = 1,
    NRRRC_s120_1 = 2,
    NRRRC_s180_1 = 3,
    NRRRC_s240_1 = 4,
    NRRRC_spare3_1 = 5,
    NRRRC_spare2_1 = 6,
    NRRRC_spare1_1 = 7
} NRRRC_enum2;

typedef enum NRRRC_enum3 {
   
    NRRRC_dB_6_1 = 0,
    NRRRC_dB_4_1 = 1,
    NRRRC_dB_2_1 = 2,
    NRRRC_dB0_1 = 3
} NRRRC_enum3;

typedef enum NRRRC_enum4 {
   
    NRRRC_oDot25 = 0,
    NRRRC_oDot5 = 1,
    NRRRC_oDot75 = 2,
    NRRRC_lDot0 = 3
} NRRRC_enum4;

typedef enum NRRRC_enum5 {
   
    NRRRC_notLastSegment = 0,
    NRRRC_lastSegment = 1
} NRRRC_enum5;

typedef enum NRRRC_enum6 {
   
    NRRRC_true = 0
} NRRRC_enum6;

typedef enum NRRRC_enum7 {
   
    NRRRC_n1_5 = 0,
    NRRRC_n2_6 = 1,
    NRRRC_n3_4 = 2,
    NRRRC_n4_6 = 3
} NRRRC_enum7;

typedef enum NRRRC_enum8 {
   
    NRRRC_dB0_2 = 0,
    NRRRC_dB2_1 = 1,
    NRRRC_dB4_1 = 2,
    NRRRC_dB6_1 = 3
} NRRRC_enum8;

typedef enum NRRRC_enum9 {
   
    NRRRC_oneEighth = 0,
    NRRRC_oneFourth = 1,
    NRRRC_oneHalf = 2,
    NRRRC_ssb_perRACH_Occasion_one = 3,
    NRRRC_ssb_perRACH_Occasion_two = 4,
    NRRRC_ssb_perRACH_Occasion_four = 5,
    NRRRC_ssb_perRACH_Occasion_eight = 6,
    NRRRC_ssb_perRACH_Occasion_sixteen = 7
} NRRRC_enum9;

typedef enum NRRRC_enum10 {
   
    NRRRC_n2_1 = 0,
    NRRRC_n3_1 = 1,
    NRRRC_n6_1 = 2
} NRRRC_enum10;

typedef enum NRRRC_enum11 {
   
    NRRRC_enabled_1 = 0
} NRRRC_enum11;

typedef enum NRRRC_enum12 {
   
    NRRRC_n0_1 = 0,
    NRRRC_n1_1 = 1,
    NRRRC_n2_2 = 2,
    NRRRC_n3_2 = 3,
    NRRRC_n4_1 = 4,
    NRRRC_n5_1 = 5,
    NRRRC_n6_2 = 6,
    NRRRC_n8_1 = 7
} NRRRC_enum12;

typedef enum NRRRC_enum13 {
   
    NRRRC_n1_4 = 0,
    NRRRC_n2_5 = 1
} NRRRC_enum13;

typedef enum NRRRC_enum14 {
   
    NRRRC_n2_11 = 0,
    NRRRC_n4_12 = 1,
    NRRRC_n8_7 = 2,
    NRRRC_n16_3 = 3
} NRRRC_enum14;

typedef enum NRRRC_enum15 {
   
    NRRRC_n4_2 = 0,
    NRRRC_n8_2 = 1,
    NRRRC_n12_1 = 2,
    NRRRC_n16_1 = 3,
    NRRRC_n20_1 = 4,
    NRRRC_n24_1 = 5,
    NRRRC_n28_1 = 6,
    NRRRC_n32_1 = 7,
    NRRRC_n36_1 = 8,
    NRRRC_n40_1 = 9,
    NRRRC_n44_1 = 10,
    NRRRC_n48_1 = 11,
    NRRRC_n52_1 = 12,
    NRRRC_n56_1 = 13,
    NRRRC_n60_1 = 14,
    NRRRC_n64_1 = 15
} NRRRC_enum15;

enum NRRRC_enum16 {
   
	NRRRC_two_n4 = 0,
	NRRRC_two_n8 = 1,
	NRRRC_two_n12 = 2,
	NRRRC_two_n16 = 3,
	NRRRC_two_n20 = 4,
	NRRRC_two_n24 = 5,
	NRRRC_two_n28 = 6,
	NRRRC_two_n32 = 7
} NRRRC_enum16;


typedef enum NRRRC_enum17 {
   
    NRRRC_ms100_1 = 0,
    NRRRC_ms200_1 = 1,
    NRRRC_ms300_1 = 2,
    NRRRC_ms400_1 = 3,
    NRRRC_ms600_1 = 4,
    NRRRC_ms1000_1 = 5,
    NRRRC_ms1500_1 = 6,
    NRRRC_ms2000_1 = 7
} NRRRC_enum17;

typedef enum NRRRC_enum18 {
   
    NRRRC_n310_n1 = 0,
    NRRRC_n310_n2 = 1,
    NRRRC_n310_n3 = 2,
    NRRRC_n310_n4 = 3,
    NRRRC_n310_n6 = 4,
    NRRRC_n310_n8 = 5,
    NRRRC_n310_n10 = 6,
    NRRRC_n310_n20 = 7
} NRRRC_enum18;

typedef enum NRRRC_enum19 {
   
    NRRRC_ms1000_2 = 0,
    NRRRC_ms3000_1 = 1,
    NRRRC_ms5000 = 2,
    NRRRC_ms10000_1 = 3,
    NRRRC_ms15000 = 4,
    NRRRC_ms20000 = 5,
    NRRRC_ms30000 = 6
} NRRRC_enum19;

typedef enum NRRRC_enum20 {
   
    NRRRC_n1_2 = 0,
    NRRRC_n2_3 = 1,
    NRRRC_n3_3 = 2,
    NRRRC_n4_4 = 3,
    NRRRC_n5_2 = 4,
    NRRRC_n6_3 = 5,
    NRRRC_n8_3 = 6,
    NRRRC_n10_1 = 7
} NRRRC_enum20;

typedef enum NRRRC_enum48 {
   
    NRRRC_mappingType_typeA = 0,
    NRRRC_mappingType_typeB = 1
} NRRRC_enum48;
/***********************************/

/************ Seqof *************/
struct NRRRC_seqof2 {
   
	struct NRRRC_seqof2 *next;
	NRRRC_SI_RequestResources value;
} *NRRRC_seqof2;

struct NRRRC_seqof3 {
   
	struct NRRRC_seqof3 *next;
	NRRRC_SchedulingInfo value;
} *NRRRC_seqof3;

typedef struct NRRRC_seqof4 {
   
    struct NRRRC_seqof4 *next;
    NRRRC_SCS_SpecificCarrier value;
} *NRRRC_seqof4;

typedef struct NRRRC_seqof5 {
   
    struct NRRRC_seqof5 *next;
    NR_TCI_STaTeId value;
} *NRRRC_seqof5;

typedef struct NRRRC_seqof6 {
   
    struct NRRRC_seqof6 *next;
    NRRRC_SearchSpace value;
} *NRRRC_seqof6;

typedef struct NRRRC_seqof7 {
   
    struct NRRRC_seqof7 *next;
    unsigned short  value;
} *NRRRC_seqof7;

struct NRRRC_seqof99 {
   
	struct NRRRC_seqof99 *next;
	NRRRC_PLMN_Identity value;
} *NRRRC_seqof99;
/***********************************/

/*************seq*******************/
typedef struct NRRRC_seq1 {
   
    char            placeholder;
} NRRRC_seq1;

typedef struct NRRRC_seq6 {
   
    NR_REsElectionThrEsholdQ threshX_HighQ;
    NR_REsElectionThrEsholdQ threshX_LowQ;
} NRRRC_seq6;
/***********************************/

/************ Octet *************/
typedef struct NRRRC_octet1 {
   
    unsigned int    length;
    unsigned char   *value;
} NRRRC_octet1;

typedef struct NRRRC_octet2 {
   
    unsigned short  length;
    unsigned char   value[1];
} NRRRC_octet2;
/***********************************/

/* ============================================== MIB ====================================================*/
/* -------------------------------------------------------------------------------------------------------*/
/* PDCCH-CONFIGSIB1 */
typedef struct NRRRC_PDCCH_ConfigSIB1 {
   
    NR_COnTrolResOurceSetZerO controlResourceSetZero;
    NR_SEaRchSpaCeZerO searchSpaceZero;
} NRRRC_PDCCH_ConfigSIB1;

/* MIB */
typedef struct NRRRC_MIB {
   
    NRRRC_bit1     systemFrameNumber;
    enum NRRRC_enum_WcdMT {
   
        NRRRC_scs15or60 = 0,
        NRRRC_scs30or120 = 1
    } subCarrierSpacingCommon;
    unsigned short  ssb_SubcarrierOffset;
    NRRRC_enum1    dmrs_TypeA_Position;
    NRRRC_PDCCH_ConfigSIB1 pdcch_ConfigSIB1;
    enum NRRRC_enum_RfoYO {
   
        NRRRC_barred = 0,
        NRRRC_notBarred = 1
    } cellBarred;
    enum NRRRC_enum_VXJgL {
   
        NRRRC_allowed = 0,
        NRRRC_notAllowed = 1
    } intraFreqReselection;
    NRRRC_bit1     spare;
} NRRRC_MIB;

/* ============================================== SIB ====================================================*/

/* -------------------------------------------------------------------------------------------------------*/
typedef struct NRRRC_MCC {
   
    struct NRRRC_MCC *next;
    NR_MCC_MNC_DIgIt value;
} *NRRRC_MCC;

typedef struct NRRRC_MNC {
   
    struct NRRRC_MNC *next;
    NR_MCC_MNC_DIgIt value;
} *NRRRC_MNC;


/* PLMN-IDENTITY-INFORMATION */
typedef struct NRRRC_PLMN_Identity {
   
    unsigned char   bit_mask;
	#define      NRRRC_mcc_present 0x80
    struct NRRRC_MCC *mcc;  /* optional; set in bit_mask NRRRC_mcc_present if
                             * present */
                            /* Cond MCC */
    struct NRRRC_MNC *mnc;
} NRRRC_PLMN_Identity;

/* TRACKINGAREACODE */
typedef struct NRRRC_TrackingAreaCode {
   
    unsigned short  length;  /* number of significant bits */
    unsigned char   *value;
} NRRRC_TrackingAreaCode;

typedef struct NRRRC_CellIdentity {
   
    unsigned short  length;  /* number of significant bits */
    unsigned char   *value;
} NRRRC_CellIdentity;

typedef struct NRRRC_PLMN_IdentityInfo {
   
    unsigned char   bit_mask;
	#define      NRRRC_trackingAreaCode_present 0x80
	#define      NRRRC_ranac_present 0x40
    struct NRRRC_seqof99 *plmn_IdentityList;
	NRRRC_TrackingAreaCode trackingAreaCode;  /* optional; set in bit_mask
                                               * NRRRC_trackingAreaCode_present
                                               * if present */
                                              /* Need R */
    RRC_RAN_AreaCode ranac;  /* optional; set in bit_mask NRRRC_ranac_present
                                * if present */
                               /* Need R */
    NRRRC_CellIdentity cellIdentity;
    enum NRRRC_enum_FJk3O {
   
        NRRRC_reserved = 0,
        NRRRC_notReserved = 1
    } cellReservedForOperatorUse;
} NRRRC_PLMN_IdentityInfo;


/* PLMN-IDENTITY-LIST */
typedef struct NRRRC_PLMN_IdentityInfoList {
   
    struct NRRRC_PLMN_IdentityInfoList *next;
    NRRRC_PLMN_IdentityInfo value;
} *NRRRC_PLMN_IdentityInfoList;

/* CELL-ACCESS-RELATED-INFO */
typedef struct NRRRC_CellAccessRelatedInfo {
   
    unsigned char   bit_mask;
	#define      NRRRC_cellReservedForOtherUse_present 0x80
    struct NRRRC_PLMN_IdentityInfoList *plmn_IdentityList;
    NRRRC_enum6    cellReservedForOtherUse;  /* optional; set in bit_mask
                                     * NRRRC_cellReservedForOtherUse_present if
                                     * present */
  /* Need R */
} NRRRC_CellAccessRelatedInfo;


/* CONNESTFAILURECONTROL */
typedef struct NRRRC_ConnEstFailureControl {
   
    unsigned char   bit_mask;
	#define      NRRRC_connEstFailOffset_present 0x80
    NRRRC_enum7    connEstFailCount;
    enum NRRRC_enum_EwJkP {
   
        NRRRC_connEstFailOffsetValidity_s30 = 0,
        NRRRC_connEstFailOffsetValidity_s60 = 1,
        NRRRC_connEstFailOffsetValidity_s120 = 2,
        NRRRC_connEstFailOffsetValidity_s240 = 3,
        NRRRC_s300 = 4,
        NRRRC_s420 = 5,
        NRRRC_s600 = 6,
        NRRRC_s900 = 7
    } connEstFailOffsetValidity;
    unsigned short  connEstFailOffset;  /* optional; set in bit_mask
                                         * NRRRC_connEstFailOffset_present if
                                         * present */
                                        /* Need S */
} NRRRC_ConnEstFailureControl;

typedef struct NRRRC_SIB_TypeInfo {
   
    unsigned char   bit_mask;
	#define      NRRRC_valueTag_present 0x80
	#define      NRRRC_areaScope_present 0x40
    enum NRRRC_enum_GxyLL {
   
        NRRRC_sibType2 = 0,
        NRRRC_sibType3 = 1,
        NRRRC_sibType4 = 2,
        NRRRC_sibType5 = 3,
        NRRRC_sibType6 = 4,
        NRRRC_sibType7 = 5,
        NRRRC_sibType8 = 6,
        NRRRC_sibType9 = 7,
        NRRRC_type_spare8 = 8,
        NRRRC_type_spare7 = 9,
        NRRRC_type_spare6 = 10,
        NRRRC_type_spare5 = 11,
        NRRRC_type_spare4 = 12,
        NRRRC_type_spare3 = 13,
        NRRRC_type_spare2 = 14,
        NRRRC_type_spare1 = 15
    } type;
    unsigned short  valueTag;  /* optional; set in bit_mask
                                * NRRRC_valueTag_present if present */
                               /* Cond SIB-TYPE */
    NRRRC_enum6    areaScope;  /* optional; set in bit_mask
                                 * NRRRC_areaScope_present if present */
                                /* Cond AREA-ID */
} NRRRC_SIB_TypeInfo;


typedef struct NRRRC_SIB_Mapping {
   
    struct NRRRC_SIB_Mapping *next;
    NRRRC_SIB_TypeInfo value;
} *NRRRC_SIB_Mapping;

typedef struct NRRRC_SchedulingInfo {
   
    enum NRRRC_enum_37wF5 {
   
        NRRRC_broadcasting = 0,
        NRRRC_notBroadcasting = 1
    } si_BroadcastStatus;
    enum NRRRC_enum_HIJDT {
   
        NRRRC_rf8 = 0,
        NRRRC_rf16 = 1,
        NRRRC_si_Periodicity_rf32 = 2,
        NRRRC_si_Periodicity_rf64 = 3,
        NRRRC_si_Periodicity_rf128 = 4,
        NRRRC_si_Periodicity_rf256 = 5,
        NRRRC_rf512 = 6
    } si_Periodicity;
    struct NRRRC_SIB_Mapping *sib_MappingInfo;
} NRRRC_SchedulingInfo;

/* RACH-CONFIG-GENERIC */
typedef struct NRRRC_RACH_ConfigGeneric {
   
    unsigned short  prach_ConfigurationIndex;
    enum NRRRC_enum_HqpEJ {
   
        NRRRC_msg1_FDM_one = 0,
        NRRRC_msg1_FDM_two = 1,
        NRRRC_msg1_FDM_four = 2,
        NRRRC_msg1_FDM_eight = 3
    } msg1_FDM;
    unsigned short  msg1_FrequencyStart;
    unsigned short  zeroCorrelationZoneConfig;
    short           preambleReceivedTargetPower;
    enum NRRRC_enum_Vgmp6 {
   
        NRRRC_preambleTransMax_n3 = 0,
        NRRRC_preambleTransMax_n4 = 1,
        NRRRC_preambleTransMax_n5 = 2,
        NRRRC_preambleTransMax_n6 = 3,
        NRRRC_preambleTransMax_n7 = 4,
        NRRRC_preambleTransMax_n8 = 5,
        NRRRC_preambleTransMax_n10 = 6,
        NRRRC_preambleTransMax_n20 = 7,
        NRRRC_preambleTransMax_n50 = 8,
        NRRRC_preambleTransMax_n100 = 9,
        NRRRC_preambleTransMax_n200 = 10
    } preambleTransMax;
    NRRRC_enum8    powerRampingStep;
    enum NRRRC_enum_EhIo3 {
   
        NRRRC_ra_ResponseWindow_sl1 = 0,
        NRRRC_ra_ResponseWindow_sl2 = 1,
        NRRRC_ra_ResponseWindow_sl4 = 2,
        NRRRC_ra_ResponseWindow_sl8 = 3,
        NRRRC_ra_ResponseWindow_sl10 = 4,
        NRRRC_ra_ResponseWindow_sl20 = 5,
        NRRRC_ra_ResponseWindow_sl40 = 6,
        NRRRC_ra_ResponseWindow_sl80 = 7
    } ra_ResponseWindow;
} NRRRC_RACH_ConfigGeneric;

typedef struct NRRRC_SI_RequestResources {
   
    unsigned char   bit_mask;
	#define      NRRRC_ra_AssociationPeriodIndex_present 0x80
	#define      NRRRC_SI_RequestResources_ra_ssb_OccasionMaskIndex_present 0x40
    unsigned short  ra_PreambleStartIndex;
    unsigned short  ra_AssociationPeriodIndex;  /* optional; set in bit_mask
                                   * NRRRC_ra_AssociationPeriodIndex_present if
                                   * present */
                                                /* Need R */
    unsigned short  ra_ssb_OccasionMaskIndex;  /* optional; set in bit_mask
                * NRRRC_SI_RequestResources_ra_ssb_OccasionMaskIndex_present if
                * present */
                                               /* Need R */
} NRRRC_SI_RequestResources;


/* Configuration for Msg1 based SI Request */
typedef struct NRRRC_SI_RequestConfig {
   
    unsigned char   bit_
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华夏山河雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值