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
Michael Black
OpenXG UE
Commits
3ddd0d0e
Commit
3ddd0d0e
authored
Feb 08, 2021
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix develop merge conflicts
parent
2e08a940
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 @
3ddd0d0e
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
View file @
3ddd0d0e
...
...
@@ -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 @
3ddd0d0e
...
...
@@ -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 @
3ddd0d0e
...
...
@@ -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 @
3ddd0d0e
...
...
@@ -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 @
3ddd0d0e
...
...
@@ -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 @
3ddd0d0e
...
...
@@ -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