Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
83bb2ba9
Commit
83bb2ba9
authored
Dec 09, 2020
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop'
parents
14fcad87
8126d47d
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
129 additions
and
103 deletions
+129
-103
ci-scripts/cls_oaicitest.py
ci-scripts/cls_oaicitest.py
+1
-1
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
+1
-1
ci-scripts/xml_files/ue_band20_build.xml
ci-scripts/xml_files/ue_band20_build.xml
+1
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair1/SIMULATION/NR_PHY/ulschsim.c
openair1/SIMULATION/NR_PHY/ulschsim.c
+1
-1
openair2/COMMON/x2ap_messages_types.h
openair2/COMMON/x2ap_messages_types.h
+2
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+31
-17
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+0
-24
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+2
-0
openair2/LAYER2/MAC/ue_procedures.c
openair2/LAYER2/MAC/ue_procedures.c
+3
-0
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
+1
-1
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+10
-0
openair2/LAYER2/rlc_v2/rlc_oai_api.c
openair2/LAYER2/rlc_v2/rlc_oai_api.c
+24
-16
openair2/X2AP/x2ap_eNB.c
openair2/X2AP/x2ap_eNB.c
+11
-4
openair2/X2AP/x2ap_eNB_defs.h
openair2/X2AP/x2ap_eNB_defs.h
+1
-0
openair2/X2AP/x2ap_eNB_generate_messages.c
openair2/X2AP/x2ap_eNB_generate_messages.c
+37
-36
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+2
-0
No files found.
ci-scripts/cls_oaicitest.py
View file @
83bb2ba9
...
...
@@ -185,7 +185,7 @@ class OaiCiTest():
SSH
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
SSH
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# no need to remove in log (git clean did the trick)
SSH
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_ue.log'
,
'Bypassing the Tests|build have failed'
,
9
00
)
SSH
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_ue.log'
,
'Bypassing the Tests|build have failed'
,
12
00
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
buildStatus
=
True
...
...
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
View file @
83bb2ba9
...
...
@@ -32,7 +32,7 @@
<testCase
id=
"090101"
>
<class>
Build_OAI_UE
</class>
<desc>
Build OAI UE
</desc>
<Build_OAI_UE_args>
-w USRP --UE
</Build_OAI_UE_args>
<Build_OAI_UE_args>
-w USRP --UE
--ninja
</Build_OAI_UE_args>
</testCase>
</testCaseList>
ci-scripts/xml_files/ue_band20_build.xml
View file @
83bb2ba9
...
...
@@ -32,7 +32,7 @@
<testCase
id=
"090101"
>
<class>
Build_OAI_UE
</class>
<desc>
Build OAI UE
</desc>
<Build_OAI_UE_args>
-w USRP --UE
</Build_OAI_UE_args>
<Build_OAI_UE_args>
-w USRP --UE
--ninja
</Build_OAI_UE_args>
</testCase>
</testCaseList>
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
83bb2ba9
...
...
@@ -239,7 +239,7 @@ void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
if
(
decodeSuccess
)
{
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
ulsch_harq
->
c
[
r
],
rdata
->
Kr_bytes
-
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
rdata
->
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
else
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
...
...
openair1/SIMULATION/NR_PHY/ulschsim.c
View file @
83bb2ba9
...
...
@@ -81,7 +81,7 @@ int nr_postDecode_sim(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
if
(
decodeSuccess
)
{
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
ulsch_harq
->
c
[
r
],
rdata
->
Kr_bytes
-
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
rdata
->
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
else
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
int
nb
=
abortTpool
(
gNB
->
threadPool
,
req
->
key
);
...
...
openair2/COMMON/x2ap_messages_types.h
View file @
83bb2ba9
...
...
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
* CC Params
*/
int16_t
eutra_band
[
MAX_NUM_CCs
];
int32_t
nr_band
[
MAX_NUM_CCs
];
int32_t
nrARFCN
[
MAX_NUM_CCs
];
uint32_t
downlink_frequency
[
MAX_NUM_CCs
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
...
...
openair2/GNB_APP/gnb_config.c
View file @
83bb2ba9
...
...
@@ -34,6 +34,7 @@
#include "common/utils/LOG/log_extern.h"
#include "assertions.h"
#include "gnb_config.h"
#include "gnb_paramdef.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg_externs.h"
#include "intertask_interface.h"
...
...
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
}
int
RCconfig_NR_X2
(
MessageDef
*
msg_p
,
uint32_t
i
)
{
int
J
,
l
;
char
*
address
=
NULL
;
char
*
cidr
=
NULL
;
//int num_gnbs = 0;
//int num_component_carriers = 0;
int
j
,
k
=
0
;
int32_t
gnb_id
=
0
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
/* get global parameters, defined outside any section in the config file */
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
//paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0};
NR_ServingCellConfigCommon_t
*
scc
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
uint64_t
ssb_bitmap
=
0xff
;
memset
((
void
*
)
scc
,
0
,
sizeof
(
NR_ServingCellConfigCommon_t
));
prepare_scc
(
scc
);
paramdef_t
SCCsParams
[]
=
SCCPARAMS_DESC
(
scc
);
paramlist_def_t
SCCsParamList
=
{
GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON
,
NULL
,
0
};
AssertFatal
(
i
<
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
,
"Failed to parse config file %s, %uth attribute %s
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_ACTIVE_E
NBS
);
RC
.
config_file_name
,
i
,
GNB_CONFIG_STRING_ACTIVE_G
NBS
);
if
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
>
0
)
{
// Output a list of all gNBs.
...
...
@@ -1121,19 +1127,28 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
"MNC %d cannot be encoded in two digits as requested (change mnc_digit_length to 3)
\n
"
,
X2AP_REGISTER_ENB_REQ
(
msg_p
).
mnc
);
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
=
1
;
J
=
0
;
X2AP_REGISTER_ENB_REQ
(
msg_p
).
eutra_band
[
J
]
=
78
;
//ccparams_nr_x2.nr_band; //78
X2AP_REGISTER_ENB_REQ
(
msg_p
).
downlink_frequency
[
J
]
=
3600000000
;
//ccparams_nr_x2.downlink_frequency; //3600000000
X2AP_REGISTER_ENB_REQ
(
msg_p
).
uplink_frequency_offset
[
J
]
=
0
;
//(unsigned int) ccparams_nr_x2.uplink_frequency_offset; //0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
Nid_cell
[
J
]
=
0
;
//ccparams_nr_x2.Nid_cell; //0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
]
=
106
;
//ccparams_nr_x2.N_RB_DL; //106
X2AP_REGISTER_ENB_REQ
(
msg_p
).
frame_type
[
J
]
=
TDD
;
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
);
//Temp out
/*X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_DL[J] = to_earfcn_DL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency, ccparams_lte.N_RB_DL);
X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_UL[J] = to_earfcn_UL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency + ccparams_lte.uplink_frequency_offset, ccparams_lte.N_RB_DL);*/
config_getlist
(
&
SCCsParamList
,
NULL
,
0
,
aprefix
);
if
(
SCCsParamList
.
numelt
>
0
)
{
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
,
GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON
,
0
);
config_get
(
SCCsParams
,
sizeof
(
SCCsParams
)
/
sizeof
(
paramdef_t
),
aprefix
);
fix_scc
(
scc
,
ssb_bitmap
);
}
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
=
SCCsParamList
.
numelt
;
for
(
J
=
0
;
J
<
SCCsParamList
.
numelt
;
J
++
)
{
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nr_band
[
J
]
=
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
//nr_band; //78
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nrARFCN
[
J
]
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
;
X2AP_REGISTER_ENB_REQ
(
msg_p
).
uplink_frequency_offset
[
J
]
=
scc
->
uplinkConfigCommon
->
frequencyInfoUL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
offsetToCarrier
;
//0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
Nid_cell
[
J
]
=
*
scc
->
physCellId
;
//0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
]
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
carrierBandwidth
;
//106
X2AP_REGISTER_ENB_REQ
(
msg_p
).
frame_type
[
J
]
=
TDD
;
LOG_I
(
X2AP
,
"gNB configuration parameters: nr_band: %d, nr_ARFCN: %d, DL_RBs: %d, num_cc: %d
\n
"
,
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nr_band
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nrARFCN
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
);
}
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
k
);
config_getlist
(
&
X2ParamList
,
X2Params
,
sizeof
(
X2Params
)
/
sizeof
(
paramdef_t
),
aprefix
);
...
...
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
return
0
;
}
openair2/GNB_APP/gnb_paramdef.h
View file @
83bb2ba9
...
...
@@ -118,30 +118,6 @@ typedef enum {
#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUCCHTARGETPOWX10 "pucch_TargetSNRx10"
typedef
struct
ccparams_nr_x2
{
char
*
frame_type
;
int32_t
tdd_config
;
int32_t
tdd_config_s
;
int32_t
nr_band
;
long
long
int
downlink_frequency
;
int32_t
uplink_frequency_offset
;
int32_t
Nid_cell
;
int32_t
N_RB_DL
;
}
ccparams_nr_x2_t
;
#define CCPARAMS_NR_X2_DESC(ccparams) { \
{ENB_CONFIG_STRING_FRAME_TYPE, NULL, 0, strptr:&ccparams.frame_type, defstrval:"TDD", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG, NULL, 0, iptr:&ccparams.tdd_config, defintval:3, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG_S, NULL, 0, iptr:&ccparams.tdd_config_s, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_EUTRA_BAND, NULL, 0, iptr:&ccparams.nr_band, defintval:78, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DOWNLINK_FREQUENCY, NULL, 0, i64ptr:(int64_t *)&ccparams.downlink_frequency, defint64val:3600000000, TYPE_UINT64, 0}, \
{ENB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET, NULL, 0, iptr:&ccparams.uplink_frequency_offset, defintval:0, TYPE_INT, 0}, \
{ENB_CONFIG_STRING_NID_CELL, NULL, 0, iptr:&ccparams.Nid_cell, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_N_RB_DL, NULL, 0, iptr:&ccparams.N_RB_DL, defintval:106, TYPE_UINT, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* cell configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
83bb2ba9
...
...
@@ -914,7 +914,9 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
#if (!defined(PRE_SCD_THREAD))
if
(
!
NODE_IS_DU
(
RC
.
rrc
[
module_idP
]
->
node_type
))
{
void
rlc_tick
(
int
,
int
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frameP
,
subframeP
,
module_idP
);
rlc_tick
(
frameP
,
subframeP
);
pdcp_run
(
&
ctxt
);
pdcp_mbms_run
(
&
ctxt
);
rrc_rx_tx
(
&
ctxt
,
CC_id
);
...
...
openair2/LAYER2/MAC/ue_procedures.c
View file @
83bb2ba9
...
...
@@ -3099,6 +3099,9 @@ ue_scheduler(const module_id_t module_idP,
}
}
void
rlc_tick
(
int
,
int
);
rlc_tick
(
rxFrameP
%
1024
,
rxSubframeP
);
//#endif
UE_mac_inst
[
module_idP
].
txFrame
=
txFrameP
;
UE_mac_inst
[
module_idP
].
txSubframe
=
txSubframeP
;
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
View file @
83bb2ba9
...
...
@@ -40,7 +40,7 @@ void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int
{
nr_pdcp_entity_drb_am_t
*
entity
=
(
nr_pdcp_entity_drb_am_t
*
)
_entity
;
int
sn
;
char
buf
[
size
+
2
];
char
buf
[
size
+
3
];
sn
=
entity
->
common
.
next_nr_pdcp_tx_sn
;
...
...
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
View file @
83bb2ba9
...
...
@@ -923,3 +923,13 @@ void nr_rlc_tick(int frame, int subframe)
nr_rlc_current_time
++
;
}
}
/* This is a hack, to compile the gNB.
* TODO: remove it. The solution is to cleanup cmake_targets/CMakeLists.txt
*/
void
rlc_tick
(
int
a
,
int
b
)
{
LOG_E
(
RLC
,
"%s:%d:%s: this code should not be reached
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
openair2/LAYER2/rlc_v2/rlc_oai_api.c
View file @
83bb2ba9
...
...
@@ -177,14 +177,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
mac_rlc_status_resp_t
ret
;
rlc_entity_t
*
rb
;
/* TODO: handle time a bit more properly */
if
(
rlc_current_time_last_frame
!=
frameP
||
rlc_current_time_last_subframe
!=
subframeP
)
{
rlc_current_time
++
;
rlc_current_time_last_frame
=
frameP
;
rlc_current_time_last_subframe
=
subframeP
;
}
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
...
...
@@ -244,14 +236,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
exit
(
1
);
}
/* TODO: handle time a bit more properly */
if
(
rlc_current_time_last_frame
!=
frameP
||
rlc_current_time_last_subframe
!=
subframeP
)
{
rlc_current_time
++
;
rlc_current_time_last_frame
=
frameP
;
rlc_current_time_last_subframe
=
subframeP
;
}
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
...
...
@@ -1028,3 +1012,27 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x)
return
RLC_OP_STATUS_OK
;
}
void
rlc_tick
(
int
frame
,
int
subframe
)
{
int
expected_next_frame
;
int
expected_next_subframe
;
if
(
frame
!=
rlc_current_time_last_frame
||
subframe
!=
rlc_current_time_last_subframe
)
{
/* warn if discontinuity in ticks */
expected_next_subframe
=
(
rlc_current_time_last_subframe
+
1
)
%
10
;
if
(
expected_next_subframe
==
0
)
expected_next_frame
=
(
rlc_current_time_last_frame
+
1
)
%
1024
;
else
expected_next_frame
=
rlc_current_time_last_frame
;
if
(
expected_next_frame
!=
frame
||
expected_next_subframe
!=
subframe
)
LOG_W
(
RLC
,
"rlc_tick: discontinuity (expected %d.%d, got %d.%d)
\n
"
,
expected_next_frame
,
expected_next_subframe
,
frame
,
subframe
);
rlc_current_time
++
;
rlc_current_time_last_frame
=
frame
;
rlc_current_time_last_subframe
=
subframe
;
}
}
openair2/X2AP/x2ap_eNB.c
View file @
83bb2ba9
...
...
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
x2ap_register_eNB
->
t_dc_overall
);
for
(
int
i
=
0
;
i
<
x2ap_register_eNB
->
num_cc
;
i
++
)
{
new_instance
->
eutra_band
[
i
]
=
x2ap_register_eNB
->
eutra_band
[
i
];
new_instance
->
downlink_frequency
[
i
]
=
x2ap_register_eNB
->
downlink_frequency
[
i
];
if
(
new_instance
->
cell_type
==
CELL_MACRO_GNB
){
new_instance
->
nr_band
[
i
]
=
x2ap_register_eNB
->
nr_band
[
i
];
new_instance
->
tdd_nRARFCN
[
i
]
=
x2ap_register_eNB
->
nrARFCN
[
i
];
}
else
{
new_instance
->
eutra_band
[
i
]
=
x2ap_register_eNB
->
eutra_band
[
i
];
new_instance
->
downlink_frequency
[
i
]
=
x2ap_register_eNB
->
downlink_frequency
[
i
];
new_instance
->
fdd_earfcn_DL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_DL
[
i
];
new_instance
->
fdd_earfcn_UL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_UL
[
i
];
}
new_instance
->
uplink_frequency_offset
[
i
]
=
x2ap_register_eNB
->
uplink_frequency_offset
[
i
];
new_instance
->
Nid_cell
[
i
]
=
x2ap_register_eNB
->
Nid_cell
[
i
];
new_instance
->
N_RB_DL
[
i
]
=
x2ap_register_eNB
->
N_RB_DL
[
i
];
new_instance
->
frame_type
[
i
]
=
x2ap_register_eNB
->
frame_type
[
i
];
new_instance
->
fdd_earfcn_DL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_DL
[
i
];
new_instance
->
fdd_earfcn_UL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_UL
[
i
];
}
DevCheck
(
x2ap_register_eNB
->
nb_x2
<=
X2AP_MAX_NB_ENB_IP_ADDRESS
,
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
83bb2ba9
...
...
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
//#ifdef Rel15
int32_t
nr_band
[
MAX_NUM_CCs
];
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
//#endif
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
83bb2ba9
...
...
@@ -39,7 +39,6 @@
#include "x2ap_ids.h"
#include "x2ap_eNB_itti_messaging.h"
#include "X2AP_SupportedSULFreqBandItem.h"
#include "msc.h"
#include "assertions.h"
...
...
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
X2AP_En_gNB_ENDCX2SetupReqIEs_t
*
ie_GNB_ENDC
;
X2AP_PLMN_Identity_t
*
plmn
;
ServedNRcellsENDCX2ManagementList__Member
*
servedCellMember
;
X2AP_SupportedSULFreqBandItem_t
*
SULFreqBandItem
;
uint8_t
*
buffer
;
uint32_t
len
;
...
...
@@ -1284,8 +1282,8 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
ie_GNB_ENDC
->
value
.
present
=
X2AP_En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList
;
{
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
{
servedCellMember
->
servedNRCellInfo
.
nrpCI
=
instance_p
->
Nid_cell
[
i
];
...
...
@@ -1299,60 +1297,63 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
NR_FIVEGS_TAC_ID_TO_BIT_STRING
(
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
);
X2AP_INFO
(
"TAC: %d -> %02x%02x%02x
\n
"
,
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
plmn
=
(
X2AP_PLMN_Identity_t
*
)
calloc
(
1
,
sizeof
(
X2AP_PLMN_Identity_t
));
{
MCC_MNC_TO_PLMNID
(
instance_p
->
mcc
,
instance_p
->
mnc
,
instance_p
->
mnc_digit_length
,
plmn
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
broadcastPLMNs
.
list
,
plmn
);
}
if
(
instance_p
->
frame_type
[
i
]
==
TDD
)
{
if
(
instance_p
->
frame_type
[
i
]
==
TDD
)
{
X2AP_FreqBandNrItem_t
*
freq_band
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
present
=
X2AP_ServedNRCell_Information__nrModeInfo_PR_tdd
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
nRARFCN
=
0
;
//
instance_p->tdd_nRARFCN[i];
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
nRARFCN
=
instance_p
->
tdd_nRARFCN
[
i
];
/* addition of Frequency Band List */
freq_band
=
calloc
(
1
,
sizeof
(
X2AP_FreqBandNrItem_t
));
if
(
freq_band
==
NULL
)
exit
(
1
);
freq_band
->
freqBandIndicatorNr
=
instance_p
->
eutra_band
[
0
];
SULFreqBandItem
=
calloc
(
1
,
sizeof
(
X2AP_SupportedSULFreqBandItem_t
));
SULFreqBandItem
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
ASN_SEQUENCE_ADD
(
&
freq_band
->
supportedSULBandList
.
list
,
SULFreqBandItem
);
freq_band
->
freqBandIndicatorNr
=
instance_p
->
nr_band
[
i
];
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
freqBandListNr
,
freq_band
);
switch
(
instance_p
->
N_RB_DL
[
i
])
{
case
50
:
//This is not correct. Just to be able to test X2 only using an eNB instead of gNB
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb51
;
break
;
case
93
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
break
;
case
106
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
break
;
case
121
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
break
;
/*More cases to be added */
default:
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
case
32
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb32
;
break
;
case
66
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb66
;
break
;
case
93
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
break
;
case
106
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
break
;
case
121
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
break
;
case
217
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb217
;
break
;
case
273
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb273
;
break
;
/*More cases to be added */
default:
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
break
;
}
}
}
}
else
{
AssertFatal
(
0
,
"ENDC_X2Setuprequest not supported for FDD!"
);
}
/*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
INT8_TO_OCTET_STRING
(
0
,
&
servedCellMember
->
servedNRCellInfo
.
measurementTimingConfiguration
);
/*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
INT8_TO_OCTET_STRING
(
0
,
&
servedCellMember
->
servedNRCellInfo
.
measurementTimingConfiguration
);
}
ASN_SEQUENCE_ADD
(
&
ie_GNB_ENDC
->
value
.
choice
.
ServedNRcellsENDCX2ManagementList
.
list
,
servedCellMember
);
}
}
}
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
InitiatingNodeType_EndcX2Setup
.
choice
.
init_en_gNB
.
list
,
ie_GNB_ENDC
);
...
...
targets/RT/USER/lte-ru.c
View file @
83bb2ba9
...
...
@@ -2017,6 +2017,7 @@ void *ru_thread_synch(void *arg) {
#if defined(PRE_SCD_THREAD)
void
*
pre_scd_thread
(
void
*
param
)
{
void
rlc_tick
(
int
,
int
);
static
int
eNB_pre_scd_status
;
protocol_ctxt_t
ctxt
;
int
frame
;
...
...
@@ -2051,6 +2052,7 @@ void *pre_scd_thread( void *param ) {
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
ru
->
proc
.
mutex_pre_scd
))
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
Mod_id
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frame
,
subframe
,
Mod_id
);
rlc_tick
(
frame
,
subframe
);
pdcp_run
(
&
ctxt
);
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
...
...
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