Commit 026d20c2 authored by Eric's avatar Eric

Finish separating NB-IoT from LTE

parent 18695eb2
This diff is collapsed.
......@@ -88,7 +88,7 @@ typedef struct {
/// RRC context variables
struct eNB_RRC_INST_s **rrc;
/// NB_IoT RRC context variables
//struct eNB_RRC_INST_NB_IoT_s **nb_iot_rrc;
struct eNB_RRC_INST_NB_IoT_s **nbiotrrc;
/// MAC context variables
struct eNB_MAC_INST_s **mac;
/// NB_IoT MAC context variables
......
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -20,7 +20,7 @@
*/
/*
platform_types.h
platform_types_NB_IoT.h
-------------------
AUTHOR : Lionel GAUTHIER
COMPANY : EURECOM
......@@ -47,19 +47,30 @@ typedef uint16_t rnti_NB_IoT_t;
#ifndef _BOOLEAN_T_DEFINED_NB_IoT_
#define _BOOLEAN_T_DEFINED_NB_IoT_
typedef signed char boolean_NB_IoT_t;
typedef signed char boolean_t;
#if !defined(TRUE)
#define TRUE (boolean_NB_IoT_t)0x01
#define TRUE (boolean_t)0x01
#endif
#if !defined(FALSE)
#define FALSE (boolean_NB_IoT_t)0x00
#define FALSE (boolean_t)0x00
#endif
#define BOOL_NOT(b) (b^TRUE)
#endif /* _BOOLEAN_T_DEFINED_ */
#endif
///NB-IoT
typedef boolean_t srb1bis_flag_t;
#define SRB1BIS_FLAG_NO FALSE
#define SRB1BIS_FLAG_YES TRUE
typedef boolean_t mib_flag_t;
#define MIB_FLAG_YES TRUE
#define MIB_FLAG_NO FALSE
/* _BOOLEAN_T_DEFINED_ */
/*
//-----------------------------------------------------------------------------
// GENERIC ACCESS STRATUM TYPES
......
......@@ -280,60 +280,6 @@ typedef struct RrcConfigurationReq_s {
long ue_TimersAndConstants_n310[MAX_NUM_CCs];
long ue_TimersAndConstants_n311[MAX_NUM_CCs];
long ue_TransmissionMode[MAX_NUM_CCs];
//NB-IoT------------------------------------------------------------
//RACH
long rach_raResponseWindowSize_NB[MAX_NUM_CCs];
long rach_macContentionResolutionTimer_NB[MAX_NUM_CCs];
long rach_powerRampingStep_NB[MAX_NUM_CCs];
long rach_preambleInitialReceivedTargetPower_NB[MAX_NUM_CCs];
long rach_preambleTransMax_CE_NB[MAX_NUM_CCs];
//BCCH
long bcch_modificationPeriodCoeff_NB[MAX_NUM_CCs];
//PCCH
long pcch_defaultPagingCycle_NB[MAX_NUM_CCs];
long pcch_nB_NB[MAX_NUM_CCs];
long pcch_npdcch_NumRepetitionPaging_NB[MAX_NUM_CCs];
//NPRACH
long nprach_CP_Length[MAX_NUM_CCs];
long nprach_rsrp_range[MAX_NUM_CCs];
long nprach_Periodicity[MAX_NUM_CCs];
long nprach_StartTime[MAX_NUM_CCs];
long nprach_SubcarrierOffset[MAX_NUM_CCs];
long nprach_NumSubcarriers[MAX_NUM_CCs];
long nprach_SubcarrierMSG3_RangeStart[MAX_NUM_CCs];
long maxNumPreambleAttemptCE_NB[MAX_NUM_CCs];
long numRepetitionsPerPreambleAttempt_NB[MAX_NUM_CCs];
long npdcch_NumRepetitions_RA[MAX_NUM_CCs];
long npdcch_StartSF_CSS_RA[MAX_NUM_CCs];
long npdcch_Offset_RA[MAX_NUM_CCs];
//NPDSCH
long npdsch_nrs_Power[MAX_NUM_CCs];
//NPUSCH
long npusch_ack_nack_numRepetitions_NB[MAX_NUM_CCs];
long npusch_srs_SubframeConfig_NB[MAX_NUM_CCs];
long npusch_threeTone_CyclicShift_r13[MAX_NUM_CCs];
long npusch_sixTone_CyclicShift_r13[MAX_NUM_CCs];
BOOLEAN_t npusch_groupHoppingEnabled[MAX_NUM_CCs];
long npusch_groupAssignmentNPUSCH_r13[MAX_NUM_CCs];
//DL_GapConfig
long dl_GapThreshold_NB[MAX_NUM_CCs];
long dl_GapPeriodicity_NB[MAX_NUM_CCs];
long dl_GapDurationCoeff_NB[MAX_NUM_CCs];
//Uplink power control Common
long npusch_p0_NominalNPUSCH[MAX_NUM_CCs];
long npusch_alpha[MAX_NUM_CCs];
long deltaPreambleMsg3[MAX_NUM_CCs];
//UE timers and constants
long ue_TimersAndConstants_t300_NB[MAX_NUM_CCs];
long ue_TimersAndConstants_t301_NB[MAX_NUM_CCs];
long ue_TimersAndConstants_t310_NB[MAX_NUM_CCs];
long ue_TimersAndConstants_t311_NB[MAX_NUM_CCs];
long ue_TimersAndConstants_n310_NB[MAX_NUM_CCs];
long ue_TimersAndConstants_n311_NB[MAX_NUM_CCs];
//---------------------------------------------------------------------------
int eMBMS_configured;
int eMTC_configured;
int SL_configured;
......
File mode changed from 100644 to 100755
......@@ -59,64 +59,6 @@ extern RAN_CONTEXT_t RC;
///////////////////////////// NB-IoT parameters /////////////////////////////////////
//NB-IoT------------------------------------------------------------
//RACH
RRC_CONFIGURATION_REQ (msg_p).rach_raResponseWindowSize_NB[CC_id] = enb_properties->properties[enb_id]->rach_raResponseWindowSize_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).rach_macContentionResolutionTimer_NB[CC_id] = enb_properties->properties[enb_id]->rach_macContentionResolutionTimer_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).rach_powerRampingStep_NB[CC_id] = enb_properties->properties[enb_id]->rach_powerRampingStep_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).rach_preambleInitialReceivedTargetPower_NB[CC_id] = enb_properties->properties[enb_id]->rach_preambleInitialReceivedTargetPower_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).rach_preambleTransMax_CE_NB[CC_id] = enb_properties->properties[enb_id]->rach_preambleTransMax_CE_NB[CC_id];
//BCCH
RRC_CONFIGURATION_REQ (msg_p).bcch_modificationPeriodCoeff_NB[CC_id] = enb_properties->properties[enb_id]->bcch_modificationPeriodCoeff_NB[CC_id];
//PCCH
RRC_CONFIGURATION_REQ (msg_p).pcch_defaultPagingCycle_NB[CC_id] = enb_properties->properties[enb_id]->pcch_defaultPagingCycle_NB[CC_id];
//NPRACH
RRC_CONFIGURATION_REQ (msg_p).nprach_CP_Length[CC_id] = enb_properties->properties[enb_id]->nprach_CP_Length[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_rsrp_range[CC_id] = enb_properties->properties[enb_id]->nprach_rsrp_range[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_Periodicity[CC_id] = enb_properties->properties[enb_id]->nprach_Periodicity[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_StartTime[CC_id] = enb_properties->properties[enb_id]->nprach_StartTime[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_SubcarrierOffset[CC_id] = enb_properties->properties[enb_id]->nprach_SubcarrierOffset[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_NumSubcarriers[CC_id] = enb_properties->properties[enb_id]->nprach_NumSubcarriers[CC_id];
RRC_CONFIGURATION_REQ (msg_p).nprach_SubcarrierMSG3_RangeStart[CC_id] = enb_properties->properties[enb_id]->nprach_SubcarrierMSG3_RangeStart[CC_id];
RRC_CONFIGURATION_REQ (msg_p).maxNumPreambleAttemptCE_NB[CC_id] = enb_properties->properties[enb_id]->maxNumPreambleAttemptCE_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npdcch_NumRepetitions_RA[CC_id] = enb_properties->properties[enb_id]->npdcch_NumRepetitions_RA[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npdcch_StartSF_CSS_RA[CC_id] = enb_properties->properties[enb_id]->npdcch_StartSF_CSS_RA[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npdcch_Offset_RA[CC_id] = enb_properties->properties[enb_id]->npdcch_Offset_RA[CC_id];
//NPDSCH
RRC_CONFIGURATION_REQ (msg_p).npdsch_nrs_Power[CC_id] = enb_properties->properties[enb_id]->npdsch_nrs_Power[CC_id];
//NPUSCH
RRC_CONFIGURATION_REQ (msg_p).npusch_ack_nack_numRepetitions_NB[CC_id] = enb_properties->properties[enb_id]->npusch_ack_nack_numRepetitions_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_srs_SubframeConfig_NB[CC_id] = enb_properties->properties[enb_id]->npusch_srs_SubframeConfig_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_threeTone_CyclicShift_r13[CC_id] = enb_properties->properties[enb_id]->npusch_threeTone_CyclicShift_r13[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_sixTone_CyclicShift_r13[CC_id] = enb_properties->properties[enb_id]->npusch_sixTone_CyclicShift_r13[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_groupHoppingEnabled[CC_id] = enb_properties->properties[enb_id]->npusch_groupHoppingEnabled[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_groupAssignmentNPUSCH_r13[CC_id] = enb_properties->properties[enb_id]->npusch_groupAssignmentNPUSCH_r13[CC_id];
//DL_GapConfig
RRC_CONFIGURATION_REQ (msg_p).dl_GapThreshold_NB[CC_id] = enb_properties->properties[enb_id]->dl_GapThreshold_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).dl_GapPeriodicity_NB[CC_id] = enb_properties->properties[enb_id]->dl_GapPeriodicity_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).dl_GapDurationCoeff_NB[CC_id] = enb_properties->properties[enb_id]->dl_GapDurationCoeff_NB[CC_id];
//Uplink power control Common
RRC_CONFIGURATION_REQ (msg_p).npusch_p0_NominalNPUSCH[CC_id] = enb_properties->properties[enb_id]->npusch_p0_NominalNPUSCH[CC_id];
RRC_CONFIGURATION_REQ (msg_p).npusch_alpha[CC_id] = enb_properties->properties[enb_id]->npusch_alpha[CC_id];
RRC_CONFIGURATION_REQ (msg_p).deltaPreambleMsg3[CC_id] = enb_properties->properties[enb_id]->deltaPreambleMsg3[CC_id];
//UE timers and constants
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_t300_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_t300_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_t301_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_t301_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_t310_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_t310_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_t311_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_t311_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_n310_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_n310_NB[CC_id];
RRC_CONFIGURATION_REQ (msg_p).ue_TimersAndConstants_n311_NB[CC_id] = enb_properties->properties[enb_id]->ue_TimersAndConstants_n311_NB[CC_id];
////////////////////////////////////////////////////////////////////////////////////
}
itti_send_msg_to_task (TASK_RRC_ENB, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
}
/*------------------------------------------------------------------------------*/
static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, uint32_t enb_id_end) {
uint32_t enb_id;
......
......@@ -22,9 +22,11 @@
#include "openair2/PHY_INTERFACE/IF_Module_NB_IoT.h"
#include "config_NB_IoT.h"
// MAC definition
#define MAX_FRAME 0xfffff
#define NUM_FRAME 0x100000
#define MAX_SUBFRAME 10485760
//#define MAX_FRAME 0xfffff
//#define NUM_FRAME 0x100000
//#define MAX_SUBFRAME 10485760
#define MAX_FRAME 0xfff
#define MAX_SUBFRAME 40960
#define MAX(a, b) (((a)>(b))?(a):(b))
......@@ -62,8 +64,8 @@
/*!\brief DTCH DRB1 logical channel */
#define DTCH 3 // LCID
/*!\brief MCCH logical channel */
//#define MCCH 4
#define MCCH 62
#define MCCH 4
//#define MCCH 62
/*!\brief MTCH logical channel */
#define MTCH 1
// DLSCH LCHAN ID
......@@ -209,9 +211,12 @@ typedef struct {
int prev;
// MSG4 complete
int RRC_connected;
uint8_t flag_schedule_success;
// UE active flag
int active;
//boolean_t active;
uint8_t allocated_data_size_ul;
} UE_TEMPLATE_NB_IoT;
// link list of uplink resource node
......@@ -327,6 +332,7 @@ typedef struct {
/// DCI template and MAC connection parameters for UEs
UE_TEMPLATE_NB_IoT UE_template_NB_IoT[MAX_MAX_MOBILES_PER_ENB_NB_IoT];
UE_SCHED_CTRL_NB_IoT_t UE_sched_ctrl_NB_IoT[MAX_MAX_MOBILES_PER_ENB_NB_IoT];
/// NPDCCH Period and searching space info
NPDCCH_config_dedicated_NB_IoT_t NPDCCH_config_dedicated;
//int next[MAX_MAX_MOBILES_PER_ENB_NB_IoT];
......@@ -631,6 +637,8 @@ typedef struct {
nprach_parameters_NB_IoT_t nprach_list[3];
nfapi_config_request_t config;
//DLSF Table
DLSF_INFO_t DLSF_information;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -42,9 +42,10 @@
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
#include "LTE_PMCH-InfoList-r9.h"
#endif
#include "ENB_APP/enb_paramdef_NB_IoT.h"
#include "LAYER2/MAC/mac_extern.h"
#include "assertions.h"
#include "RRC/LITE/proto_NB_IoT.h"
//-----------------------------------------------------------------------------
rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP,
const LTE_SRB_ToAddModList_t * const srb2add_listP,
......@@ -105,36 +106,36 @@ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP
case LTE_RLC_Config_PR_NOTHING:
break;
case RLC_Config_PR_am:
// case RLC_Config_PR_am:
/****************************************config srb1********************************************/
if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, rb_id, lc_id, RLC_MODE_AM) != NULL) {
config_req_rlc_am_asn1 (
ctxt_pP,
SRB_FLAG_YES,
&srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
rb_id, lc_id);
} else {
LOG_E(RLC, PROTOCOL_CTXT_FMT" ERROR IN ALLOCATING SRB %d \n",
PROTOCOL_CTXT_ARGS(ctxt_pP),
rb_id);
}
// if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, rb_id, lc_id, RLC_MODE_AM) != NULL) {
// config_req_rlc_am_asn1 (
// ctxt_pP,
// SRB_FLAG_YES,
// &srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
// rb_id, lc_id);
// } else {
// LOG_E(RLC, PROTOCOL_CTXT_FMT" ERROR IN ALLOCATING SRB %d \n",
// PROTOCOL_CTXT_ARGS(ctxt_pP),
// rb_id);
// }
/***********************************************************************************************/
/****************************************config srb1bis********************************************/
if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, 3, 3, RLC_MODE_AM) != NULL) {
config_req_rlc_am_asn1 (
ctxt_pP,
SRB_FLAG_YES,
&srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
3, 3);
} else {
LOG_E(RLC, PROTOCOL_CTXT_FMT" ERROR IN ALLOCATING SRB %d \n",
PROTOCOL_CTXT_ARGS(ctxt_pP),
rb_id);
}
// if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, 3, 3, RLC_MODE_AM) != NULL) {
// config_req_rlc_am_asn1 (
// ctxt_pP,
// SRB_FLAG_YES,
// &srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
// 3, 3);
// } else {
// LOG_E(RLC, PROTOCOL_CTXT_FMT" ERROR IN ALLOCATING SRB %d \n",
// PROTOCOL_CTXT_ARGS(ctxt_pP),
// rb_id);
// }
/***************************************************************************************************/
break;
// break;
case LTE_RLC_Config_PR_am:
if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, rb_id, lc_id, RLC_MODE_AM
......@@ -148,7 +149,20 @@ rlc_op_status_t rrc_rlc_config_asn1_req (const protocol_ctxt_t * const ctxt_pP
SRB_FLAG_YES,
&srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
rb_id, lc_id);
} else {
}
/****************************************config srb1bis for NB-IoT********************************************/
else if(NBconfig.NB_IoT_configured > 0)
{
if (rrc_rlc_add_rlc (ctxt_pP, SRB_FLAG_YES, MBMS_FLAG_NO, 3, 3, RLC_MODE_AM) != NULL) {
config_req_rlc_am_asn1 (
ctxt_pP,
SRB_FLAG_YES,
&srb_toaddmod_p->rlc_Config->choice.explicitValue.choice.am,
3, 3);
}
}
/************************************************************************************************************/
else {
LOG_E(RLC, PROTOCOL_CTXT_FMT" ERROR IN ALLOCATING SRB %d \n",
PROTOCOL_CTXT_ARGS(ctxt_pP),
rb_id);
......@@ -599,7 +613,7 @@ rlc_op_status_t rrc_rlc_remove_rlc (
#endif
#if defined(Rel10) || defined(Rel14)
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
rlc_mbms_id_t *mbms_id_p = NULL;
#endif rrc_rlc_remove_rlc
#ifdef OAI_EMU
......
......@@ -443,7 +443,7 @@ typedef struct eNB_RRC_INST_NB_IoT_s {
hash_table_t *s1ap_id2_s1ap_ids ; // key is content is rrc_ue_s1ap_ids_t
//RRC configuration
RrcConfigurationReq configuration; //rrc_messages_types.h
NbIoTRrcConfigurationReq configuration; //rrc_messages_types.h
// other PLMN parameters
/// Mobile country code
......
......@@ -68,7 +68,7 @@ uint8_t get_NB_IoT_SIB23_size(void);
long *get_NB_IoT_SIB1_eutracontrolregionsize(void);
void init_testing_NB_IoT(uint8_t Mod_id, int CC_id, rrc_eNB_carrier_data_NB_IoT_t *carrier, RrcConfigurationReq *configuration, uint32_t frame, uint32_t hyper_frame);
void init_testing_NB_IoT(uint8_t Mod_id, int CC_id, rrc_eNB_carrier_data_NB_IoT_t *carrier, NbIoTRrcConfigurationReq *configuration, uint32_t frame, uint32_t hyper_frame);
/*------------------------common_nb_iot.c----------------------------------------*/
......@@ -414,7 +414,7 @@ void rrc_config_buffer_NB_IoT(
char openair_rrc_eNB_configuration_NB_IoT(
const module_id_t enb_mod_idP,
RrcConfigurationReq* configuration
NbIoTRrcConfigurationReq* configuration
);
//-----------------------------
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment