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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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-RAN
Commits
3606c381
Commit
3606c381
authored
Jan 07, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
uecap file from command line at gnb for phytest and dora mode
parent
a54c1f23
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
21 additions
and
62 deletions
+21
-62
executables/nr-softmodem.c
executables/nr-softmodem.c
+2
-8
executables/nr-softmodem.h
executables/nr-softmodem.h
+2
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+1
-1
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+2
-0
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+6
-50
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+6
-2
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+2
-1
No files found.
executables/nr-softmodem.c
View file @
3606c381
...
@@ -111,16 +111,11 @@ int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
...
@@ -111,16 +111,11 @@ int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
//Temp fix for inexistent NR upper layer
//Temp fix for inexistent NR upper layer
unsigned
char
NB_gNB_INST
=
1
;
unsigned
char
NB_gNB_INST
=
1
;
char
*
uecap_file
;
int
UE_scan
=
1
;
int
UE_scan_carrier
=
0
;
runmode_t
mode
=
normal_txrx
;
runmode_t
mode
=
normal_txrx
;
static
double
snr_dB
=
20
;
static
double
snr_dB
=
20
;
FILE
*
input_fd
=
NULL
;
#if MAX_NUM_CCs == 1
#if MAX_NUM_CCs == 1
rx_gain_t
rx_gain_mode
[
MAX_NUM_CCs
][
4
]
=
{{
max_gain
,
max_gain
,
max_gain
,
max_gain
}};
rx_gain_t
rx_gain_mode
[
MAX_NUM_CCs
][
4
]
=
{{
max_gain
,
max_gain
,
max_gain
,
max_gain
}};
double
tx_gain
[
MAX_NUM_CCs
][
4
]
=
{{
20
,
0
,
0
,
0
}};
double
tx_gain
[
MAX_NUM_CCs
][
4
]
=
{{
20
,
0
,
0
,
0
}};
...
@@ -193,8 +188,6 @@ openair0_config_t openair0_cfg[MAX_CARDS];
...
@@ -193,8 +188,6 @@ openair0_config_t openair0_cfg[MAX_CARDS];
double
cpuf
;
double
cpuf
;
extern
char
uecap_xer
[
1024
];
char
uecap_xer_in
=
0
;
/* see file openair2/LAYER2/MAC/main.c for why abstraction_flag is needed
/* see file openair2/LAYER2/MAC/main.c for why abstraction_flag is needed
* this is very hackish - find a proper solution
* this is very hackish - find a proper solution
...
@@ -702,6 +695,7 @@ int main( int argc, char **argv ) {
...
@@ -702,6 +695,7 @@ int main( int argc, char **argv ) {
// don't create if node doesn't connect to RRC/S1/GTP
// don't create if node doesn't connect to RRC/S1/GTP
AssertFatal
(
create_gNB_tasks
(
1
)
==
0
,
"cannot create ITTI tasks
\n
"
);
AssertFatal
(
create_gNB_tasks
(
1
)
==
0
,
"cannot create ITTI tasks
\n
"
);
/* Start the agent. If it is turned off in the configuration, it won't start */
/* Start the agent. If it is turned off in the configuration, it won't start */
/*
/*
RCconfig_nr_flexran();
RCconfig_nr_flexran();
...
...
executables/nr-softmodem.h
View file @
3606c381
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
{"D" , CONFIG_HLP_DLBM_PHYTEST,0, u64ptr:&dlsch_slot_bitmap, defintval:0, TYPE_UINT64, 0}, \
{"D" , CONFIG_HLP_DLBM_PHYTEST,0, u64ptr:&dlsch_slot_bitmap, defintval:0, TYPE_UINT64, 0}, \
{"U" , CONFIG_HLP_ULBM_PHYTEST,0, u64ptr:&ulsch_slot_bitmap, defintval:0, TYPE_UINT64, 0}, \
{"U" , CONFIG_HLP_ULBM_PHYTEST,0, u64ptr:&ulsch_slot_bitmap, defintval:0, TYPE_UINT64, 0}, \
{"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0, iptr:&usrp_tx_thread, defstrval:0, TYPE_INT, 0}, \
{"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0, iptr:&usrp_tx_thread, defstrval:0, TYPE_INT, 0}, \
{"uecap_file", CONFIG_HLP_UECAP_FILE, 0, strptr:(char **)&uecap_file, defstrval:"./", TYPE_STRING, 0}, \
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
}
}
...
@@ -41,6 +42,7 @@ extern uint32_t target_dl_bw;
...
@@ -41,6 +42,7 @@ extern uint32_t target_dl_bw;
extern
uint32_t
target_ul_bw
;
extern
uint32_t
target_ul_bw
;
extern
uint64_t
dlsch_slot_bitmap
;
extern
uint64_t
dlsch_slot_bitmap
;
extern
uint64_t
ulsch_slot_bitmap
;
extern
uint64_t
ulsch_slot_bitmap
;
extern
char
*
uecap_file
;
// In nr-gnb.c
// In nr-gnb.c
extern
void
init_gNB
(
int
single_thread_flag
,
int
wait_for_sync
);
extern
void
init_gNB
(
int
single_thread_flag
,
int
wait_for_sync
);
...
...
openair2/GNB_APP/gnb_config.c
View file @
3606c381
...
@@ -1533,7 +1533,7 @@ void NRRCConfig(void) {
...
@@ -1533,7 +1533,7 @@ void NRRCConfig(void) {
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
RC
.
nb_nr_inst
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
RC
.
nb_nr_inst
=
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
;
// Get num MACRLC instances
// Get num MACRLC instances
config_getlist
(
&
MACRLCParamList
,
NULL
,
0
,
NULL
);
config_getlist
(
&
MACRLCParamList
,
NULL
,
0
,
NULL
);
RC
.
nb_nr_macrlc_inst
=
MACRLCParamList
.
numelt
;
RC
.
nb_nr_macrlc_inst
=
MACRLCParamList
.
numelt
;
// Get num L1 instances
// Get num L1 instances
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
3606c381
...
@@ -520,6 +520,8 @@ typedef struct gNB_RRC_INST_s {
...
@@ -520,6 +520,8 @@ typedef struct gNB_RRC_INST_s {
int
cell_info_configured
;
int
cell_info_configured
;
pthread_mutex_t
cell_info_mutex
;
pthread_mutex_t
cell_info_mutex
;
char
*
uecap_file
;
// security configuration (preferred algorithms)
// security configuration (preferred algorithms)
nr_security_configuration_t
security
;
nr_security_configuration_t
security
;
}
gNB_RRC_INST
;
}
gNB_RRC_INST
;
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
3606c381
...
@@ -178,56 +178,12 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
...
@@ -178,56 +178,12 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
pthread_mutex_unlock
(
&
rrc
->
cell_info_mutex
);
pthread_mutex_unlock
(
&
rrc
->
cell_info_mutex
);
if
(
get_softmodem_params
()
->
phy_test
>
0
||
get_softmodem_params
()
->
do_ra
>
0
)
{
if
(
get_softmodem_params
()
->
phy_test
>
0
||
get_softmodem_params
()
->
do_ra
>
0
)
{
// This is for phytest only, emulate first X2 message if uecap.raw file is present
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
rrc_gNB_allocate_new_UE_context
(
rrc
);
FILE
*
fd
;
ue_context_p
->
ue_context
.
spCellConfig
=
calloc
(
1
,
sizeof
(
struct
NR_SpCellConfig
));
fd
=
fopen
(
"uecap.raw"
,
"r"
);
ue_context_p
->
ue_context
.
spCellConfig
->
spCellConfigDedicated
=
configuration
->
scd
;
LOG_I
(
NR_RRC
,
"Adding new user (%p)
\n
"
,
ue_context_p
);
if
(
fd
!=
NULL
)
{
if
(
!
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
))
{
char
buffer
[
4096
];
rrc_add_nsa_user
(
rrc
,
ue_context_p
,
NULL
);
int
msg_len
=
fread
(
buffer
,
1
,
4096
,
fd
);
LOG_I
(
RRC
,
"Read in %d bytes for uecap
\n
"
,
msg_len
);
LTE_UL_DCCH_Message_t
*
LTE_UL_DCCH_Message
;
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
&
asn_DEF_LTE_UL_DCCH_Message
,
(
void
**
)
&
LTE_UL_DCCH_Message
,
(
uint8_t
*
)
buffer
,
msg_len
);
if
((
dec_rval
.
code
!=
RC_OK
)
&&
(
dec_rval
.
consumed
==
0
))
{
AssertFatal
(
1
==
0
,
"NR_UL_DCCH_MESSAGE decode error
\n
"
);
// free the memory
SEQUENCE_free
(
&
asn_DEF_LTE_UL_DCCH_Message
,
LTE_UL_DCCH_Message
,
1
);
return
;
}
fclose
(
fd
);
xer_fprint
(
stdout
,
&
asn_DEF_LTE_UL_DCCH_Message
,
LTE_UL_DCCH_Message
);
// recreate enough of X2 EN-DC Container
AssertFatal
(
LTE_UL_DCCH_Message
->
message
.
choice
.
c1
.
present
==
LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation
,
"ueCapabilityInformation not present
\n
"
);
NR_CG_ConfigInfo_t
*
CG_ConfigInfo
=
calloc
(
1
,
sizeof
(
*
CG_ConfigInfo
));
CG_ConfigInfo
->
criticalExtensions
.
present
=
NR_CG_ConfigInfo__criticalExtensions_PR_c1
;
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
=
calloc
(
1
,
sizeof
(
*
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
));
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
present
=
NR_CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo
;
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
=
calloc
(
1
,
sizeof
(
*
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
));
NR_CG_ConfigInfo_IEs_t
*
cg_ConfigInfo
=
CG_ConfigInfo
->
criticalExtensions
.
choice
.
c1
->
choice
.
cg_ConfigInfo
;
cg_ConfigInfo
->
ue_CapabilityInfo
=
calloc
(
1
,
sizeof
(
*
cg_ConfigInfo
->
ue_CapabilityInfo
));
asn_enc_rval_t
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_LTE_UE_CapabilityRAT_ContainerList
,
NULL
,
(
void
*
)
&
LTE_UL_DCCH_Message
->
message
.
choice
.
c1
.
choice
.
ueCapabilityInformation
.
criticalExtensions
.
choice
.
c1
.
choice
.
ueCapabilityInformation_r8
.
ue_CapabilityRAT_ContainerList
,
buffer
,
4096
);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %jd)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
OCTET_STRING_fromBuf
(
cg_ConfigInfo
->
ue_CapabilityInfo
,
(
const
char
*
)
buffer
,
(
enc_rval
.
encoded
+
7
)
>>
3
);
parse_CG_ConfigInfo
(
rrc
,
CG_ConfigInfo
,
NULL
);
}
else
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
rrc_gNB_allocate_new_UE_context
(
rrc
);
ue_context_p
->
ue_context
.
spCellConfig
=
calloc
(
1
,
sizeof
(
struct
NR_SpCellConfig
));
ue_context_p
->
ue_context
.
spCellConfig
->
spCellConfigDedicated
=
configuration
->
scd
;
LOG_I
(
NR_RRC
,
"Adding new user (%p)
\n
"
,
ue_context_p
);
if
(
!
NODE_IS_CU
(
RC
.
nrrrc
[
0
]
->
node_type
))
{
rrc_add_nsa_user
(
rrc
,
ue_context_p
,
NULL
);
}
}
}
}
}
}
}
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
3606c381
...
@@ -38,6 +38,7 @@
...
@@ -38,6 +38,7 @@
#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h"
#include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h"
#include "openair2/RRC/LTE/rrc_eNB_GTPV1U.h"
#include "openair2/RRC/LTE/rrc_eNB_GTPV1U.h"
#include "executables/softmodem-common.h"
#include "executables/softmodem-common.h"
#include "executables/nr-softmodem.h"
#include <openair2/RRC/NR/rrc_gNB_UE_context.h>
#include <openair2/RRC/NR/rrc_gNB_UE_context.h>
#include <openair3/ocp-gtpu/gtp_itf.h>
#include <openair3/ocp-gtpu/gtp_itf.h>
#include "UTIL/OSA/osa_defs.h"
#include "UTIL/OSA/osa_defs.h"
...
@@ -148,8 +149,11 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
...
@@ -148,8 +149,11 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc,struct rrc_gNB_ue_context_s *ue_context_
NR_UE_NR_Capability_t
*
UE_Capability_nr
=
NULL
;
NR_UE_NR_Capability_t
*
UE_Capability_nr
=
NULL
;
char
UE_NR_Capability_xer_fname
[
1024
];
char
UE_NR_Capability_xer_fname
[
1024
];
char
UE_NR_Capability_xer
[
65536
];
char
UE_NR_Capability_xer
[
65536
];
sprintf
(
UE_NR_Capability_xer_fname
,
"../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/uecap.xml"
);
FILE
*
f
=
NULL
;
FILE
*
f
=
fopen
(
UE_NR_Capability_xer_fname
,
"r"
);
if
(
uecap_file
)
{
sprintf
(
UE_NR_Capability_xer_fname
,
"%s"
,
uecap_file
);
f
=
fopen
(
UE_NR_Capability_xer_fname
,
"r"
);
}
if
(
f
){
if
(
f
){
size_t
size
=
fread
(
UE_NR_Capability_xer
,
1
,
sizeof
UE_NR_Capability_xer
,
f
);
size_t
size
=
fread
(
UE_NR_Capability_xer
,
1
,
sizeof
UE_NR_Capability_xer
,
f
);
if
(
size
==
0
||
size
==
sizeof
UE_NR_Capability_xer
)
if
(
size
==
0
||
size
==
sizeof
UE_NR_Capability_xer
)
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
3606c381
...
@@ -2644,8 +2644,9 @@ nr_rrc_ue_process_ueCapabilityEnquiry(
...
@@ -2644,8 +2644,9 @@ nr_rrc_ue_process_ueCapabilityEnquiry(
ue_CapabilityRAT_Container
.
rat_Type
=
NR_RAT_Type_nr
;
ue_CapabilityRAT_Container
.
rat_Type
=
NR_RAT_Type_nr
;
NR_UE_NR_Capability_t
*
UE_Capability_nr
=
NULL
;
NR_UE_NR_Capability_t
*
UE_Capability_nr
=
NULL
;
FILE
*
f
=
NULL
;
char
*
file_path
=
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
uecap_file
;
char
*
file_path
=
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
uecap_file
;
FILE
*
f
=
NULL
;
if
(
file_path
)
{
if
(
file_path
)
{
sprintf
(
UE_NR_Capability_xer_fname
,
"%s"
,
file_path
);
sprintf
(
UE_NR_Capability_xer_fname
,
"%s"
,
file_path
);
f
=
fopen
(
UE_NR_Capability_xer_fname
,
"r"
);
f
=
fopen
(
UE_NR_Capability_xer_fname
,
"r"
);
...
...
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