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
canghaiwuhen
OpenXG-RAN
Commits
a0473b4d
Commit
a0473b4d
authored
6 years ago
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "adding detection of multiple PSS."
This partially reverts commit
449da9ac
.
parent
1a27089f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
62 deletions
+27
-62
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
+27
-62
No files found.
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
View file @
a0473b4d
...
@@ -803,47 +803,25 @@ static inline int64_t abs64(int64_t x)
...
@@ -803,47 +803,25 @@ static inline int64_t abs64(int64_t x)
#define DOT_PRODUCT_SCALING_SHIFT (17)
#define DOT_PRODUCT_SCALING_SHIFT (17)
int
max3
(
int64_t
a
,
int64_t
b
,
int64_t
c
)
{
if
(
a
>
b
)
{
if
(
a
>
c
)
{
return
(
0
);
}
else
{
return
(
2
);
}
}
else
{
if
(
b
>
c
)
{
return
(
1
);
}
else
{
return
(
2
);
}
}
}
int
pss_search_time_nr
(
int
**
rxdata
,
///rx data in time domain
int
pss_search_time_nr
(
int
**
rxdata
,
///rx data in time domain
NR_DL_FRAME_PARMS
*
frame_parms
,
NR_DL_FRAME_PARMS
*
frame_parms
,
int
*
eNB_id
)
int
*
eNB_id
)
{
{
uint8_t
L_max
=
4
;
unsigned
int
n
,
ar
,
peak_position
,
pss_source
;
unsigned
int
m
,
n
,
ar
,
n_peaks
=
0
;
int64_t
peak_value
;
unsigned
int
peak_position
[
3
*
L_max
],
pss_source
[
3
*
L_max
];
int64_t
peak_value
,
threshold
;
int64_t
result
;
int64_t
result
;
int64_t
avg
[
NUMBER_PSS_SEQUENCE
];
int64_t
avg
[
NUMBER_PSS_SEQUENCE
];
uint8_t
found_peak
=
0
;
unsigned
int
length
=
(
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
*
frame_parms
->
samples_per_subframe
);
/* 1 frame for now, it should be 2 TODO_NR */
unsigned
int
length
=
(
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
*
frame_parms
->
samples_per_subframe
);
/* 1 frame for now, it should be 2 TODO_NR */
AssertFatal
(
length
>
0
,
"illegal length %d
\n
"
,
length
);
AssertFatal
(
length
>
0
,
"illegal length %d
\n
"
,
length
);
for
(
int
i
=
0
;
i
<
NUMBER_PSS_SEQUENCE
;
i
++
)
AssertFatal
(
pss_corr_ue
[
i
]
!=
NULL
,
"pss_corr_ue[%d] not yet allocated! Exiting.
\n
"
,
i
);
for
(
int
i
=
0
;
i
<
NUMBER_PSS_SEQUENCE
;
i
++
)
AssertFatal
(
pss_corr_ue
[
i
]
!=
NULL
,
"pss_corr_ue[%d] not yet allocated! Exiting.
\n
"
,
i
);
for
(
int
i
=
0
;
i
<
4
;
i
++
)
{
peak_position
[
i
]
=
length
;
//max possible value
peak_value
=
0
;
pss_source
[
i
]
=
0
;
peak_position
=
0
;
}
pss_source
=
0
;
int
maxval
=
0
;
int
maxval
=
0
;
for
(
int
i
=
0
;
i
<
2
*
(
frame_parms
->
ofdm_symbol_size
);
i
++
)
{
for
(
int
i
=
0
;
i
<
2
*
(
frame_parms
->
ofdm_symbol_size
);
i
++
)
{
...
@@ -866,9 +844,9 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
...
@@ -866,9 +844,9 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
memset
(
pss_corr_ue
[
pss_index
],
0
,
length
*
sizeof
(
int64_t
));
memset
(
pss_corr_ue
[
pss_index
],
0
,
length
*
sizeof
(
int64_t
));
}
}
for
(
int
pss_index
=
0
;
pss_index
<
NUMBER_PSS_SEQUENCE
;
pss_index
++
)
{
for
(
n
=
0
;
n
<
length
;
n
+=
4
)
{
//
for
(
n
=
0
;
n
<
length
;
n
+=
4
)
{
//
for
(
int
pss_index
=
0
;
pss_index
<
NUMBER_PSS_SEQUENCE
;
pss_index
++
)
{
if
(
n
<
(
length
-
frame_parms
->
ofdm_symbol_size
))
{
if
(
n
<
(
length
-
frame_parms
->
ofdm_symbol_size
))
{
...
@@ -892,40 +870,27 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
...
@@ -892,40 +870,27 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
/* calculate the absolute value of sync_corr[n] */
/* calculate the absolute value of sync_corr[n] */
avg
[
pss_index
]
+=
pss_corr_ue
[
pss_index
][
n
];
avg
[
pss_index
]
+=
pss_corr_ue
[
pss_index
][
n
];
}
if
(
pss_corr_ue
[
pss_index
][
n
]
>
peak_value
)
{
peak_value
=
pss_corr_ue
[
pss_index
][
n
];
avg
[
pss_index
]
/=
(
length
/
4
);
peak_position
=
n
;
}
pss_source
=
pss_index
;
threshold
=
10
*
avg
[
max3
(
avg
[
0
],
avg
[
1
],
avg
[
2
])];
#ifdef DEBUG_PSS_NR
peak_value
=
threshold
;
printf
(
"pss_index %d: n %6d peak_value %15llu
\n
"
,
pss_index
,
n
,
(
unsigned
long
long
)
pss_corr_ue
[
pss_index
][
n
]);
#endif
for
(
n
=
0
;
n
<
length
;
n
+=
4
)
{
}
m
=
max3
(
pss_corr_ue
[
0
][
n
],
pss_corr_ue
[
1
][
n
],
pss_corr_ue
[
2
][
n
]);
if
(
pss_corr_ue
[
m
][
n
]
>
peak_value
)
{
peak_value
=
pss_corr_ue
[
m
][
n
];
peak_position
[
n_peaks
]
=
n
;
pss_source
[
n_peaks
]
=
m
;
found_peak
=
1
;
}
if
((
peak_position
[
n_peaks
]
+
4
*
(
frame_parms
->
ofdm_symbol_size
+
frame_parms
->
nb_prefix_samples
)
<
n
)
&&
(
found_peak
==
1
))
{
//#ifdef DEBUG_PSS_NR
printf
(
"peak %d found at pss_index %d, n %6d, peak_value %15llu
\n
"
,
n_peaks
,
pss_source
[
n_peaks
],
peak_position
[
n_peaks
],
(
unsigned
long
long
)
pss_corr_ue
[
pss_source
[
n_peaks
]][
peak_position
[
n_peaks
]]);
//#endif
peak_value
=
threshold
;
found_peak
=
0
;
n_peaks
++
;
//if (n_peaks==L_max) break;
}
}
}
}
*
eNB_id
=
pss_source
[
0
];
for
(
int
pss_index
=
0
;
pss_index
<
NUMBER_PSS_SEQUENCE
;
pss_index
++
)
avg
[
pss_index
]
/=
(
length
/
4
);
*
eNB_id
=
pss_source
;
LOG_I
(
PHY
,
"[UE] nr_synchro_time: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %d dB
\n
"
,
pss_source
,
peak_position
,
(
unsigned
long
long
)
peak_value
,
dB_fixed64
(
peak_value
),
dB_fixed64
(
avg
[
pss_source
]));
if
(
peak_value
<
5
*
avg
[
pss_source
])
return
(
-
1
);
//LOG_I(PHY,"[UE] nr_synchro_time: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %d dB\n", pss_source, peak_position, (unsigned long long)peak_value, dB_fixed64(peak_value),dB_fixed64(avg[pss_source]));
#ifdef DBG_PSS_NR
#ifdef DBG_PSS_NR
...
@@ -942,6 +907,6 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
...
@@ -942,6 +907,6 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
#endif
#endif
return
(
peak_position
[
0
]
);
return
(
peak_position
);
}
}
This diff is collapsed.
Click to expand it.
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