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
b54d283e
Commit
b54d283e
authored
Oct 28, 2020
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update nr_extract_dci_info() for the NR_RNTI_SI case.
parent
86685897
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
351 additions
and
72 deletions
+351
-72
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+31
-0
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+1
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+33
-10
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+48
-19
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+0
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+192
-26
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+46
-16
No files found.
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
b54d283e
...
...
@@ -401,6 +401,37 @@ void config_control_ue(NR_UE_MAC_INST_t *mac){
mac
->
SSpace
[
0
][
0
][
ss_id
]
=
css
;
ss_id
++
;
}
// TODO: Merge this code in a single function as fill_default_searchSpaceZero() in rrc_gNB_reconfig.c
// Search space zero
if
(
mac
->
search_space_zero
==
NULL
)
mac
->
search_space_zero
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
));
if
(
mac
->
search_space_zero
->
controlResourceSetId
==
NULL
)
mac
->
search_space_zero
->
controlResourceSetId
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
controlResourceSetId
));
if
(
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
==
NULL
)
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
));
if
(
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
buf
==
NULL
)
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
buf
=
calloc
(
1
,
2
);
if
(
mac
->
search_space_zero
->
nrofCandidates
==
NULL
)
mac
->
search_space_zero
->
nrofCandidates
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
nrofCandidates
));
if
(
mac
->
search_space_zero
->
searchSpaceType
==
NULL
)
mac
->
search_space_zero
->
searchSpaceType
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
searchSpaceType
));
if
(
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
==
NULL
)
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
));
if
(
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
==
NULL
)
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
searchSpaceType
->
choice
.
common
->
dci_Format0_0_AndFormat1_0
));
mac
->
search_space_zero
->
searchSpaceId
=
0
;
*
mac
->
search_space_zero
->
controlResourceSetId
=
0
;
mac
->
search_space_zero
->
monitoringSlotPeriodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
->
monitoringSlotPeriodicityAndOffset
));
mac
->
search_space_zero
->
monitoringSlotPeriodicityAndOffset
->
present
=
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
;
mac
->
search_space_zero
->
duration
=
NULL
;
// should be '1100 0000 0000 00'B (LSB first!), first two symols in slot, adjust if needed
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
buf
[
1
]
=
0
;
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
buf
[
0
]
=
(
1
<<
7
)
|
(
1
<<
6
);
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
size
=
2
;
mac
->
search_space_zero
->
monitoringSymbolsWithinSlot
->
bits_unused
=
2
;
mac
->
search_space_zero
->
nrofCandidates
->
aggregationLevel1
=
NR_SearchSpace__nrofCandidates__aggregationLevel1_n0
;
mac
->
search_space_zero
->
nrofCandidates
->
aggregationLevel2
=
NR_SearchSpace__nrofCandidates__aggregationLevel2_n0
;
mac
->
search_space_zero
->
nrofCandidates
->
aggregationLevel4
=
NR_SearchSpace__nrofCandidates__aggregationLevel4_n1
;
mac
->
search_space_zero
->
nrofCandidates
->
aggregationLevel8
=
NR_SearchSpace__nrofCandidates__aggregationLevel8_n0
;
mac
->
search_space_zero
->
nrofCandidates
->
aggregationLevel16
=
NR_SearchSpace__nrofCandidates__aggregationLevel16_n0
;
mac
->
search_space_zero
->
searchSpaceType
->
present
=
NR_SearchSpace__searchSpaceType_PR_common
;
}
int
nr_rrc_mac_config_req_ue
(
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
b54d283e
...
...
@@ -255,6 +255,7 @@ typedef struct {
uint8_t
PHR_reporting_active
;
NR_Type0_PDCCH_CSS_config_t
type0_PDCCH_CSS_config
;
NR_SearchSpace_t
*
search_space_zero
;
}
NR_UE_MAC_INST_t
;
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
View file @
b54d283e
...
...
@@ -74,7 +74,13 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
scc
;
NR_BWP_DownlinkCommon_t
*
bwp_Common
=
mac
->
DLbwp
[
bwp_id
-
1
]
->
bwp_Common
;
NR_BWP_DownlinkCommon_t
*
initialDownlinkBWP
=
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
;
NR_SearchSpace_t
*
ss
=
mac
->
SSpace
[
bwp_id
-
1
][
coreset_id
-
1
][
ss_id
];
NR_SearchSpace_t
*
ss
;
if
(
ss_id
>=
0
)
{
ss
=
mac
->
SSpace
[
bwp_id
-
1
][
coreset_id
-
1
][
ss_id
];
}
else
{
ss
=
mac
->
search_space_zero
;
}
// CORESET configuration
NR_ControlResourceSet_t
*
coreset
=
mac
->
coreset
[
bwp_id
-
1
][
coreset_id
-
1
];
...
...
@@ -154,7 +160,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
rel15
->
SubcarrierSpacing
=
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
for
(
int
i
=
0
;
i
<
rel15
->
num_dci_options
;
i
++
)
{
rel15
->
dci_length_options
[
i
]
=
nr_dci_size
(
scc
,
mac
->
scg
,
def_dci_pdu_rel15
,
rel15
->
dci_format_options
[
i
],
NR_RNTI_
C
,
rel15
->
BWPSize
,
bwp_id
);
rel15
->
dci_length_options
[
i
]
=
nr_dci_size
(
scc
,
mac
->
scg
,
def_dci_pdu_rel15
,
rel15
->
dci_format_options
[
i
],
NR_RNTI_
SI
,
rel15
->
BWPSize
,
bwp_id
);
}
printf
(
"bwp_Common->genericParameters.locationAndBandwidth = %li
\n
"
,
bwp_Common
->
genericParameters
.
locationAndBandwidth
);
...
...
@@ -220,14 +226,10 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
// Fetch configuration for searchSpaceZero
// note: The search space with the SearchSpaceId = 0 identifies the search space configured via PBCH (MIB) and in ServingCellConfigCommon (searchSpaceZero).
if
(
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
){
printf
(
"pdcch_ConfigCommon->choice.setup->searchSpaceZero = %li
\n
"
,
*
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
);
if
(
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
==
NULL
){
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
=
calloc
(
1
,
sizeof
(
*
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
));
}
*
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
=
0
;
LOG_D
(
MAC
,
"[DCI_CONFIG] Configure SearchSpace#0 of the initial BWP
\n
"
);
LOG_W
(
MAC
,
"[DCI_CONFIG] This should not be available yet..."
);
}
...
...
@@ -251,14 +253,14 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
}
}
}
if
(
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
){
/*
if (pdcch_ConfigCommon->choice.setup->searchSpaceSIB1){
printf("*pdcch_ConfigCommon->choice.setup->searchSpaceSIB1 = %li\n", *pdcch_ConfigCommon->choice.setup->searchSpaceSIB1);
printf("ss->searchSpaceId = %li\n", ss->searchSpaceId);
// FIXME:
//if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->searchSpaceSIB1){
if (ss->searchSpaceId == *pdcch_ConfigCommon->choice.setup->searchSpaceSIB1){
if( (frame%2 == mac->type0_PDCCH_CSS_config.sfn_c) && (slot == mac->type0_PDCCH_CSS_config.n_0) ){
rel15->num_dci_options = 1;
rel15->dci_format_options[0] = NR_DL_DCI_FORMAT_1_0;
...
...
@@ -266,8 +268,8 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
fill_dci_search_candidates(ss, rel15);
}
//
}
}
}
}
*/
if
(
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
){
if
(
ss
->
searchSpaceId
==
*
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
){
// Configure monitoring of PDCCH candidates in Type0-PDCCH common search space on the MCG
...
...
@@ -360,4 +362,25 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
break
;
}
}
// Search space 0, CORESET ID 0
NR_BWP_DownlinkCommon_t
*
bwp_Common
=
bwp
->
bwp_Common
;
NR_SetupRelease_PDCCH_ConfigCommon_t
*
pdcch_ConfigCommon
=
bwp_Common
->
pdcch_ConfigCommon
;
if
(
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
){
NR_SearchSpace_t
*
ss0
=
mac
->
search_space_zero
;
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
if
(
ss0
->
searchSpaceId
==
*
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
){
if
(
(
frame
%
2
==
mac
->
type0_PDCCH_CSS_config
.
sfn_c
)
&&
(
slot
==
mac
->
type0_PDCCH_CSS_config
.
n_0
)
){
rel15
->
num_dci_options
=
1
;
rel15
->
dci_format_options
[
0
]
=
NR_DL_DCI_FORMAT_1_0
;
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_SI
,
-
1
);
fill_dci_search_candidates
(
ss0
,
rel15
);
}
}
}
}
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
b54d283e
...
...
@@ -2943,7 +2943,7 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
case
NR_RNTI_RA
:
case
NR_RNTI_TC
:
case
NR_RNTI_P
:
case
NR_RNTI_SI
:
//
case NR_RNTI_SI:
if
(
mac
->
DLbwp
[
0
]
->
bwp_Common
->
pdcch_ConfigCommon
->
choice
.
setup
->
controlResourceSetZero
)
{
uint8_t
bwp_id
=
1
;
uint8_t
coreset_id
=
0
;
// assuming controlResourceSetId is 0 for controlResourceSetZero
...
...
@@ -2953,8 +2953,9 @@ int get_n_rb(NR_UE_MAC_INST_t *mac, int rnti_type){
N_RB
=
NRRIV2BW
(
mac
->
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
275
);
}
break
;
case
NR_RNTI_SI
:
case
NR_RNTI_C
:
N_RB
=
NRRIV2BW
(
mac
->
DLbwp
[
0
]
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
275
);
N_RB
=
NRRIV2BW
(
mac
->
DLbwp
[
0
]
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
275
);
break
;
}
return
N_RB
;
...
...
@@ -3192,23 +3193,51 @@ int nr_extract_dci_info(NR_UE_MAC_INST_t *mac,
break
;
case
NR_RNTI_SI
:
/*
// Freq domain assignment 0-16 bit
fsize = (int)ceil( log2( (N_RB*(N_RB+1))>>1 ) );
for (int i=0; i<fsize; i++)
*dci_pdu |= ((dci_pdu_rel15->frequency_domain_assignment>>(fsize-i-1))&1)<<(dci_size-pos++);
// Time domain assignment 4 bit
for (int i=0; i<4; i++)
*dci_pdu |= (((uint64_t)dci_pdu_rel15->time_domain_assignment>>(3-i))&1)<<(dci_size-pos++);
// VRB to PRB mapping 1 bit
*dci_pdu |= ((uint64_t)dci_pdu_rel15->vrb_to_prb_mapping.val&1)<<(dci_size-pos++);
// MCS 5bit //bit over 32, so dci_pdu ++
for (int i=0; i<5; i++)
*dci_pdu |= (((uint64_t)dci_pdu_rel15->mcs>>(4-i))&1)<<(dci_size-pos++);
// Redundancy version 2bit
for (int i=0; i<2; i++)
*dci_pdu |= (((uint64_t)dci_pdu_rel15->rv>>(1-i))&1)<<(dci_size-pos++);
*/
printf
(
"
\n
nr_extract_dci_info
\n\n
"
);
// Freq domain assignment 0-16 bit
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB
*
(
N_RB
+
1
))
>>
1
)
);
pos
+=
fsize
;
dci_pdu_rel15
->
frequency_domain_assignment
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
((
1
<<
fsize
)
-
1
);
// Time domain assignment 4 bit
pos
+=
4
;
dci_pdu_rel15
->
time_domain_assignment
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
0xf
;
// VRB to PRB mapping 1 bit
pos
++
;
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
0x1
;
// MCS 5bit //bit over 32, so dci_pdu ++
pos
+=
5
;
dci_pdu_rel15
->
mcs
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
0x1f
;
// Redundancy version 2 bit
pos
+=
2
;
dci_pdu_rel15
->
rv
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
3
;
// System information indicator 1 bit
pos
++
;
dci_pdu_rel15
->
system_info_indicator
=
(
*
dci_pdu
>>
(
dci_size
-
pos
))
&
0x1
;
printf
(
"
\n\n
"
);
for
(
int
i
=
64
-
dci_size
;
i
<
64
;
i
++
)
{
printf
(
"%i "
,
(
*
dci_pdu
>>
63
-
i
)
&
(
uint64_t
)
0x01
);
}
printf
(
"
\n
N_RB = %i
\n
"
,
N_RB
);
printf
(
"
\n
dci_size = %i
\n
"
,
dci_size
);
printf
(
"fsize = %i
\n
"
,
fsize
);
printf
(
"dci_pdu_rel15->frequency_domain_assignment.val = %i
\n
"
,
dci_pdu_rel15
->
frequency_domain_assignment
.
val
);
printf
(
"dci_pdu_rel15->time_domain_assignment.val = %i
\n
"
,
dci_pdu_rel15
->
time_domain_assignment
.
val
);
printf
(
"dci_pdu_rel15->vrb_to_prb_mapping.val = %i
\n
"
,
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
);
printf
(
"dci_pdu_rel15->mcs = %i
\n
"
,
dci_pdu_rel15
->
mcs
);
printf
(
"dci_pdu_rel15->rv = %i
\n
"
,
dci_pdu_rel15
->
rv
);
printf
(
"dci_pdu_rel15->system_info_indicator = %i
\n
"
,
dci_pdu_rel15
->
system_info_indicator
);
printf
(
"
\n
"
);
break
;
case
NR_RNTI_TC
:
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
b54d283e
...
...
@@ -460,7 +460,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
// This schedules SIB1
schedule_nr_sib1
(
module_idP
,
frame
,
slot
);
// This schedule PRACH if we are not in phy_test mode
if
(
get_softmodem_params
()
->
phy_test
==
0
)
{
schedule_nr_prach
(
module_idP
,
frame
,
slot
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
b54d283e
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
b54d283e
...
...
@@ -1167,22 +1167,52 @@ void fill_dci_pdu_rel15(NR_ServingCellConfigCommon_t *scc,
break
;
case
NR_RNTI_SI
:
// Freq domain assignment 0-16 bit
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB
*
(
N_RB
+
1
))
>>
1
)
);
for
(
int
i
=
0
;
i
<
fsize
;
i
++
)
*
dci_pdu
|=
((
dci_pdu_rel15
->
frequency_domain_assignment
.
val
>>
(
fsize
-
i
-
1
))
&
1
)
<<
(
dci_size
-
pos
++
);
// Time domain assignment 4 bit
for
(
int
i
=
0
;
i
<
4
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
time_domain_assignment
.
val
>>
(
3
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// VRB to PRB mapping 1 bit
*
dci_pdu
|=
((
uint64_t
)
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
&
1
)
<<
(
dci_size
-
pos
++
);
// MCS 5bit //bit over 32, so dci_pdu ++
for
(
int
i
=
0
;
i
<
5
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
mcs
>>
(
4
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// Redundancy version 2bit
for
(
int
i
=
0
;
i
<
2
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
rv
>>
(
1
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
pos
=
1
;
// Freq domain assignment 0-16 bit
fsize
=
(
int
)
ceil
(
log2
(
(
N_RB
*
(
N_RB
+
1
))
>>
1
)
);
for
(
int
i
=
0
;
i
<
fsize
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
frequency_domain_assignment
.
val
>>
(
fsize
-
1
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// Time domain assignment 4 bit
for
(
int
i
=
0
;
i
<
4
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
time_domain_assignment
.
val
>>
(
3
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// VRB to PRB mapping 1 bit
*
dci_pdu
|=
((
uint64_t
)
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
&
1
)
<<
(
dci_size
-
pos
++
);
// MCS 5bit //bit over 32, so dci_pdu ++
for
(
int
i
=
0
;
i
<
5
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
mcs
>>
(
4
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// Redundancy version 2 bit
for
(
int
i
=
0
;
i
<
2
;
i
++
)
*
dci_pdu
|=
(((
uint64_t
)
dci_pdu_rel15
->
rv
>>
(
1
-
i
))
&
1
)
<<
(
dci_size
-
pos
++
);
// System information indicator 1bit
*
dci_pdu
|=
((
uint64_t
)
dci_pdu_rel15
->
system_info_indicator
&
1
)
<<
(
dci_size
-
pos
++
);
// reserved 15 bits
printf
(
"
\n\n
"
);
for
(
int
i
=
64
-
dci_size
;
i
<
64
;
i
++
)
{
printf
(
"%i "
,
(
*
dci_pdu
>>
63
-
i
)
&
(
uint64_t
)
0x01
);
}
printf
(
"
\n
dci_size = %i
\n
"
,
dci_size
);
printf
(
"fsize = %i
\n
"
,
fsize
);
printf
(
"dci_pdu_rel15->frequency_domain_assignment.val = %i
\n
"
,
dci_pdu_rel15
->
frequency_domain_assignment
.
val
);
printf
(
"dci_pdu_rel15->time_domain_assignment.val = %i
\n
"
,
dci_pdu_rel15
->
time_domain_assignment
.
val
);
printf
(
"dci_pdu_rel15->vrb_to_prb_mapping.val = %i
\n
"
,
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
);
printf
(
"dci_pdu_rel15->mcs = %i
\n
"
,
dci_pdu_rel15
->
mcs
);
printf
(
"dci_pdu_rel15->rv = %i
\n
"
,
dci_pdu_rel15
->
rv
);
printf
(
"dci_pdu_rel15->system_info_indicator = %i
\n
"
,
dci_pdu_rel15
->
system_info_indicator
);
printf
(
"
\n
"
);
break
;
case
NR_RNTI_TC
:
...
...
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