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
lizhongxiao
OpenXG-RAN
Commits
5092eca8
Commit
5092eca8
authored
May 23, 2022
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some robustness improvements
parent
0eeb1742
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
21 deletions
+44
-21
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+5
-0
openair1/PHY/NR_TRANSPORT/srs_rx.c
openair1/PHY/NR_TRANSPORT/srs_rx.c
+12
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+25
-19
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
+2
-1
No files found.
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
5092eca8
...
...
@@ -1089,6 +1089,11 @@ int nr_srs_channel_estimation(PHY_VARS_gNB *gNB,
LOG_I
(
NR_PHY
,
"signal_power = %u
\n
"
,
*
signal_power
);
#endif
if
(
*
signal_power
==
0
)
{
LOG_W
(
NR_PHY
,
"Received SRS signal power is 0
\n
"
);
return
-
1
;
}
// Compute noise power
uint8_t
signal_power_bits
=
log2_approx
(
*
signal_power
);
...
...
openair1/PHY/NR_TRANSPORT/srs_rx.c
View file @
5092eca8
...
...
@@ -113,6 +113,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
uint64_t
symbol_offset
=
(
n_symbols
+
l0
)
*
frame_parms
->
ofdm_symbol_size
;
int32_t
*
rx_signal
;
bool
no_srs_signal
=
true
;
for
(
int
ant
=
0
;
ant
<
frame_parms
->
nb_antennas_rx
;
ant
++
)
{
memset
(
srs_received_signal
[
ant
],
0
,
frame_parms
->
ofdm_symbol_size
*
sizeof
(
int32_t
));
...
...
@@ -121,6 +122,10 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
for
(
int
sc_idx
=
0
;
sc_idx
<
nr_srs_info
->
sc_list_length
;
sc_idx
++
)
{
srs_received_signal
[
ant
][
nr_srs_info
->
sc_list
[
sc_idx
]]
=
rx_signal
[
nr_srs_info
->
sc_list
[
sc_idx
]];
if
(
rx_signal
[
nr_srs_info
->
sc_list
[
sc_idx
]]
!=
0
)
{
no_srs_signal
=
false
;
}
#ifdef SRS_DEBUG
uint64_t
subcarrier_offset
=
frame_parms
->
first_carrier_offset
+
srs_pdu
->
bwp_start
*
12
;
int
subcarrier_log
=
nr_srs_info
->
sc_list
[
sc_idx
]
-
subcarrier_offset
;
...
...
@@ -140,5 +145,11 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
#endif
}
}
if
(
no_srs_signal
)
{
LOG_W
(
NR_PHY
,
"No SRS signal
\n
"
);
return
-
1
;
}
else
{
return
0
;
}
}
\ No newline at end of file
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
5092eca8
...
...
@@ -636,7 +636,8 @@ void phy_procedures_gNB_common_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
int
fill_srs_reported_symbol_list
(
nfapi_nr_srs_indication_reported_symbol_t
*
reported_symbol_list
,
nfapi_nr_srs_pdu_t
*
srs_pdu
,
int
N_RB_UL
,
const
int8_t
*
snr_per_rb
)
{
const
int8_t
*
snr_per_rb
,
int
srs_est
)
{
reported_symbol_list
->
num_rbs
=
srs_bandwidth_config
[
srs_pdu
->
config_index
][
srs_pdu
->
bandwidth_index
][
0
];
...
...
@@ -645,10 +646,12 @@ int fill_srs_reported_symbol_list(nfapi_nr_srs_indication_reported_symbol_t* rep
}
for
(
int
rb
=
0
;
rb
<
reported_symbol_list
->
num_rbs
;
rb
++
)
{
if
(
snr_per_rb
[
rb
]
<
-
64
)
{
if
(
srs_est
<
0
)
{
reported_symbol_list
->
rb_list
[
rb
].
rb_snr
=
0xFF
;
}
else
if
(
snr_per_rb
[
rb
]
<
-
64
)
{
reported_symbol_list
->
rb_list
[
rb
].
rb_snr
=
0
;
}
else
if
(
snr_per_rb
[
rb
]
>
63
)
{
reported_symbol_list
->
rb_list
[
rb
].
rb_snr
=
255
;
reported_symbol_list
->
rb_list
[
rb
].
rb_snr
=
0xFE
;
}
else
{
reported_symbol_list
->
rb_list
[
rb
].
rb_snr
=
(
snr_per_rb
[
rb
]
+
64
)
<<
1
;
}
...
...
@@ -858,8 +861,9 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
generate_srs_nr
(
srs_pdu
,
&
gNB
->
frame_parms
,
gNB
->
nr_srs_info
[
i
]
->
srs_generated_signal
,
gNB
->
nr_srs_info
[
i
],
AMP
,
frame_rx
,
slot_rx
);
}
nr_get_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
],
gNB
->
nr_srs_info
[
i
]
->
srs_received_signal
);
int
srs_est
=
nr_get_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
],
gNB
->
nr_srs_info
[
i
]
->
srs_received_signal
);
if
(
srs_est
>=
0
)
{
nr_srs_channel_estimation
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
],
gNB
->
nr_srs_info
[
i
]
->
srs_generated_signal
,
...
...
@@ -872,6 +876,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
gNB
->
nr_srs_info
[
i
]
->
noise_power
,
gNB
->
nr_srs_info
[
i
]
->
snr_per_rb
,
gNB
->
nr_srs_info
[
i
]
->
snr
);
}
T
(
T_GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE
,
T_INT
(
0
),
T_INT
(
srs_pdu
->
rnti
),
T_INT
(
frame_rx
),
T_INT
(
0
),
T_INT
(
0
),
T_BUFFER
(
gNB
->
nr_srs_info
[
i
]
->
srs_estimated_channel_freq
[
0
],
gNB
->
frame_parms
.
ofdm_symbol_size
*
sizeof
(
int32_t
)));
...
...
@@ -887,7 +892,7 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
gNB
->
srs_pdu_list
[
num_srs
].
rnti
=
srs_pdu
->
rnti
;
gNB
->
srs_pdu_list
[
num_srs
].
timing_advance
=
nr_est_timing_advance_srs
(
&
gNB
->
frame_parms
,
gNB
->
nr_srs_info
[
i
]
->
srs_estimated_channel_time
);
gNB
->
srs_pdu_list
[
num_srs
].
num_symbols
=
1
<<
srs_pdu
->
num_symbols
;
gNB
->
srs_pdu_list
[
num_srs
].
wide_band_snr
=
(
*
gNB
->
nr_srs_info
[
i
]
->
snr
+
64
)
<<
1
;
gNB
->
srs_pdu_list
[
num_srs
].
wide_band_snr
=
srs_est
>=
0
?
(
*
gNB
->
nr_srs_info
[
i
]
->
snr
+
64
)
<<
1
:
0xFF
;
// 0xFF will be set if this field is invalid
gNB
->
srs_pdu_list
[
num_srs
].
num_reported_symbols
=
1
<<
srs_pdu
->
num_symbols
;
if
(
!
gNB
->
srs_pdu_list
[
num_srs
].
reported_symbol_list
)
{
gNB
->
srs_pdu_list
[
num_srs
].
reported_symbol_list
=
(
nfapi_nr_srs_indication_reported_symbol_t
*
)
calloc
(
1
,
gNB
->
srs_pdu_list
[
num_srs
].
num_reported_symbols
*
sizeof
(
nfapi_nr_srs_indication_reported_symbol_t
));
...
...
@@ -895,7 +900,8 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
fill_srs_reported_symbol_list
(
&
gNB
->
srs_pdu_list
[
num_srs
].
reported_symbol_list
[
0
],
srs_pdu
,
gNB
->
frame_parms
.
N_RB_UL
,
gNB
->
nr_srs_info
[
i
]
->
snr_per_rb
);
gNB
->
nr_srs_info
[
i
]
->
snr_per_rb
,
srs_est
);
gNB
->
UL_INFO
.
srs_ind
.
number_of_pdus
+=
1
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
View file @
5092eca8
...
...
@@ -125,7 +125,8 @@ void nr_schedule_srs(int module_id, frame_t frame) {
sched_ctrl
->
sched_srs
.
slot
=
-
1
;
sched_ctrl
->
sched_srs
.
srs_scheduled
=
false
;
if
(
!
UE_info
->
Msg4_ACKed
[
UE_id
]
||
sched_ctrl
->
rrc_processing_timer
>
0
)
{
if
((
sched_ctrl
->
ul_failure
==
1
&&
get_softmodem_params
()
->
phy_test
==
0
)
||
!
UE_info
->
Msg4_ACKed
[
UE_id
]
||
sched_ctrl
->
rrc_processing_timer
>
0
)
{
continue
;
}
...
...
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