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
OpenXG
OpenXG UE
Commits
36ad2e53
Commit
36ad2e53
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
60511689
fa6284ad
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 @
36ad2e53
...
...
@@ -144,6 +144,8 @@ eNBs =
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
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 @
36ad2e53
...
...
@@ -2772,7 +2772,7 @@ if (NOT ${NOS1})
endif
()
target_link_libraries
(
lte-uesoftmodem
-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
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
}
...
...
openair2/COMMON/rrc_messages_types.h
View file @
36ad2e53
...
...
@@ -323,6 +323,8 @@ typedef struct RrcConfigurationReq_s {
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_bits_unused
[
MAX_NUM_CCs
];
//Nr secondary cell group SSB central frequency (for ENDC NSA)
int
nr_scg_ssb_freq
;
}
RrcConfigurationReq
;
#define MAX_NUM_NBIOT_CELEVELS 3
...
...
openair2/COMMON/x2ap_messages_def.h
View file @
36ad2e53
...
...
@@ -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
)
/* 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_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
)
...
...
openair2/COMMON/x2ap_messages_types.h
View file @
36ad2e53
...
...
@@ -34,6 +34,7 @@ typedef enum {
//-------------------------------------------------------------------------------------------//
// Defines to access message fields.
#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_RESP(mSGpTR) (mSGpTR)->ittiMsg.x2ap_setup_resp
...
...
@@ -51,6 +52,7 @@ typedef enum {
#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_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
...
...
@@ -300,10 +302,6 @@ typedef struct x2ap_senb_addition_req_s {
}
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
{
int
MeNB_UE_X2_id
;
...
...
@@ -325,6 +323,13 @@ typedef struct x2ap_senb_addition_req_ack_s {
}
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
{
int
ue_x2_id
;
LTE_PhysCellId_t
target_physCellId
;
...
...
openair2/ENB_APP/enb_config.c
View file @
36ad2e53
...
...
@@ -1576,6 +1576,8 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
}
// !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
))
{
char
srb1path
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
srb1path
,
"%s.%s"
,
enbpath
,
ENB_CONFIG_STRING_SRB1
);
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
36ad2e53
...
...
@@ -429,6 +429,9 @@ typedef enum {
//SIB1-MBMS
#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"
...
...
@@ -577,6 +580,7 @@ typedef struct ccparams_lte_s {
int32_t
srb1_poll_pdu
;
int32_t
srb1_poll_byte
;
int32_t
srb1_max_retx_threshold
;
int32_t
nr_scg_ssb_freq
;
}
ccparams_lte_t
;
#define CCPARAMS_CHECK { \
...
...
@@ -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_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_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 @
36ad2e53
...
...
@@ -99,6 +99,7 @@
#include "intertask_interface.h"
#include "NR_FreqBandList.h"
#include "common/ran_context.h"
...
...
@@ -3199,9 +3200,13 @@ uint8_t do_SecurityModeCommand(
//------------------------------------------------------------------------------
uint8_t
do_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
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_RAT_Type_t
rat
=
LTE_RAT_Type_eutra
;
asn_enc_rval_t
enc_rval
;
...
...
@@ -3238,8 +3243,36 @@ uint8_t do_UECapabilityEnquiry( const protocol_ctxt_t *const ctxt_pP,
/* 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
;
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[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,
// };
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
size
=
5
;
req_freq
.
size
=
(
enc_rval
.
encoded
+
7
)
/
8
;
// req_freq.size = 21;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
...
...
@@ -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
*
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_RAT_Type_t
rat_nr
=
LTE_RAT_Type_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,
/* 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
;
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[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,
// };
req_freq
.
buf
=
req_freq_buf
;
req_freq
.
size
=
5
;
req_freq
.
size
=
(
enc_rval
.
encoded
+
7
)
/
8
;
// req_freq.size = 21;
r15_10
.
requestedFreqBandsNR_MRDC_r15
=
&
req_freq
;
...
...
openair2/RRC/LTE/MESSAGES/asn1_msg.h
View file @
36ad2e53
...
...
@@ -359,15 +359,17 @@ uint8_t
do_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
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_NR_UECapabilityEnquiry
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
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
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
...
...
openair2/RRC/LTE/rrc_defs.h
View file @
36ad2e53
...
...
@@ -794,6 +794,10 @@ typedef struct eNB_RRC_INST_s {
int
num_neigh_cells_cc
[
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
int
srb1_timer_poll_retransmit
;
int
srb1_poll_pdu
;
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
36ad2e53
...
...
@@ -1282,10 +1282,14 @@ rrc_eNB_generate_UECapabilityEnquiry(
uint8_t
size
;
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
));
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
(
ctxt_pP
,
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
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
...
@@ -1328,10 +1332,14 @@ rrc_eNB_generate_NR_UECapabilityEnquiry(
uint8_t
size
;
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
));
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
(
ctxt_pP
,
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
,
PROTOCOL_RRC_CTXT_UE_FMT
" Logical Channel DL-DCCH, Generate NR UECapabilityEnquiry (bytes %d)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
...
@@ -3283,8 +3291,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
MeasObj2
->
measObjectId
=
2
;
MeasObj2
->
measObject
.
present
=
LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15
;
MeasObj2
->
measObject
.
choice
.
measObjectNR_r15
.
carrierFreq_r15
=
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)
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)
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
.
ssb_Duration_r15
=
LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4
;
...
...
@@ -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
);
}
RC
.
rrc
[
ctxt
.
module_id
]
->
nr_scg_ssb_freq
=
configuration
->
nr_scg_ssb_freq
;
openair_rrc_on
(
&
ctxt
);
/*
...
...
@@ -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
);
}
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
)
{
NR_CG_Config_t
*
CG_Config
=
NULL
;
{
...
...
@@ -9529,6 +9559,10 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
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
:
{
rrc_eNB_process_AdditionResponseInformation
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
X2AP_ENDC_SGNB_ADDITION_REQ_ACK
(
msg_p
));
break
;
...
...
openair2/RRC/LTE/rrc_proto.h
View file @
36ad2e53
...
...
@@ -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_ENDC_x2_setup_request
(
int
mod_id
,
x2ap_ENDC_setup_req_t
*
m
);
/**\brief Generate/decode the handover RRCConnectionReconfiguration at eNB
\param module_idP Instance ID for eNB/CH
\param frame Frame index
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
36ad2e53
...
...
@@ -119,6 +119,8 @@ typedef struct x2ap_eNB_data_s {
/* Nid cells */
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
int
num_cc
;
/*Frequency band of NR neighbor cell supporting ENDC NSA */
uint32_t
servedNrCell_band
[
MAX_NUM_CCs
];
/* Only meaningfull in virtual mode */
struct
x2ap_eNB_instance_s
*
x2ap_eNB_instance
;
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
36ad2e53
...
...
@@ -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
));
if
(
freq_band
==
NULL
)
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
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
...
...
openair2/X2AP/x2ap_eNB_handler.c
View file @
36ad2e53
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_enb.conf
View file @
36ad2e53
...
...
@@ -140,6 +140,9 @@ eNBs =
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf
=
"f0ffffffff"
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
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