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
a8c4dd53
Commit
a8c4dd53
authored
Jun 25, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fill dmrs mask depending on actual number of frontloaded symbols, not maxlength
parent
c9a31259
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
42 additions
and
36 deletions
+42
-36
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+6
-16
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+1
-3
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+11
-7
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+4
-4
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+15
-2
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-0
No files found.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
a8c4dd53
...
...
@@ -2352,10 +2352,6 @@ int get_num_dmrs(uint16_t dmrs_mask ) {
for
(
int
i
=
0
;
i
<
16
;
i
++
)
num_dmrs
+=
((
dmrs_mask
>>
i
)
&
1
);
return
(
num_dmrs
);
}
/* returns the total DMRS symbols in a slot*/
uint8_t
get_num_dmrs_symbols
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype
){
return
get_num_dmrs
(
fill_dmrs_mask
(
pdsch_Config
,
dmrs_TypeA_Position
,
NrOfSymbols
,
startSymbol
,
mappingtype
));
}
// Table 5.1.2.2.1-1 38.214
uint8_t
getRBGSize
(
uint16_t
bwp_size
,
long
rbg_size_config
)
{
...
...
@@ -3010,9 +3006,9 @@ int is_nr_UL_slot(NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon, sl
else
return
(
slot_in_period
>=
slots1
+
tdd_UL_DL_ConfigurationCommon
->
pattern2
->
nrofDownlinkSlots
?
1
:
0
);
}
int16_t
fill_dmrs_mask
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype_fromDCI
)
{
int16_t
fill_dmrs_mask
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype_fromDCI
,
int
length
)
{
int
l0
;
int
dmrs_AdditionalPosition
=
0
;
int
maxLength
=
0
;
int
l0
;
int
dmrs_AdditionalPosition
=
0
;
NR_DMRS_DownlinkConfig_t
*
dmrs_config
=
NULL
;
LOG_D
(
MAC
,
"NrofSymbols:%d, startSymbol:%d, mappingtype:%d, dmrs_TypeA_Position:%d
\n
"
,
NrOfSymbols
,
startSymbol
,
mappingtype_fromDCI
,
dmrs_TypeA_Position
);
...
...
@@ -3024,7 +3020,6 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i
// in case of DCI FORMAT 1_0 or dedicated pdsch config not received additionposition = pos2, len1 should be used
// referred to section 5.1.6.2 in 38.214
dmrs_AdditionalPosition
=
2
;
maxLength
=
1
;
if
(
pdsch_Config
!=
NULL
)
{
if
(
mappingtype_fromDCI
==
typeA
)
{
// Type A
...
...
@@ -3039,8 +3034,7 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i
AssertFatal
(
dmrs_config
!=
NULL
,
" DMRS configs not present in PDSCH DMRS Downlink config
\n
"
);
// default values of maxlength = len2, additionalposition is pos2
if
(
dmrs_config
->
maxLength
!=
NULL
)
maxLength
=
2
;
// default values of additionalposition is pos2
if
(
dmrs_config
->
dmrs_AdditionalPosition
!=
NULL
)
dmrs_AdditionalPosition
=
*
dmrs_config
->
dmrs_AdditionalPosition
;
}
...
...
@@ -3055,11 +3049,6 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i
// For TypeB, ld is the duration of the scheduled PDSCH resources
ld
=
(
mappingtype_fromDCI
==
typeA
)
?
(
NrOfSymbols
+
startSymbol
)
:
NrOfSymbols
;
// Section 7.4.1.1.2 in Spec 38.211
//For PDSCH Mapping typeB, if PDSCH duration ld <=4, only single symbol DMRS is supported
if
(
mappingtype_fromDCI
==
typeB
&&
ld
<=
4
)
maxLength
=
1
;
AssertFatal
(
ld
>
2
&&
ld
<
15
,
"Illegal NrOfSymbols according to Table 5.1.2.1-1 Spec 38.214 %d
\n
"
,
ld
);
AssertFatal
((
NrOfSymbols
+
startSymbol
)
<
15
,
"Illegal S+L according to Table 5.1.2.1-1 Spec 38.214 S:%d L:%d
\n
"
,
startSymbol
,
NrOfSymbols
);
...
...
@@ -3076,7 +3065,8 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i
}
if
(
maxLength
==
1
)
{
// number of front loaded symbols
if
(
length
==
1
)
{
row
=
ld
-
2
;
l_prime
=
table_7_4_1_1_2_3_pdsch_dmrs_positions_l
[
row
][
column
];
l0
=
1
<<
l0
;
...
...
@@ -3087,7 +3077,7 @@ int16_t fill_dmrs_mask(NR_PDSCH_Config_t *pdsch_Config,int dmrs_TypeA_Position,i
l0
=
1
<<
l0
|
1
<<
(
l0
+
1
);
}
LOG_D
(
MAC
,
"l0:%d, ld:%d,row:%d, column:%d, addpos:%d, maxlen:%d
\n
"
,
l0
,
ld
,
row
,
column
,
dmrs_AdditionalPosition
,
maxL
ength
);
LOG_D
(
MAC
,
"l0:%d, ld:%d,row:%d, column:%d, addpos:%d, maxlen:%d
\n
"
,
l0
,
ld
,
row
,
column
,
dmrs_AdditionalPosition
,
l
ength
);
AssertFatal
(
l_prime
>=
0
,
"ERROR in configuration.Check Time Domain allocation of this Grant. l_prime < 1. row:%d, column:%d
\n
"
,
row
,
column
);
l_prime
=
(
mappingtype_fromDCI
==
typeA
)
?
(
l_prime
|
l0
)
:
(
l_prime
<<
startSymbol
);
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
a8c4dd53
...
...
@@ -47,7 +47,7 @@ uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn);
uint32_t
to_nrarfcn
(
int
nr_bandP
,
uint64_t
dl_CarrierFreq
,
uint8_t
scs_index
,
uint32_t
bw
);
int16_t
fill_dmrs_mask
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype_fromDCI
);
int16_t
fill_dmrs_mask
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype_fromDCI
,
int
length
);
int
is_nr_DL_slot
(
NR_TDD_UL_DL_ConfigCommon_t
*
tdd_UL_DL_ConfigurationCommon
,
slot_t
slotP
);
...
...
@@ -153,8 +153,6 @@ bool set_ul_ptrs_values(NR_PTRS_UplinkConfig_t *ul_ptrs_config,
uint8_t
*
reOffset
,
uint8_t
*
maxNumPorts
,
uint8_t
*
ulPower
,
uint8_t
NrOfSymbols
);
uint8_t
get_num_dmrs_symbols
(
NR_PDSCH_Config_t
*
pdsch_Config
,
int
dmrs_TypeA_Position
,
int
NrOfSymbols
,
int
startSymbol
,
int
mappingtype
);
/* \brief Set the transform precoding according to 6.1.3 of 3GPP TS 38.214 version 16.3.0 Release 16
@param *pusch_config, pointer to pusch config
@param *ubwp pointer to uplink bwp
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
a8c4dd53
...
...
@@ -691,7 +691,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
mac
->
mib
->
dmrs_TypeA_Position
,
dlsch_config_pdu_1_0
->
number_symbols
,
dlsch_config_pdu_1_0
->
start_symbol
,
mappingtype
);
mappingtype
,
1
);
dlsch_config_pdu_1_0
->
dmrsConfigType
=
(
mac
->
DLbwp
[
0
]
!=
NULL
)
?
(
mac
->
DLbwp
[
0
]
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
==
NULL
?
0
:
1
)
:
0
;
/* number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214 version 15.9.0 Release 15 */
if
(
dlsch_config_pdu_1_0
->
number_symbols
==
2
)
...
...
@@ -887,12 +887,6 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
int
mappingtype
=
pdsch_TimeDomainAllocationList
?
pdsch_TimeDomainAllocationList
->
list
.
array
[
dci
->
time_domain_assignment
.
val
]
->
mappingType
:
((
dlsch_config_pdu_1_1
->
start_symbol
<=
3
)
?
typeA
:
typeB
);
/* dmrs symbol positions*/
dlsch_config_pdu_1_1
->
dlDmrsSymbPos
=
fill_dmrs_mask
(
pdsch_config
,
mac
->
scc
->
dmrs_TypeA_Position
,
dlsch_config_pdu_1_1
->
number_symbols
,
dlsch_config_pdu_1_1
->
start_symbol
,
mappingtype
);
dlsch_config_pdu_1_1
->
dmrsConfigType
=
mac
->
DLbwp
[
dl_bwp_id
-
1
]
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
==
NULL
?
0
:
1
;
/* TODO: fix number of DM-RS CDM groups without data according to subclause 5.1.6.2 of 3GPP TS 38.214,
using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */
...
...
@@ -964,6 +958,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
uint8_t
n_codewords
=
1
;
// FIXME!!!
long
*
max_length
=
NULL
;
long
*
dmrs_type
=
NULL
;
dlsch_config_pdu_1_1
->
n_front_load_symb
=
1
;
// default value
if
(
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
)
{
max_length
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
maxLength
;
dmrs_type
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
;
...
...
@@ -1063,6 +1058,15 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_1
->
n_front_load_symb
=
table_7_3_2_3_3_4_twoCodeword
[
dci
->
antenna_ports
.
val
][
9
];
}
}
/* dmrs symbol positions*/
dlsch_config_pdu_1_1
->
dlDmrsSymbPos
=
fill_dmrs_mask
(
pdsch_config
,
mac
->
scc
->
dmrs_TypeA_Position
,
dlsch_config_pdu_1_1
->
number_symbols
,
dlsch_config_pdu_1_1
->
start_symbol
,
mappingtype
,
dlsch_config_pdu_1_1
->
n_front_load_symb
);
/* TCI */
if
(
mac
->
dl_config_request
.
dl_config_list
[
0
].
dci_config_pdu
.
dci_config_rel15
.
coreset
.
tci_present_in_dci
==
1
){
// 0 bit if higher layer parameter tci-PresentInDCI is not enabled
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
a8c4dd53
...
...
@@ -1063,7 +1063,7 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
nr_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
);
mappingtype
,
1
);
int
x_Overhead
=
0
;
uint8_t
tb_scaling
=
0
;
...
...
@@ -1258,7 +1258,7 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
scc
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
);
mappingtype
,
1
);
uint16_t
N_DMRS_SLOT
=
get_num_dmrs
(
dlDmrsSymbPos
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
a8c4dd53
...
...
@@ -376,7 +376,7 @@ void schedule_control_sib1(module_id_t module_id,
// Calculate number of PRB_DMRS
uint8_t
N_PRB_DMRS
=
gNB_mac
->
sched_ctrlCommon
->
pdsch_semi_static
.
numDmrsCdmGrpsNoData
*
6
;
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
NULL
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
);
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
NULL
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
,
1
);
uint16_t
dmrs_length
=
get_num_dmrs
(
dlDmrsSymbPos
);
LOG_D
(
MAC
,
"dlDmrsSymbPos %x
\n
"
,
dlDmrsSymbPos
);
...
...
@@ -613,7 +613,7 @@ void schedule_nr_sib1(module_id_t module_idP, frame_t frameP, sub_frame_t slotP)
// Calculate number of PRB_DMRS
uint8_t
N_PRB_DMRS
=
gNB_mac
->
sched_ctrlCommon
->
pdsch_semi_static
.
numDmrsCdmGrpsNoData
*
6
;
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
NULL
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
);
uint16_t
dlDmrsSymbPos
=
fill_dmrs_mask
(
NULL
,
gNB_mac
->
common_channels
->
ServingCellConfigCommon
->
dmrs_TypeA_Position
,
nrOfSymbols
,
startSymbolIndex
,
mappingtype
,
1
);
uint16_t
dmrs_length
=
get_num_dmrs
(
dlDmrsSymbPos
);
const
uint32_t
TBS
=
nr_compute_tbs
(
nr_get_Qm_dl
(
gNB_mac
->
sched_ctrlCommon
->
sched_pdsch
.
mcs
,
gNB_mac
->
sched_ctrlCommon
->
pdsch_semi_static
.
mcsTableIdx
),
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
a8c4dd53
...
...
@@ -166,10 +166,10 @@ void nr_schedule_css_dlsch_phytest(module_id_t module_idP,
pdsch_pdu_rel15
->
StartSymbolIndex
=
StartSymbolIndex
;
pdsch_pdu_rel15
->
NrOfSymbols
=
NrOfSymbols
;
pdsch_pdu_rel15
->
dlDmrsSymbPos
=
fill_dmrs_mask
(
NULL
,
scc
->
dmrs_TypeA_Position
,
NrOfSymbols
,
StartSymbolIndex
,
mappingtype
);
scc
->
dmrs_TypeA_Position
,
NrOfSymbols
,
StartSymbolIndex
,
mappingtype
,
1
);
/*
AssertFatal(k0==0,"k0 is not zero for Initial DL BWP TimeDomain Alloc\n");
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
a8c4dd53
...
...
@@ -200,22 +200,29 @@ void set_dl_dmrs_ports(NR_pdsch_semi_static_t *ps) {
// and a single front loaded symbol
// dmrs_ports_id is the index of Tables 7.3.1.2.2-1/2/3/4
// number of front loaded symbols need to be consistent with maxLength
// when a more complete implementation is done
switch
(
ps
->
nrOfLayers
)
{
case
1
:
ps
->
dmrs_ports_id
=
0
;
ps
->
numDmrsCdmGrpsNoData
=
1
;
ps
->
frontloaded_symb
=
1
;
break
;
case
2
:
ps
->
dmrs_ports_id
=
2
;
ps
->
numDmrsCdmGrpsNoData
=
1
;
ps
->
frontloaded_symb
=
1
;
break
;
case
3
:
ps
->
dmrs_ports_id
=
9
;
ps
->
numDmrsCdmGrpsNoData
=
2
;
ps
->
frontloaded_symb
=
1
;
break
;
case
4
:
ps
->
dmrs_ports_id
=
10
;
ps
->
numDmrsCdmGrpsNoData
=
2
;
ps
->
frontloaded_symb
=
1
;
break
;
default:
AssertFatal
(
1
==
0
,
"Number of layers %d
\n
not supported or not valid
\n
"
,
ps
->
nrOfLayers
);
...
...
@@ -375,6 +382,7 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
NR_pdsch_semi_static_t
*
ps
)
{
bool
reset_dmrs
=
false
;
if
(
bwp
&&
bwp
->
bwp_Dedicated
&&
bwp
->
bwp_Dedicated
->
pdsch_Config
&&
...
...
@@ -397,6 +405,7 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
pdsch_Config
=
NULL
;
if
(
ps
->
time_domain_allocation
!=
tda
)
{
reset_dmrs
=
true
;
ps
->
time_domain_allocation
=
tda
;
const
struct
NR_PDSCH_TimeDomainResourceAllocationList
*
tdaList
=
bwp
?
bwp
->
bwp_Common
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
:
...
...
@@ -413,8 +422,6 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
ps
->
dmrsConfigType
=
NFAPI_NR_DMRS_TYPE1
;
const
int
startSymbolAndLength
=
tdaList
->
list
.
array
[
tda
]
->
startSymbolAndLength
;
SLIV2SL
(
startSymbolAndLength
,
&
ps
->
startSymbolIndex
,
&
ps
->
nrOfSymbols
);
ps
->
dl_dmrs_symb_pos
=
fill_dmrs_mask
(
pdsch_Config
,
scc
->
dmrs_TypeA_Position
,
ps
->
nrOfSymbols
,
ps
->
startSymbolIndex
,
ps
->
mapping_type
);
ps
->
N_DMRS_SLOT
=
get_num_dmrs
(
ps
->
dl_dmrs_symb_pos
);
}
const
long
dci_format
=
sched_ctrl
->
search_space
->
searchSpaceType
->
choice
.
ue_Specific
->
dci_Formats
;
...
...
@@ -429,15 +436,21 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
ps
->
numDmrsCdmGrpsNoData
=
3
;
}
ps
->
dmrs_ports_id
=
0
;
ps
->
frontloaded_symb
=
1
;
}
else
{
if
(
ps
->
nrOfLayers
!=
layers
)
{
reset_dmrs
=
true
;
ps
->
nrOfLayers
=
layers
;
set_dl_dmrs_ports
(
ps
);
}
}
ps
->
N_PRB_DMRS
=
ps
->
numDmrsCdmGrpsNoData
*
(
ps
->
dmrsConfigType
==
NFAPI_NR_DMRS_TYPE1
?
6
:
4
);
if
(
reset_dmrs
)
{
ps
->
dl_dmrs_symb_pos
=
fill_dmrs_mask
(
pdsch_Config
,
scc
->
dmrs_TypeA_Position
,
ps
->
nrOfSymbols
,
ps
->
startSymbolIndex
,
ps
->
mapping_type
,
ps
->
frontloaded_symb
);
ps
->
N_DMRS_SLOT
=
get_num_dmrs
(
ps
->
dl_dmrs_symb_pos
);
}
}
void
nr_set_pusch_semi_static
(
const
NR_ServingCellConfigCommon_t
*
scc
,
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
a8c4dd53
...
...
@@ -362,6 +362,7 @@ typedef struct NR_sched_pusch {
typedef
struct
NR_pdsch_semi_static
{
int
time_domain_allocation
;
uint8_t
numDmrsCdmGrpsNoData
;
uint8_t
frontloaded_symb
;
int
mapping_type
;
int
startSymbolIndex
;
int
nrOfSymbols
;
...
...
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