302 lines
7.9 KiB
C
302 lines
7.9 KiB
C
|
|
/*! \file config_NB_IoT.h
|
|
* \brief configured structures used by scheduler
|
|
* \author NTUST BMW Lab./
|
|
* \date 2017
|
|
* \email:
|
|
* \version 1.0
|
|
*
|
|
*/
|
|
|
|
#ifndef __LAYER2_MAC_CONFIG_NB_IOT__H__
|
|
#define __LAYER2_MAC_CONFIG_NB_IOT__H__
|
|
|
|
//#include "NB_IoT_Message_definitions.h"
|
|
|
|
#define NUMBER_OF_SIBS_MAX_NB_IoT 6
|
|
|
|
///MIB
|
|
typedef enum operationModeInf{
|
|
iNB_IoTand_SamePCI_r13 = 1,
|
|
iNB_IoTand_DifferentPCI_r13 = 2,
|
|
guardband_r13 = 3,
|
|
standalone_r13 = 4
|
|
} operationModeInf_t;
|
|
|
|
///SIB1_SchedulingInfo_NB_IoT_r13
|
|
typedef enum si_Periodicity{
|
|
si_Periodicity_rf64=640,
|
|
si_Periodicity_rf128=1280,
|
|
si_Periodicity_rf256=2560,
|
|
si_Periodicity_rf512=5120,
|
|
si_Periodicity_rf1024=10240,
|
|
si_Periodicity_rf2048=20480,
|
|
si_Periodicity_rf4096=40960
|
|
} si_Periodicity_NB_IoT;
|
|
|
|
typedef enum si_RepetitionPattern{
|
|
si_RepetitionPattern_every2ndRF=0,
|
|
si_RepetitionPattern_every4thRF,
|
|
si_RepetitionPattern_every8thRF,
|
|
si_RepetitionPattern_every16thRF
|
|
} si_RepetitionPattern_NB_IoT;
|
|
|
|
typedef enum sib_MappingInfo{
|
|
sib2_v=0x1,
|
|
sib3_v=0x2,
|
|
sib4_v=0x4,
|
|
sib5_v=0x8,
|
|
sib14_v=0x10,
|
|
sib16_v=0x20
|
|
} sib_MappingInfo_NB_IoT;
|
|
|
|
typedef enum si_TB{
|
|
si_TB_56=2,
|
|
si_TB_120=2,
|
|
si_TB_208=8,
|
|
si_TB_256=8,
|
|
si_TB_328=8,
|
|
si_TB_440=8,
|
|
si_TB_552=8,
|
|
si_TB_680=8
|
|
} si_TB_NB_IoT;
|
|
|
|
///RACH_ConfigCommon configuration
|
|
|
|
typedef enum ra_ResponseWindowSize{
|
|
ra_ResponseWindowSize_pp2=2,
|
|
ra_ResponseWindowSize_pp3=3,
|
|
ra_ResponseWindowSize_pp4=4,
|
|
ra_ResponseWindowSize_pp5=5,
|
|
ra_ResponseWindowSize_pp6=6,
|
|
ra_ResponseWindowSize_pp7=7,
|
|
ra_ResponseWindowSize_pp8=8,
|
|
ra_ResponseWindowSize_pp10=10
|
|
} ra_ResponseWindowSize_NB_IoT;
|
|
|
|
typedef enum mac_ContentionResolutionTimer{
|
|
mac_ContentionResolutionTimer_pp1=1,
|
|
mac_ContentionResolutionTimer_pp2=2,
|
|
mac_ContentionResolutionTimer_pp3=3,
|
|
mac_ContentionResolutionTimer_pp4=4,
|
|
mac_ContentionResolutionTimer_pp8=8,
|
|
mac_ContentionResolutionTimer_pp16=16,
|
|
mac_ContentionResolutionTimer_pp32=32,
|
|
mac_ContentionResolutionTimer_pp64=64
|
|
} mac_ContentionResolutionTimer_NB_IoT;
|
|
|
|
///NPRACH_ConfigSIB configuration
|
|
|
|
typedef enum nprach_Periodicity{
|
|
nprach_Periodicity_ms40=40,
|
|
nprach_Periodicity_ms80=80,
|
|
nprach_Periodicity_ms160=160,
|
|
nprach_Periodicity_ms240=240,
|
|
nprach_Periodicity_ms320=320,
|
|
nprach_Periodicity_ms640=640,
|
|
nprach_Periodicity_ms1280=1280,
|
|
nprach_Periodicity_ms2560=2560
|
|
} nprach_Periodicity_NB_IoT;
|
|
|
|
typedef enum nprach_StartTime{
|
|
nprach_StartTime_ms8=8,
|
|
nprach_StartTime_ms16=16,
|
|
nprach_StartTime_ms32=32,
|
|
nprach_StartTime_ms64=64,
|
|
nprach_StartTime_ms128=128,
|
|
nprach_StartTime_ms256=256,
|
|
nprach_StartTime_ms512=512,
|
|
nprach_StartTime_ms1024=1024
|
|
} nprach_StartTime_NB_IoT;
|
|
|
|
typedef enum nprach_SubcarrierOffset{
|
|
nprach_SubcarrierOffset_n0=0,
|
|
nprach_SubcarrierOffset_n12=12,
|
|
nprach_SubcarrierOffset_n24=24,
|
|
nprach_SubcarrierOffset_n36=36,
|
|
nprach_SubcarrierOffset_n2=2,
|
|
nprach_SubcarrierOffset_n18=18,
|
|
nprach_SubcarrierOffset_n34=34
|
|
} nprach_SubcarrierOffset_NB_IoT;
|
|
|
|
typedef enum nprach_NumSubcarriers{
|
|
nprach_NumSubcarriers_n12=12,
|
|
nprach_NumSubcarriers_n24=24,
|
|
nprach_NumSubcarriers_n36=36,
|
|
nprach_NumSubcarriers_n48=48
|
|
} nprach_NumSubcarriers_NB_IoT;
|
|
|
|
typedef enum nprach_SubcarrierMSG3_RangeStart{
|
|
nprach_SubcarrierMSG3_RangeStart_zero=0,
|
|
nprach_SubcarrierMSG3_RangeStart_oneThird=1/3,
|
|
nprach_SubcarrierMSG3_RangeStart_twoThird=2/3,
|
|
nprach_SubcarrierMSG3_RangeStart_one=1
|
|
} nprach_SubcarrierMSG3_RangeStart_NB_IoT;
|
|
|
|
typedef enum maxNumPreambleAttemptCE{
|
|
maxNumPreambleAttemptCE_n3=3,
|
|
maxNumPreambleAttemptCE_n4=4,
|
|
maxNumPreambleAttemptCE_n5=5,
|
|
maxNumPreambleAttemptCE_n6=6,
|
|
maxNumPreambleAttemptCE_n7=7,
|
|
maxNumPreambleAttemptCE_n8=8,
|
|
maxNumPreambleAttemptCE_n10=10
|
|
} maxNumPreambleAttemptCE_NB_IoT;
|
|
|
|
typedef enum numRepetitionsPerPreambleAttempt{
|
|
numRepetitionsPerPreambleAttempt_n1=1,
|
|
numRepetitionsPerPreambleAttempt_n2=2,
|
|
numRepetitionsPerPreambleAttempt_n4=4,
|
|
numRepetitionsPerPreambleAttempt_n8=8,
|
|
numRepetitionsPerPreambleAttempt_n16=16,
|
|
numRepetitionsPerPreambleAttempt_n32=32,
|
|
numRepetitionsPerPreambleAttempt_n64=64,
|
|
numRepetitionsPerPreambleAttempt_n128=128
|
|
} numRepetitionsPerPreambleAttempt_NB_IoT;
|
|
|
|
typedef enum npdcch_NumRepetitions_RA{
|
|
npdcch_NumRepetitions_RA_r1=1,
|
|
npdcch_NumRepetitions_RA_r2=2,
|
|
npdcch_NumRepetitions_RA_r4=4,
|
|
npdcch_NumRepetitions_RA_r8=8,
|
|
npdcch_NumRepetitions_RA_r16=16,
|
|
npdcch_NumRepetitions_RA_r32=32,
|
|
npdcch_NumRepetitions_RA_r64=64,
|
|
npdcch_NumRepetitions_RA_r128=128,
|
|
npdcch_NumRepetitions_RA_r256=256,
|
|
npdcch_NumRepetitions_RA_r512=512,
|
|
npdcch_NumRepetitions_RA_r1024=1024,
|
|
npdcch_NumRepetitions_RA_r2048=2048
|
|
} npdcch_NumRepetitions_RA_NB_IoT;
|
|
|
|
typedef enum npdcch_StartSF_CSS_RA{
|
|
npdcch_StartSF_CSS_RA_v1dot5=3/2,
|
|
npdcch_StartSF_CSS_RA_v2=2,
|
|
npdcch_StartSF_CSS_RA_v4=4,
|
|
npdcch_StartSF_CSS_RA_v8=8,
|
|
npdcch_StartSF_CSS_RA_v16=16,
|
|
npdcch_StartSF_CSS_RA_v32=32,
|
|
npdcch_StartSF_CSS_RA_v48=48,
|
|
npdcch_StartSF_CSS_RA_v64=64
|
|
} npdcch_StartSF_CSS_RA_NB_IoT;
|
|
|
|
typedef enum npdcch_Offset_RA{
|
|
zero=0,
|
|
oneEighth=1/8,
|
|
oneFourth=1/4,
|
|
threeEighth=3/8
|
|
} npdcch_Offset_RA_NB_IoT;
|
|
|
|
typedef enum si_window_length_e{
|
|
ms160=160,
|
|
ms320=320,
|
|
ms480=480,
|
|
ms640=640,
|
|
ms960=960,
|
|
ms1280=1280,
|
|
ms1600=1600
|
|
} si_window_length_t;
|
|
|
|
typedef enum si_periodicity_e{
|
|
rf64=640,
|
|
rf128=1280,
|
|
rf256=2560,
|
|
rf512=5120,
|
|
rf1024=10240,
|
|
rf2048=20480,
|
|
rf4096=40960
|
|
} si_periodicity_t;
|
|
|
|
typedef enum si_repetition_pattern_e{
|
|
every2ndRF=20,
|
|
every4thRF=40,
|
|
every8thRF=80,
|
|
every16thRF=160
|
|
} si_repetition_pattern_t;
|
|
|
|
typedef enum si_tb_e{
|
|
b56=2,
|
|
b120=2,
|
|
b208=8,
|
|
b256=8,
|
|
b328=8,
|
|
b440=8,
|
|
b552=8,
|
|
b680=8
|
|
} si_tb_t;
|
|
|
|
|
|
typedef struct sibs_NB_IoT_sched_s{
|
|
si_periodicity_t si_periodicity;
|
|
si_repetition_pattern_t si_repetition_pattern;
|
|
sib_MappingInfo_NB_IoT sib_mapping_info; //bit vector
|
|
si_tb_t si_tb;
|
|
|
|
} sibs_NB_IoT_sched_t;
|
|
|
|
|
|
///-------------------------------------------------------MAC--------------------------------------------------------------------///
|
|
typedef struct sib1_NB_IoT_sched_s{
|
|
int repetitions; // 4, 8, 16
|
|
int starting_rf;
|
|
} sib1_NB_IoT_sched_t;
|
|
|
|
typedef struct {
|
|
|
|
uint32_t mac_ra_ResponseWindowSize_NB_IoT;
|
|
uint32_t mac_ContentionResolutionTimer_NB_IoT;
|
|
|
|
} mac_RACH_ConfigCommon_NB_IoT;
|
|
|
|
typedef struct {
|
|
|
|
uint32_t mac_nprach_Periodicity_NB_IoT;
|
|
uint32_t mac_nprach_StartTime_NB_IoT;
|
|
uint32_t mac_nprach_SubcarrierOffset_NB_IoT;
|
|
uint32_t mac_nprach_NumSubcarriers_NB_IoT;
|
|
uint32_t mac_nprach_SubcarrierMSG3_RangeStart_NB_IoT;
|
|
uint32_t mac_maxNumPreambleAttemptCE_NB_IoT;
|
|
uint32_t mac_numRepetitionsPerPreambleAttempt_NB_IoT;
|
|
// css
|
|
uint32_t mac_npdcch_NumRepetitions_RA_NB_IoT; // rmax
|
|
uint32_t mac_npdcch_StartSF_CSS_RA_NB_IoT; // G
|
|
uint32_t mac_npdcch_Offset_RA_NB_IoT; // alpha offset
|
|
|
|
} mac_NPRACH_ConfigSIB_NB_IoT;
|
|
|
|
typedef struct{
|
|
//npdcch-NumRepetitions-r13
|
|
uint32_t R_max;
|
|
//npdcch-StartSF-USS-r13
|
|
double G;
|
|
//npdcch-Offset-USS-r13
|
|
double a_offset;
|
|
} npdcch_ConfigDedicated_NB_IoT;
|
|
|
|
typedef struct rrc_config_NB_IoT_s{
|
|
|
|
///MIB
|
|
uint16_t schedulingInfoSIB1_NB_IoT;
|
|
|
|
///SIB1
|
|
uint32_t cellIdentity_NB_IoT;
|
|
|
|
sib1_NB_IoT_sched_t sib1_NB_IoT_sched_config;
|
|
///SIBS
|
|
sibs_NB_IoT_sched_t sibs_NB_IoT_sched[NUMBER_OF_SIBS_MAX_NB_IoT];
|
|
si_window_length_t si_window_length;
|
|
uint32_t si_radio_frame_offset;
|
|
|
|
///SIB2 mac_RACH_ConfigCommon_NB_IoT
|
|
mac_RACH_ConfigCommon_NB_IoT mac_RACH_ConfigCommon[3];
|
|
|
|
///SIB2 mac_NPRACH_ConfigSIB_NB_IoT
|
|
mac_NPRACH_ConfigSIB_NB_IoT mac_NPRACH_ConfigSIB[3];
|
|
|
|
///NPDCCH Dedicated config
|
|
npdcch_ConfigDedicated_NB_IoT npdcch_ConfigDedicated[3];
|
|
|
|
} rrc_config_NB_IoT_t;
|
|
|
|
#endif
|