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
alex037yang
OpenXG-RAN
Commits
70135e1c
Commit
70135e1c
authored
Sep 30, 2020
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/nsa_remove_band_hardcodings' into integration_2020_wk39
parents
1d583c14
72b53688
Changes
16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
237 additions
and
104 deletions
+237
-104
ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf
ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf
+2
-0
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-1
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+2
-0
openair2/COMMON/x2ap_messages_def.h
openair2/COMMON/x2ap_messages_def.h
+1
-0
openair2/COMMON/x2ap_messages_types.h
openair2/COMMON/x2ap_messages_types.h
+9
-4
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+2
-0
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+6
-1
openair2/RRC/LTE/MESSAGES/asn1_msg.c
openair2/RRC/LTE/MESSAGES/asn1_msg.c
+67
-6
openair2/RRC/LTE/MESSAGES/asn1_msg.h
openair2/RRC/LTE/MESSAGES/asn1_msg.h
+6
-4
openair2/RRC/LTE/rrc_defs.h
openair2/RRC/LTE/rrc_defs.h
+4
-0
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+38
-4
openair2/RRC/LTE/rrc_proto.h
openair2/RRC/LTE/rrc_proto.h
+2
-0
openair2/X2AP/x2ap_eNB_defs.h
openair2/X2AP/x2ap_eNB_defs.h
+2
-0
openair2/X2AP/x2ap_eNB_generate_messages.c
openair2/X2AP/x2ap_eNB_generate_messages.c
+1
-1
openair2/X2AP/x2ap_eNB_handler.c
openair2/X2AP/x2ap_eNB_handler.c
+91
-83
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
+3
-0
No files found.
ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf
View file @
70135e1c
...
@@ -144,6 +144,8 @@ eNBs =
...
@@ -144,6 +144,8 @@ eNBs =
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
//
SSB
central
frequency
of
NR
secondary
cell
group
(
for
ENDC
NSA
)
nr_scg_ssb_freq
=
641272
;
}
}
);
);
...
...
cmake_targets/CMakeLists.txt
View file @
70135e1c
...
@@ -2772,7 +2772,7 @@ if (NOT ${NOS1})
...
@@ -2772,7 +2772,7 @@ if (NOT ${NOS1})
endif
()
endif
()
target_link_libraries
(
lte-uesoftmodem
target_link_libraries
(
lte-uesoftmodem
-Wl,--start-group
-Wl,--start-group
RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP F1AP_LIB
RRC_LIB
NR_RRC_LIB
S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP F1AP_LIB
GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
ATLAS_LIBRARIES
}
${
MSC_LIB
}
${
RAL_LIB
}
${
NAS_UE_LIB
}
${
ITTI_LIB
}
${
FLPT_MSG_LIB
}
${
ASYNC_IF_LIB
}
${
ATLAS_LIBRARIES
}
...
...
openair2/COMMON/rrc_messages_types.h
View file @
70135e1c
...
@@ -323,6 +323,8 @@ typedef struct RrcConfigurationReq_s {
...
@@ -323,6 +323,8 @@ typedef struct RrcConfigurationReq_s {
char
*
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
MAX_NUM_CCs
];
char
*
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_buf
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_size
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
long
discRxPoolPS_ResourceConfig_subframeBitmap_choice_bs_bits_unused
[
MAX_NUM_CCs
];
//Nr secondary cell group SSB central frequency (for ENDC NSA)
int
nr_scg_ssb_freq
;
}
RrcConfigurationReq
;
}
RrcConfigurationReq
;
#define MAX_NUM_NBIOT_CELEVELS 3
#define MAX_NUM_NBIOT_CELEVELS 3
...
...
openair2/COMMON/x2ap_messages_def.h
View file @
70135e1c
...
@@ -52,6 +52,7 @@ MESSAGE_DEF(X2AP_UE_CONTEXT_RELEASE , MESSAGE_PRIORITY_MED, x2ap_ue_
...
@@ -52,6 +52,7 @@ MESSAGE_DEF(X2AP_UE_CONTEXT_RELEASE , MESSAGE_PRIORITY_MED, x2ap_ue_
MESSAGE_DEF
(
X2AP_SENB_ADDITION_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_senb_addition_req_t
,
x2ap_senb_addition_req
)
MESSAGE_DEF
(
X2AP_SENB_ADDITION_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_senb_addition_req_t
,
x2ap_senb_addition_req
)
/* SGnb bearer addition messages X2AP <-> RRC */
/* SGnb bearer addition messages X2AP <-> RRC */
MESSAGE_DEF
(
X2AP_ENDC_SETUP_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_setup_req_t
,
x2ap_ENDC_setup_req
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_ADDITION_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_sgnb_addition_req_t
,
x2ap_ENDC_sgnb_addition_req
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_ADDITION_REQ
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_sgnb_addition_req_t
,
x2ap_ENDC_sgnb_addition_req
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_sgnb_addition_req_ACK_t
,
x2ap_ENDC_sgnb_addition_req_ACK
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_sgnb_addition_req_ACK_t
,
x2ap_ENDC_sgnb_addition_req_ACK
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_RECONF_COMPLETE
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_reconf_complete_t
,
x2ap_ENDC_sgnb_reconf_complete
)
MESSAGE_DEF
(
X2AP_ENDC_SGNB_RECONF_COMPLETE
,
MESSAGE_PRIORITY_MED
,
x2ap_ENDC_reconf_complete_t
,
x2ap_ENDC_sgnb_reconf_complete
)
...
...
openair2/COMMON/x2ap_messages_types.h
View file @
70135e1c
...
@@ -34,6 +34,7 @@ typedef enum {
...
@@ -34,6 +34,7 @@ typedef enum {
//-------------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------------//
// Defines to access message fields.
// Defines to access message fields.
#define X2AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_register_enb_req
#define X2AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_register_enb_req
#define X2AP_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_req
#define X2AP_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_req
#define X2AP_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_resp
#define X2AP_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_resp
...
@@ -51,6 +52,7 @@ typedef enum {
...
@@ -51,6 +52,7 @@ typedef enum {
#define X2AP_ENDC_SGNB_RELEASE_REQUIRED(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_sgnb_release_required
#define X2AP_ENDC_SGNB_RELEASE_REQUIRED(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_sgnb_release_required
#define X2AP_ENDC_DC_PREP_TIMEOUT(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_dc_prep_timeout
#define X2AP_ENDC_DC_PREP_TIMEOUT(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_dc_prep_timeout
#define X2AP_ENDC_DC_OVERALL_TIMEOUT(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_dc_overall_timeout
#define X2AP_ENDC_DC_OVERALL_TIMEOUT(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_dc_overall_timeout
#define X2AP_ENDC_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.x2ap_ENDC_setup_req
#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
...
@@ -300,10 +302,6 @@ typedef struct x2ap_senb_addition_req_s {
...
@@ -300,10 +302,6 @@ typedef struct x2ap_senb_addition_req_s {
}
x2ap_senb_addition_req_t
;
}
x2ap_senb_addition_req_t
;
//Panos: Have to see what should be the additional/different elements comparing to handover req ack
typedef
struct
x2ap_senb_addition_req_ack_s
{
typedef
struct
x2ap_senb_addition_req_ack_s
{
int
MeNB_UE_X2_id
;
int
MeNB_UE_X2_id
;
...
@@ -325,6 +323,13 @@ typedef struct x2ap_senb_addition_req_ack_s {
...
@@ -325,6 +323,13 @@ typedef struct x2ap_senb_addition_req_ack_s {
}
x2ap_senb_addition_req_ack_t
;
}
x2ap_senb_addition_req_ack_t
;
typedef
struct
x2ap_ENDC_setup_req_s
{
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
int
num_cc
;
uint32_t
servedNrCell_band
[
MAX_NUM_CCs
];
}
x2ap_ENDC_setup_req_t
;
typedef
struct
x2ap_ENDC_sgnb_addition_req_s
{
typedef
struct
x2ap_ENDC_sgnb_addition_req_s
{
int
ue_x2_id
;
int
ue_x2_id
;
LTE_PhysCellId_t
target_physCellId
;
LTE_PhysCellId_t
target_physCellId
;
...
...
openair2/ENB_APP/enb_config.c
View file @
70135e1c
...
@@ -1576,6 +1576,8 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
...
@@ -1576,6 +1576,8 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
}
// !NODE_IS_DU(node_type)
}
// !NODE_IS_DU(node_type)
}
}
RRC_CONFIGURATION_REQ
(
msg_p
).
nr_scg_ssb_freq
=
ccparams_lte
.
nr_scg_ssb_freq
;
if
(
!
NODE_IS_DU
(
rrc
->
node_type
))
{
if
(
!
NODE_IS_DU
(
rrc
->
node_type
))
{
char
srb1path
[
MAX_OPTNAME_SIZE
*
2
+
8
];
char
srb1path
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
srb1path
,
"%s.%s"
,
enbpath
,
ENB_CONFIG_STRING_SRB1
);
sprintf
(
srb1path
,
"%s.%s"
,
enbpath
,
ENB_CONFIG_STRING_SRB1
);
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
70135e1c
...
@@ -429,6 +429,9 @@ typedef enum {
...
@@ -429,6 +429,9 @@ typedef enum {
//SIB1-MBMS
//SIB1-MBMS
#define ENB_CONFIG_STRING_MBMS_DEDICATED_SERVING_CELL "mbms_dedicated_serving_cell"
#define ENB_CONFIG_STRING_MBMS_DEDICATED_SERVING_CELL "mbms_dedicated_serving_cell"
//NSA NR Cell SSB Absolute Frequency
#define ENB_CONFIG_STRING_NR_SCG_SSB_FREQ "nr_scg_ssb_freq"
#define ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13 "pdsch_maxNumRepetitionCEmodeA_r13"
#define ENB_CONFIG_STRING_PDSCH_MAX_NUM_REPETITION_CE_MODE_A_R13 "pdsch_maxNumRepetitionCEmodeA_r13"
...
@@ -577,6 +580,7 @@ typedef struct ccparams_lte_s {
...
@@ -577,6 +580,7 @@ typedef struct ccparams_lte_s {
int32_t
srb1_poll_pdu
;
int32_t
srb1_poll_pdu
;
int32_t
srb1_poll_byte
;
int32_t
srb1_poll_byte
;
int32_t
srb1_max_retx_threshold
;
int32_t
srb1_max_retx_threshold
;
int32_t
nr_scg_ssb_freq
;
}
ccparams_lte_t
;
}
ccparams_lte_t
;
#define CCPARAMS_CHECK { \
#define CCPARAMS_CHECK { \
...
@@ -780,7 +784,8 @@ typedef struct ccparams_lte_s {
...
@@ -780,7 +784,8 @@ typedef struct ccparams_lte_s {
{ENB_CONFIG_STRING_UETIMERS_N311, NULL, 0, iptr:&ccparams.ue_TimersAndConstants_n311, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UETIMERS_N311, NULL, 0, iptr:&ccparams.ue_TimersAndConstants_n311, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&ccparams.ue_TransmissionMode, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UE_TRANSMISSION_MODE, NULL, 0, iptr:&ccparams.ue_TransmissionMode, defintval:1, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UE_MULTIPLE_MAX, NULL, 0, iptr:&ccparams.ue_multiple_max, defintval:4, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_UE_MULTIPLE_MAX, NULL, 0, iptr:&ccparams.ue_multiple_max, defintval:4, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_MBMS_DEDICATED_SERVING_CELL, NULL, 0, strptr:&ccparams.mbms_dedicated_serving_cell, defstrval:"DISABLE", TYPE_STRING, 0} \
{ENB_CONFIG_STRING_MBMS_DEDICATED_SERVING_CELL, NULL, 0, strptr:&ccparams.mbms_dedicated_serving_cell, defstrval:"DISABLE", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_NR_SCG_SSB_FREQ, NULL, 0, iptr:&ccparams.nr_scg_ssb_freq, defintval:641272, TYPE_INT, 0} \
}
}
...
...
openair2/RRC/LTE/MESSAGES/asn1_msg.c
View file @
70135e1c
...
@@ -99,6 +99,7 @@
...
@@ -99,6 +99,7 @@
#include "intertask_interface.h"
#include "intertask_interface.h"
#include "NR_FreqBandList.h"
#include "common/ran_context.h"
#include "common/ran_context.h"
...
@@ -3199,9 +3200,13 @@ uint8_t do_SecurityModeCommand(
...
@@ -3199,9 +3200,13 @@ uint8_t do_SecurityModeCommand(
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
uint8_t
do_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
do_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
*
const
buffer
,
uint8_t
*
const
buffer
,
const
uint8_t
Transaction_id
)
const
uint8_t
Transaction_id
,
int16_t
eutra_band
,
uint32_t
nr_band
)
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
{
{
NR_FreqBandList_t
*
nsa_band_list
;
NR_FreqBandInformation_t
*
nsa_band
;
LTE_DL_DCCH_Message_t
dl_dcch_msg
;
LTE_DL_DCCH_Message_t
dl_dcch_msg
;
LTE_RAT_Type_t
rat
=
LTE_RAT_Type_eutra
;
LTE_RAT_Type_t
rat
=
LTE_RAT_Type_eutra
;
asn_enc_rval_t
enc_rval
;
asn_enc_rval_t
enc_rval
;
...
@@ -3238,8 +3243,36 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
...
@@ -3238,8 +3243,36 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
/* TODO: no hardcoded values here */
/* TODO: no hardcoded values here */
nsa_band_list
=
(
NR_FreqBandList_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandList_t
));
nsa_band
=
(
NR_FreqBandInformation_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformation_t
));
nsa_band
->
present
=
NR_FreqBandInformation_PR_bandInformationEUTRA
;
nsa_band
->
choice
.
bandInformationEUTRA
=
(
NR_FreqBandInformationEUTRA_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformationEUTRA_t
));
nsa_band
->
choice
.
bandInformationEUTRA
->
bandEUTRA
=
eutra_band
;
ASN_SEQUENCE_ADD
(
&
nsa_band_list
->
list
,
nsa_band
);
nsa_band
=
(
NR_FreqBandInformation_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformation_t
));
nsa_band
->
present
=
NR_FreqBandInformation_PR_bandInformationNR
;
nsa_band
->
choice
.
bandInformationNR
=
(
NR_FreqBandInformationNR_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformationNR_t
));
if
(
nr_band
>
0
)
nsa_band
->
choice
.
bandInformationNR
->
bandNR
=
nr_band
;
else
nsa_band
->
choice
.
bandInformationNR
->
bandNR
=
78
;
ASN_SEQUENCE_ADD
(
&
nsa_band_list
->
list
,
nsa_band
);
OCTET_STRING_t
req_freq
;
OCTET_STRING_t
req_freq
;
unsigned
char
req_freq_buf
[
5
]
=
{
0x00
,
0x20
,
0x1a
,
0x02
,
0x68
};
// bands 7 & nr78
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x02, 0x68 }; // bands 7 & nr78
unsigned
char
req_freq_buf
[
1024
];
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_FreqBandList
,
NULL
,
(
void
*
)
nsa_band_list
,
req_freq_buf
,
1024
);
xer_fprint
(
stdout
,
&
asn_DEF_NR_FreqBandList
,
(
void
*
)
nsa_band_list
);
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260
//unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 };
//unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 };
...
@@ -3248,7 +3281,7 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
...
@@ -3248,7 +3281,7 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
// };
// };
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
size
=
5
;
req_freq
.
size
=
(
enc_rval
.
encoded
+
7
)
/
8
;
// req_freq.size = 21;
// req_freq.size = 21;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
...
@@ -3287,9 +3320,13 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
...
@@ -3287,9 +3320,13 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
uint8_t
do_NR_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
do_NR_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
*
const
buffer
,
uint8_t
*
const
buffer
,
const
uint8_t
Transaction_id
)
const
uint8_t
Transaction_id
,
int16_t
eutra_band
,
uint32_t
nr_band
)
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
{
{
NR_FreqBandList_t
*
nsa_band_list
;
NR_FreqBandInformation_t
*
nsa_band
;
LTE_DL_DCCH_Message_t
dl_dcch_msg
;
LTE_DL_DCCH_Message_t
dl_dcch_msg
;
LTE_RAT_Type_t
rat_nr
=
LTE_RAT_Type_nr
;
LTE_RAT_Type_t
rat_nr
=
LTE_RAT_Type_nr
;
LTE_RAT_Type_t
rat_eutra_nr
=
LTE_RAT_Type_eutra_nr
;
LTE_RAT_Type_t
rat_eutra_nr
=
LTE_RAT_Type_eutra_nr
;
...
@@ -3329,8 +3366,32 @@ uint8_t do_NR_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
...
@@ -3329,8 +3366,32 @@ uint8_t do_NR_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
/* TODO: no hardcoded values here */
/* TODO: no hardcoded values here */
nsa_band_list
=
(
NR_FreqBandList_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandList_t
));
nsa_band
=
(
NR_FreqBandInformation_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformation_t
));
nsa_band
->
present
=
NR_FreqBandInformation_PR_bandInformationEUTRA
;
nsa_band
->
choice
.
bandInformationEUTRA
=
(
NR_FreqBandInformationEUTRA_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformationEUTRA_t
));
nsa_band
->
choice
.
bandInformationEUTRA
->
bandEUTRA
=
eutra_band
;
ASN_SEQUENCE_ADD
(
&
nsa_band_list
->
list
,
nsa_band
);
nsa_band
=
(
NR_FreqBandInformation_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformation_t
));
nsa_band
->
present
=
NR_FreqBandInformation_PR_bandInformationNR
;
nsa_band
->
choice
.
bandInformationNR
=
(
NR_FreqBandInformationNR_t
*
)
calloc
(
1
,
sizeof
(
NR_FreqBandInformationNR_t
));
if
(
nr_band
>
0
)
nsa_band
->
choice
.
bandInformationNR
->
bandNR
=
nr_band
;
else
nsa_band
->
choice
.
bandInformationNR
->
bandNR
=
78
;
ASN_SEQUENCE_ADD
(
&
nsa_band_list
->
list
,
nsa_band
);
OCTET_STRING_t
req_freq
;
OCTET_STRING_t
req_freq
;
unsigned
char
req_freq_buf
[
5
]
=
{
0x00
,
0x20
,
0x1a
,
0x02
,
0x68
};
// bands 7 & nr78
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x02, 0x68 }; // bands 7 & nr78
unsigned
char
req_freq_buf
[
100
];
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_FreqBandList
,
NULL
,
(
void
*
)
nsa_band_list
,
req_freq_buf
,
1024
);
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260
//unsigned char req_freq_buf[5] = { 0x00, 0x20, 0x1a, 0x08, 0x18 }; // bands 7 & nr260
//unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 };
//unsigned char req_freq_buf[13] = { 0x00, 0xc0, 0x18, 0x01, 0x01, 0x30, 0x4b, 0x04, 0x0e, 0x08, 0x24, 0x04, 0xd0 };
...
@@ -3339,7 +3400,7 @@ uint8_t do_NR_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
...
@@ -3339,7 +3400,7 @@ uint8_t do_NR_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
// };
// };
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
size
=
5
;
req_freq
.
size
=
(
enc_rval
.
encoded
+
7
)
/
8
;
// req_freq.size = 21;
// req_freq.size = 21;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
...
...
openair2/RRC/LTE/MESSAGES/asn1_msg.h
View file @
70135e1c
...
@@ -359,15 +359,17 @@ uint8_t
...
@@ -359,15 +359,17 @@ uint8_t
do_UECapabilityEnquiry
(
do_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
*
const
buffer
,
uint8_t
*
const
buffer
,
const
uint8_t
Transaction_id
const
uint8_t
Transaction_id
,
);
int16_t
eutra_band
,
uint32_t
nr_band
);
uint8_t
uint8_t
do_NR_UECapabilityEnquiry
(
do_NR_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
uint8_t
*
const
buffer
,
uint8_t
*
const
buffer
,
const
uint8_t
Transaction_id
const
uint8_t
Transaction_id
,
);
int16_t
eutra_band
,
uint32_t
nr_band
);
uint8_t
do_SecurityModeCommand
(
uint8_t
do_SecurityModeCommand
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
...
...
openair2/RRC/LTE/rrc_defs.h
View file @
70135e1c
...
@@ -794,6 +794,10 @@ typedef struct eNB_RRC_INST_s {
...
@@ -794,6 +794,10 @@ typedef struct eNB_RRC_INST_s {
int
num_neigh_cells_cc
[
MAX_NUM_CCs
];
int
num_neigh_cells_cc
[
MAX_NUM_CCs
];
uint32_t
neigh_cells_id
[
MAX_NUM_NEIGH_CELLs
][
MAX_NUM_CCs
];
uint32_t
neigh_cells_id
[
MAX_NUM_NEIGH_CELLs
][
MAX_NUM_CCs
];
// Nr scc freq band and SSB absolute frequency
uint32_t
nr_neigh_freq_band
[
MAX_NUM_NEIGH_CELLs
][
MAX_NUM_CCs
];
int
nr_scg_ssb_freq
;
// other RAN parameters
// other RAN parameters
int
srb1_timer_poll_retransmit
;
int
srb1_timer_poll_retransmit
;
int
srb1_poll_pdu
;
int
srb1_poll_pdu
;
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
70135e1c
...
@@ -1282,10 +1282,14 @@ rrc_eNB_generate_UECapabilityEnquiry(
...
@@ -1282,10 +1282,14 @@ rrc_eNB_generate_UECapabilityEnquiry(
uint8_t
size
;
uint8_t
size
;
T
(
T_ENB_RRC_UE_CAPABILITY_ENQUIRY
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T
(
T_ENB_RRC_UE_CAPABILITY_ENQUIRY
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
int16_t
eutra_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
eutra_band
[
0
];
uint32_t
nr_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_neigh_freq_band
[
0
][
0
];
size
=
do_UECapabilityEnquiry
(
size
=
do_UECapabilityEnquiry
(
ctxt_pP
,
ctxt_pP
,
buffer
,
buffer
,
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
));
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
),
eutra_band
,
nr_band
);
LOG_I
(
RRC
,
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
@@ -1328,10 +1332,14 @@ rrc_eNB_generate_NR_UECapabilityEnquiry(
...
@@ -1328,10 +1332,14 @@ rrc_eNB_generate_NR_UECapabilityEnquiry(
uint8_t
size
;
uint8_t
size
;
T
(
T_ENB_RRC_UE_CAPABILITY_ENQUIRY
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T
(
T_ENB_RRC_UE_CAPABILITY_ENQUIRY
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
int16_t
eutra_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
eutra_band
[
0
];
uint32_t
nr_band
=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
nr_neigh_freq_band
[
0
][
0
];
size
=
do_NR_UECapabilityEnquiry
(
size
=
do_NR_UECapabilityEnquiry
(
ctxt_pP
,
ctxt_pP
,
buffer
,
buffer
,
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
));
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
),
eutra_band
,
nr_band
);
LOG_I
(
RRC
,
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate NR UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate NR UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
@@ -3283,8 +3291,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
...
@@ -3283,8 +3291,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
MeasObj2
->
measObjectId
=
2
;
MeasObj2
->
measObjectId
=
2
;
MeasObj2
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15
;
MeasObj2
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
carrierFreq_r15
=
641272
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
carrierFreq_r15
=
rrc_inst
->
nr_scg_ssb_freq
;
//641272; //634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016)
//634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016)
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
present
=
LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
present
=
LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
choice
.
sf20_r15
=
0
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
periodicityAndOffset_r15
.
choice
.
sf20_r15
=
0
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
ssb_Duration_r15
=
LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
rs_ConfigSSB_r15
.
measTimingConfig_r15
.
ssb_Duration_r15
=
LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4
;
...
@@ -7058,6 +7065,8 @@ char openair_rrc_eNB_configuration(
...
@@ -7058,6 +7065,8 @@ char openair_rrc_eNB_configuration(
openair_rrc_top_init_eNB
(
RC
.
rrc
[
ctxt
.
module_id
]
->
carrier
[
CC_id
].
MBMS_flag
,
0
);
openair_rrc_top_init_eNB
(
RC
.
rrc
[
ctxt
.
module_id
]
->
carrier
[
CC_id
].
MBMS_flag
,
0
);
}
}
RC
.
rrc
[
ctxt
.
module_id
]
->
nr_scg_ssb_freq
=
configuration
->
nr_scg_ssb_freq
;
openair_rrc_on
(
&
ctxt
);
openair_rrc_on
(
&
ctxt
);
/*
/*
...
@@ -9088,6 +9097,27 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
...
@@ -9088,6 +9097,27 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX
,
VCD_FUNCTION_OUT
);
}
}
void
rrc_eNB_process_ENDC_x2_setup_request
(
int
mod_id
,
x2ap_ENDC_setup_req_t
*
m
)
{
if
(
RC
.
rrc
[
mod_id
]
->
num_neigh_cells
>
MAX_NUM_NEIGH_CELLs
)
{
LOG_E
(
RRC
,
"Error: number of neighbouring cells is exceeded
\n
"
);
return
;
}
if
(
m
->
num_cc
>
MAX_NUM_CCs
)
{
LOG_E
(
RRC
,
"Error: number of neighbouring cells carriers is exceeded
\n
"
);
return
;
}
RC
.
rrc
[
mod_id
]
->
num_neigh_cells
++
;
RC
.
rrc
[
mod_id
]
->
num_neigh_cells_cc
[
RC
.
rrc
[
mod_id
]
->
num_neigh_cells
-
1
]
=
m
->
num_cc
;
for
(
int
i
=
0
;
i
<
m
->
num_cc
;
i
++
)
{
RC
.
rrc
[
mod_id
]
->
neigh_cells_id
[
RC
.
rrc
[
mod_id
]
->
num_neigh_cells
-
1
][
i
]
=
m
->
Nid_cell
[
i
];
RC
.
rrc
[
mod_id
]
->
nr_neigh_freq_band
[
RC
.
rrc
[
mod_id
]
->
num_neigh_cells
-
1
][
i
]
=
m
->
servedNrCell_band
[
i
];
}
}
void
rrc_eNB_process_AdditionResponseInformation
(
const
module_id_t
enb_mod_idP
,
x2ap_ENDC_sgnb_addition_req_ACK_t
*
m
)
{
void
rrc_eNB_process_AdditionResponseInformation
(
const
module_id_t
enb_mod_idP
,
x2ap_ENDC_sgnb_addition_req_ACK_t
*
m
)
{
NR_CG_Config_t
*
CG_Config
=
NULL
;
NR_CG_Config_t
*
CG_Config
=
NULL
;
{
{
...
@@ -9529,6 +9559,10 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
...
@@ -9529,6 +9559,10 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
break
;
break
;
}
}
case
X2AP_ENDC_SETUP_REQ
:
rrc_eNB_process_ENDC_x2_setup_request
(
instance
,
&
X2AP_ENDC_SETUP_REQ
(
msg_p
));
break
;
case
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
:
{
case
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
:
{
rrc_eNB_process_AdditionResponseInformation
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg_p
));
rrc_eNB_process_AdditionResponseInformation
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg_p
));
break
;
break
;
...
...
openair2/RRC/LTE/rrc_proto.h
View file @
70135e1c
...
@@ -360,6 +360,8 @@ void rrc_eNB_process_x2_setup_response(int mod_id, x2ap_setup_resp_t *m);
...
@@ -360,6 +360,8 @@ void rrc_eNB_process_x2_setup_response(int mod_id, x2ap_setup_resp_t *m);
void
rrc_eNB_process_handoverPreparationInformation
(
int
mod_id
,
x2ap_handover_req_t
*
m
);
void
rrc_eNB_process_handoverPreparationInformation
(
int
mod_id
,
x2ap_handover_req_t
*
m
);
void
rrc_eNB_process_ENDC_x2_setup_request
(
int
mod_id
,
x2ap_ENDC_setup_req_t
*
m
);
/**\brief Generate/decode the handover RRCConnectionReconfiguration at eNB
/**\brief Generate/decode the handover RRCConnectionReconfiguration at eNB
\param module_idP Instance ID for eNB/CH
\param module_idP Instance ID for eNB/CH
\param frame Frame index
\param frame Frame index
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
70135e1c
...
@@ -119,6 +119,8 @@ typedef struct x2ap_eNB_data_s {
...
@@ -119,6 +119,8 @@ typedef struct x2ap_eNB_data_s {
/* Nid cells */
/* Nid cells */
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
int
num_cc
;
int
num_cc
;
/*Frequency band of NR neighbor cell supporting ENDC NSA */
uint32_t
servedNrCell_band
[
MAX_NUM_CCs
];
/* Only meaningfull in virtual mode */
/* Only meaningfull in virtual mode */
struct
x2ap_eNB_instance_s
*
x2ap_eNB_instance
;
struct
x2ap_eNB_instance_s
*
x2ap_eNB_instance
;
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
70135e1c
...
@@ -1317,7 +1317,7 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
...
@@ -1317,7 +1317,7 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
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
=
1
;
/* TODO: put correct value */
freq_band
->
freqBandIndicatorNr
=
instance_p
->
eutra_band
[
0
];
SULFreqBandItem
=
calloc
(
1
,
sizeof
(
X2AP_SupportedSULFreqBandItem_t
));
SULFreqBandItem
=
calloc
(
1
,
sizeof
(
X2AP_SupportedSULFreqBandItem_t
));
SULFreqBandItem
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
SULFreqBandItem
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
...
...
openair2/X2AP/x2ap_eNB_handler.c
View file @
70135e1c
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
View file @
70135e1c
...
@@ -140,6 +140,9 @@ eNBs =
...
@@ -140,6 +140,9 @@ eNBs =
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
"f0ffffffff"
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
"f0ffffffff"
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
//
SSB
central
frequency
of
NR
secondary
cell
group
(
for
ENDC
NSA
)
nr_scg_ssb_freq
=
641272
;
}
}
);
);
...
...
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