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
zzha zzha
OpenXG-RAN
Commits
ee3f9396
Commit
ee3f9396
authored
Jan 20, 2021
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fill msg3 for the RA
parent
681706b6
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
137 additions
and
91 deletions
+137
-91
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
+0
-13
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+0
-13
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+1
-2
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+0
-2
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+18
-26
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+1
-1
openair2/RRC/NR/nr_rrc_types.h
openair2/RRC/NR/nr_rrc_types.h
+3
-3
openair2/RRC/NR_UE/L2_interface_ue.c
openair2/RRC/NR_UE/L2_interface_ue.c
+27
-3
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+66
-22
openair2/RRC/NR_UE/rrc_defs.h
openair2/RRC/NR_UE/rrc_defs.h
+14
-0
openair2/RRC/NR_UE/rrc_proto.h
openair2/RRC/NR_UE/rrc_proto.h
+6
-5
openair2/SIMULATION/NR_RRC/itti_sim.c
openair2/SIMULATION/NR_RRC/itti_sim.c
+1
-1
No files found.
openair1/SIMULATION/NR_PHY/nr_unitary_defs.h
View file @
ee3f9396
...
...
@@ -55,19 +55,6 @@ signed char quantize(double D, double x, unsigned char B) {
return
((
char
)
qxd
);
}
int8_t
mac_rrc_data_req_ue
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
rb_id_t
Srb_id
,
const
uint8_t
Nb_tb
,
uint8_t
*
const
buffer_pP
,
const
mac_enb_index_t
eNB_indexP
,
const
uint8_t
mbsfn_sync_area
)
{
return
(
0
);}
int
oai_nfapi_rach_ind
(
nfapi_rach_indication_t
*
rach_ind
)
{
return
(
0
);}
//NR_IF_Module_t *NR_IF_Module_init(int Mod_id){return(NULL);}
int
oai_nfapi_ul_config_req
(
nfapi_ul_config_request_t
*
ul_config_req
)
{
return
(
0
);
}
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
ee3f9396
...
...
@@ -160,19 +160,6 @@ typedef struct Type0_PDCCH_CSS_config_s {
uint32_t
cset_start_rb
;
}
NR_Type0_PDCCH_CSS_config_t
;
// 3GPP TS 38.300 Section 9.2.6
typedef
enum
RA_trigger_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
,
}
RA_trigger_t
;
uint16_t
config_bandwidth
(
int
mu
,
int
nb_rb
,
int
nr_band
);
void
get_frame_type
(
uint16_t
nr_bandP
,
uint8_t
scs_index
,
lte_frame_type_t
*
current_type
);
...
...
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
ee3f9396
...
...
@@ -272,9 +272,8 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
}
// PRACH configuration
uint8_t
nb_preambles
=
64
;
mac
->
ra_trigger
=
RA_NOT_RUNNING
;
uint8_t
nb_preambles
=
64
;
if
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
!=
NULL
)
nb_preambles
=
*
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
ee3f9396
...
...
@@ -185,8 +185,6 @@ typedef struct {
/* Random Access parameters */
/// state of RA procedure
RA_state_t
ra_state
;
/// trigger of RA procedure
RA_trigger_t
ra_trigger
;
/// RA rx frame offset: compensate RA rx offset introduced by OAI gNB.
uint8_t
RA_offset
;
/// RA-rnti
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
ee3f9396
...
...
@@ -50,6 +50,7 @@
/* RRC */
#include "NR_RACH-ConfigCommon.h"
#include "RRC/NR_UE/rrc_proto.h"
/* PHY */
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
...
...
@@ -456,36 +457,20 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
prach_resources
->
RA_SCALING_FACTOR_BI
=
1
;
prach_resources
->
RA_PCMAX
=
0
;
// currently hardcoded to 0
payload
=
(
uint8_t
*
)
&
mac
->
CCCH_pdu
.
payload
;
payload
=
(
uint8_t
*
)
mac
->
CCCH_pdu
.
payload
;
mac_ce_len
=
0
;
num_sdus
=
1
;
post_padding
=
1
;
sdu_lcids
[
0
]
=
lcid
;
if
(
0
){
// initialisation by RRC
// CCCH PDU
// size_sdu = (uint16_t) mac_rrc_data_req_ue(mod_id,
// CC_id,
// frame,
// CCCH,
// 1,
// mac_sdus,
// gNB_id,
// 0);
LOG_D
(
MAC
,
"[UE %d] Frame %d: Requested RRCConnectionRequest, got %d bytes
\n
"
,
mod_id
,
frame
,
size_sdu
);
}
else
{
// fill ulsch_buffer with random data
for
(
int
i
=
0
;
i
<
TBS_bytes
;
i
++
){
mac_sdus
[
i
]
=
(
unsigned
char
)
(
lrand48
()
&
0xff
);
}
//Sending SDUs with size 1
//Initialize elements of sdu_lcids and sdu_lengths
sdu_lcids
[
0
]
=
lcid
;
sdu_lengths
[
0
]
=
TBS_bytes
-
3
-
post_padding
-
mac_ce_len
;
header_length_total
+=
2
+
(
sdu_lengths
[
0
]
>=
128
);
size_sdu
+=
sdu_lengths
[
0
];
}
// initialisation by RRC
// CCCH PDU
size_sdu
=
(
uint16_t
)
nr_mac_rrc_data_req_ue
(
mod_id
,
CC_id
,
gNB_id
,
frame
,
CCCH
,
mac_sdus
);
sdu_lengths
[
0
]
=
size_sdu
;
LOG_D
(
MAC
,
"[UE %d] Frame %d: Requested RRCConnectionRequest, got %d bytes
\n
"
,
mod_id
,
frame
,
size_sdu
);
//mac->RA_tx_frame = frame;
//mac->RA_tx_slot = nr_slot_tx;
...
...
@@ -529,7 +514,14 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
for
(
int
j
=
0
;
j
<
(
TBS_bytes
-
offset
);
j
++
)
payload
[
offset
+
j
]
=
0
;
// mac_pdu[offset + j] = 0;
}
}
}
LOG_I
(
MAC
,
"size_sdu = %i
\n
"
,
size_sdu
);
LOG_I
(
MAC
,
"offset = %i
\n
"
,
offset
);
for
(
int
k
=
0
;
k
<
offset
;
k
++
)
{
LOG_I
(
MAC
,
"(%i): %i
\n
"
,
k
,
prach_resources
->
Msg3
[
k
]);
}
}
else
if
(
mac
->
RA_window_cnt
!=
-
1
)
{
// RACH is active
////////////////////////////////////////////////////////////////
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
ee3f9396
...
...
@@ -987,7 +987,7 @@ int8_t nr_ue_decode_mib(module_id_t module_id,
LOG_D
(
MAC
,
"cell barred (0=barred,1=notBarred): %d
\n
"
,
(
int
)
mac
->
mib
->
cellBarred
);
LOG_D
(
MAC
,
"intra frequency reselection (0=allowed,1=notAllowed): %d
\n
"
,
(
int
)
mac
->
mib
->
intraFreqReselection
);
LOG_D
(
MAC
,
"half frame bit(extra bits): %d
\n
"
,
(
int
)
half_frame_bit
);
LOG_
I
(
MAC
,
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
LOG_
D
(
MAC
,
"ssb index(extra bits): %d
\n
"
,
(
int
)
ssb_index
);
//storing ssb index in the mac structure
mac
->
mib_ssb
=
ssb_index
;
...
...
openair2/RRC/NR/nr_rrc_types.h
View file @
ee3f9396
...
...
@@ -32,11 +32,11 @@
#define RRC_TYPES_NR_H_
typedef
enum
Rrc_State_NR_e
{
RRC_STATE_I
NACTIV
E_NR
=
0
,
RRC_STATE_I
DL
E_NR
,
RRC_STATE_I
DL
E_NR
=
0
,
RRC_STATE_I
NACTIV
E_NR
,
RRC_STATE_CONNECTED_NR
,
RRC_STATE_FIRST_NR
=
RRC_STATE_I
NACTIV
E_NR
,
RRC_STATE_FIRST_NR
=
RRC_STATE_I
DL
E_NR
,
RRC_STATE_LAST_NR
=
RRC_STATE_CONNECTED_NR
,
}
Rrc_State_NR_t
;
...
...
openair2/RRC/NR_UE/L2_interface_ue.c
View file @
ee3f9396
...
...
@@ -33,6 +33,7 @@
#include "rrc_defs.h"
#include "rrc_proto.h"
#include "assertions.h"
#include "rrc_vars.h"
typedef
uint32_t
channel_t
;
...
...
@@ -59,13 +60,36 @@ nr_mac_rrc_data_ind_ue(
return
(
0
);
}
int8_t
mac_rrc_nr
_data_req_ue
(
const
module_id_t
Mod_idP
,
int8_t
nr_mac_rrc
_data_req_ue
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
uint8_t
gNB_id
,
const
frame_t
frameP
,
const
rb_id_t
Srb_id
,
uint8_t
*
const
buffer_pP
){
uint8_t
*
buffer_pP
){
// todo
switch
(
Srb_id
){
case
CCCH
:
// TODO: Enable timer T300
//NR_UE_rrc_inst[Mod_idP].Info[gNB_id].T300_active = 1;
//NR_UE_rrc_inst[Mod_idP].Info[gNB_id].T300_cnt = 0;
LOG_I
(
RRC
,
"nr_mac_rrc_data_req_ue: Payload size = %i
\n
"
,
NR_UE_rrc_inst
[
Mod_idP
].
Srb0
[
gNB_id
].
Tx_buffer
.
payload_size
);
memcpy
(
buffer_pP
,
(
uint8_t
*
)
NR_UE_rrc_inst
[
Mod_idP
].
Srb0
[
gNB_id
].
Tx_buffer
.
Payload
,
NR_UE_rrc_inst
[
Mod_idP
].
Srb0
[
gNB_id
].
Tx_buffer
.
payload_size
);
for
(
int
i
=
0
;
i
<
NR_UE_rrc_inst
[
Mod_idP
].
Srb0
[
gNB_id
].
Tx_buffer
.
payload_size
;
i
++
)
{
LOG_I
(
RRC
,
"(%i): %i
\n
"
,
i
,
buffer_pP
[
i
]);
}
return
NR_UE_rrc_inst
[
Mod_idP
].
Srb0
[
gNB_id
].
Tx_buffer
.
payload_size
;
case
DCCH
:
AssertFatal
(
1
==
0
,
"SRB1 not implemented yet!
\n
"
);
case
DCCH1
:
AssertFatal
(
1
==
0
,
"SRB2 not implemented yet!
\n
"
);
default:
AssertFatal
(
1
==
0
,
"Invalid SRB id!
\n
"
);
}
return
0
;
}
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
ee3f9396
...
...
@@ -413,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
].
ra_trigger
=
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
);
...
...
@@ -834,7 +836,7 @@ int nr_decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t gNB_index
// After SI is received, prepare RRCConnectionRequest
if
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
MBMS_flag
<
3
)
// see -Q option
if
(
AMF_MODE_ENABLED
)
{
rrc_ue_generate_RRCSetupRequest
(
ctxt_pP
,
gNB_index
);
nr_rrc_ue_generate_RRCSetupRequest
(
ctxt_pP
->
module_id
,
gNB_index
);
}
if
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
Info
[
gNB_index
].
State
==
NR_RRC_IDLE
)
{
...
...
@@ -1287,7 +1289,7 @@ int nr_decode_BCCH_DLSCH_Message(
if
(
nr_rrc_get_sub_state
(
ctxt_pP
->
module_id
)
==
RRC_SUB_STATE_IDLE_SIB_COMPLETE_NR
)
{
//if ( (NR_UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data != NULL) || (!AMF_MODE_ENABLED)) {
rrc_ue_generate_RRCSetupRequest
(
ctxt_pP
,
0
);
nr_rrc_ue_generate_RRCSetupRequest
(
ctxt_pP
->
module_id
,
0
);
nr_rrc_set_sub_state
(
ctxt_pP
->
module_id
,
RRC_SUB_STATE_IDLE_CONNECTING
);
//}
}
...
...
@@ -1493,13 +1495,13 @@ int8_t check_requested_SI_List(module_id_t module_id, BIT_STRING_t requested_SI_
bool
SIB_to_request
[
32
]
=
{};
LOG_
I
(
RRC
,
"SIBs broadcasting: "
);
LOG_
D
(
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: "
);
LOG_
D
(
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
)
{
...
...
@@ -1517,7 +1519,7 @@ int8_t check_requested_SI_List(module_id_t module_id, BIT_STRING_t requested_SI_
}
printf
(
"
\n
"
);
LOG_
I
(
RRC
,
"SIBs to request by UE: "
);
LOG_
D
(
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
])
{
...
...
@@ -1529,14 +1531,13 @@ int8_t check_requested_SI_List(module_id_t module_id, BIT_STRING_t requested_SI_
if
(
do_ra
)
{
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
module_id
);
mac
->
ra_trigger
=
REQUEST_FOR_OTHER_SI
;
NR_UE_rrc_inst
[
module_id
].
ra_trigger
=
REQUEST_FOR_OTHER_SI
;
get_softmodem_params
()
->
do_ra
=
1
;
if
(
sib1
.
si_SchedulingInfo
->
si_RequestConfig
)
{
LOG_
I
(
RRC
,
"Trigger contention-free RA procedure (ra_trigger = %i)
\n
"
,
mac
->
ra_trigger
);
LOG_
D
(
RRC
,
"Trigger contention-free RA procedure (ra_trigger = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
ra_trigger
);
}
else
{
LOG_
I
(
RRC
,
"Trigger contention-based RA procedure (ra_trigger = %i)
\n
"
,
mac
->
ra_trigger
);
LOG_
D
(
RRC
,
"Trigger contention-based RA procedure (ra_trigger = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
ra_trigger
);
}
}
...
...
@@ -1546,6 +1547,41 @@ int8_t check_requested_SI_List(module_id_t module_id, BIT_STRING_t requested_SI_
return
0
;
}
int8_t
nr_rrc_ue_generate_ra_msg
(
module_id_t
module_id
,
uint8_t
gNB_index
)
{
switch
(
NR_UE_rrc_inst
[
module_id
].
ra_trigger
){
case
INITIAL_ACCESS_FROM_RRC_IDLE
:
nr_rrc_ue_generate_RRCSetupRequest
(
module_id
,
gNB_index
);
break
;
case
RRC_CONNECTION_REESTABLISHMENT
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
DURING_HANDOVER
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
NON_SYNCHRONISED
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
TRANSITION_FROM_RRC_INACTIVE
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
TO_ESTABLISH_TA
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
REQUEST_FOR_OTHER_SI
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
case
BEAM_FAILURE_RECOVERY
:
AssertFatal
(
1
==
0
,
"ra_trigger not implemented yet!
\n
"
);
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid ra_trigger value!
\n
"
);
break
;
}
}
/*brief decode SIB1 message*/
int8_t
nr_rrc_ue_decode_NR_SIB1_Message
(
module_id_t
module_id
,
uint8_t
gNB_index
,
uint8_t
*
const
bufferP
,
const
uint8_t
buffer_len
)
{
...
...
@@ -1574,7 +1610,15 @@ 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
(
module_id
,
NR_UE_rrc_inst
[
module_id
].
requested_SI_List
,
*
sib1
);
// FIXME: fix condition for the RA trigger
if
(
nr_rrc_get_state
(
module_id
)
==
RRC_STATE_IDLE_NR
)
{
NR_UE_rrc_inst
[
module_id
].
ra_trigger
=
INITIAL_ACCESS_FROM_RRC_IDLE
;
get_softmodem_params
()
->
do_ra
=
1
;
}
else
{
check_requested_SI_List
(
module_id
,
NR_UE_rrc_inst
[
module_id
].
requested_SI_List
,
*
sib1
);
}
nr_rrc_ue_generate_ra_msg
(
module_id
,
gNB_index
);
}
else
LOG_E
(
PHY
,
"sib1 is starting by 8 times 0
\n
"
);
...
...
@@ -1844,10 +1888,10 @@ nr_rrc_ue_process_securityModeCommand(
}
//-----------------------------------------------------------------------------
void
rrc_ue_generate_RRCSetupRequest
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint8_t
gNB_index
)
{
void
nr_rrc_ue_generate_RRCSetupRequest
(
module_id_t
module_id
,
const
uint8_t
gNB_index
)
{
uint8_t
i
=
0
,
rv
[
6
];
if
(
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
==
0
)
{
if
(
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
==
0
)
{
// Get RRCConnectionRequest, fill random for now
// Generate random byte stream for contention resolution
for
(
i
=
0
;
i
<
6
;
i
++
)
{
...
...
@@ -1861,16 +1905,16 @@ void rrc_ue_generate_RRCSetupRequest( const protocol_ctxt_t *const ctxt_pP, cons
}
LOG_T
(
NR_RRC
,
"
\n
"
);
// NR_UE_rrc_inst[ctxt_pP->
module_id].Srb0[gNB_index].Tx_buffer.payload_size =
//
do_RRCSetupRequest(
// ctxt_pP->
module_id,
// (uint8_t *)NR_UE_rrc_inst[ctxt_pP->
module_id].Srb0[gNB_index].Tx_buffer.Payload,
//
rv);
LOG_I
(
NR_RRC
,
"[UE %d] :
Frame %d, Logical Channel UL-CCCH (SRB0), Generating RRCSetupRequest (bytes %d, e
NB %d)
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
,
gNB_index
);
for
(
i
=
0
;
i
<
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
;
i
++
)
{
LOG_T
(
NR_RRC
,
"%x."
,
NR_UE_rrc_inst
[
ctxt_pP
->
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
Payload
[
i
]);
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
=
do_RRCSetupRequest
(
module_id
,
(
uint8_t
*
)
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
Payload
,
rv
);
LOG_I
(
NR_RRC
,
"[UE %d] :
Logical Channel UL-CCCH (SRB0), Generating RRCSetupRequest (bytes %d, g
NB %d)
\n
"
,
module_id
,
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
,
gNB_index
);
for
(
i
=
0
;
i
<
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
payload_size
;
i
++
)
{
LOG_T
(
NR_RRC
,
"%x."
,
NR_UE_rrc_inst
[
module_id
].
Srb0
[
gNB_index
].
Tx_buffer
.
Payload
[
i
]);
}
LOG_T
(
NR_RRC
,
"
\n
"
);
...
...
openair2/RRC/NR_UE/rrc_defs.h
View file @
ee3f9396
...
...
@@ -89,6 +89,19 @@ typedef enum requested_SI_List_e {
SIB9
=
0x128
}
requested_SI_List_t
;
// 3GPP TS 38.300 Section 9.2.6
typedef
enum
RA_trigger_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
,
}
RA_trigger_t
;
typedef
struct
NR_UE_RRC_INST_s
{
NR_MeasConfig_t
*
meas_config
;
...
...
@@ -115,6 +128,7 @@ typedef struct NR_UE_RRC_INST_s {
uint8_t
*
UECapability
;
uint8_t
UECapability_size
;
RA_trigger_t
ra_trigger
;
BIT_STRING_t
requested_SI_List
;
NR_SystemInformation_t
*
si
[
NB_CNX_UE
];
...
...
openair2/RRC/NR_UE/rrc_proto.h
View file @
ee3f9396
...
...
@@ -112,24 +112,25 @@ int8_t nr_mac_rrc_data_ind_ue(const module_id_t module_id, const int CC_id, cons
/**\brief
\param module_id module id
\param CC_id component carrier id
\param gNB_index gNB index
\param frame_t frameP
\param rb_id_t SRB id
\param buffer_pP pointer to buffer*/
int8_t
mac_rrc_nr
_data_req_ue
(
const
module_id_t
Mod_idP
,
int8_t
nr_mac_rrc
_data_req_ue
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
uint8_t
gNB_id
,
const
frame_t
frameP
,
const
rb_id_t
Srb_id
,
uint8_t
*
const
buffer_pP
);
uint8_t
*
buffer_pP
);
/**\brief RRC UE task.
\param void *args_p Pointer on arguments to start the task. */
void
*
rrc_nrue_task
(
void
*
args_p
);
/**\brief RRC UE generate RRCSetupRequest message.
\param
ctxt_pP protocol context
\param
module_id module id
\param gNB_index gNB index */
void
rrc_ue_generate_RRCSetupRequest
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint8_t
gNB_index
);
void
nr_rrc_ue_generate_RRCSetupRequest
(
module_id_t
module_id
,
const
uint8_t
gNB_index
);
/** @}*/
#endif
...
...
openair2/SIMULATION/NR_RRC/itti_sim.c
View file @
ee3f9396
...
...
@@ -623,7 +623,7 @@ int main( int argc, char **argv )
0
);
NR_UE_rrc_inst
[
ctxt
.
module_id
].
Info
[
0
].
State
=
RRC_SI_RECEIVED
;
rrc_ue_generate_RRCSetupRequest
(
&
ctxt
,
0
);
nr_rrc_ue_generate_RRCSetupRequest
(
ctxt
.
module_id
,
0
);
printf
(
"Entering ITTI signals handler
\n
"
);
itti_wait_tasks_end
();
...
...
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