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
ZhouShuya
OpenXG-RAN
Commits
279a721d
Commit
279a721d
authored
Nov 30, 2020
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/remove_x2_gnb_hardcoding' into integration_2020_wk49
parents
cfdd0b22
d36879e4
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
83 additions
and
82 deletions
+83
-82
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/nr_pdcp/nr_pdcp_entity_drb_am.c
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
+1
-1
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
No files found.
openair2/COMMON/x2ap_messages_types.h
View file @
279a721d
...
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
...
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
* CC Params
* CC Params
*/
*/
int16_t
eutra_band
[
MAX_NUM_CCs
];
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
];
uint32_t
downlink_frequency
[
MAX_NUM_CCs
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
...
...
openair2/GNB_APP/gnb_config.c
View file @
279a721d
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "common/utils/LOG/log_extern.h"
#include "common/utils/LOG/log_extern.h"
#include "assertions.h"
#include "assertions.h"
#include "gnb_config.h"
#include "gnb_config.h"
#include "gnb_paramdef.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg_externs.h"
#include "UTIL/OTG/otg_externs.h"
#include "intertask_interface.h"
#include "intertask_interface.h"
...
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
...
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
}
}
int
RCconfig_NR_X2
(
MessageDef
*
msg_p
,
uint32_t
i
)
{
int
RCconfig_NR_X2
(
MessageDef
*
msg_p
,
uint32_t
i
)
{
int
J
,
l
;
int
J
,
l
;
char
*
address
=
NULL
;
char
*
address
=
NULL
;
char
*
cidr
=
NULL
;
char
*
cidr
=
NULL
;
//int num_gnbs = 0;
//int num_gnbs = 0;
//int num_component_carriers = 0;
//int num_component_carriers = 0;
int
j
,
k
=
0
;
int
j
,
k
=
0
;
int32_t
gnb_id
=
0
;
int32_t
gnb_id
=
0
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
/* get global parameters, defined outside any section in the config file */
/* get global parameters, defined outside any section in the config file */
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
NR_ServingCellConfigCommon_t
*
scc
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
//paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0};
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
,
AssertFatal
(
i
<
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
,
"Failed to parse config file %s, %uth attribute %s
\n
"
,
"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
)
{
if
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
>
0
)
{
// Output a list of all gNBs.
// Output a list of all gNBs.
...
@@ -1121,19 +1127,28 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
...
@@ -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
"
,
"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
).
mnc
);
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
=
1
;
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
);
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
;
//Temp out
config_getlist
(
&
SCCsParamList
,
NULL
,
0
,
aprefix
);
/*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);
if
(
SCCsParamList
.
numelt
>
0
)
{
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);*/
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
);
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
k
);
config_getlist
(
&
X2ParamList
,
X2Params
,
sizeof
(
X2Params
)
/
sizeof
(
paramdef_t
),
aprefix
);
config_getlist
(
&
X2ParamList
,
X2Params
,
sizeof
(
X2Params
)
/
sizeof
(
paramdef_t
),
aprefix
);
...
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
...
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
return
0
;
return
0
;
}
}
openair2/GNB_APP/gnb_paramdef.h
View file @
279a721d
...
@@ -118,30 +118,6 @@ typedef enum {
...
@@ -118,30 +118,6 @@ typedef enum {
#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUCCHTARGETPOWX10 "pucch_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 */
/* cell configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
View file @
279a721d
...
@@ -40,7 +40,7 @@ void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int
...
@@ -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
;
nr_pdcp_entity_drb_am_t
*
entity
=
(
nr_pdcp_entity_drb_am_t
*
)
_entity
;
int
sn
;
int
sn
;
char
buf
[
size
+
2
];
char
buf
[
size
+
3
];
sn
=
entity
->
common
.
next_nr_pdcp_tx_sn
;
sn
=
entity
->
common
.
next_nr_pdcp_tx_sn
;
...
...
openair2/X2AP/x2ap_eNB.c
View file @
279a721d
...
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
...
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
x2ap_register_eNB
->
t_dc_overall
);
x2ap_register_eNB
->
t_dc_overall
);
for
(
int
i
=
0
;
i
<
x2ap_register_eNB
->
num_cc
;
i
++
)
{
for
(
int
i
=
0
;
i
<
x2ap_register_eNB
->
num_cc
;
i
++
)
{
new_instance
->
eutra_band
[
i
]
=
x2ap_register_eNB
->
eutra_band
[
i
];
if
(
new_instance
->
cell_type
==
CELL_MACRO_GNB
){
new_instance
->
downlink_frequency
[
i
]
=
x2ap_register_eNB
->
downlink_frequency
[
i
];
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
->
uplink_frequency_offset
[
i
]
=
x2ap_register_eNB
->
uplink_frequency_offset
[
i
];
new_instance
->
Nid_cell
[
i
]
=
x2ap_register_eNB
->
Nid_cell
[
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
->
N_RB_DL
[
i
]
=
x2ap_register_eNB
->
N_RB_DL
[
i
];
new_instance
->
frame_type
[
i
]
=
x2ap_register_eNB
->
frame_type
[
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
,
DevCheck
(
x2ap_register_eNB
->
nb_x2
<=
X2AP_MAX_NB_ENB_IP_ADDRESS
,
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
279a721d
...
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
...
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
//#ifdef Rel15
//#ifdef Rel15
int32_t
nr_band
[
MAX_NUM_CCs
];
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
//#endif
//#endif
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
279a721d
...
@@ -39,7 +39,6 @@
...
@@ -39,7 +39,6 @@
#include "x2ap_ids.h"
#include "x2ap_ids.h"
#include "x2ap_eNB_itti_messaging.h"
#include "x2ap_eNB_itti_messaging.h"
#include "X2AP_SupportedSULFreqBandItem.h"
#include "msc.h"
#include "msc.h"
#include "assertions.h"
#include "assertions.h"
...
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
...
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
X2AP_En_gNB_ENDCX2SetupReqIEs_t
*
ie_GNB_ENDC
;
X2AP_En_gNB_ENDCX2SetupReqIEs_t
*
ie_GNB_ENDC
;
X2AP_PLMN_Identity_t
*
plmn
;
X2AP_PLMN_Identity_t
*
plmn
;
ServedNRcellsENDCX2ManagementList__Member
*
servedCellMember
;
ServedNRcellsENDCX2ManagementList__Member
*
servedCellMember
;
X2AP_SupportedSULFreqBandItem_t
*
SULFreqBandItem
;
uint8_t
*
buffer
;
uint8_t
*
buffer
;
uint32_t
len
;
uint32_t
len
;
...
@@ -1284,8 +1282,8 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
...
@@ -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
;
ie_GNB_ENDC
->
value
.
present
=
X2AP_En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList
;
{
{
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
{
{
servedCellMember
->
servedNRCellInfo
.
nrpCI
=
instance_p
->
Nid_cell
[
i
];
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
...
@@ -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
);
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
,
X2AP_INFO
(
"TAC: %d -> %02x%02x%02x
\n
"
,
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
plmn
=
(
X2AP_PLMN_Identity_t
*
)
calloc
(
1
,
sizeof
(
X2AP_PLMN_Identity_t
));
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
);
MCC_MNC_TO_PLMNID
(
instance_p
->
mcc
,
instance_p
->
mnc
,
instance_p
->
mnc_digit_length
,
plmn
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
broadcastPLMNs
.
list
,
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
;
X2AP_FreqBandNrItem_t
*
freq_band
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
present
=
X2AP_ServedNRCell_Information__nrModeInfo_PR_tdd
;
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 */
/* addition of Frequency Band List */
freq_band
=
calloc
(
1
,
sizeof
(
X2AP_FreqBandNrItem_t
));
freq_band
=
calloc
(
1
,
sizeof
(
X2AP_FreqBandNrItem_t
));
if
(
freq_band
==
NULL
)
if
(
freq_band
==
NULL
)
exit
(
1
);
exit
(
1
);
freq_band
->
freqBandIndicatorNr
=
instance_p
->
eutra_band
[
0
];
freq_band
->
freqBandIndicatorNr
=
instance_p
->
nr_band
[
i
];
SULFreqBandItem
=
calloc
(
1
,
sizeof
(
X2AP_SupportedSULFreqBandItem_t
));
SULFreqBandItem
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
ASN_SEQUENCE_ADD
(
&
freq_band
->
supportedSULBandList
.
list
,
SULFreqBandItem
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
freqBandListNr
,
freq_band
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
freqBandListNr
,
freq_band
);
switch
(
instance_p
->
N_RB_DL
[
i
])
{
switch
(
instance_p
->
N_RB_DL
[
i
])
{
case
50
:
case
32
:
//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_nrb32
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb51
;
break
;
break
;
case
66
:
case
93
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb66
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
break
;
break
;
case
93
:
case
106
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
break
;
break
;
case
106
:
case
121
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
break
;
break
;
case
121
:
/*More cases to be added */
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
default:
break
;
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
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
;
break
;
}
}
}
}
else
{
else
{
AssertFatal
(
0
,
"ENDC_X2Setuprequest not supported for FDD!"
);
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 */
/*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
);
INT8_TO_OCTET_STRING
(
0
,
&
servedCellMember
->
servedNRCellInfo
.
measurementTimingConfiguration
);
}
}
ASN_SEQUENCE_ADD
(
&
ie_GNB_ENDC
->
value
.
choice
.
ServedNRcellsENDCX2ManagementList
.
list
,
servedCellMember
);
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
);
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
InitiatingNodeType_EndcX2Setup
.
choice
.
init_en_gNB
.
list
,
ie_GNB_ENDC
);
...
...
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