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
lizhongxiao
OpenXG-RAN
Commits
f93413e1
Commit
f93413e1
authored
Jan 18, 2021
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Define trigger_RA_List
parent
9c71e941
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
42 deletions
+54
-42
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+38
-41
openair2/RRC/NR_UE/rrc_defs.h
openair2/RRC/NR_UE/rrc_defs.h
+16
-1
No files found.
openair2/RRC/NR_UE/rrc_UE.c
View file @
f93413e1
...
...
@@ -404,6 +404,7 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* rrc_config_path){
// fill UE-NR-Capability @ UE-CapabilityRAT-Container here.
NR_UE_rrc_inst
[
nr_ue
].
selected_plmn_identity
=
1
;
// TODO: Put the appropriate list of SIBs
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
buf
=
CALLOC
(
1
,
4
);
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
buf
[
0
]
=
SIB2
|
SIB3
|
SIB5
;
// SIB2 - SIB9
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
buf
[
1
]
=
0
;
// SIB10 - SIB17
...
...
@@ -412,6 +413,8 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* rrc_config_path){
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
size
=
4
;
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
bits_unused
=
0
;
NR_UE_rrc_inst
[
nr_ue
].
do_ra
=
RA_NOT_RUNNING
;
// init RRC lists
RRC_LIST_INIT
(
NR_UE_rrc_inst
[
nr_ue
].
RLC_Bearer_Config_list
,
NR_maxLC_ID
);
RRC_LIST_INIT
(
NR_UE_rrc_inst
[
nr_ue
].
SchedulingRequest_list
,
NR_maxNrofSR_ConfigPerCellGroup
);
...
...
@@ -1486,67 +1489,61 @@ int8_t nr_rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const NR_SRB
return
rval
;
}
int8_t
check_requested_SI_List
(
BIT_STRING_t
requested_SI_List
,
NR_SIB1_t
sib1
)
{
printf
(
"
\n\n
"
);
int8_t
check_requested_SI_List
(
module_id_t
module_id
,
BIT_STRING_t
requested_SI_List
,
NR_SIB1_t
sib1
)
{
if
(
sib1
.
si_SchedulingInfo
)
{
if
(
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
)
{
bool
SIB_to_request
[
32
]
=
{};
bool
SIB_to_request
[
32
]
=
{};
LOG_I
(
RRC
,
"SIBs broadcasting: "
);
for
(
int
i
=
0
;
i
<
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
count
;
i
++
)
{
printf
(
"SIB%li "
,
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
array
[
i
]
->
type
+
2
);
}
printf
(
"
\n
"
);
LOG_I
(
RRC
,
"SIBs broadcasting: "
);
for
(
int
i
=
0
;
i
<
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
count
;
i
++
)
{
printf
(
"SIB%li "
,
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
array
[
i
]
->
type
+
2
);
}
printf
(
"
\n
"
);
LOG_I
(
RRC
,
"SIBs needed by UE: "
);
for
(
int
j
=
0
;
j
<
8
*
requested_SI_List
.
size
;
j
++
)
{
if
(
((
requested_SI_List
.
buf
[
j
/
8
]
>>
(
j
%
8
))
&
1
)
==
1
)
{
LOG_I
(
RRC
,
"SIBs needed by UE: "
);
for
(
int
j
=
0
;
j
<
8
*
requested_SI_List
.
size
;
j
++
)
{
if
(
((
requested_SI_List
.
buf
[
j
/
8
]
>>
(
j
%
8
))
&
1
)
==
1
)
{
printf
(
"SIB%i "
,
j
+
2
);
printf
(
"SIB%i "
,
j
+
2
);
SIB_to_request
[
j
]
=
true
;
for
(
int
i
=
0
;
i
<
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
count
;
i
++
)
{
if
(
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
array
[
i
]
->
type
==
j
)
{
SIB_to_request
[
j
]
=
false
;
break
;
}
SIB_to_request
[
j
]
=
true
;
for
(
int
i
=
0
;
i
<
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
count
;
i
++
)
{
if
(
sib1
.
si_SchedulingInfo
->
schedulingInfoList
.
list
.
array
[
0
]
->
sib_MappingInfo
.
list
.
array
[
i
]
->
type
==
j
)
{
SIB_to_request
[
j
]
=
false
;
break
;
}
}
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
LOG_I
(
RRC
,
"SIBs to request by UE: "
);
bool
do_ra
=
false
;
for
(
int
j
=
0
;
j
<
8
*
requested_SI_List
.
size
;
j
++
)
{
if
(
SIB_to_request
[
j
])
{
printf
(
"SIB%i "
,
j
+
2
);
do_ra
=
true
;
}
LOG_I
(
RRC
,
"SIBs to request by UE: "
);
bool
do_ra
=
false
;
for
(
int
j
=
0
;
j
<
8
*
requested_SI_List
.
size
;
j
++
)
{
if
(
SIB_to_request
[
j
])
{
printf
(
"SIB%i "
,
j
+
2
);
do_ra
=
true
;
}
printf
(
"
\n
"
);
}
printf
(
"
\n
"
);
if
(
do_ra
)
{
if
(
do_ra
)
{
if
(
sib1
.
si_SchedulingInfo
->
si_RequestConfig
)
{
LOG_I
(
RRC
,
"Starting contention-free RA procedure
\n
"
);
}
else
{
LOG_I
(
RRC
,
"Starting contention-based RA procedure
\n
"
);
get_softmodem_params
()
->
do_ra
=
1
;
}
NR_UE_rrc_inst
[
module_id
].
do_ra
=
REQUEST_FOR_OTHER_SI
;
get_softmodem_params
()
->
do_ra
=
1
;
if
(
sib1
.
si_SchedulingInfo
->
si_RequestConfig
)
{
LOG_I
(
RRC
,
"Trigger contention-free RA procedure (do_ra = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
do_ra
);
}
else
{
LOG_I
(
RRC
,
"Trigger contention-based RA procedure (do_ra = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
do_ra
);
}
}
}
printf
(
"
\n\n
"
);
return
0
;
}
...
...
@@ -1578,7 +1575,7 @@ int8_t nr_rrc_ue_decode_NR_SIB1_Message(module_id_t module_id, uint8_t gNB_index
if
(
g_log
->
log_component
[
RRC
].
level
>=
OAILOG_DEBUG
)
xer_fprint
(
stdout
,
&
asn_DEF_NR_SIB1
,
(
const
void
*
)
sib1
);
check_requested_SI_List
(
NR_UE_rrc_inst
[
module_id
].
requested_SI_List
,
*
sib1
);
check_requested_SI_List
(
module_id
,
NR_UE_rrc_inst
[
module_id
].
requested_SI_List
,
*
sib1
);
}
else
LOG_E
(
PHY
,
"sib1 is starting by 8 times 0
\n
"
);
...
...
openair2/RRC/NR_UE/rrc_defs.h
View file @
f93413e1
...
...
@@ -84,9 +84,23 @@ typedef enum requested_SI_List_e {
SIB4
=
0x4
,
SIB5
=
0x8
,
SIB6
=
0x16
,
SIB7
=
0x32
SIB7
=
0x32
,
SIB8
=
0x64
,
SIB9
=
0x128
}
requested_SI_List_t
;
typedef
enum
trigger_RA_List_e
{
RA_NOT_RUNNING
,
INITIAL_ACCESS_FROM_RRC_IDLE
,
RRC_CONNECTION_REESTABLISHMENT
,
DURING_HANDOVER
,
NON_SYNCHRONISED
,
TRANSITION_FROM_RRC_INACTIVE
,
TO_ESTABLISH_TA
,
REQUEST_FOR_OTHER_SI
,
BEAM_FAILURE_RECOVERY
,
}
trigger_RA_List_t
;
typedef
struct
NR_UE_RRC_INST_s
{
NR_MeasConfig_t
*
meas_config
;
...
...
@@ -113,6 +127,7 @@ typedef struct NR_UE_RRC_INST_s {
uint8_t
*
UECapability
;
uint8_t
UECapability_size
;
trigger_RA_List_t
do_ra
;
BIT_STRING_t
requested_SI_List
;
NR_SystemInformation_t
*
si
[
NB_CNX_UE
];
...
...
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