Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
84c9c889
Commit
84c9c889
authored
Aug 23, 2017
by
Matthieu Kanj
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
renaming structures and variables in file: openair2/RRC/LITE/defs_NB_IoT.h
parent
17c94ff8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
140 additions
and
140 deletions
+140
-140
openair2/RRC/LITE/L2_interface_NB_IoT.c
openair2/RRC/LITE/L2_interface_NB_IoT.c
+5
-5
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
+4
-4
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.h
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.h
+4
-4
openair2/RRC/LITE/defs_NB_IoT.h
openair2/RRC/LITE/defs_NB_IoT.h
+48
-48
openair2/RRC/LITE/proto_NB_IoT.h
openair2/RRC/LITE/proto_NB_IoT.h
+15
-15
openair2/RRC/LITE/rrc_common_NB_IoT.c
openair2/RRC/LITE/rrc_common_NB_IoT.c
+4
-4
openair2/RRC/LITE/rrc_eNB_NB_IoT.c
openair2/RRC/LITE/rrc_eNB_NB_IoT.c
+39
-39
openair2/RRC/LITE/rrc_eNB_UE_context.c
openair2/RRC/LITE/rrc_eNB_UE_context.c
+15
-15
openair2/RRC/LITE/rrc_eNB_UE_context.h
openair2/RRC/LITE/rrc_eNB_UE_context.h
+6
-6
No files found.
openair2/RRC/LITE/L2_interface_NB_IoT.c
View file @
84c9c889
...
...
@@ -1112,7 +1112,7 @@ int8_t mac_rrc_data_req_eNB_NB_IoT(
mib_flag_t
mib_flag
)
{
SRB_INFO_NB
*
Srb_info
;
SRB_INFO_NB
_IoT
*
Srb_info
;
uint8_t
Sdu_size
=
0
;
...
...
@@ -1277,7 +1277,7 @@ int8_t NB_mac_rrc_data_ind_eNB(
const
sdu_size_t
sdu_lenP
)
{
SRB_INFO_NB
*
Srb_info
;
SRB_INFO_NB
_IoT
*
Srb_info
;
protocol_ctxt_t
ctxt
;
sdu_size_t
sdu_size
=
0
;
...
...
@@ -1335,7 +1335,7 @@ void mac_eNB_rrc_ul_failure_NB_IoT(
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
)
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_eNB_get_ue_context_NB
(
&
eNB_rrc_inst_NB_IoT
[
mod_idP
],
rntiP
);
...
...
@@ -1441,7 +1441,7 @@ void mac_eNB_rrc_ul_in_sync_NB_IoT(
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
)
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_eNB_get_ue_context_NB
(
&
eNB_rrc_inst_NB_IoT
[
mod_idP
],
rntiP
);
...
...
@@ -1462,7 +1462,7 @@ int mac_eNB_get_rrc_status_NB_IoT(
const
rnti_t
rntiP
)
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_eNB_get_ue_context_NB
(
&
eNB_rrc_inst_NB_IoT
[
Mod_idP
],
rntiP
);
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.c
View file @
84c9c889
...
...
@@ -95,7 +95,7 @@ int errno;
/*do_MIB_NB*/
uint8_t
do_MIB_NB
(
rrc_eNB_carrier_data_NB_t
*
carrier
,
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
uint16_t
N_RB_DL
,
//may not needed--> for NB_IoT only 1 PRB is used
uint32_t
frame
)
{
...
...
@@ -163,7 +163,7 @@ uint8_t do_MIB_NB(
/*do_SIB1_NB*/
uint8_t
do_SIB1_NB
(
uint8_t
Mod_id
,
int
CC_id
,
rrc_eNB_carrier_data_NB_t
*
carrier
,
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
RrcConfigurationReq
*
configuration
,
uint32_t
frame
)
...
...
@@ -415,7 +415,7 @@ uint8_t do_SIB1_NB(uint8_t Mod_id, int CC_id,
//to be clarified is it is possible to carry SIB2 and SIB3 in the same SI message for NB-IoT?
uint8_t
do_SIB23_NB
(
uint8_t
Mod_id
,
int
CC_id
,
rrc_eNB_carrier_data_NB_t
*
carrier
,
//MP: this is already a carrier[CC_id]
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
//MP: this is already a carrier[CC_id]
RrcConfigurationReq
*
configuration
)
//openair2/COMMON/rrc_messages_types.h
{
struct
SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member
*
sib2_NB_part
;
...
...
@@ -660,7 +660,7 @@ uint8_t do_SIB23_NB(uint8_t Mod_id,
/*do_RRCConnectionSetup_NB--> the aim is to establish SRB1 and SRB1bis(implicitly)*/
uint8_t
do_RRCConnectionSetup_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
int
CC_id
,
uint8_t
*
const
buffer
,
//Srb0.Tx_buffer.Payload
const
uint8_t
Transaction_id
,
...
...
openair2/RRC/LITE/MESSAGES/asn1_msg_NB_IoT.h
View file @
84c9c889
...
...
@@ -63,7 +63,7 @@
@param frame radio frame number
@return size of encoded bit stream in bytes*/
uint8_t
do_MIB_NB
(
rrc_eNB_carrier_data_NB_t
*
carrier
,
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
uint32_t
N_RB_DL
,
uint32_t
frame
);
...
...
@@ -77,7 +77,7 @@ uint8_t do_MIB_NB(
@return size of encoded bit stream in bytes*/
uint8_t
do_SIB1_NB
(
uint8_t
Mod_id
,
int
CC_id
,
rrc_eNB_carrier_data_NB_t
*
carrier
,
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
RrcConfigurationReq
*
configuration
,
uint32_t
frame
);
...
...
@@ -93,7 +93,7 @@ uint8_t do_SIB1_NB(uint8_t Mod_id, int CC_id,
uint8_t
do_SIB23_NB
(
uint8_t
Mod_id
,
int
CC_id
,
rrc_eNB_carrier_data_NB_t
*
carrier
,
rrc_eNB_carrier_data_NB_
IoT_
t
*
carrier
,
RrcConfigurationReq
*
configuration
);
...
...
@@ -151,7 +151,7 @@ PhysicalConfigDedicated-NB IEs.
uint8_t
do_RRCConnectionSetup_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
int
CC_id
,
uint8_t
*
const
buffer
,
//carrier[CC_id].Srb0.Tx_buffer.Payload
const
uint8_t
Transaction_id
,
...
...
openair2/RRC/LITE/defs_NB_IoT.h
View file @
84c9c889
...
...
@@ -18,7 +18,7 @@
* contact@openairinterface.org
*/
/*! \file RRC/LITE/defs_
nb_iot
.h
/*! \file RRC/LITE/defs_
NB_IoT
.h
* \brief NB-IoT RRC struct definitions and function prototypes
* \author Navid Nikaein, Raymond Knopp and Michele Paffetti
* \date 2010 - 2014, 2017
...
...
@@ -196,12 +196,12 @@
/*I will change the name of the structure for compile purposes--> hope not to undo this process*/
typedef
unsigned
int
uid_NB_t
;
typedef
unsigned
int
uid_NB_
IoT_
t
;
#define UID_LINEAR_ALLOCATOR_BITMAP_SIZE (((NUMBER_OF_UE_MAX/8)/sizeof(unsigned int)) + 1)
typedef
struct
uid_linear_allocator_NB_s
{
typedef
struct
uid_linear_allocator_NB_
IoT_
s
{
unsigned
int
bitmap
[
UID_LINEAR_ALLOCATOR_BITMAP_SIZE
];
}
uid_allocator_NB_t
;
}
uid_allocator_NB_
IoT_
t
;
#define PROTOCOL_RRC_CTXT_UE_FMT PROTOCOL_CTXT_FMT
...
...
@@ -251,25 +251,25 @@ typedef struct uid_linear_allocator_NB_s {
/* TS 36.331: RRC-TransactionIdentifier ::= INTEGER (0..3) */
#define RRC_TRANSACTION_IDENTIFIER_NUMBER 3
typedef
struct
UE_S_TMSI_NB_s
{
typedef
struct
UE_S_TMSI_NB_
IoT_
s
{
boolean_t
presence
;
mme_code_t
mme_code
;
m_tmsi_t
m_tmsi
;
}
__attribute__
((
__packed__
))
UE_S_TMSI_NB
;
}
__attribute__
((
__packed__
))
UE_S_TMSI_NB
_IoT
;
typedef
enum
e_rab_satus_NB_e
{
E_RAB_
NB_STATUS_NEW
,
E_RAB_
NB_STATUS_DONE
,
// from the eNB perspective
E_RAB_
NB_STATUS_ESTABLISHED
,
// get the reconfigurationcomplete form UE
E_RAB_
NB_STATUS_FAILED
,
}
e_rab_status_NB_t
;
typedef
enum
e_rab_satus_NB_
IoT_
e
{
E_RAB_
STATUS_NEW_NB_IoT
,
E_RAB_
STATUS_DONE_NB_IoT
,
// from the eNB perspective
E_RAB_
STATUS_ESTABLISHED_NB_IoT
,
// get the reconfigurationcomplete form UE
E_RAB_
STATUS_FAILED_NB_IoT
,
}
e_rab_status_NB_
IoT_
t
;
typedef
struct
e_rab_param_NB_s
{
typedef
struct
e_rab_param_NB_
IoT_
s
{
e_rab_t
param
;
uint8_t
status
;
uint8_t
xid
;
// transaction_id
}
__attribute__
((
__packed__
))
e_rab_param_NB_t
;
}
__attribute__
((
__packed__
))
e_rab_param_NB_
IoT_
t
;
//HANDOVER_INFO not implemented in NB-IoT delete
...
...
@@ -282,46 +282,46 @@ typedef struct {
char
Payload
[
RRC_BUFFER_SIZE_MAX
];
char
Header
[
RRC_HEADER_SIZE_MAX
];
char
payload_size
;
}
RRC_BUFFER_NB
;
}
RRC_BUFFER_NB
_IoT
;
#define RRC_BUFFER_SIZE_NB
sizeof(RRC_BUFFER_NB
)
#define RRC_BUFFER_SIZE_NB
_IoT sizeof(RRC_BUFFER_NB_IoT
)
typedef
struct
RB_INFO_NB_s
{
typedef
struct
RB_INFO_NB_
IoT_
s
{
uint16_t
Rb_id
;
//=Lchan_id
//LCHAN_DESC Lchan_desc[2]; no more used
//MAC_MEAS_REQ_ENTRY *Meas_entry; //may not needed for NB-IoT
}
RB_INFO_NB
;
}
RB_INFO_NB
_IoT
;
typedef
struct
SRB_INFO_NB_s
{
typedef
struct
SRB_INFO_NB_
IoT_
s
{
uint16_t
Srb_id
;
//=Lchan_id---> useful for distinguish between SRB1 and SRB1bis?
RRC_BUFFER_NB
Rx_buffer
;
RRC_BUFFER_NB
Tx_buffer
;
RRC_BUFFER_NB
_IoT
Rx_buffer
;
RRC_BUFFER_NB
_IoT
Tx_buffer
;
//LCHAN_DESC Lchan_desc[2]; no more used
unsigned
int
Trans_id
;
uint8_t
Active
;
}
SRB_INFO_NB
;
}
SRB_INFO_NB
_IoT
;
typedef
struct
RB_INFO_TABLE_ENTRY_NB_s
{
RB_INFO_NB
Rb_info
;
typedef
struct
RB_INFO_TABLE_ENTRY_NB_
IoT_
s
{
RB_INFO_NB
_IoT
Rb_info
;
uint8_t
Active
;
uint32_t
Next_check_frame
;
uint8_t
Status
;
}
RB_INFO_TABLE_ENTRY_NB
;
}
RB_INFO_TABLE_ENTRY_NB
_IoT
;
typedef
struct
SRB_INFO_TABLE_ENTRY_NB_s
{
SRB_INFO_NB
Srb_info
;
typedef
struct
SRB_INFO_TABLE_ENTRY_NB_
IoT_
s
{
SRB_INFO_NB
_IoT
Srb_info
;
uint8_t
Active
;
uint8_t
Status
;
uint32_t
Next_check_frame
;
}
SRB_INFO_TABLE_ENTRY_NB
;
}
SRB_INFO_TABLE_ENTRY_NB
_IoT
;
//MEAS_REPORT_LIST_s not implemented in NB-IoT but is used at UE side
//HANDOVER_INFO_UE not implemented in NB-IoT
//NB-IoT eNB_RRC_UE_NB_s--(used as a context in eNB --> ue_context in rrc_eNB_ue_context)------
typedef
struct
eNB_RRC_UE_NB_s
{
//NB-IoT eNB_RRC_UE_NB_
IoT_
s--(used as a context in eNB --> ue_context in rrc_eNB_ue_context)------
typedef
struct
eNB_RRC_UE_NB_
IoT_
s
{
uint8_t
primaryCC_id
;
//in NB-IoT only SRB0, SRB1 and SRB1bis (until AS security activation) exist
...
...
@@ -347,10 +347,10 @@ typedef struct eNB_RRC_UE_NB_s {
//No SPS(semi-persistent scheduling) in NB-IoT
//No Measurement report in NB-IoT
SRB_INFO_NB
SI
;
SRB_INFO_NB
Srb0
;
SRB_INFO_TABLE_ENTRY_NB
Srb1
;
SRB_INFO_TABLE_ENTRY_NB
Srb1bis
;
SRB_INFO_NB
_IoT
SI
;
SRB_INFO_NB
_IoT
Srb0
;
SRB_INFO_TABLE_ENTRY_NB
_IoT
Srb1
;
SRB_INFO_TABLE_ENTRY_NB
_IoT
Srb1bis
;
#if defined(ENABLE_SECURITY)
/* KeNB as derived from KASME received from EPC */
...
...
@@ -368,7 +368,7 @@ typedef struct eNB_RRC_UE_NB_s {
/* Information from UE RRC ConnectionRequest-NB-r13_IE--> NB-IoT */
UE_S_TMSI_NB
Initialue_identity_s_TMSI
;
UE_S_TMSI_NB
_IoT
Initialue_identity_s_TMSI
;
EstablishmentCause_NB_r13_t
establishment_cause_NB
;
//different set for NB-IoT
/* Information from UE RRC ConnectionReestablishmentRequest-NB--> NB-IoT */
...
...
@@ -387,7 +387,7 @@ typedef struct eNB_RRC_UE_NB_s {
/* Number of e_rab to be setup in the list */
//NAS list?
uint8_t
nb_of_e_rabs
;
/* list of e_rab to be setup by RRC layers */
e_rab_param_NB_t
e_rab
[
NB_RB_MAX_NB_IOT
];
//[S1AP_MAX_E_RAB];
e_rab_param_NB_
IoT_
t
e_rab
[
NB_RB_MAX_NB_IOT
];
//[S1AP_MAX_E_RAB];
// LG: For GTPV1 TUNNELS
uint32_t
enb_gtp_teid
[
S1AP_MAX_E_RAB
];
...
...
@@ -399,17 +399,17 @@ typedef struct eNB_RRC_UE_NB_s {
uint32_t
ue_release_timer
;
//threshold of the release timer--> set in RRCConnectionRelease
uint32_t
ue_release_timer_thres
;
}
eNB_RRC_UE_NB_t
;
}
eNB_RRC_UE_NB_
IoT_
t
;
//--------------------------------------------------------------------------------
typedef
uid_NB_t
ue_uid_t
;
typedef
uid_NB_
IoT_
t
ue_uid_t
;
//generally variable called: ue_context_pP
typedef
struct
rrc_eNB_ue_context_NB_s
{
typedef
struct
rrc_eNB_ue_context_NB_
IoT_
s
{
/* Tree related data */
RB_ENTRY
(
rrc_eNB_ue_context_NB_s
)
entries
;
RB_ENTRY
(
rrc_eNB_ue_context_NB_
IoT_
s
)
entries
;
/* Uniquely identifies the UE between MME and eNB within the eNB.
* This id is encoded on 24bits.
...
...
@@ -420,9 +420,9 @@ typedef struct rrc_eNB_ue_context_NB_s {
ue_uid_t
local_uid
;
/* UE id for initial connection to S1AP */
struct
eNB_RRC_UE_NB_s
ue_context
;
//context of ue in the e-nB
struct
eNB_RRC_UE_NB_
IoT_
s
ue_context
;
//context of ue in the e-nB
}
rrc_eNB_ue_context_NB_t
;
}
rrc_eNB_ue_context_NB_
IoT_
t
;
...
...
@@ -482,8 +482,8 @@ typedef struct {
SystemInformationBlockType16_NB_r13_t
*
sib16_NB
;
SRB_INFO_NB
SI
;
SRB_INFO_NB
Srb0
;
SRB_INFO_NB
_IoT
SI
;
SRB_INFO_NB
_IoT
Srb0
;
/*future implementation TS 36.331 V14.2.1
SystemInformationBlockType15_NB_r14_t *sib15;
...
...
@@ -495,7 +495,7 @@ typedef struct {
SC_MCCH_Message_NB_t scptm;*/
}
rrc_eNB_carrier_data_NB_t
;
}
rrc_eNB_carrier_data_NB_
IoT_
t
;
//---------------------------------------------------
...
...
@@ -503,10 +503,10 @@ typedef struct {
//---NB-IoT---(completely change)---------------------
typedef
struct
eNB_RRC_INST_NB_IoT_s
{
rrc_eNB_carrier_data_NB_t
carrier
[
MAX_NUM_CCs
];
rrc_eNB_carrier_data_NB_
IoT_
t
carrier
[
MAX_NUM_CCs
];
uid_allocator_NB_t
uid_allocator
;
// for rrc_ue_head
RB_HEAD
(
rrc_ue_tree_NB_
s
,
rrc_eNB_ue_context_NB
_s
)
rrc_ue_head
;
// ue_context tree key search by rnti
uid_allocator_NB_
IoT_
t
uid_allocator
;
// for rrc_ue_head
RB_HEAD
(
rrc_ue_tree_NB_
IoT_s
,
rrc_eNB_ue_context_NB_IoT
_s
)
rrc_ue_head
;
// ue_context tree key search by rnti
uint8_t
Nb_ue
;
...
...
openair2/RRC/LITE/proto_NB_IoT.h
View file @
84c9c889
...
...
@@ -43,7 +43,7 @@
*/
void
openair_rrc_on_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
);
void
rrc_config_buffer_NB_IoT
(
SRB_INFO_NB
*
srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
);
void
rrc_config_buffer_NB_IoT
(
SRB_INFO_NB
_IoT
*
srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
);
int
L3_xface_init_NB_IoT
(
void
);
...
...
@@ -460,7 +460,7 @@ void openair_eNB_rrc_on_NB_IoT(
);
void
rrc_config_buffer_NB_IoT
(
SRB_INFO_NB
*
Srb_info
,
SRB_INFO_NB
_IoT
*
Srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
);
...
...
@@ -480,7 +480,7 @@ void *rrc_enb_task_NB_IoT(void *args_p);
\param Srb_info Pointer to SRB0 information structure (buffer, etc.)*/
int
rrc_eNB_decode_ccch_NB_IoT
(
protocol_ctxt_t
*
const
ctxt_pP
,
const
SRB_INFO_NB
*
const
Srb_info
,
const
SRB_INFO_NB
_IoT
*
const
Srb_info
,
const
int
CC_id
);
...
...
@@ -501,58 +501,58 @@ int rrc_eNB_decode_dcch_NB_IoT(
\param CC_id Component Carrier ID*/
void
rrc_eNB_generate_RRCConnectionReestablishmentReject_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
);
void
rrc_eNB_generate_RRCConnectionReject_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
);
void
rrc_eNB_generate_RRCConnectionSetup_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
);
void
rrc_eNB_process_RRCConnectionReconfigurationComplete_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
,
const
uint8_t
xid
//transaction identifier
);
void
//was under ITTI
rrc_eNB_reconfigure_DRBs_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
);
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
);
void
//was under ITTI
rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
//no ho state
);
void
rrc_eNB_process_RRCConnectionSetupComplete_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
,
RRCConnectionSetupComplete_NB_r13_IEs_t
*
rrcConnectionSetupComplete_NB
);
void
rrc_eNB_generate_SecurityModeCommand_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
);
void
rrc_eNB_generate_UECapabilityEnquiry_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
);
void
rrc_eNB_generate_defaultRRCConnectionReconfiguration_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
//no HO flag
);
...
...
@@ -561,12 +561,12 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration_NB_IoT(const protocol_
void
rrc_eNB_free_UE_NB_IoT
(
const
module_id_t
enb_mod_idP
,
const
struct
rrc_eNB_ue_context_NB_s
*
const
ue_context_pP
const
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
const
ue_context_pP
);
void
rrc_eNB_free_mem_UE_context_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
struct
rrc_eNB_ue_context_NB_s
*
const
ue_context_pP
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
const
ue_context_pP
);
...
...
openair2/RRC/LITE/rrc_common_NB_IoT.c
View file @
84c9c889
...
...
@@ -135,7 +135,7 @@ void openair_eNB_rrc_on_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_config_buffer_NB_IoT
(
SRB_INFO_NB
*
Srb_info
,
SRB_INFO_NB
_IoT
*
Srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
)
...
...
@@ -279,8 +279,8 @@ rrc_rx_tx_NB_IoT(
//uint8_t UE_id;
int32_t
current_timestamp_ms
,
ref_timestamp_ms
;
struct
timeval
ts
;
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_s
*
ue_to_be_removed
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_to_be_removed
=
NULL
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX
,
VCD_FUNCTION_IN
);
...
...
@@ -384,7 +384,7 @@ rrc_rx_tx_NB_IoT(
// counter, and get the value and aggregate
// check for UL failure
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_
IoT_
s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
if
((
ctxt_pP
->
frame
==
0
)
&&
(
ctxt_pP
->
subframe
==
0
))
{
if
(
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
presence
==
TRUE
)
{
LOG_I
(
RRC
,
"UE rnti %x:S-TMSI %x failure timer %d/20000
\n
"
,
...
...
openair2/RRC/LITE/rrc_eNB_NB_IoT.c
View file @
84c9c889
...
...
@@ -112,7 +112,7 @@ mui_t rrc_eNB_mui_NB = 0;
// should be called when UE is lost by eNB
void
rrc_eNB_free_UE_NB_IoT
(
const
module_id_t
enb_mod_idP
,
const
struct
rrc_eNB_ue_context_NB_s
*
const
ue_context_pP
)
void
rrc_eNB_free_UE_NB_IoT
(
const
module_id_t
enb_mod_idP
,
const
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
const
ue_context_pP
)
//-----------------------------------------------------------------------------
{
...
...
@@ -161,7 +161,7 @@ void rrc_eNB_free_UE_NB_IoT(const module_id_t enb_mod_idP,const struct rrc_eNB_u
rrc_eNB_remove_ue_context_NB
(
&
ctxt
,
&
eNB_rrc_inst_NB_IoT
[
enb_mod_idP
],
(
struct
rrc_eNB_ue_context_NB_s
*
)
ue_context_pP
);
(
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
)
ue_context_pP
);
}
}
...
...
@@ -171,7 +171,7 @@ void rrc_eNB_free_UE_NB_IoT(const module_id_t enb_mod_idP,const struct rrc_eNB_u
void
rrc_eNB_generate_RRCConnectionRelease_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
)
//-----------------------------------------------------------------------------
{
...
...
@@ -229,7 +229,7 @@ rrc_eNB_generate_RRCConnectionRelease_NB(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_RRCConnectionReestablishmentReject_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
)
//-----------------------------------------------------------------------------
...
...
@@ -275,7 +275,7 @@ void rrc_eNB_generate_RRCConnectionReestablishmentReject_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_free_mem_UE_context_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
struct
rrc_eNB_ue_context_NB_s
*
const
ue_context_pP
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
const
ue_context_pP
)
//-----------------------------------------------------------------------------
{
...
...
@@ -321,16 +321,16 @@ void rrc_eNB_free_mem_UE_context_NB_IoT(
//-----------------------------------------------------------------------------
// return the ue context if there is already an UE with ue_identityP, NULL otherwise
static
struct
rrc_eNB_ue_context_NB_s
*
static
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_ue_context_random_exist_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint64_t
ue_identityP
)
//-----------------------------------------------------------------------------
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
//FIXME: there is a warning related to the new type rrc_ue_tree_NB_s
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
//FIXME: there is a warning related to the new type rrc_ue_tree_NB_
IoT_
s
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_
IoT_
s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
if
(
ue_context_p
->
ue_context
.
random_ue_identity
==
ue_identityP
)
return
ue_context_p
;
}
...
...
@@ -339,20 +339,20 @@ rrc_eNB_ue_context_random_exist_NB(
//-----------------------------------------------------------------------------
// return a new ue context structure if ue_identityP, ctxt_pP->rnti not found in collection
static
struct
rrc_eNB_ue_context_NB_s
*
static
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_get_next_free_ue_context_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint64_t
ue_identityP
)
//-----------------------------------------------------------------------------
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_eNB_get_ue_context_NB
(
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
);
if
(
ue_context_p
==
NULL
)
{
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_
IoT_
s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
if
(
ue_context_p
->
ue_context
.
random_ue_identity
==
ue_identityP
)
{
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Cannot create new UE context, already exist rand UE id 0x%"
PRIx64
", uid %u
\n
"
,
...
...
@@ -374,7 +374,7 @@ rrc_eNB_get_next_free_ue_context_NB(
ue_context_p
->
ue_id_rnti
=
ctxt_pP
->
rnti
;
// here ue_id_rnti is just a key, may be something else
ue_context_p
->
ue_context
.
rnti
=
ctxt_pP
->
rnti
;
// yes duplicate, 1 may be removed
ue_context_p
->
ue_context
.
random_ue_identity
=
ue_identityP
;
RB_INSERT
(
rrc_ue_tree_NB_s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
RB_INSERT
(
rrc_ue_tree_NB_
IoT_
s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Created new UE context uid %u
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
...
@@ -391,7 +391,7 @@ rrc_eNB_get_next_free_ue_context_NB(
//-----------------------------------------------------------------------------
// return the ue context if there is already an UE with the same S-TMSI(MMEC+M-TMSI), NULL otherwise
static
struct
rrc_eNB_ue_context_NB_s
*
static
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_ue_context_stmsi_exist_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
mme_code_t
mme_codeP
,
...
...
@@ -399,8 +399,8 @@ rrc_eNB_ue_context_stmsi_exist_NB(
)
//-----------------------------------------------------------------------------
{
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
RB_FOREACH
(
ue_context_p
,
rrc_ue_tree_NB_
IoT_
s
,
&
(
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
))
{
LOG_I
(
RRC
,
"checking for UE S-TMSI %x, mme %x (%p): rnti %x"
,
m_tmsiP
,
mme_codeP
,
ue_context_p
,
ue_context_p
->
ue_context
.
rnti
);
...
...
@@ -434,7 +434,7 @@ uint8_t rrc_eNB_get_next_transaction_identifier_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_RRCConnectionReject_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
)
//-----------------------------------------------------------------------------
...
...
@@ -479,7 +479,7 @@ void rrc_eNB_generate_RRCConnectionReject_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_RRCConnectionSetup_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
,
const
int
CC_id
)
//-----------------------------------------------------------------------------
...
...
@@ -615,7 +615,7 @@ void rrc_eNB_generate_RRCConnectionSetup_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_process_RRCConnectionReconfigurationComplete_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
,
const
uint8_t
xid
//transaction identifier
)
//-----------------------------------------------------------------------------
...
...
@@ -869,7 +869,7 @@ void //was under ITTI
// This function triggers the establishment of dedicated bearer in the absence of EPC (oaisim case -- noS1)
// to emulate it only establish 2 bearers (max number for NB-IoT)
rrc_eNB_reconfigure_DRBs_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
)
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
)
//------------------------------------------------------------------
{
...
...
@@ -879,8 +879,8 @@ rrc_eNB_reconfigure_DRBs_NB_IoT(const protocol_ctxt_t* const ctxt_pP,
for
(
i
=
0
;
i
<
NB_RB_MAX_NB_IOT
-
3
;
i
++
)
{
//most 2 DRB for NB-IoT = at most 2 e-rab (DRB)
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
<
E_RAB_
NB_STATUS_DONE
){
// all those new e-rab ( E_RAB_NB_STATUS_NEW
)
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
NB_STATUS_NEW
;
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
<
E_RAB_
STATUS_DONE_NB_IoT
){
// all those new e-rab ( E_RAB_STATUS_NEW_NB_IoT
)
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
STATUS_NEW_NB_IoT
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
=
i
+
1
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
param
.
qos
.
qci
=
i
%
9
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
param
.
qos
.
allocation_retention_priority
.
priority_level
=
i
%
PRIORITY_LEVEL_LOWEST
;
...
...
@@ -910,7 +910,7 @@ rrc_eNB_reconfigure_DRBs_NB_IoT(const protocol_ctxt_t* const ctxt_pP,
void
//was under ITTI
rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
//no ho state
)
//-----------------------------------------------------------------------------
...
...
@@ -961,7 +961,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_NB_IoT(
for
(
i
=
0
;
i
<
ue_context_pP
->
ue_context
.
setup_e_rabs
;
i
++
){
//max must be 2 DRBs that are established
// bypass the new and already configured erabs
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
>=
E_RAB_
NB_STATUS_DONE
)
{
if
(
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
>=
E_RAB_
STATUS_DONE_NB_IoT
)
{
drb_identity_index
++
;
continue
;
//skip to the next loop iteration
}
...
...
@@ -1031,7 +1031,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_NB_IoT(
);
e_rab_done
++
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
NB_STATUS_DONE
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
STATUS_DONE_NB_IoT
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
xid
=
xid
;
{
...
...
@@ -1136,7 +1136,7 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_process_RRCConnectionSetupComplete_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
ue_context_pP
,
rrc_eNB_ue_context_NB_
IoT_
t
*
ue_context_pP
,
RRCConnectionSetupComplete_NB_r13_IEs_t
*
rrcConnectionSetupComplete_NB
)
//-----------------------------------------------------------------------------
...
...
@@ -1172,7 +1172,7 @@ void rrc_eNB_process_RRCConnectionSetupComplete_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_SecurityModeCommand_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
)
//-----------------------------------------------------------------------------
{
...
...
@@ -1243,7 +1243,7 @@ void rrc_eNB_generate_SecurityModeCommand_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_UECapabilityEnquiry_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
)
//-----------------------------------------------------------------------------
{
...
...
@@ -1296,7 +1296,7 @@ void rrc_eNB_generate_UECapabilityEnquiry_NB_IoT(
//-----------------------------------------------------------------------------
void
rrc_eNB_generate_defaultRRCConnectionReconfiguration_NB_IoT
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_NB_t
*
const
ue_context_pP
rrc_eNB_ue_context_NB_
IoT_
t
*
const
ue_context_pP
//no HO flag
)
//-----------------------------------------------------------------------------
...
...
@@ -1522,9 +1522,9 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration_NB_IoT(const protocol_
}
/* TODO should test if e RAB are Ok before! */
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
NB_STATUS_DONE
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
STATUS_DONE_NB_IoT
;
LOG_D
(
RRC
,
"setting the status for the default DRB (index %d) to (%d,%s)
\n
"
,
i
,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
,
"E_RAB_
NB_STATUS_DONE
"
);
i
,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
,
"E_RAB_
STATUS_DONE_NB_IoT
"
);
}
/* If list is empty free the list and reset the address */
...
...
@@ -1820,7 +1820,7 @@ while ( eNB_rrc_inst_NB_IoT == NULL ) {
//-----------------------------------------------------------------------------
int
rrc_eNB_decode_ccch_NB_IoT
(
protocol_ctxt_t
*
const
ctxt_pP
,
const
SRB_INFO_NB
*
const
Srb_info
,
//SRB0
const
SRB_INFO_NB
_IoT
*
const
Srb_info
,
//SRB0
const
int
CC_id
)
//-----------------------------------------------------------------------------
...
...
@@ -1831,7 +1831,7 @@ int rrc_eNB_decode_ccch_NB_IoT(
RRCConnectionReestablishmentRequest_NB_r13_IEs_t
*
rrcConnectionReestablishmentRequest_NB
=
NULL
;
RRCConnectionResumeRequest_NB_r13_IEs_t
*
rrcConnectionResumeRequest_NB
=
NULL
;
int
i
,
rval
;
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
uint64_t
random_value
=
0
;
int
stmsi_received
=
0
;
...
...
@@ -2012,12 +2012,12 @@ int rrc_eNB_decode_ccch_NB_IoT(
/* replace rnti in the context */
/* for that, remove the context from the RB tree */
///FIXME MP: warning --> implicit declaration because I insert the new type "rrc_ue_tree_NB_s"
RB_REMOVE
(
rrc_ue_tree_NB_s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
///FIXME MP: warning --> implicit declaration because I insert the new type "rrc_ue_tree_NB_
IoT_
s"
RB_REMOVE
(
rrc_ue_tree_NB_
IoT_
s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
/* and insert again, after changing rnti everywhere it has to be changed */
ue_context_p
->
ue_id_rnti
=
ctxt_pP
->
rnti
;
ue_context_p
->
ue_context
.
rnti
=
ctxt_pP
->
rnti
;
RB_INSERT
(
rrc_ue_tree_NB_s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
RB_INSERT
(
rrc_ue_tree_NB_
IoT_
s
,
&
eNB_rrc_inst_NB_IoT
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
/* reset timers */
ue_context_p
->
ue_context
.
ul_failure_timer
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer
=
0
;
...
...
@@ -2226,7 +2226,7 @@ int rrc_eNB_decode_dcch_NB_IoT(
UL_DCCH_Message_NB_t
*
ul_dcch_msg_NB
=
NULL
;
UE_Capability_NB_r13_t
*
UE_Capability_NB
=
NULL
;
int
i
;
struct
rrc_eNB_ue_context_NB_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_p
=
NULL
;
int
dedicated_DRB
=
0
;
...
...
@@ -2655,7 +2655,7 @@ int rrc_eNB_decode_dcch_NB_IoT(
ue_context_p
->
ue_context
.
nb_of_e_rabs
=
1
;
//FIXME may no more present in NB_IoT or different parameter to set
for
(
i
=
0
;
i
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
i
++
){
ue_context_p
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
NB_STATUS_NEW
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_
STATUS_NEW_NB_IoT
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
=
1
+
i
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
qos
.
qci
=
9
;
//Non-GBR
}
...
...
@@ -2774,7 +2774,7 @@ void* rrc_enb_task_NB_IoT(
const
char
*
msg_name_p
;
instance_t
instance
;
int
result
;
SRB_INFO_NB
*
srb_info_p
;
SRB_INFO_NB
_IoT
*
srb_info_p
;
int
CC_id
;
protocol_ctxt_t
ctxt
;
...
...
openair2/RRC/LITE/rrc_eNB_UE_context.c
View file @
84c9c889
...
...
@@ -196,11 +196,11 @@ void rrc_eNB_remove_ue_context(
//------------------------------------------------------------------------------
void
uid_linear_allocator_init_NB
(
uid_allocator_NB_t
*
const
uid_pP
uid_allocator_NB_
IoT_
t
*
const
uid_pP
)
//------------------------------------------------------------------------------
{
memset
(
uid_pP
,
0
,
sizeof
(
uid_allocator_NB_t
));
memset
(
uid_pP
,
0
,
sizeof
(
uid_allocator_NB_
IoT_
t
));
}
...
...
@@ -214,7 +214,7 @@ uid_linear_allocator_new_NB(
unsigned
int
i
;
unsigned
int
bit_index
=
1
;
uid_t
uid
=
0
;
uid_allocator_NB_t
*
uia_p
=
&
rrc_instance_pP
->
uid_allocator
;
uid_allocator_NB_
IoT_
t
*
uia_p
=
&
rrc_instance_pP
->
uid_allocator
;
for
(
i
=
0
;
i
<
UID_LINEAR_ALLOCATOR_BITMAP_SIZE
;
i
++
)
{
if
(
uia_p
->
bitmap
[
i
]
!=
UINT_MAX
)
{
...
...
@@ -254,7 +254,7 @@ uid_linear_allocator_free_NB(
int
rrc_eNB_compare_ue_rnti_id_NB
(
struct
rrc_eNB_ue_context_NB_
s
*
c1_pP
,
struct
rrc_eNB_ue_context_NB
_s
*
c2_pP
)
struct
rrc_eNB_ue_context_NB_
IoT_s
*
c1_pP
,
struct
rrc_eNB_ue_context_NB_IoT
_s
*
c2_pP
)
//------------------------------------------------------------------------------
{
if
(
c1_pP
->
ue_id_rnti
>
c2_pP
->
ue_id_rnti
)
{
...
...
@@ -269,49 +269,49 @@ int rrc_eNB_compare_ue_rnti_id_NB(
}
/* Generate the tree management functions for NB-IoT structures */
RB_GENERATE
(
rrc_ue_tree_NB_
s
,
rrc_eNB_ue_context_NB
_s
,
entries
,
RB_GENERATE
(
rrc_ue_tree_NB_
IoT_s
,
rrc_eNB_ue_context_NB_IoT
_s
,
entries
,
rrc_eNB_compare_ue_rnti_id_NB
);
//------------------------------------------------------------------------------
struct
rrc_eNB_ue_context_NB_s
*
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_allocate_new_UE_context_NB
(
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
)
//------------------------------------------------------------------------------
{
struct
rrc_eNB_ue_context_NB_s
*
new_p
;
new_p
=
malloc
(
sizeof
(
struct
rrc_eNB_ue_context_NB_s
));
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
new_p
;
new_p
=
malloc
(
sizeof
(
struct
rrc_eNB_ue_context_NB_
IoT_
s
));
if
(
new_p
==
NULL
)
{
LOG_E
(
RRC
,
"Cannot allocate new ue context
\n
"
);
return
NULL
;
}
memset
(
new_p
,
0
,
sizeof
(
struct
rrc_eNB_ue_context_NB_s
));
memset
(
new_p
,
0
,
sizeof
(
struct
rrc_eNB_ue_context_NB_
IoT_
s
));
new_p
->
local_uid
=
uid_linear_allocator_new_NB
(
rrc_instance_pP
);
return
new_p
;
}
struct
rrc_eNB_ue_context_NB_s
*
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_get_ue_context_NB
(
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
,
rnti_t
rntiP
)
//------------------------------------------------------------------------------
{
rrc_eNB_ue_context_NB_t
temp
;
memset
(
&
temp
,
0
,
sizeof
(
struct
rrc_eNB_ue_context_NB_s
));
rrc_eNB_ue_context_NB_
IoT_
t
temp
;
memset
(
&
temp
,
0
,
sizeof
(
struct
rrc_eNB_ue_context_NB_
IoT_
s
));
/* eNB ue rrc id = 24 bits wide */
temp
.
ue_id_rnti
=
rntiP
;
return
RB_FIND
(
rrc_ue_tree_NB_s
,
&
rrc_instance_pP
->
rrc_ue_head
,
&
temp
);
return
RB_FIND
(
rrc_ue_tree_NB_
IoT_
s
,
&
rrc_instance_pP
->
rrc_ue_head
,
&
temp
);
}
//------------------------------------------------------------------------------
void
rrc_eNB_remove_ue_context_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
,
struct
rrc_eNB_ue_context_NB_s
*
ue_context_pP
)
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_pP
)
//------------------------------------------------------------------------------
{
if
(
rrc_instance_pP
==
NULL
)
{
...
...
@@ -326,7 +326,7 @@ void rrc_eNB_remove_ue_context_NB(
return
;
}
RB_REMOVE
(
rrc_ue_tree_NB_s
,
&
rrc_instance_pP
->
rrc_ue_head
,
ue_context_pP
);
RB_REMOVE
(
rrc_ue_tree_NB_
IoT_
s
,
&
rrc_instance_pP
->
rrc_ue_head
,
ue_context_pP
);
MSC_LOG_EVENT
(
MSC_RRC_ENB
,
...
...
openair2/RRC/LITE/rrc_eNB_UE_context.h
View file @
84c9c889
...
...
@@ -86,7 +86,7 @@ void rrc_eNB_remove_ue_context(
void
uid_linear_allocator_init_NB
(
uid_allocator_NB_t
*
const
uid_pP
uid_allocator_NB_
IoT_
t
*
const
uid_pP
);
...
...
@@ -103,16 +103,16 @@ uid_linear_allocator_free_NB(
int
rrc_eNB_compare_ue_rnti_id_NB
(
struct
rrc_eNB_ue_context_NB_
s
*
c1_pP
,
struct
rrc_eNB_ue_context_NB
_s
*
c2_pP
);
struct
rrc_eNB_ue_context_NB_
IoT_s
*
c1_pP
,
struct
rrc_eNB_ue_context_NB_IoT
_s
*
c2_pP
);
RB_PROTOTYPE
(
rrc_ue_tree_NB_
s
,
rrc_eNB_ue_context_NB
_s
,
entries
,
rrc_eNB_compare_ue_rnti_id_NB
);
RB_PROTOTYPE
(
rrc_ue_tree_NB_
IoT_s
,
rrc_eNB_ue_context_NB_IoT
_s
,
entries
,
rrc_eNB_compare_ue_rnti_id_NB
);
struct
rrc_eNB_ue_context_NB_s
*
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_allocate_new_UE_context_NB
(
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
);
struct
rrc_eNB_ue_context_NB_s
*
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
rrc_eNB_get_ue_context_NB
(
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
,
rnti_t
rntiP
);
...
...
@@ -120,6 +120,6 @@ rrc_eNB_get_ue_context_NB(
void
rrc_eNB_remove_ue_context_NB
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
eNB_RRC_INST_NB_IoT
*
rrc_instance_pP
,
struct
rrc_eNB_ue_context_NB_s
*
ue_context_pP
);
struct
rrc_eNB_ue_context_NB_
IoT_
s
*
ue_context_pP
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment