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
spbro
OpenXG-RAN
Commits
ee3dcc5c
Commit
ee3dcc5c
authored
Mar 13, 2024
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replacing cell_notdetected with cell_detected in initial_sync structure
parent
1fa6be2a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
25 deletions
+32
-25
executables/nr-ue.c
executables/nr-ue.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+26
-19
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
+1
-1
openair1/SIMULATION/NR_PHY/pbchsim.c
openair1/SIMULATION/NR_PHY/pbchsim.c
+4
-4
No files found.
executables/nr-ue.c
View file @
ee3dcc5c
...
...
@@ -440,7 +440,7 @@ static void UE_synch(void *arg) {
uint64_t
dl_carrier
,
ul_carrier
;
nr_get_carrier_frequencies
(
UE
,
&
dl_carrier
,
&
ul_carrier
);
nr_initial_sync_t
ret
=
nr_initial_sync
(
&
syncD
->
proc
,
UE
,
2
,
get_softmodem_params
()
->
sa
);
if
(
!
ret
.
cell_not
detected
)
{
if
(
ret
.
cell_
detected
)
{
syncD
->
rx_offset
=
ret
.
rx_offset
;
freq_offset
=
UE
->
common_vars
.
freq_offset
;
// frequency offset computed with pss in initial sync
hw_slot_offset
=
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
ee3dcc5c
...
...
@@ -100,10 +100,10 @@ void free_list(NR_UE_SSB *node) {
free
(
node
);
}
int
nr_pbch_detection
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
pbch_initial_symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
static
bool
nr_pbch_detection
(
const
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
ue
,
int
pbch_initial_symbol
,
c16_t
rxdataF
[][
ue
->
frame_parms
.
samples_per_slot_wCP
])
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
...
...
@@ -138,8 +138,8 @@ int nr_pbch_detection(const UE_nr_rxtx_proc_t *proc,
}
NR_UE_SSB
*
temp_ptr
=
best_ssb
;
int
ret
=
-
1
;
while
(
ret
!=
0
&&
temp_ptr
!=
NULL
)
{
bool
ret
=
false
;
while
(
!
ret
&&
temp_ptr
!=
NULL
)
{
start_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
// computing channel estimation for selected best ssb
...
...
@@ -153,11 +153,18 @@ int nr_pbch_detection(const UE_nr_rxtx_proc_t *proc,
stop_meas
(
&
ue
->
dlsch_channel_estimation_stats
);
fapiPbch_t
result
=
{
0
};
ret
=
nr_rx_pbch
(
ue
,
proc
,
estimateSz
,
dl_ch_estimates
,
frame_parms
,
temp_ptr
->
i_ssb
,
&
result
,
rxdataF
);
if
(
DUMP_PBCH_CH_ESTIMATES
&&
(
ret
==
0
))
{
int
pbch_res
=
nr_rx_pbch
(
ue
,
proc
,
estimateSz
,
dl_ch_estimates
,
frame_parms
,
temp_ptr
->
i_ssb
,
&
result
,
rxdataF
);
ret
=
pbch_res
==
0
;
if
(
DUMP_PBCH_CH_ESTIMATES
&&
ret
)
{
write_output
(
"pbch_ch_estimates.m"
,
"pbch_ch_estimates"
,
dl_ch_estimates
,
frame_parms
->
nb_antennas_rx
*
estimateSz
,
1
,
1
);
write_output
(
"pbch_ch_estimates_time.m"
,
"pbch_ch_estimates_time"
,
dl_ch_estimates_time
,
frame_parms
->
nb_antennas_rx
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
write_output
(
"pbch_ch_estimates_time.m"
,
"pbch_ch_estimates_time"
,
dl_ch_estimates_time
,
frame_parms
->
nb_antennas_rx
*
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
}
temp_ptr
=
temp_ptr
->
next_ssb
;
...
...
@@ -165,7 +172,7 @@ int nr_pbch_detection(const UE_nr_rxtx_proc_t *proc,
free_list
(
best_ssb
);
if
(
ret
==
0
)
{
if
(
ret
)
{
frame_parms
->
nb_antenna_ports_gNB
=
1
;
// pbch_tx_ant;
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully, ssb index %d
\n
"
,
ue
->
Mod_id
,
frame_parms
->
ssb_index
);
}
...
...
@@ -258,7 +265,7 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
int
freq_offset_sss
=
0
;
bool
ret_sss
=
rx_sss_nr
(
ue
,
proc
,
&
metric_tdd_ncp
,
&
phase_tdd_ncp
,
&
freq_offset_sss
,
rxdataF
);
ret
.
cell_
notdetected
=
!
ret_sss
;
// rx_sss_nr returns true if success
ret
.
cell_
detected
=
ret_sss
;
// rx_sss_nr returns true if success
// digital compensation of FFO for SSB symbols
if
(
ue
->
UE_fo_compensation
)
{
double
s_time
=
1
/
(
1.0e3
*
fp
->
samples_per_subframe
);
// sampling time
...
...
@@ -278,12 +285,12 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
ue
->
common_vars
.
freq_offset
+=
freq_offset_sss
;
}
if
(
ret
.
cell_
notdetected
==
0
)
{
// we got sss channel
if
(
ret
.
cell_
detected
)
{
// we got sss channel
nr_gold_pbch
(
ue
);
ret
.
cell_
not
detected
=
nr_pbch_detection
(
proc
,
ue
,
1
,
rxdataF
);
// start pbch detection at first symbol after pss
ret
.
cell_detected
=
nr_pbch_detection
(
proc
,
ue
,
1
,
rxdataF
);
// start pbch detection at first symbol after pss
}
if
(
ret
.
cell_
notdetected
==
0
)
{
if
(
ret
.
cell_
detected
)
{
// sync at symbol ue->symbol_offset
// computing the offset wrt the beginning of the frame
int
mu
=
fp
->
numerology_index
;
...
...
@@ -343,7 +350,7 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
fp
->
Nid_cell
,
metric_tdd_ncp
,
phase_tdd_ncp
,
!
ret
.
cell_not
detected
,
ret
.
cell_
detected
,
ret
.
rx_offset
);
#endif
...
...
@@ -352,11 +359,11 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
LOG_I
(
PHY
,
"TDD Normal prefix: SSS error condition: sync_pos %d
\n
"
,
sync_pos
);
#endif
}
if
(
ret
.
cell_
notdetected
==
0
)
if
(
ret
.
cell_
detected
)
break
;
}
}
else
{
ret
.
cell_
notdetected
=
tru
e
;
ret
.
cell_
detected
=
fals
e
;
}
/* Consider this is a false detection if the offset is > 1000 Hz
...
...
@@ -367,7 +374,7 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
LOG_E(HW, "Ignore MIB with high freq offset [%d Hz] estimation \n",ue->common_vars.freq_offset);
}*/
if
(
ret
.
cell_
notdetected
==
0
)
{
// PBCH found so indicate sync to higher layers and configure frame parameters
if
(
ret
.
cell_
detected
)
{
// PBCH found so indicate sync to higher layers and configure frame parameters
//#ifdef DEBUG_INITIAL_SYNCH
...
...
@@ -402,7 +409,7 @@ nr_initial_sync_t nr_initial_sync(UE_nr_rxtx_proc_t *proc, PHY_VARS_NR_UE *ue, i
}
// gain control
if
(
ret
.
cell_notdetected
!=
0
)
{
// we are not synched, so we cannot use rssi measurement (which is based on channel estimates)
if
(
!
ret
.
cell_detected
)
{
// we are not synched, so we cannot use rssi measurement (which is based on channel estimates)
int
rx_power
=
0
;
// do a measurement on the best guess of the PSS
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h
View file @
ee3dcc5c
...
...
@@ -319,7 +319,7 @@ int dump_ue_stats(PHY_VARS_NR_UE *phy_vars_ue,
@param sa current running mode
*/
typedef
struct
{
bool
cell_
not
detected
;
bool
cell_detected
;
int
rx_offset
;
}
nr_initial_sync_t
;
nr_initial_sync_t
nr_initial_sync
(
UE_nr_rxtx_proc_t
*
proc
,
PHY_VARS_NR_UE
*
phy_vars_ue
,
int
n_frames
,
int
sa
);
...
...
openair1/SIMULATION/NR_PHY/pbchsim.c
View file @
ee3dcc5c
...
...
@@ -766,10 +766,10 @@ int main(int argc, char **argv)
}
if
(
UE
->
is_synchronized
==
0
)
{
UE_nr_rxtx_proc_t
proc
=
{
0
};
nr_initial_sync_t
ret
=
nr_initial_sync
(
&
proc
,
UE
,
1
,
0
);
printf
(
"nr_initial_sync1 returns %d
\n
"
,
ret
.
cell_notdetected
);
if
(
ret
.
cell_not
detected
)
n_errors
++
;
nr_initial_sync_t
ret
=
nr_initial_sync
(
&
proc
,
UE
,
1
,
0
);
printf
(
"nr_initial_sync1 returns %s
\n
"
,
ret
.
cell_detected
?
"cell detected"
:
"cell not detected"
);
if
(
!
ret
.
cell_
detected
)
n_errors
++
;
}
else
{
UE_nr_rxtx_proc_t
proc
=
{
0
};
...
...
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