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
OpenXG
OpenXG UE
Commits
769366f8
Commit
769366f8
authored
Aug 12, 2020
by
matzakos
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_UL_scheduling' into NR_RRC_PDCP
parents
7964fe26
4d21d80b
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
97 additions
and
75 deletions
+97
-75
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+2
-0
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
+4
-4
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
+6
-2
openair1/PHY/NR_TRANSPORT/pucch_rx.c
openair1/PHY/NR_TRANSPORT/pucch_rx.c
+7
-7
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+6
-4
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+65
-54
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+5
-2
No files found.
openair1/PHY/INIT/nr_init.c
View file @
769366f8
...
...
@@ -199,6 +199,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
common_vars
->
rxdataF
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame_wCP
*
sizeof
(
int32_t
));
common_vars
->
rxdata
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame
*
sizeof
(
int32_t
));
}
common_vars
->
debugBuff
=
(
int32_t
*
)
malloc16_clear
(
fp
->
samples_per_frame
*
sizeof
(
int32_t
)
*
100
);
common_vars
->
debugBuff_sample_offset
=
0
;
// Channel estimates for SRS
...
...
openair1/PHY/NR_ESTIMATION/nr_measurements_gNB.c
View file @
769366f8
...
...
@@ -95,11 +95,11 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB) {
n0_subband_power_temp
+=
signal_energy_nodc
(
ul_ch
,
12
);
}
}
measurements
->
n0_
subband_
power
[
aarx
]
=
n0_subband_power_temp
/
nb_rb
;
measurements
->
n0_
subband_power_dB
[
aarx
]
=
dB_fixed
(
measurements
->
n0_subband
_power
[
aarx
]);
n0_power_tot
+=
measurements
->
n0_
subband_
power
[
aarx
];
measurements
->
n0_power
[
aarx
]
=
n0_subband_power_temp
/
nb_rb
;
measurements
->
n0_
power_dB
[
aarx
]
=
dB_fixed
(
measurements
->
n0
_power
[
aarx
]);
n0_power_tot
+=
measurements
->
n0_power
[
aarx
];
}
//measurements->n0_subband
_power_tot_dB = dB_fixed(n0_power_tot);
measurements
->
n0
_power_tot_dB
=
dB_fixed
(
n0_power_tot
);
}
}
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
View file @
769366f8
...
...
@@ -122,7 +122,11 @@ void nr_fill_cce_list(PHY_VARS_gNB *gNB, uint8_t m) {
nr_cce_t
*
cce
;
nr_reg_t
*
reg
;
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu_rel15
=
&
gNB
->
pdcch_pdu
->
pdcch_pdu_rel15
;
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu_rel15
;
if
(
gNB
->
pdcch_pdu
!=
NULL
)
pdcch_pdu_rel15
=
&
gNB
->
pdcch_pdu
->
pdcch_pdu_rel15
;
else
pdcch_pdu_rel15
=
&
gNB
->
ul_dci_pdu
->
pdcch_pdu
.
pdcch_pdu_rel15
;
int
bsize
=
pdcch_pdu_rel15
->
RegBundleSize
;
int
R
=
pdcch_pdu_rel15
->
InterleaverSize
;
int
n_shift
=
pdcch_pdu_rel15
->
ShiftIndex
;
...
...
@@ -251,7 +255,7 @@ void nr_fill_ul_dci(PHY_VARS_gNB *gNB,
//uint64_t *dci_pdu = (uint64_t*)pdcch_pdu_rel15->dci_pdu.Payload[i];
// if there's no DL DCI then generate CCE list
if
(
gNB
->
pdcch_pdu
)
nr_fill_cce_list
(
gNB
,
0
);
nr_fill_cce_list
(
gNB
,
0
);
/*
LOG_D(PHY, "DCI PDU: [0]->0x%lx \t [1]->0x%lx \n",dci_pdu[0], dci_pdu[1]);
LOG_D(PHY, "DCI type %d payload (size %d) generated on candidate %d\n", dci_alloc->pdcch_params.dci_format, dci_alloc->size, cand_idx);
...
...
openair1/PHY/NR_TRANSPORT/pucch_rx.c
View file @
769366f8
...
...
@@ -383,30 +383,30 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
if
(
pucch_pdu
->
bit_len_harq
==
0
)
{
uci_pdu
->
harq
=
NULL
;
uci_pdu
->
sr
=
calloc
(
1
,
sizeof
(
*
uci_pdu
->
sr
));
if
(
xrtmag_dB
>
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
))
{
if
(
xrtmag_dB
>
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
))
{
uci_pdu
->
sr
->
sr_indication
=
1
;
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
);
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
);
}
else
{
uci_pdu
->
sr
->
sr_indication
=
0
;
uci_pdu
->
sr
->
sr_confidence_level
=
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
)
-
xrtmag_dB
;
uci_pdu
->
sr
->
sr_confidence_level
=
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
)
-
xrtmag_dB
;
}
}
else
if
(
pucch_pdu
->
bit_len_harq
==
1
)
{
uci_pdu
->
harq
=
calloc
(
1
,
sizeof
(
*
uci_pdu
->
harq
));
uci_pdu
->
harq
->
num_harq
=
1
;
uci_pdu
->
harq
->
harq_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
);
uci_pdu
->
harq
->
harq_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
);
uci_pdu
->
harq
->
harq_list
=
(
nfapi_nr_harq_t
*
)
malloc
(
1
);
uci_pdu
->
harq
->
harq_list
[
0
].
harq_value
=
index
&
0x01
;
if
(
pucch_pdu
->
sr_flag
==
1
)
{
uci_pdu
->
sr
=
calloc
(
1
,
sizeof
(
*
uci_pdu
->
sr
));
uci_pdu
->
sr
->
sr_indication
=
(
index
>
1
)
?
1
:
0
;
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
);
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
);
}
}
else
{
uci_pdu
->
harq
=
calloc
(
1
,
sizeof
(
*
uci_pdu
->
harq
));
uci_pdu
->
harq
->
num_harq
=
2
;
uci_pdu
->
harq
->
harq_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
);
uci_pdu
->
harq
->
harq_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
);
uci_pdu
->
harq
->
harq_list
=
(
nfapi_nr_harq_t
*
)
malloc
(
2
);
uci_pdu
->
harq
->
harq_list
[
1
].
harq_value
=
index
&
0x01
;
...
...
@@ -415,7 +415,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
if
(
pucch_pdu
->
sr_flag
==
1
)
{
uci_pdu
->
sr
=
calloc
(
1
,
sizeof
(
*
uci_pdu
->
sr
));
uci_pdu
->
sr
->
sr_indication
=
(
index
>
3
)
?
1
:
0
;
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
subband_power_tot_dB
[
pucch_pdu
->
prb_start
]
+
gNB
->
pucch0_thres
);
uci_pdu
->
sr
->
sr_confidence_level
=
xrtmag_dB
-
(
gNB
->
measurements
.
n0_
power_tot_dB
+
gNB
->
pucch0_thres
);
}
}
}
...
...
openair1/PHY/defs_gNB.h
View file @
769366f8
...
...
@@ -365,6 +365,8 @@ typedef struct {
/// - second index: tx antenna [0..14[ where 14 is the total supported antenna ports.
/// - third index: sample [0..]
int32_t
**
txdataF
;
int32_t
*
debugBuff
;
int32_t
debugBuff_sample_offset
;
}
NR_gNB_COMMON
;
...
...
@@ -588,10 +590,10 @@ typedef struct {
unsigned
short
n0_power_tot_dB
;
//! estimated avg noise power (dB)
short
n0_power_tot_dBm
;
//! estimated avg noise power per RX ant (lin)
unsigned
short
n0_subband_power
[
MAX_NUM_RU_PER_gNB
];
//! estimated avg noise power per RX ant (dB)
unsigned
short
n0_subband_power_dB
[
MAX_NUM_RU_PER_gNB
];
//! estimated avg noise power per R
B per R
X ant (lin)
unsigned
short
n0_subband_power
[
MAX_NUM_RU_PER_gNB
]
[
275
]
;
//! estimated avg noise power per R
B per R
X ant (dB)
unsigned
short
n0_subband_power_dB
[
MAX_NUM_RU_PER_gNB
]
[
275
]
;
//! estimated avg noise power per RB (dB)
short
n0_subband_power_tot_dB
[
275
];
//! estimated avg noise power per RB (dBm)
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
769366f8
...
...
@@ -313,7 +313,7 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
LOG_I
(
PHY
,
"Estimated timing advance PUSCH is = %d, timing_advance_update is %d
\n
"
,
sync_pos
,
timing_advance_update
);
// estimate UL_CQI for MAC (from antenna port 0 only)
int
SNRtimes10
=
dB_fixed_times10
(
gNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_power
[
0
])
-
(
10
*
gNB
->
measurements
.
n0_
subband_
power_dB
[
0
]);
int
SNRtimes10
=
dB_fixed_times10
(
gNB
->
pusch_vars
[
ULSCH_id
]
->
ulsch_power
[
0
])
-
(
10
*
gNB
->
measurements
.
n0_power_dB
[
0
]);
LOG_I
(
PHY
,
"Estimated SNR for PUSCH is = %d dB
\n
"
,
SNRtimes10
/
10
);
...
...
@@ -366,63 +366,63 @@ void fill_ul_rb_mask(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
int
rb2
,
rb
,
nb_rb
;
for
(
int
symbol
=
0
;
symbol
<
14
;
symbol
++
)
{
nb_rb
=
0
;
for
(
int
m
=
0
;
m
<
9
;
m
++
)
gNB
->
rb_mask_ul
[
m
]
=
0
;
gNB
->
ulmask_symb
=
-
1
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
i
];
if
(
pucch
)
{
if
((
pucch
->
active
==
1
)
&&
(
pucch
->
frame
==
frame_rx
)
&&
(
pucch
->
slot
==
slot_rx
)
)
{
nfapi_nr_pucch_pdu_t
*
pucch_pdu
=
&
pucch
[
i
].
pucch_pdu
;
if
((
symbol
>=
pucch_pdu
->
start_symbol_index
)
&&
(
symbol
<
(
pucch_pdu
->
start_symbol_index
+
pucch_pdu
->
nr_of_symbols
))){
for
(
rb
=
0
;
rb
<
pucch_pdu
->
prb_size
;
rb
++
)
{
rb2
=
rb
+
pucch_pdu
->
prb_start
;
gNB
->
rb_mask_ul
[
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
}
nb_rb
+=
pucch_pdu
->
prb_size
;
if
(
gNB
->
gNB_config
.
tdd_table
.
max_tdd_periodicity_list
[
slot_rx
].
max_num_of_symbol_per_slot_list
[
symbol
].
slot_config
.
value
==
1
){
nb_rb
=
0
;
for
(
int
m
=
0
;
m
<
9
;
m
++
)
gNB
->
rb_mask_ul
[
m
]
=
0
;
gNB
->
ulmask_symb
=
-
1
;
for
(
int
i
=
0
;
i
<
NUMBER_OF_NR_PUCCH_MAX
;
i
++
){
NR_gNB_PUCCH_t
*
pucch
=
gNB
->
pucch
[
i
];
if
(
pucch
)
{
if
((
pucch
->
active
==
1
)
&&
(
pucch
->
frame
==
frame_rx
)
&&
(
pucch
->
slot
==
slot_rx
)
)
{
gNB
->
ulmask_symb
=
symbol
;
nfapi_nr_pucch_pdu_t
*
pucch_pdu
=
&
pucch
[
i
].
pucch_pdu
;
if
((
symbol
>=
pucch_pdu
->
start_symbol_index
)
&&
(
symbol
<
(
pucch_pdu
->
start_symbol_index
+
pucch_pdu
->
nr_of_symbols
))){
for
(
rb
=
0
;
rb
<
pucch_pdu
->
prb_size
;
rb
++
)
{
rb2
=
rb
+
pucch_pdu
->
prb_start
;
gNB
->
rb_mask_ul
[
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
}
nb_rb
+=
pucch_pdu
->
prb_size
;
}
}
}
}
}
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
NR_gNB_ULSCH_t
*
ulsch
=
gNB
->
ulsch
[
ULSCH_id
][
0
];
int
harq_pid
;
NR_UL_gNB_HARQ_t
*
ulsch_harq
;
if
((
ulsch
)
&&
(
ulsch
->
rnti
>
0
))
{
for
(
harq_pid
=
0
;
harq_pid
<
NR_MAX_ULSCH_HARQ_PROCESSES
;
harq_pid
++
)
{
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
AssertFatal
(
ulsch_harq
!=
NULL
,
"harq_pid %d is not allocated
\n
"
,
harq_pid
);
if
((
ulsch_harq
->
status
==
NR_ACTIVE
)
&&
(
ulsch_harq
->
frame
==
frame_rx
)
&&
(
ulsch_harq
->
slot
==
slot_rx
)
&&
(
ulsch_harq
->
handled
==
0
)){
uint8_t
symbol_start
=
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
uint8_t
symbol_end
=
symbol_start
+
ulsch_harq
->
ulsch_pdu
.
nr_of_symbols
;
if
((
symbol
>=
symbol_start
)
&&
(
symbol
<
symbol_end
)){
for
(
rb
=
0
;
rb
<
ulsch_harq
->
ulsch_pdu
.
rb_size
;
rb
++
)
{
rb2
=
rb
+
ulsch_harq
->
ulsch_pdu
.
rb_start
;
gNB
->
rb_mask_ul
[
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
}
nb_rb
+=
ulsch_harq
->
ulsch_pdu
.
rb_size
;
for
(
int
ULSCH_id
=
0
;
ULSCH_id
<
NUMBER_OF_NR_ULSCH_MAX
;
ULSCH_id
++
)
{
NR_gNB_ULSCH_t
*
ulsch
=
gNB
->
ulsch
[
ULSCH_id
][
0
];
int
harq_pid
;
NR_UL_gNB_HARQ_t
*
ulsch_harq
;
if
((
ulsch
)
&&
(
ulsch
->
rnti
>
0
))
{
for
(
harq_pid
=
0
;
harq_pid
<
NR_MAX_ULSCH_HARQ_PROCESSES
;
harq_pid
++
)
{
ulsch_harq
=
ulsch
->
harq_processes
[
harq_pid
];
AssertFatal
(
ulsch_harq
!=
NULL
,
"harq_pid %d is not allocated
\n
"
,
harq_pid
);
if
((
ulsch_harq
->
status
==
NR_ACTIVE
)
&&
(
ulsch_harq
->
frame
==
frame_rx
)
&&
(
ulsch_harq
->
slot
==
slot_rx
)
&&
(
ulsch_harq
->
handled
==
0
)){
uint8_t
symbol_start
=
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
uint8_t
symbol_end
=
symbol_start
+
ulsch_harq
->
ulsch_pdu
.
nr_of_symbols
;
gNB
->
ulmask_symb
=
symbol
;
if
((
symbol
>=
symbol_start
)
&&
(
symbol
<
symbol_end
)){
for
(
rb
=
0
;
rb
<
ulsch_harq
->
ulsch_pdu
.
rb_size
;
rb
++
)
{
rb2
=
rb
+
ulsch_harq
->
ulsch_pdu
.
rb_start
;
gNB
->
rb_mask_ul
[
rb2
>>
5
]
|=
(
1
<<
(
rb2
&
31
));
}
nb_rb
+=
ulsch_harq
->
ulsch_pdu
.
rb_size
;
}
}
}
}
}
//TODO Add check for PRACH as well?
}
if
(
nb_rb
<
gNB
->
frame_parms
.
N_RB_UL
)
return
;
}
if
(
nb_rb
<
gNB
->
frame_parms
.
N_RB_UL
)
return
;
}
}
...
...
@@ -516,12 +516,23 @@ void phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
RU_t
*
ru
=
gNB
->
RU_list
[
0
];
int
slot_offset
=
frame_parms
->
get_samples_slot_timestamp
(
slot_rx
,
frame_parms
,
0
);
slot_offset
-=
ru
->
N_TA_offset
;
char
name
[
128
];
FILE
*
f
;
sprintf
(
name
,
"rxdata.%d.%d.%d.raw"
,
ulsch
->
rnti
,
frame_rx
,
slot_rx
);
f
=
fopen
(
name
,
"w"
);
if
(
f
==
NULL
)
exit
(
1
);
fwrite
(
&
ru
->
common
.
rxdata
[
0
][
slot_offset
],
2
,
frame_parms
->
get_samples_per_slot
(
slot_rx
,
frame_parms
)
*
2
,
f
);
fclose
(
f
);
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
0
]
=
(
int16_t
)
ulsch
->
rnti
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
1
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
rb_size
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
2
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
rb_start
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
3
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
nr_of_symbols
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
4
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
5
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
mcs_index
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
6
]
=
(
int16_t
)
ulsch_harq
->
ulsch_pdu
.
pusch_data
.
rv_index
;
((
int16_t
*
)
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
])[
7
]
=
(
int16_t
)
harq_pid
;
memcpy
(
&
gNB
->
common_vars
.
debugBuff
[
gNB
->
common_vars
.
debugBuff_sample_offset
+
4
],
&
ru
->
common
.
rxdata
[
0
][
slot_offset
],
frame_parms
->
get_samples_per_slot
(
slot_rx
,
frame_parms
)
*
sizeof
(
int32_t
));
gNB
->
common_vars
.
debugBuff_sample_offset
+=
(
frame_parms
->
get_samples_per_slot
(
slot_rx
,
frame_parms
)
+
1000
+
4
);
if
(
gNB
->
common_vars
.
debugBuff_sample_offset
>
((
frame_parms
->
get_samples_per_slot
(
slot_rx
,
frame_parms
)
+
1000
+
2
)
*
20
))
{
FILE
*
f
;
f
=
fopen
(
"rxdata_buff.raw"
,
"w"
);
if
(
f
==
NULL
)
exit
(
1
);
fwrite
((
int16_t
*
)
gNB
->
common_vars
.
debugBuff
,
2
,(
frame_parms
->
get_samples_per_slot
(
slot_rx
,
frame_parms
)
+
1000
+
4
)
*
20
*
2
,
f
);
fclose
(
f
);
exit
(
-
1
);
}
#endif
uint8_t
symbol_start
=
ulsch_harq
->
ulsch_pdu
.
start_symbol_index
;
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
769366f8
...
...
@@ -463,9 +463,9 @@ int main(int argc, char **argv)
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
// common configuration
rrc_mac_config_req_gNB
(
0
,
0
,
1
,
scc
,
0
,
0
,
NULL
);
rrc_mac_config_req_gNB
(
0
,
0
,
1
,
200
,
scc
,
0
,
0
,
NULL
);
// UE dedicated configuration
rrc_mac_config_req_gNB
(
0
,
0
,
1
,
NULL
,
1
,
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
rrc_mac_config_req_gNB
(
0
,
0
,
1
,
200
,
NULL
,
1
,
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
phy_init_nr_gNB
(
gNB
,
0
,
0
);
N_RB_DL
=
gNB
->
frame_parms
.
N_RB_DL
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
769366f8
...
...
@@ -769,7 +769,7 @@ void nr_schedule_uss_dlsch_phytest(module_id_t module_idP,
}
u
int8_t
select_ul_harq_pid
(
NR_UE_sched_ctrl_t
*
sched_ctrl
)
{
int8_t
select_ul_harq_pid
(
NR_UE_sched_ctrl_t
*
sched_ctrl
)
{
uint8_t
hrq_id
;
uint8_t
max_ul_harq_pids
=
3
;
// temp: for testing
...
...
@@ -795,6 +795,8 @@ uint8_t select_ul_harq_pid(NR_UE_sched_ctrl_t *sched_ctrl) {
return
hrq_id
;
}
}
LOG_E
(
MAC
,
"All UL HARQ processes are busy. Cannot schedule ULSCH
\n
"
);
return
-
1
;
}
void
schedule_fapi_ul_pdu
(
int
Mod_idP
,
...
...
@@ -999,7 +1001,8 @@ void schedule_fapi_ul_pdu(int Mod_idP,
//Pusch Allocation in frequency domain [TS38.214, sec 6.1.2.2]
//Optional Data only included if indicated in pduBitmap
uint8_t
harq_id
=
select_ul_harq_pid
(
&
UE_list
->
UE_sched_ctrl
[
UE_id
]);
int8_t
harq_id
=
select_ul_harq_pid
(
&
UE_list
->
UE_sched_ctrl
[
UE_id
]);
if
(
harq_id
<
0
)
return
;
NR_UE_ul_harq_t
*
cur_harq
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_harq_processes
[
harq_id
];
pusch_pdu
->
pusch_data
.
harq_process_id
=
harq_id
;
pusch_pdu
->
pusch_data
.
new_data_indicator
=
cur_harq
->
ndi
;
...
...
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