diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index 3b46a6328d2ef45e5afea1a797565e9cf715e0d4..c7fc4118ca56ea747c12792688f70e12974ed745 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -977,7 +977,7 @@ void add_ue_spec_dci(DCI_PDU *DCI_pdu,void *pdu,u16 rnti,unsigned char dci_size_ void schedule_SI(unsigned char Mod_id,u32 frame, unsigned char *nprb,unsigned int *nCCE) { unsigned char bcch_sdu_length; - int mcs; + int mcs = -1; void *BCCH_alloc_pdu=(void*)&eNB_mac_inst[Mod_id].BCCH_alloc_pdu; bcch_sdu_length = mac_rrc_data_req(Mod_id, @@ -1103,7 +1103,7 @@ int schedule_MBMS(unsigned char Mod_id,u32 frame, u8 subframe) { unsigned char mcch_sdu_length; unsigned char header_len_mcch=0,header_len_msi=0,header_len_mtch=0, header_len_mtch_temp=0, header_len_mcch_temp=0, header_len_msi_temp=0; int ii=0, msi_pos=0; - int mcch_mcs; + int mcch_mcs = -1; u16 TBS,j,padding=0,post_padding=0; mac_rlc_status_resp_t rlc_status; int num_mtch; @@ -1575,7 +1575,8 @@ void schedule_RA(unsigned char Mod_id,u32 frame, unsigned char subframe,unsigned u16 rrc_sdu_length; unsigned char lcid,offset; s8 UE_id; - unsigned short TBsize,msg4_padding,msg4_post_padding,msg4_header; + unsigned short TBsize = -1; + unsigned short msg4_padding,msg4_post_padding,msg4_header; for (i=0;i<NB_RA_PROC_MAX;i++) { diff --git a/openair2/LAYER2/MAC/rar_tools.c b/openair2/LAYER2/MAC/rar_tools.c index 89bbd0d1b14389fcd33c2ab3f6c57b69a837f37a..59e42c4ea491045b4fac728e97e3c9199f707c3b 100644 --- a/openair2/LAYER2/MAC/rar_tools.c +++ b/openair2/LAYER2/MAC/rar_tools.c @@ -65,9 +65,11 @@ unsigned short fill_rar(u8 Mod_id, RA_HEADER_RAPID *rarh = (RA_HEADER_RAPID *)dlsch_buffer; // RAR_PDU *rar = (RAR_PDU *)(dlsch_buffer+1); uint8_t *rar = (uint8_t *)(dlsch_buffer+1); - int i,ra_idx; + int i; + int ra_idx = -1; uint16_t rballoc; - uint8_t mcs,TPC,cqi_req,ULdelay,cqireq; + uint8_t mcs,TPC,ULdelay,cqireq; + //uint8_t cqi_req; for (i=0;i<NB_RA_PROC_MAX;i++) { if (eNB_mac_inst[Mod_id].RA_template[i].generate_rar == 1) { diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c index 7f1d6df33516d73d3c3cdedba0ac58c3d74f2951..253ef4ce63f254bce9a76cfd66e69958e8bde369 100644 --- a/openair2/LAYER2/MAC/ue_procedures.c +++ b/openair2/LAYER2/MAC/ue_procedures.c @@ -546,11 +546,11 @@ s8 ue_get_mbsfn_sf_alloction (unsigned char Mod_id, u8 mbsfn_sync_area, unsigned int ue_query_mch(uint8_t Mod_id, uint32_t frame, uint32_t subframe, uint8_t eNB_index,uint8_t *sync_area, uint8_t *mcch_active) { - int i=0, j=0, ii=0, msi_pos=0, mcch_mcs; + int i=0, j=0, ii=0, msi_pos=0, mcch_mcs = - 1; int mcch_flag=0, mtch_flag=0, msi_flag=0; int mbsfn_period = 0;// 1<<(UE_mac_inst[Mod_id].mbsfn_SubframeConfig[0]->radioframeAllocationPeriod); int mcch_period = 0;// 32<<(UE_mac_inst[Mod_id].mbsfn_AreaInfo[0]->mcch_Config_r9.mcch_RepetitionPeriod_r9); - int mch_scheduling_period; + int mch_scheduling_period = -1; if (UE_mac_inst[Mod_id].pmch_Config[0]) mch_scheduling_period = 8<<(UE_mac_inst[Mod_id].pmch_Config[0]->mch_SchedulingPeriod_r9); @@ -1270,8 +1270,8 @@ UE_L2_STATE_t ue_scheduler(u8 Mod_id,u32 frame, u8 subframe, lte_subframe_t dire int lcid; // lcid index int TTI= 1; - int bucketsizeduration; - int bucketsizeduration_max; + int bucketsizeduration = -1; + int bucketsizeduration_max = -1; // mac_rlc_status_resp_t rlc_status[MAX_NUM_LCGID]; // 4 // s8 lcg_id; struct RACH_ConfigCommon *rach_ConfigCommon = (struct RACH_ConfigCommon *)NULL; diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c index aa9fd3318c3d1859cca8db1abdd80208ce4deef0..a17ce73ac5f66e41d560394ad665c8bd41da87b8 100644 --- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c +++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_dar.c @@ -642,7 +642,7 @@ rlc_um_receive_process_dar (rlc_um_entity_t *rlcP, u32_t frame, u8_t eNB_flag, m // -else: // -place the received UMD PDU in the reception buffer. - signed int sn; + signed int sn = -1; signed int in_window; if (rlcP->rx_sn_length == 10) { diff --git a/openair2/LAYER2/RLC/rlc.h b/openair2/LAYER2/RLC/rlc.h index d373d576b1c7031659c1b5022311abd7a55b05eb..c89a74cca29faf9de5feb101a178baedf9c65257 100755 --- a/openair2/LAYER2/RLC/rlc.h +++ b/openair2/LAYER2/RLC/rlc.h @@ -174,7 +174,7 @@ typedef struct { #define RLC_MAX_LC ((max_val_DRB_Identity+1)* MAX_MOBILES_PER_RG) #endif -protected_rlc(void (*rlc_rrc_data_ind) (module_id_t , u32_t, u8_t, rb_id_t , sdu_size_t , char* );) +protected_rlc(void (*rlc_rrc_data_ind) (module_id_t , u32_t, u8_t, rb_id_t , sdu_size_t , u8_t* );) protected_rlc(void (*rlc_rrc_data_conf) (module_id_t , rb_id_t , mui_t, rlc_tx_status_t );) /*! \struct rlc_pointer_t diff --git a/openair2/LAYER2/RLC/rlc_rrc.c b/openair2/LAYER2/RLC/rlc_rrc.c index 432f64c0306b72393794969cad894e93f65f0f23..1ed18dc1579c82f8b53074abefb81829d208bde7 100644 --- a/openair2/LAYER2/RLC/rlc_rrc.c +++ b/openair2/LAYER2/RLC/rlc_rrc.c @@ -42,10 +42,9 @@ rlc_op_status_t rrc_rlc_config_asn1_req (module_id_t module_idP, u32_t frameP, u long int cnt2 = 0; // long int mrb_id = 0; long int mbms_service_id = 0; - long int mbms_session_id = 0; + // long int mbms_session_id = 0; PMCH_Info_r9_t* pmch_info_r9 = NULL; MBMS_SessionInfo_r9_t* mbms_session = NULL; - DL_UM_RLC_t* mbms_dl_UM_RLC = NULL; rlc_op_status_t rlc_status = RLC_OP_STATUS_OK; DL_UM_RLC_t dl_um_rlc; #endif @@ -283,13 +282,14 @@ rlc_op_status_t rrc_rlc_config_asn1_req (module_id_t module_idP, u32_t frameP, u } else { lc_id = mbms_session->logicalChannelIdentity_r9 + (maxDRB + 3); } - + /* if (mbms_session->sessionId_r9 != NULL) { mbms_session_id = mbms_session->sessionId_r9->buf[0]; } else { mbms_session_id = mbms_session->logicalChannelIdentity_r9; } + */ mbms_service_id = mbms_session->tmgi_r9.serviceId_r9.buf[2];// can use the pmch_index, here is the value 'cnt' rb_id = (mbms_service_id * maxSessionPerPMCH) + lc_id; @@ -424,20 +424,20 @@ rlc_op_status_t rrc_rlc_add_rlc (module_id_t module_idP, u32_t frameP, rb_id_t if ((chan_idP >= RLC_MAX_LC ) || (chan_idP < 1)) { LOG_E(RLC,"Got wrong channel id %d\n",chan_idP); - exit -1; + exit (-1); return RLC_OP_STATUS_BAD_PARAMETER; } if (rb_idP >= RLC_MAX_RB ) { LOG_E(RLC,"Got wrong radio bearer id %d\n",rb_idP); - exit -1; + exit (-1); return RLC_OP_STATUS_BAD_PARAMETER; } if (rlc[module_idP].m_lcid2rbid[chan_idP] != -1) { LOG_E(RLC,"Error in RLC config channel ID already configured %d(module_id %d, state %d)\n", chan_idP, module_idP, rlc[module_idP].m_lcid2rbid[chan_idP]); - exit -1; + exit (-1); return RLC_OP_STATUS_BAD_PARAMETER; } for (index = 0; index < index_max; index++) { diff --git a/openair2/PHY_INTERFACE/defs.h b/openair2/PHY_INTERFACE/defs.h index c88cf7beee757e725856741bf3d5b90ae5eb9ba6..9c9e28b5d0a06352f96eacbbb3b0a1e434f57ed3 100755 --- a/openair2/PHY_INTERFACE/defs.h +++ b/openair2/PHY_INTERFACE/defs.h @@ -242,10 +242,10 @@ typedef struct s16 (*get_PL)(u8 Mod_id,u8 eNB_index); /// Function for UE MAC to retrieve the rssi - u8 (*get_RSSI)(u8 Mod_id); + s8 (*get_RSSI)(u8 Mod_id); /// Function for UE MAC to retrieve the total gain - u8 (*get_rx_total_gain_dB)(u8 Mod_id); + s8 (*get_rx_total_gain_dB)(u8 Mod_id); /// Function for UE MAC to retrieve the number of adjustent cells u8 (*get_n_adj_cells)(u8 Mod_id); diff --git a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c index d674a324e25b42a851f58ca9a092c3066bb97da9..9439157d520e2ac2ad180aec79a0de3175e67893 100644 --- a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c +++ b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c @@ -107,7 +107,7 @@ s8 mac_rrc_data_ind(u8 Mod_id, u32 frame, u16 Srb_id, u8 *Sdu,u16 Sdu_len,u8 eNB } /********************************************************************************************************************/ -void rlcrrc_data_ind( u8 Mod_id, u32 frame, u8 eNB_flag, unsigned int Srb_id, unsigned int Sdu_size,u8 *Buffer){ +void rlcrrc_data_ind(module_id_t Mod_id, u32 frame, u8 eNB_flag, unsigned int Srb_id, unsigned int Sdu_size,u8 *Buffer){ /********************************************************************************************************************/ #ifdef CELLULAR rrc_L2_rlc_data_ind_rx(Mod_id,Srb_id, Sdu_size, Buffer); diff --git a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h index a6dc85a2d151b7c2ea83f6295f90c1ce8115a6a2..943accdae4faf4c985dd8dd73d04b47025d19569 100644 --- a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h +++ b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h @@ -42,20 +42,29 @@ s8 mac_rrc_data_req(u8 Mod_id, u32 frame, u16 Srb_id, u8 Nb_tb, u8 *Buffer, u8 eNB_flag, u8 eNB_index, u8 mbsfn_sync_area); + s8 mac_rrc_data_ind(u8 Mod_id, u32 frame, u16 Srb_id, u8 *Sdu, u16 Sdu_len, u8 eNB_flag, u8 eNB_index, u8 mbsfn_sync_area); + void mac_lite_sync_ind(u8 Mod_id, u8 status); + void mac_rrc_meas_ind(u8, MAC_MEAS_REQ_ENTRY*); -void rlcrrc_data_ind(u8 Mod_id, u32 frame, u8 eNB_flag, unsigned int Rb_id, u32 sdu_size, u8 *Buffer); + +void rlcrrc_data_ind(module_id_t Mod_id, u32 frame, u8 eNB_flag, unsigned int Rb_id, u32 sdu_size, u8 *Buffer); u8 pdcp_rrc_data_req(u8 module_id, u32 frame, u8 eNB_flag, unsigned int rb_id, u32 muiP, u32 confirmP, unsigned int sdu_buffer_size, u8* sdu_buffer, u8 mode); + void pdcp_rrc_data_ind(u8 Mod_id, u32 frame, u8 eNB_flag, unsigned int Srb_id, unsigned int Sdu_size, u8 *Buffer); void mac_out_of_sync_ind(u8 Mod_id, u32 frame, u16 CH_index); + char openair_rrc_eNB_init(u8 Mod_id); + char openair_rrc_ue_init(u8 Mod_id, unsigned char eNB_index); + int mac_get_rrc_status(u8 Mod_id, u8 eNB_flag, u8 index); + void mac_in_sync_ind(u8 Mod_id, u32 frame, u16 eNB_index); #endif diff --git a/openair2/RRC/LITE/L2_interface.c b/openair2/RRC/LITE/L2_interface.c index 33b3ec8b12f25abca293e3f5aa42465958bddf72..ee9137f75dd3579348a59b4da9cf4479bf706b20 100644 --- a/openair2/RRC/LITE/L2_interface.c +++ b/openair2/RRC/LITE/L2_interface.c @@ -508,7 +508,7 @@ u8 rrc_lite_data_req(u8 Mod_id, u32 frame, u8 eNB_flag, unsigned int rb_id, u32 } //-------------------------------------------------------------------------------------------// -void rrc_lite_data_ind( u8 Mod_id, u32 frame, u8 eNB_flag,u32 Srb_id, u32 sdu_size,u8 *Buffer){ +void rrc_lite_data_ind(module_id_t Mod_id, u32 frame, u8 eNB_flag,u32 Srb_id, u32 sdu_size,u8 *Buffer){ //-------------------------------------------------------------------------------------------// u8 UE_index=(Srb_id-1)/NB_RB_MAX; u8 DCCH_index = Srb_id % NB_RB_MAX; diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h index 54a919fc0f8b3d7a81dab9a6e0a832977a47c1c2..b56f9d070673466378095f3a3fbe2a423d9b1647 100644 --- a/openair2/RRC/LITE/defs.h +++ b/openair2/RRC/LITE/defs.h @@ -37,7 +37,6 @@ * \email: raymond.knopp@eurecom.fr and navid.nikaein@eurecom.fr */ - #ifndef __OPENAIR_RRC_DEFS_H__ #define __OPENAIR_RRC_DEFS_H__ @@ -94,7 +93,7 @@ //#define NUM_PRECONFIGURED_LCHAN (NB_CH_CX*2) //BCCH, CCCH -typedef enum { +typedef enum UE_STATE_e { RRC_IDLE=0, RRC_SI_RECEIVED, RRC_CONNECTED, @@ -102,8 +101,7 @@ typedef enum { RRC_HO_EXECUTION } UE_STATE_t; - -typedef enum { +typedef enum HO_STATE_e { HO_IDLE=0, HO_MEASURMENT, HO_PREPARE, @@ -111,7 +109,6 @@ typedef enum { HO_COMPLETE // initiated by the target eNB } HO_STATE_t; - //#define NUMBER_OF_UE_MAX MAX_MOBILES_PER_RG #define RRM_FREE(p) if ( (p) != NULL) { free(p) ; p=NULL ; } #define RRM_MALLOC(t,n) (t *) malloc16( sizeof(t) * n ) @@ -127,11 +124,10 @@ typedef enum { #define UNDEF_SECURITY_MODE 0xff #define NO_SECURITY_MODE 0x33 - #define CBA_OFFSET 0xfff4 // #define NUM_MAX_CBA_GROUP 4 // in the platform_constants -typedef struct{ +typedef struct UE_RRC_INFO_s { UE_STATE_t State; u8 SIB1Status; u8 SIStatus; @@ -151,17 +147,16 @@ typedef struct{ u32 T310_cnt; u32 N310_cnt; u32 N311_cnt; -}UE_RRC_INFO; +} __attribute__ ((__packed__)) UE_RRC_INFO; typedef struct UE_S_TMSI_s { uint8_t presence; uint8_t mme_code; uint32_t m_tmsi; -}__attribute__ ((__packed__)) UE_S_TMSI; +} __attribute__ ((__packed__)) UE_S_TMSI; #if defined(ENABLE_ITTI) -typedef enum e_rab_satus_e -{ +typedef enum e_rab_satus_e { E_RAB_STATUS_NEW, E_RAB_STATUS_DONE, E_RAB_STATUS_FAILED, @@ -170,10 +165,10 @@ typedef enum e_rab_satus_e typedef struct e_rab_param_s { e_rab_t param; uint8_t status; -} e_rab_param_t; +} __attribute__ ((__packed__)) e_rab_param_t; #endif -typedef struct eNB_RRC_UE_INFO_s{ +typedef struct eNB_RRC_UE_INFO_s { u8 Status; #if defined(ENABLE_ITTI) @@ -193,9 +188,9 @@ typedef struct eNB_RRC_UE_INFO_s{ /* list of e_rab to be setup by RRC layers */ e_rab_param_t e_rab[S1AP_MAX_E_RAB]; #endif -}__attribute__ ((__packed__)) eNB_RRC_UE_INFO; +} __attribute__ ((__packed__)) eNB_RRC_UE_INFO; -typedef struct eNB_RRC_INFO_s{ +typedef struct eNB_RRC_INFO_s { /* Number of UE handle by the eNB */ uint8_t Nb_ue; @@ -204,18 +199,18 @@ typedef struct eNB_RRC_INFO_s{ /* Information on UE */ eNB_RRC_UE_INFO UE[NUMBER_OF_UE_MAX]; -}__attribute__ ((__packed__)) eNB_RRC_INFO; +} __attribute__ ((__packed__)) eNB_RRC_INFO; -typedef struct{ +typedef struct RRC_INFO_s { int Status; union{ UE_RRC_INFO UE_info; eNB_RRC_INFO CH_info; }Info; -}RRC_INFO; +} RRC_INFO; /* Intermediate structure for Hanodver management. Associated per-UE in eNB_RRC_INST */ -typedef struct{ +typedef struct HANDOVER_INFO_s { u8 ho_prepare; u8 ho_complete; u8 modid_s; //Mod_id of serving cell @@ -226,7 +221,7 @@ typedef struct{ AS_Context_t as_context; /* They are mandatory for HO */ uint8_t buf[RRC_BUF_SIZE]; /* ASN.1 encoded handoverCommandMessage */ int size; /* size of above message in bytes */ -}HANDOVER_INFO; +} HANDOVER_INFO; #define RRC_HEADER_SIZE_MAX 64 #define RRC_BUFFER_SIZE_MAX 1024 @@ -237,27 +232,27 @@ typedef struct{ }RRC_BUFFER; #define RRC_BUFFER_SIZE sizeof(RRC_BUFFER) -typedef struct{ +typedef struct RB_INFO_s { u16 Rb_id; //=Lchan_id LCHAN_DESC Lchan_desc[2]; MAC_MEAS_REQ_ENTRY *Meas_entry; -}RB_INFO; +} RB_INFO; -typedef struct SRB_INFO{ +typedef struct SRB_INFO_s { u16 Srb_id; //=Lchan_id RRC_BUFFER Rx_buffer; RRC_BUFFER Tx_buffer; LCHAN_DESC Lchan_desc[2]; unsigned int Trans_id; u8 Active; -}SRB_INFO; +} SRB_INFO; -typedef struct{ +typedef struct RB_INFO_TABLE_ENTRY_s { RB_INFO Rb_info; u8 Active; u32 Next_check_frame; u8 Status; -}RB_INFO_TABLE_ENTRY; +} RB_INFO_TABLE_ENTRY; typedef struct{ SRB_INFO Srb_info; @@ -266,19 +261,18 @@ typedef struct{ u32 Next_check_frame; }SRB_INFO_TABLE_ENTRY; -typedef struct { +typedef struct MEAS_REPORT_LIST_s { MeasId_t measId; //CellsTriggeredList cellsTriggeredList;//OPTIONAL u32 numberOfReportsSent; } MEAS_REPORT_LIST; -typedef struct { +typedef struct HANDOVER_INFO_UE_s { PhysCellId_t targetCellId; u8 measFlag; -}HANDOVER_INFO_UE; - +} HANDOVER_INFO_UE; -typedef struct{ +typedef struct eNB_RRC_INST_s { uint8_t *SIB1; uint8_t sizeof_SIB1; uint8_t *SIB23; @@ -334,13 +328,13 @@ typedef struct{ } eNB_RRC_INST; #define MAX_UE_CAPABILITY_SIZE 255 -typedef struct{ +typedef struct OAI_UECapability_s { uint8_t sdu[MAX_UE_CAPABILITY_SIZE]; uint8_t sdu_size; UE_EUTRA_Capability_t *UE_EUTRA_Capability; } OAI_UECapability_t; -typedef struct{ +typedef struct UE_RRC_INST_s { uint8_t *UECapability; uint8_t UECapability_size; UE_RRC_INFO Info[NB_SIG_CNX_UE]; @@ -409,7 +403,7 @@ typedef struct{ /* Used integrity/ciphering algorithms */ e_SecurityAlgorithmConfig__cipheringAlgorithm ciphering_algorithm; e_SecurityAlgorithmConfig__integrityProtAlgorithm integrity_algorithm; -}UE_RRC_INST; +} UE_RRC_INST; //main.c int rrc_init_global_param(void); @@ -494,22 +488,20 @@ s32 rrc_ue_establish_srb2(u8 Mod_id,u32 frame, u8 eNB_index,struct SRB_ToAddMod @returns 0 on success */ s32 rrc_ue_establish_drb(u8 Mod_id,u32 frame,u8 eNB_index,struct DRB_ToAddMod *DRB_config); - /** \brief Process MobilityControlInfo Message to proceed with handover and configure PHY/MAC \param Mod_id Instance of UE on which to act \param frame frame time interval \param eNB_index Index of corresponding CH/eNB \param mobilityControlInfo Pointer to mobilityControlInfo */ - -void rrc_ue_process_mobilityControlInfo(u8 Mod_id,u32 frame, u8 eNB_index,struct MobilityControlInfo *mobilityControlInfo); +void rrc_ue_process_mobilityControlInfo(u8 Mod_id,u32 frame, u8 eNB_index,struct MobilityControlInfo *mobilityControlInfo); /** \brief Process a measConfig Message and configure PHY/MAC \param Mod_id Instance of UE on which to act \param frame frame time interval \param eNB_index Index of corresponding CH/eNB \param measConfig Pointer to MeasConfig IE from configuration*/ -void rrc_ue_process_measConfig(u8 Mod_id,u32 frame, u8 eNB_index,MeasConfig_t *measConfig); +void rrc_ue_process_measConfig(u8 Mod_id,u32 frame, u8 eNB_index,MeasConfig_t *measConfig); /** \brief Process a RadioResourceConfigDedicated Message and configure PHY/MAC \param Mod_id Instance of UE on which to act @@ -576,33 +568,48 @@ void *rrc_ue_task(void *args_p); \param UE_index Index of UE transmitting the messages*/ void rrc_eNB_generate_RRCConnectionReconfiguration_handover(u8 Mod_id, u32 frame, u16 UE_index, u8 *nas_pdu, u32 nas_length); - //L2_interface.c s8 mac_rrc_lite_data_req( u8 Mod_id, u32 frame, unsigned short Srb_id, u8 Nb_tb, u8 *Buffer,u8 eNB_flag, u8 eNB_index, u8 mbsfn_sync_area); + s8 mac_rrc_lite_data_ind( u8 Mod_id, u32 frame, unsigned short Srb_id, u8 *Sdu, unsigned short Sdu_len,u8 eNB_flag,u8 eNB_index, u8 mbsfn_sync_area); + void mac_sync_ind( u8 Mod_id, u8 status); + u8 rrc_lite_data_req(u8 Mod_id, u32 frame, u8 eNB_flag, unsigned int rb_id, u32 muiP, u32 confirmP, unsigned int sdu_size, u8* Buffer, u8 mode); -void rrc_lite_data_ind( u8 Mod_id, u32 frame, u8 eNB_flag, u32 Rb_id, u32 sdu_size,u8 *Buffer); + +void rrc_lite_data_ind(module_id_t Mod_id, u32 frame, u8 eNB_flag, u32 Rb_id, u32 sdu_size,u8 *Buffer); + void rrc_lite_in_sync_ind(u8 Mod_id, u32 frame, u16 eNB_index); + void rrc_lite_out_of_sync_ind(u8 Mod_id, u32 frame, unsigned short eNB_index); int decode_MCCH_Message(u8 Mod_id, u32 frame, u8 eNB_index, u8 *Sdu, u8 Sdu_len,u8 mbsfn_sync_area); + void decode_MBSFNAreaConfiguration(u8 Mod_id, u8 eNB_index, u32 frame,u8 mbsfn_sync_area); int decode_BCCH_DLSCH_Message(u8 Mod_id,u32 frame,u8 eNB_index,u8 *Sdu,u8 Sdu_len); - int decode_SIB1(u8 Mod_id,u8 eNB_index); +int decode_SIB1(u8 Mod_id,u8 eNB_index); int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window); +void ue_meas_filtering(u8 Mod_id,u32 frame,u8 eNB_index); + +void ue_measurement_report_triggering(u8 Mod_id, u32 frame,u8 eNB_index); + int mac_get_rrc_lite_status(u8 Mod_id,u8 eNB_flag,u8 index); void rrc_eNB_generate_UECapabilityEnquiry(u8 Mod_id, u32 frame, u16 UE_index); + void rrc_eNB_generate_SecurityModeCommand(u8 Mod_id, u32 frame, u16 UE_index); void rrc_eNB_process_MeasurementReport(u8 Mod_id,u32 frame, u16 UE_index,MeasResults_t *measResults2) ; + void rrc_eNB_generate_HandoverPreparationInformation (u8 Mod_id, u32 frame, u8 UE_index, PhysCellId_t targetPhyId) ; + +void check_handovers(u8 Mod_id, u32 frame); + u8 check_trigger_meas_event(u8 Mod_id,u32 frame, u8 eNB_index, u8 ue_cnx_index, u8 meas_index, Q_OffsetRange_t ofn, Q_OffsetRange_t ocn, Hysteresis_t hys, Q_OffsetRange_t ofs, Q_OffsetRange_t ocs, long a3_offset, TimeToTrigger_t ttt); @@ -613,8 +620,7 @@ u8 check_trigger_meas_event(u8 Mod_id,u32 frame, u8 eNB_index, u8 ue_cnx_index, void rrc_remove_UE (u8 Mod_id, u8 UE_id); long binary_search_int(int elements[], long numElem, int value); + long binary_search_float(float elements[], long numElem, float value); #endif - - /** @ */ diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index 9ab915d71ff4d33568e3719b2601c0296e41cc80..5f40de5424a7a7ffef1f60bba681c0b7d77ea97e 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -1739,6 +1739,7 @@ void dump_sib13(SystemInformationBlockType13_r9_t *sib13) { } #endif + //const char SIBPeriod[7][7]= {"80ms\0","160ms\0","320ms\0","640ms\0","1280ms\0","2560ms\0","5120ms\0"}; int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window) { @@ -1898,7 +1899,6 @@ int decode_SI(u8 Mod_id,u32 frame,u8 eNB_index,u8 si_window) { return 0; } - // layer 3 filtering of RSRP (EUTRA) measurements: 36.331, Sec. 5.5.3.2 void ue_meas_filtering(u8 Mod_id,u32 frame,u8 eNB_index){ float a = UE_rrc_inst[Mod_id].filter_coeff_rsrp; // 'a' in 36.331 Sec. 5.5.3.2 diff --git a/openair2/RRC/LITE/rrc_common.c b/openair2/RRC/LITE/rrc_common.c index b28b154e7aa5678f9244bd58846a0ae250122575..e618fb946c2158498556fcff3e381a3865a62137 100644 --- a/openair2/RRC/LITE/rrc_common.c +++ b/openair2/RRC/LITE/rrc_common.c @@ -401,7 +401,7 @@ RRC_status_t rrc_rx_tx(u8 Mod_id,u32 frame, u8 eNB_flag,u8 index){ } long binary_search_int(int elements[], long numElem, int value) { - long first, last, middle, search; + long first, last, middle, search = -1; first = 0; last = numElem-1; middle = (first+last)/2; @@ -432,7 +432,7 @@ long binary_search_int(int elements[], long numElem, int value) { Used for RSRP and RSRQ measurement mapping. Can potentially be used for other things */ long binary_search_float(float elements[], long numElem, float value) { - long first, last, middle, search; + long first, last, middle; first = 0; last = numElem-1; middle = (first+last)/2; diff --git a/targets/SIMU/USER/sinr_sim.c b/targets/SIMU/USER/sinr_sim.c index f2c87d7dde219069cb12725227638536a348a46b..4c6fbbeb73f45d68e1dd592ff4fc39c445d33fec 100644 --- a/targets/SIMU/USER/sinr_sim.c +++ b/targets/SIMU/USER/sinr_sim.c @@ -557,11 +557,11 @@ void get_beta_map() { } fclose(fp); // } - // LOG_D(OCM,"Print the table for mcs %d\n",mcs); -printf("Print the table for mcs %d\n",mcs); + LOG_D(OCM,"Print the table for mcs %d\n",mcs); + // printf("Print the table for mcs %d\n",mcs); for (t = 0; t<table_length[mcs]; t++) - // LOG_D(OCM,"%lf %lf \n ",sinr_bler_map[mcs][0][t],sinr_bler_map[mcs][1][t]); -printf("%lf %lf \n ",sinr_bler_map[mcs][0][t],sinr_bler_map[mcs][1][t]); + LOG_D(OCM,"%lf %lf \n ",sinr_bler_map[mcs][0][t],sinr_bler_map[mcs][1][t]); + // printf("%lf %lf \n ",sinr_bler_map[mcs][0][t],sinr_bler_map[mcs][1][t]); } free(file_path); } @@ -603,7 +603,8 @@ void get_MIESM_param() { fclose(fp); for (t = 0; t < 162; t++){ // MI_map_4Qam[0][t] = pow(10,0.1*(MI_map_4Qam[0][t])); - printf("MIESM 4QAM Table: %lf %lf %1f\n ",MI_map_4qam[0][t],MI_map_4qam[1][t], MI_map_4qam[2][t]); + LOG_D(OCM, "MIESM 4QAM Table: %lf %lf %1f\n ",MI_map_4qam[0][t],MI_map_4qam[1][t], MI_map_4qam[2][t]); + // printf("MIESM 4QAM Table: %lf %lf %1f\n ",MI_map_4qam[0][t],MI_map_4qam[1][t], MI_map_4qam[2][t]); } break; case 16: @@ -621,7 +622,8 @@ void get_MIESM_param() { fclose(fp); for (t = 0; t < 197; t++){ // MI_map_16Qam[0][t] = pow(10,0.1*(MI_map_16Qam[0][t])); - printf("MIESM 16 QAM Table: %lf %lf %1f\n ",MI_map_16qam[0][t],MI_map_16qam[1][t], MI_map_16qam[2][t]); + LOG_D(OCM, "MIESM 16 QAM Table: %lf %lf %1f\n ",MI_map_16qam[0][t],MI_map_16qam[1][t], MI_map_16qam[2][t]); + // printf("MIESM 16 QAM Table: %lf %lf %1f\n ",MI_map_16qam[0][t],MI_map_16qam[1][t], MI_map_16qam[2][t]); } break; case 64: @@ -641,7 +643,8 @@ void get_MIESM_param() { fclose(fp); for (t = 0; t < 227; t++){ //MI_map_64Qam[0][t] = pow(10,0.1*(MI_map_64Qam[0][t])); - printf("MIESM 64QAM Table: %lf %lf %1f\n ",MI_map_64qam[0][t],MI_map_64qam[1][t], MI_map_64qam[2][t]); + LOG_D(OCM, "MIESM 64QAM Table: %lf %lf %1f\n ",MI_map_64qam[0][t],MI_map_64qam[1][t], MI_map_64qam[2][t]); + // printf("MIESM 64QAM Table: %lf %lf %1f\n ",MI_map_64qam[0][t],MI_map_64qam[1][t], MI_map_64qam[2][t]); } break;