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
5b7ae122
Commit
5b7ae122
authored
Feb 08, 2021
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix develop merge conflicts
parent
03b52cec
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
223 additions
and
103 deletions
+223
-103
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+50
-50
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+3
-1
openair2/LAYER2/NR_MAC_UE/mac_vars.c
openair2/LAYER2/NR_MAC_UE/mac_vars.c
+1
-1
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
+31
-30
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+8
-6
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+129
-14
No files found.
cmake_targets/CMakeLists.txt
View file @
5b7ae122
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
View file @
5b7ae122
...
...
@@ -917,7 +917,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
n_rnti
=
rel15
->
rnti
;
if
(
crc
==
n_rnti
)
{
LOG_
D
(
PHY
,
"(%i.%i) Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)
\n
"
,
LOG_
I
(
PHY
,
"(%i.%i) Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)
\n
"
,
proc
->
frame_rx
,
proc
->
nr_slot_rx
,
n_rnti
,
rel15
->
dci_format_options
[
k
],
CCEind
,
dci_length
,
*
(
unsigned
long
long
*
)
dci_estimation
);
dci_ind
->
SFN
=
proc
->
frame_rx
;
dci_ind
->
slot
=
proc
->
nr_slot_rx
;
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
5b7ae122
...
...
@@ -132,6 +132,7 @@ void nr_fill_rx_indication(fapi_nr_rx_indication_t *rx_ind,
}
switch
(
pdu_type
){
case
FAPI_NR_RX_PDU_TYPE_SIB
:
case
FAPI_NR_RX_PDU_TYPE_DLSCH
:
case
FAPI_NR_RX_PDU_TYPE_RAR
:
harq_pid
=
dlsch0
->
current_harq_pid
;
...
...
@@ -1208,7 +1209,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
nr_fill_rx_indication
(
&
rx_ind
,
FAPI_NR_RX_PDU_TYPE_DLSCH
,
eNB_id
,
ue
,
dlsch0
,
number_pdus
);
break
;
case
SI_PDSCH
:
rx_ind
.
rx_indication_body
[
0
].
pdu_type
=
FAPI_NR_RX_PDU_TYPE_SIB
;
nr_fill_dl_indication
(
&
dl_indication
,
NULL
,
&
rx_ind
,
proc
,
ue
,
eNB_id
);
nr_fill_rx_indication
(
&
rx_ind
,
FAPI_NR_RX_PDU_TYPE_SIB
,
eNB_id
,
ue
,
dlsch0
,
number_pdus
);
break
;
default:
break
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_vars.c
View file @
5b7ae122
...
...
@@ -32,7 +32,7 @@
#include <stdint.h>
const
char
*
rnti_types
[]
=
{
"RNTI_new"
,
"RNTI_C"
,
"RNTI_RA"
,
"NR_RNTI_P"
,
"NR_RNTI_CS"
,
"NR_RNTI_TC"
};
const
char
*
rnti_types
[]
=
{
"RNTI_new"
,
"RNTI_C"
,
"RNTI_RA"
,
"NR_RNTI_P"
,
"NR_RNTI_CS"
,
"NR_RNTI_TC"
,
"NR_RNTI_SP_CSI"
,
"NR_RNTI_SI"
};
const
char
*
dci_formats
[]
=
{
"1_0"
,
"1_1"
,
"2_0"
,
"2_1"
,
"2_2"
,
"2_3"
,
"0_0"
,
"0_1"
};
// table_7_3_1_1_2_2_3_4_5 contains values for number of layers and precoding information for tables 7.3.1.1.2-2/3/4/5 from TS 38.212 subclause 7.3.1.1.2
...
...
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
5b7ae122
...
...
@@ -35,6 +35,7 @@
/* RRC */
#include "NR_RACH-ConfigCommon.h"
#include "RRC/NR_UE/rrc_proto.h"
/* PHY */
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
...
...
@@ -514,7 +515,7 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
uint8_t
sdu_lcids
[
NB_RB_MAX
]
=
{
0
};
uint16_t
sdu_lengths
[
NB_RB_MAX
]
=
{
0
};
int
TBS_bytes
=
848
,
header_length_total
=
0
,
num_sdus
,
offset
,
mac_ce_len
;
int
num_sdus
,
offset
=
0
,
preambleTransMax
;
// Delay init RA procedure to allow the convergence of the IIR filter on PRACH noise measurements at gNB side
if
(
!
prach_resources
->
init_msg1
)
{
...
...
@@ -532,35 +533,20 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
LOG_D
(
MAC
,
"RA not active. Checking for data to transmit from upper layers...
\n
"
);
payload
=
(
uint8_t
*
)
&
mac
->
CCCH_pdu
.
payload
;
mac_ce_len
=
0
;
uint8_t
TBS_max
=
8
+
sizeof
(
NR_MAC_SUBHEADER_SHORT
)
+
sizeof
(
NR_MAC_SUBHEADER_SHORT
);
payload
=
(
uint8_t
*
)
mac
->
CCCH_pdu
.
payload
;
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
);
if
(
size_sdu
>
0
)
{
...
...
@@ -589,12 +575,27 @@ uint8_t nr_ue_get_rach(NR_PRACH_RESOURCES_t *prach_resources,
post_padding
,
0
);
AssertFatal
(
TBS_max
>
offset
,
"Frequency resources are not enough for Msg3!
\n
"
);
// Padding: fill remainder with 0
if
(
post_padding
>
0
){
for
(
int
j
=
0
;
j
<
(
TBS_
bytes
-
offset
);
j
++
)
payload
[
offset
+
j
]
=
0
;
// mac_pdu[offset + j] = 0;
for
(
int
j
=
0
;
j
<
(
TBS_
max
-
offset
);
j
++
)
payload
[
offset
+
j
]
=
0
;
}
}
}
LOG_D
(
MAC
,
"size_sdu = %i
\n
"
,
size_sdu
);
LOG_D
(
MAC
,
"offset = %i
\n
"
,
offset
);
for
(
int
k
=
0
;
k
<
TBS_max
;
k
++
)
{
LOG_D
(
MAC
,
"(%i): %i
\n
"
,
k
,
prach_resources
->
Msg3
[
k
]);
}
// Msg3 was initialized with TBS_max bytes because the mac->RA_Msg3_size will only be known after
// receiving Msg2 (which contains the Msg3 resource reserve).
// Msg3 will be transmitted with mac->RA_Msg3_size bytes, removing unnecessary 0s.
mac
->
ulsch_pdu
.
Pdu_size
=
TBS_max
;
memcpy
(
mac
->
ulsch_pdu
.
payload
,
prach_resources
->
Msg3
,
TBS_max
);
}
else
if
(
ra
->
RA_window_cnt
!=
-
1
)
{
// RACH is active
LOG_D
(
MAC
,
"In %s [%d.%d] RA is active: RA window count %d, RA backoff count %d
\n
"
,
__FUNCTION__
,
frame
,
nr_slot_tx
,
ra
->
RA_window_cnt
,
ra
->
RA_backoff_cnt
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
5b7ae122
...
...
@@ -584,7 +584,8 @@ void nr_get_Msg3alloc(module_id_t module_id,
NR_RA_t
*
ra
)
{
// msg3 is schedulend in mixed slot in the following TDD period
// for now we consider a TBS of 18 bytes
uint16_t
msg3_nb_rb
=
8
+
sizeof
(
NR_MAC_SUBHEADER_SHORT
)
+
sizeof
(
NR_MAC_SUBHEADER_SHORT
);
// sdu has 6 or 8 bytes
int
mu
=
ubwp
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
int
StartSymbolIndex
,
NrOfSymbols
,
startSymbolAndLength
,
temp_slot
;
...
...
@@ -614,21 +615,22 @@ void nr_get_Msg3alloc(module_id_t module_id,
uint16_t
*
vrb_map_UL
=
&
RC
.
nrmac
[
module_id
]
->
common_channels
[
CC_id
].
vrb_map_UL
[
ra
->
Msg3_slot
*
MAX_BWP_SIZE
];
const
uint16_t
bwpSize
=
NRRIV2BW
(
ubwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
/* search 18 free RBs */
/* search msg3_nb_rb free RBs */
int
rbSize
=
0
;
int
rbStart
=
0
;
while
(
rbSize
<
18
)
{
while
(
rbSize
<
msg3_nb_rb
)
{
rbStart
+=
rbSize
;
/* last iteration rbSize was not enough, skip it */
rbSize
=
0
;
while
(
rbStart
<
bwpSize
&&
vrb_map_UL
[
rbStart
])
rbStart
++
;
AssertFatal
(
rbStart
<
bwpSize
-
18
,
"no space to allocate Msg 3 for RA!
\n
"
);
AssertFatal
(
rbStart
<
bwpSize
-
msg3_nb_rb
,
"no space to allocate Msg 3 for RA!
\n
"
);
while
(
rbStart
+
rbSize
<
bwpSize
&&
!
vrb_map_UL
[
rbStart
+
rbSize
]
&&
rbSize
<
18
)
&&
rbSize
<
msg3_nb_rb
)
rbSize
++
;
}
ra
->
msg3_nb_rb
=
18
;
ra
->
msg3_nb_rb
=
msg3_nb_rb
;
ra
->
msg3_first_rb
=
rbStart
;
}
...
...
openair2/RRC/NR_UE/rrc_UE.c
View file @
5b7ae122
...
...
@@ -413,6 +413,18 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* rrc_config_path){
for
(
nr_ue
=
0
;
nr_ue
<
NB_NR_UE_INST
;
nr_ue
++
){
// 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
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
buf
[
2
]
=
0
;
// SIB18 - SIB25
NR_UE_rrc_inst
[
nr_ue
].
requested_SI_List
.
buf
[
3
]
=
0
;
// SIB26 - SIB32
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 +846,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 +1299,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
);
//}
}
...
...
@@ -1488,6 +1500,100 @@ 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
(
module_id_t
module_id
,
BIT_STRING_t
requested_SI_List
,
NR_SIB1_t
sib1
)
{
if
(
sib1
.
si_SchedulingInfo
)
{
bool
SIB_to_request
[
32
]
=
{};
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_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
)
{
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
;
}
}
}
}
printf
(
"
\n
"
);
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
])
{
printf
(
"SIB%i "
,
j
+
2
);
do_ra
=
true
;
}
}
printf
(
"
\n
"
);
if
(
do_ra
)
{
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_D
(
RRC
,
"Trigger contention-free RA procedure (ra_trigger = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
ra_trigger
);
}
else
{
LOG_D
(
RRC
,
"Trigger contention-based RA procedure (ra_trigger = %i)
\n
"
,
NR_UE_rrc_inst
[
module_id
].
ra_trigger
);
}
}
}
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
;
}
return
0
;
}
/*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
)
{
...
...
@@ -1514,6 +1620,15 @@ int8_t nr_rrc_ue_decode_NR_SIB1_Message(module_id_t module_id, uint8_t gNB_index
LOG_I
(
RRC
,
"SIB1 decoded
\n
"
);
if
(
g_log
->
log_component
[
RRC
].
level
>=
OAILOG_DEBUG
)
xer_fprint
(
stdout
,
&
asn_DEF_NR_SIB1
,
(
const
void
*
)
sib1
);
// FIXME: fix condition for the RA trigger
check_requested_SI_List
(
module_id
,
NR_UE_rrc_inst
[
module_id
].
requested_SI_List
,
*
sib1
);
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
;
}
nr_rrc_ue_generate_ra_msg
(
module_id
,
gNB_index
);
}
else
LOG_E
(
PHY
,
"sib1 is starting by 8 times 0
\n
"
);
...
...
@@ -1783,10 +1898,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
++
)
{
...
...
@@ -1800,16 +1915,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
"
);
...
...
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