Commit 246ee327 authored by Raymond Knopp's avatar Raymond Knopp

rework of configuration for eMTC/Sidelink. Removal of warnings introduced by...

rework of configuration for eMTC/Sidelink. Removal of warnings introduced by eMTC code. Validation of configuration component for eMTC and regular LTE. Sidelink is still not configured.
parent f8d7ce32
...@@ -232,7 +232,7 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") ...@@ -232,7 +232,7 @@ add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
# Debug related options # Debug related options
######################################### #########################################
add_boolean_option(ASN_DEBUG False "ASN1 coder/decoder Debug") add_boolean_option(ASN_DEBUG False "ASN1 coder/decoder Debug")
add_boolean_option(EMIT_ASN_DEBUG False "ASN1 coder/decoder Debug") add_boolean_option(ASN_EMIT_DEBUG False "ASN1 coder/decoder Debug")
add_boolean_option(MSG_PRINT False "print debug messages") add_boolean_option(MSG_PRINT False "print debug messages")
add_boolean_option(DISABLE_XER_PRINT False "print XER Format") add_boolean_option(DISABLE_XER_PRINT False "print XER Format")
add_boolean_option(XER_PRINT False "print XER Format") add_boolean_option(XER_PRINT False "print XER Format")
...@@ -1369,6 +1369,8 @@ set (MAC_SRC_UE ...@@ -1369,6 +1369,8 @@ set (MAC_SRC_UE
set (ENB_APP_SRC set (ENB_APP_SRC
${OPENAIR2_DIR}/ENB_APP/enb_app.c ${OPENAIR2_DIR}/ENB_APP/enb_app.c
${OPENAIR2_DIR}/ENB_APP/enb_config.c ${OPENAIR2_DIR}/ENB_APP/enb_config.c
${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c
${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c
${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c ${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c
) )
......
...@@ -2145,7 +2145,6 @@ fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci ...@@ -2145,7 +2145,6 @@ fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci
nfapi_hi_dci0_mpdcch_dci_pdu_rel13_t *rel13 = &pdu->mpdcch_dci_pdu_rel13; nfapi_hi_dci0_mpdcch_dci_pdu_rel13_t *rel13 = &pdu->mpdcch_dci_pdu_rel13;
uint32_t cqi_req = rel13->csi_request; uint32_t cqi_req = rel13->csi_request;
uint32_t dai = rel13->dl_assignment_index;
uint32_t TPC = rel13->tpc; uint32_t TPC = rel13->tpc;
uint32_t mcs = rel13->mcs; uint32_t mcs = rel13->mcs;
uint32_t hopping = rel13->frequency_hopping_flag; uint32_t hopping = rel13->frequency_hopping_flag;
......
...@@ -296,7 +296,7 @@ void conv_eMTC_rballoc (uint16_t resource_block_coding, uint32_t N_RB_DL, uint32 ...@@ -296,7 +296,7 @@ void conv_eMTC_rballoc (uint16_t resource_block_coding, uint32_t N_RB_DL, uint32
int ind = first_rb >> 5; int ind = first_rb >> 5;
int ind_mod = first_rb & 31; int ind_mod = first_rb & 31;
AssertFatal(RIV<32,"RIV is %d > 31\n"); AssertFatal(RIV<32,"RIV is %d > 31\n",RIV);
if (((N_RB_DL & 1) > 0) && (narrowband >= (N_NB_DL >> 1))) if (((N_RB_DL & 1) > 0) && (narrowband >= (N_NB_DL >> 1)))
first_rb++; first_rb++;
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include "SCHED/sched_eNB.h" #include "SCHED/sched_eNB.h"
#include "SIMULATION/TOOLS/sim.h" // for taus #include "SIMULATION/TOOLS/sim.h" // for taus
#include "PHY/sse_intrin.h" #include "PHY/sse_intrin.h"
#include "PHY/LTE_REFSIG/lte_refsig.h"
#include "assertions.h" #include "assertions.h"
#include "T.h" #include "T.h"
...@@ -270,7 +271,6 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, ...@@ -270,7 +271,6 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp,
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
int i; int i;
int gain_lin_QPSK; int gain_lin_QPSK;
uint8_t bitsperCCE;
uint16_t *mpdcchtab; uint16_t *mpdcchtab;
uint32_t x1, x2, s = 0; uint32_t x1, x2, s = 0;
...@@ -278,7 +278,7 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, ...@@ -278,7 +278,7 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp,
uint16_t j0, j, idelta; uint16_t j0, j, idelta;
uint16_t i0; uint16_t i0;
int off; int off=0;
// Assumption: only handle a single MPDCCH per narrowband // Assumption: only handle a single MPDCCH per narrowband
...@@ -453,11 +453,13 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, ...@@ -453,11 +453,13 @@ void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp,
(nprb<= last_prb)) { (nprb<= last_prb)) {
((int16_t *) & yIQ)[0] = (((s >> (i & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[0] = (((s >> (i & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK;
((int16_t *) & yIQ)[1] = (((s >> ((i + 1) & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[1] = (((s >> ((i + 1) & 0x1f)) & 1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK;
AssertFatal(mdci->transmission_type==1,"transmission_type %d!=1, handle this ...\n",mdci->transmission_type);
if (mdci->transmission_type==1) { // same thing on both 107 and 109 if (mdci->transmission_type==1) { // same thing on both 107 and 109
txF[(5*mprime)] = yIQ; txF[(5*mprime)] = yIQ;
txF[1+(5*mprime)] = yIQ; txF[1+(5*mprime)] = yIQ;
} }
else { // put on selected antenna port with w sequence else { // put on selected antenna port with w sequence
if (((mprime+nprb)&1) == 0) if (((mprime+nprb)&1) == 0)
txF[off+(5*mprime)] = yIQ*w[lprime]; txF[off+(5*mprime)] = yIQ*w[lprime];
else else
......
...@@ -385,6 +385,8 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols, ...@@ -385,6 +385,8 @@ uint8_t generate_dci_top(uint8_t num_pdcch_symbols,
uint32_t sub_frame_offset); uint32_t sub_frame_offset);
void generate_mdci_top(PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int32_t ** txdataF);
void generate_64qam_table(void); void generate_64qam_table(void);
void generate_16qam_table(void); void generate_16qam_table(void);
...@@ -421,6 +423,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,DC ...@@ -421,6 +423,8 @@ void fill_dci0(PHY_VARS_eNB *eNB,int frame,int subframe,eNB_rxtx_proc_t *proc,DC
void fill_ulsch(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_ulsch_pdu *ulsch_pdu,int frame,int subframe); void fill_ulsch(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_ulsch_pdu *ulsch_pdu,int frame,int subframe);
void fill_mpdcch_dci0 (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * dci_alloc, nfapi_hi_dci0_mpdcch_dci_pdu * pdu);
int generate_eNB_ulsch_params_from_rar(PHY_VARS_eNB *eNB, int generate_eNB_ulsch_params_from_rar(PHY_VARS_eNB *eNB,
unsigned char *rar_pdu, unsigned char *rar_pdu,
uint32_t frame, uint32_t frame,
......
...@@ -186,7 +186,7 @@ typedef struct RrcConfigurationReq_s { ...@@ -186,7 +186,7 @@ typedef struct RrcConfigurationReq_s {
int16_t Nid_cell[MAX_NUM_CCs];// for testing, change later int16_t Nid_cell[MAX_NUM_CCs];// for testing, change later
int16_t N_RB_DL[MAX_NUM_CCs];// for testing, change later int16_t N_RB_DL[MAX_NUM_CCs];// for testing, change later
int nb_antenna_ports[MAX_NUM_CCs]; int nb_antenna_ports[MAX_NUM_CCs];
int eMBMS_configured;
int eMTC_configured; int eMTC_configured;
int SL_configured; int SL_configured;
......
This diff is collapsed.
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#endif #endif
#include "RRC/LTE/rrc_defs.h" #include "RRC/LTE/rrc_defs.h"
#include <intertask_interface.h> #include <intertask_interface.h>
#include "enb_paramdef.h"
#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\ #define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
struct in_addr inp;\ struct in_addr inp;\
...@@ -108,5 +109,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc); ...@@ -108,5 +109,8 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc);
int RCconfig_S1(MessageDef *msg_p, uint32_t i); int RCconfig_S1(MessageDef *msg_p, uint32_t i);
int RCconfig_X2(MessageDef *msg_p, uint32_t i); int RCconfig_X2(MessageDef *msg_p, uint32_t i);
void fill_SL_configuration(MessageDef *msg_p, ccparams_sidelink_t *SLconfig,int cell_idx,int cc_idx,char *config_fname);
void fill_eMTC_configuration(MessageDef *msg_p, ccparams_eMTC_t *eMTCconfig, int cell_idx,int cc_idx,char *config_fname,char *brparamspath);
#endif /* ENB_CONFIG_H_ */ #endif /* ENB_CONFIG_H_ */
/** @} */ /** @} */
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
* \warning * \warning
*/ */
#ifndef ENB_PARAMDEF_H_
#define ENB_PARAMDEF_H_
#include "common/config/config_paramdesc.h" #include "common/config/config_paramdesc.h"
#include "RRC_paramsvalues.h" #include "RRC_paramsvalues.h"
...@@ -1031,3 +1033,4 @@ typedef struct srb1_params_s { ...@@ -1031,3 +1033,4 @@ typedef struct srb1_params_s {
#include "enb_paramdef_emtc.h" #include "enb_paramdef_emtc.h"
#include "enb_paramdef_sidelink.h" #include "enb_paramdef_sidelink.h"
#endif
This diff is collapsed.
...@@ -1619,7 +1619,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP, ...@@ -1619,7 +1619,7 @@ void schedule_ulsch_rnti_emtc(module_id_t module_idP,
frame_t frameP, frame_t frameP,
sub_frame_t subframeP, sub_frame_t subframeP,
unsigned char sched_subframeP, unsigned char sched_subframeP,
uint16_t *emtc_active) int *emtc_active)
{ {
int UE_id; int UE_id;
rnti_t rnti = -1; rnti_t rnti = -1;
......
...@@ -113,6 +113,12 @@ void schedule_ulsch_rnti(module_id_t module_idP, int slice_idx, frame_t frameP, ...@@ -113,6 +113,12 @@ void schedule_ulsch_rnti(module_id_t module_idP, int slice_idx, frame_t frameP,
unsigned char sched_subframe, unsigned char sched_subframe,
uint16_t * first_rb); uint16_t * first_rb);
void schedule_ulsch_rnti_emtc(module_id_t module_idP,
frame_t frameP,
sub_frame_t subframeP,
unsigned char sched_subframeP,
int *emtc_active);
/** \brief Second stage of DLSCH scheduling, after schedule_SI, schedule_RA and schedule_dlsch have been called. This routine first allocates random frequency assignments for SI and RA SDUs using distributed VRB allocations and adds the corresponding DCI SDU to the DCI buffer for PHY. It then loops over the UE specific DCIs previously allocated and fills in the remaining DCI fields related to frequency allocation. It assumes localized allocation of type 0 (DCI.rah=0). The allocation is done for tranmission modes 1,2,4. /** \brief Second stage of DLSCH scheduling, after schedule_SI, schedule_RA and schedule_dlsch have been called. This routine first allocates random frequency assignments for SI and RA SDUs using distributed VRB allocations and adds the corresponding DCI SDU to the DCI buffer for PHY. It then loops over the UE specific DCIs previously allocated and fills in the remaining DCI fields related to frequency allocation. It assumes localized allocation of type 0 (DCI.rah=0). The allocation is done for tranmission modes 1,2,4.
@param Mod_id Instance of eNB @param Mod_id Instance of eNB
@param frame Frame index @param frame Frame index
...@@ -133,7 +139,9 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP, ...@@ -133,7 +139,9 @@ void schedule_dlsch(module_id_t module_idP, frame_t frameP,
void schedule_ue_spec(module_id_t module_idP, int slice_idxP, void schedule_ue_spec(module_id_t module_idP, int slice_idxP,
frame_t frameP,sub_frame_t subframe, int *mbsfn_flag); frame_t frameP,sub_frame_t subframe, int *mbsfn_flag);
void schedule_ue_spec_br(module_id_t module_idP,
frame_t frameP,
sub_frame_t subframeP);
void schedule_ue_spec_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframe,int *mbsfn_flag); void schedule_ue_spec_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframe,int *mbsfn_flag);
void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP); void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP);
......
...@@ -126,9 +126,8 @@ unsigned short fill_rar_br(eNB_MAC_INST *eNB, ...@@ -126,9 +126,8 @@ unsigned short fill_rar_br(eNB_MAC_INST *eNB,
COMMON_channels_t *cc = &eNB->common_channels[CC_id]; COMMON_channels_t *cc = &eNB->common_channels[CC_id];
uint8_t *rar = (uint8_t *)(dlsch_buffer+1); uint8_t *rar = (uint8_t *)(dlsch_buffer+1);
int i;
uint32_t rballoc,reps; uint32_t rballoc,reps;
uint32_t mcs,TPC,ULdelay,cqireq,mpdcch_nb_index; uint32_t TPC,ULdelay,cqireq,mpdcch_nb_index;
int input_buffer_length; int input_buffer_length;
......
...@@ -1018,7 +1018,6 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1018,7 +1018,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
SystemInformationBlockType3_t **sib3 = &RC.rrc[Mod_id]->carrier[CC_id].sib3; SystemInformationBlockType3_t **sib3 = &RC.rrc[Mod_id]->carrier[CC_id].sib3;
#if defined(Rel10) || defined(Rel14) #if defined(Rel10) || defined(Rel14)
SystemInformationBlockType13_r9_t **sib13 = &RC.rrc[Mod_id]->carrier[CC_id].sib13; SystemInformationBlockType13_r9_t **sib13 = &RC.rrc[Mod_id]->carrier[CC_id].sib13;
uint8_t MBMS_flag = RC.rrc[Mod_id]->carrier[CC_id].MBMS_flag;
#endif #endif
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
...@@ -1046,7 +1045,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1046,7 +1045,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
} }
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
LOG_I(RRC,"[eNB %d] Configuration SIB2/3, MBMS = %d\n", Mod_id, MBMS_flag); LOG_I(RRC,"[eNB %d] Configuration SIB2/3, eMBMS = %d\n", Mod_id, configuration->eMBMS_configured);
#else #else
LOG_I(RRC,"[eNB %d] Configuration SIB2/3\n", Mod_id); LOG_I(RRC,"[eNB %d] Configuration SIB2/3\n", Mod_id);
#endif #endif
...@@ -1063,7 +1062,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1063,7 +1062,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
if ((MBMS_flag > 0) && (brOption==FALSE)) { if ((configuration->eMBMS_configured > 0) && (brOption==FALSE)) {
sib13_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); sib13_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
memset(sib13_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); memset(sib13_part,0,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib13_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920; sib13_part->present = SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920;
...@@ -1073,6 +1072,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1073,6 +1072,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
#endif #endif
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (configuration->SL_configured > 0) {
//TTN - for D2D //TTN - for D2D
sib18_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); sib18_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
sib19_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member)); sib19_part = CALLOC(1,sizeof(struct SystemInformation_r8_IEs__sib_TypeAndInfo__Member));
...@@ -1088,7 +1088,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1088,7 +1088,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
*sib18 = &sib18_part->choice.sib18_v1250; *sib18 = &sib18_part->choice.sib18_v1250;
*sib19 = &sib19_part->choice.sib19_v1250; *sib19 = &sib19_part->choice.sib19_v1250;
*sib21 = &sib21_part->choice.sib21_v1430; *sib21 = &sib21_part->choice.sib21_v1430;
}
#endif #endif
...@@ -1701,7 +1701,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1701,7 +1701,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
if (MBMS_flag > 0) { if (configuration->eMBMS_configured > 0) {
LOG_I(RRC,"Adding MBSFN subframe Configuration 1 to SIB2\n"); LOG_I(RRC,"Adding MBSFN subframe Configuration 1 to SIB2\n");
MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1; MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig1;
(*sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct MBSFN_SubframeConfigList)); (*sib2)->mbsfn_SubframeConfigList = CALLOC(1,sizeof(struct MBSFN_SubframeConfigList));
...@@ -1721,7 +1721,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1721,7 +1721,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig1); ASN_SEQUENCE_ADD(&MBSFNSubframeConfigList->list, sib2_mbsfn_SubframeConfig1);
if (MBMS_flag == 4 ) { if (configuration->eMBMS_configured == 4 ) {
LOG_I(RRC,"Adding MBSFN subframe Configuration 2 to SIB2\n"); LOG_I(RRC,"Adding MBSFN subframe Configuration 2 to SIB2\n");
MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig2; MBSFN_SubframeConfig_t *sib2_mbsfn_SubframeConfig2;
sib2_mbsfn_SubframeConfig2= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig2)); sib2_mbsfn_SubframeConfig2= CALLOC(1,sizeof(*sib2_mbsfn_SubframeConfig2));
...@@ -1791,7 +1791,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1791,7 +1791,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
// fill in all elements of SIB13 if present // fill in all elements of SIB13 if present
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
if (MBMS_flag > 0 ) { if (configuration->eMBMS_configured > 0 ) {
// Notification for mcch change // Notification for mcch change
(*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9= MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2; (*sib13)->notificationConfig_r9.notificationRepetitionCoeff_r9= MBMS_NotificationConfig_r9__notificationRepetitionCoeff_r9_n2;
(*sib13)->notificationConfig_r9.notificationOffset_r9= 0; (*sib13)->notificationConfig_r9.notificationOffset_r9= 0;
...@@ -1822,7 +1822,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1822,7 +1822,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1); ASN_SEQUENCE_ADD(&MBSFNArea_list->list,MBSFN_Area1);
//MBSFN Area 2: currently only activated for eMBMS relaying //MBSFN Area 2: currently only activated for eMBMS relaying
if (MBMS_flag == 4 ) { if (configuration->eMBMS_configured == 4 ) {
MBSFN_Area2= CALLOC(1, sizeof(*MBSFN_Area2)); MBSFN_Area2= CALLOC(1, sizeof(*MBSFN_Area2));
MBSFN_Area2->mbsfn_AreaId_r9= 2; MBSFN_Area2->mbsfn_AreaId_r9= 2;
MBSFN_Area2->non_MBSFNregionLength= MBSFN_AreaInfo_r9__non_MBSFNregionLength_s2; MBSFN_Area2->non_MBSFNregionLength= MBSFN_AreaInfo_r9__non_MBSFNregionLength_s2;
...@@ -1850,6 +1850,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -1850,6 +1850,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
if (configuration->SL_configured>0) {
//TTN - for D2D //TTN - for D2D
// SIB18 // SIB18
//commRxPool_r12 //commRxPool_r12
...@@ -2025,7 +2026,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -2025,7 +2026,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
//add SL_DiscResourcePool to SL_DiscRxPoolList //add SL_DiscResourcePool to SL_DiscRxPoolList
ASN_SEQUENCE_ADD(&SL_DiscRxPoolList->list,SL_DiscResourcePool); ASN_SEQUENCE_ADD(&SL_DiscRxPoolList->list,SL_DiscResourcePool);
/* /*
//for DiscRxPoolPS //for DiscRxPoolPS
(*sib19)->ext1 = CALLOC (1, sizeof(*(*sib19)->ext1)); (*sib19)->ext1 = CALLOC (1, sizeof(*(*sib19)->ext1));
(*sib19)->ext1->discConfigPS_13 = CALLOC (1, sizeof(*((*sib19)->ext1->discConfigPS_13))); (*sib19)->ext1->discConfigPS_13 = CALLOC (1, sizeof(*((*sib19)->ext1->discConfigPS_13)));
...@@ -2092,7 +2093,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -2092,7 +2093,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
//add SL_DiscResourcePool to SL_DiscRxPoolList //add SL_DiscResourcePool to SL_DiscRxPoolList
ASN_SEQUENCE_ADD(&SL_DiscRxPoolPSList->list,SL_DiscResourcePoolPS); ASN_SEQUENCE_ADD(&SL_DiscRxPoolPSList->list,SL_DiscResourcePoolPS);
*/ */
(*sib19)->lateNonCriticalExtension = NULL; (*sib19)->lateNonCriticalExtension = NULL;
//end SIB19 //end SIB19
...@@ -2137,6 +2138,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -2137,6 +2138,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
ASN_SEQUENCE_ADD(&SL_CommRxPoolListV2X->list,SL_CommResourcePoolV2X); ASN_SEQUENCE_ADD(&SL_CommRxPoolListV2X->list,SL_CommResourcePoolV2X);
//end SIB21 //end SIB21
}
#endif #endif
...@@ -2158,7 +2160,7 @@ uint8_t do_SIB23(uint8_t Mod_id, ...@@ -2158,7 +2160,7 @@ uint8_t do_SIB23(uint8_t Mod_id,
sib3_part); sib3_part);
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
if (MBMS_flag > 0) { if (configuration->eMBMS_configured > 0) {
ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part); ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib13_part);
} }
#endif #endif
......
...@@ -140,11 +140,8 @@ openair_rrc_on( ...@@ -140,11 +140,8 @@ openair_rrc_on(
static void static void
init_SI( init_SI(
const protocol_ctxt_t* const ctxt_pP, const protocol_ctxt_t* const ctxt_pP,
const int CC_id const int CC_id,
#if defined(ENABLE_ITTI)
,
RrcConfigurationReq * configuration RrcConfigurationReq * configuration
#endif
) )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
{ {
...@@ -176,20 +173,12 @@ init_SI( ...@@ -176,20 +173,12 @@ init_SI(
LOG_I(RRC, "configuration->schedulingInfoSIB1_BR_r13[CC_id] %d\n",(int)configuration->schedulingInfoSIB1_BR_r13[CC_id]); LOG_I(RRC, "configuration->schedulingInfoSIB1_BR_r13[CC_id] %d\n",(int)configuration->schedulingInfoSIB1_BR_r13[CC_id]);
#endif #endif
do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id], do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
#ifdef ENABLE_ITTI
configuration->N_RB_DL[CC_id], configuration->N_RB_DL[CC_id],
(int)configuration->radioresourceconfig[CC_id].phich_resource, (int)configuration->radioresourceconfig[CC_id].phich_resource,
(int)configuration->radioresourceconfig[CC_id].phich_duration, (int)configuration->radioresourceconfig[CC_id].phich_duration,
0 0
#else
50, 0, 0, 0
#endif
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
#ifdef ENABLE_ITTI
,configuration->schedulingInfoSIB1_BR_r13[CC_id] ,configuration->schedulingInfoSIB1_BR_r13[CC_id]
#else
,0
#endif
#endif #endif
); );
...@@ -205,9 +194,7 @@ init_SI( ...@@ -205,9 +194,7 @@ init_SI(
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,FALSE ,FALSE
#endif #endif
#if defined(ENABLE_ITTI)
, configuration , configuration
#endif
); );
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255"); AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
...@@ -219,9 +206,7 @@ init_SI( ...@@ -219,9 +206,7 @@ init_SI(
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_BR = (uint8_t*) malloc16(32); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1_BR = (uint8_t*) malloc16(32);
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_BR = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1_BR = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
,TRUE ,TRUE
#if defined(ENABLE_ITTI)
, configuration , configuration
#endif
); );
} }
#endif #endif
...@@ -234,9 +219,7 @@ init_SI( ...@@ -234,9 +219,7 @@ init_SI(
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,FALSE ,FALSE
#endif #endif
#if defined(ENABLE_ITTI)
, configuration , configuration
#endif
); );
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255"); AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255");
...@@ -252,10 +235,8 @@ init_SI( ...@@ -252,10 +235,8 @@ init_SI(
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,TRUE ,TRUE
#endif #endif
#if defined(ENABLE_ITTI)
,configuration ,configuration
); );
#endif
} }
#endif #endif
...@@ -315,7 +296,6 @@ init_SI( ...@@ -315,7 +296,6 @@ init_SI(
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset);
} }
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
// SIB13 // SIB13
for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count; i++) { for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count; i++) {
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n", LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n",
...@@ -329,11 +309,11 @@ init_SI( ...@@ -329,11 +309,11 @@ init_SI(
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9);
} }
#endif
} }
else memset((void*)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13)); else memset((void*)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13));
//TTN - SIB 18 //TTN - SIB 18
if (configuration->SL_configured>0) {
for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count; j++) { for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count; j++) {
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n", LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n",
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
...@@ -366,7 +346,9 @@ init_SI( ...@@ -366,7 +346,9 @@ init_SI(
} }
//TTN - SIB 19
for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count; j++) { for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count; j++) {
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n", LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n",
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
...@@ -401,8 +383,9 @@ init_SI( ...@@ -401,8 +383,9 @@ init_SI(
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf); RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf);
} }
}
#endif #endif // (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
LOG_D(RRC, LOG_D(RRC,
PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n", PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n",
......
...@@ -15,9 +15,7 @@ eNBs = ...@@ -15,9 +15,7 @@ eNBs =
// Tracking area code, 0x0000 and 0xfffe are reserved values // Tracking area code, 0x0000 and 0xfffe are reserved values
tracking_area_code = "1"; tracking_area_code = "1";
mobile_country_code = "208"; plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2;} );
mobile_network_code = "92";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
...@@ -106,10 +104,10 @@ eNBs = ...@@ -106,10 +104,10 @@ eNBs =
ue_TimersAndConstants_n311 = "n1"; ue_TimersAndConstants_n311 = "n1";
ue_TransmissionMode = "tm1"; ue_TransmissionMode = "tm1";
# BR Parameters # eMTC Parameters
br_parameters : emtc_parameters :
{ {
eMTC_configured = 1;
#hyperSFN_r13 = 0; #hyperSFN_r13 = 0;
#eDRX_Allowed_r13 = 0; #eDRX_Allowed_r13 = 0;
#q_QualMinRSRQ_CE_r13 = ; #q_QualMinRSRQ_CE_r13 = ;
...@@ -155,9 +153,9 @@ eNBs = ...@@ -155,9 +153,9 @@ eNBs =
# SIB23 # SIB23
frame_type = "FDD"; frame_type = "FDD";
preambleTransMax_CE_r13 = "n10"; #6 preambleTransMax_CE_r13 = 10; #6
rach_numberOfRA_Preambles = "n60"; #14 rach_numberOfRA_Preambles = 60; #14
rach_powerRampingStep = 4; rach_powerRampingStep = 4;
rach_preambleInitialReceivedTargetPower = -110; rach_preambleInitialReceivedTargetPower = -110;
rach_preambleTransMax = 10; rach_preambleTransMax = 10;
...@@ -171,8 +169,8 @@ eNBs = ...@@ -171,8 +169,8 @@ eNBs =
{ {
firstPreamble_r13 = 60; firstPreamble_r13 = 60;
lastPreamble_r13 = 63; lastPreamble_r13 = 63;
ra_ResponseWindowSize_r13 = "sf20"; #0 ra_ResponseWindowSize_r13 = 20; #0
mac_ContentionResolutionTimer_r13 = "sf80"; #0 mac_ContentionResolutionTimer_r13 = 80; #0
rar_HoppingConfig_r13 = "off"; #1; rar_HoppingConfig_r13 = "off"; #1;
} }
); );
...@@ -252,11 +250,11 @@ eNBs = ...@@ -252,11 +250,11 @@ eNBs =
{ {
prach_config_index_br = 3; prach_config_index_br = 3;
prach_freq_offset_br = 2; prach_freq_offset_br = 2;
prach_StartingSubframe_r13 = 0; prach_StartingSubframe_r13 = 2;
maxNumPreambleAttemptCE_r13 = "n10"; #6 maxNumPreambleAttemptCE_r13 = 10; #6
numRepetitionPerPreambleAttempt_r13 = "n1"; #0 numRepetitionPerPreambleAttempt_r13 = 1; #0
mpdcch_NumRepetition_RA_r13 = "r1"; #0 mpdcch_NumRepetition_RA_r13 = 1; #0
prach_HoppingConfig_r13 = "off"; #1 prach_HoppingConfig_r13 = 0; #1
max_available_narrow_band = [3]; max_available_narrow_band = [3];
} }
); );
...@@ -370,6 +368,9 @@ eNBs = ...@@ -370,6 +368,9 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "lo"; ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
ENB_PORT_FOR_S1U = 2152; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24";
ENB_PORT_FOR_X2C = 36422; # Spec 36422
}; };
log_config : log_config :
...@@ -397,6 +398,9 @@ MACRLCs = ( ...@@ -397,6 +398,9 @@ MACRLCs = (
num_cc = 1; num_cc = 1;
tr_s_preference = "local_L1"; tr_s_preference = "local_L1";
tr_n_preference = "local_RRC"; tr_n_preference = "local_RRC";
phy_test_mode = 0;
puSch10xSnr = 200;
puCch10xSnr = 200;
} }
); );
......
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