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
f6417903
Commit
f6417903
authored
May 26, 2023
by
Sagar Parsawar
Committed by
francescomani
Aug 08, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Applied clang formatting
parent
4f9aa865
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
125 additions
and
112 deletions
+125
-112
executables/nr-ru.c
executables/nr-ru.c
+7
-2
executables/nr-softmodem-common.h
executables/nr-softmodem-common.h
+2
-2
executables/nr-ue.c
executables/nr-ue.c
+3
-6
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+3
-3
executables/nr-uesoftmodem.h
executables/nr-uesoftmodem.h
+1
-1
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+91
-71
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+1
-1
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+4
-4
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+1
-7
openair2/RRC/NR_UE/main_ue.c
openair2/RRC/NR_UE/main_ue.c
+4
-3
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+6
-8
openair2/RRC/NR_UE/rrc_proto.h
openair2/RRC/NR_UE/rrc_proto.h
+2
-4
No files found.
executables/nr-ru.c
View file @
f6417903
...
...
@@ -777,8 +777,13 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
void
*
txp
[
ru
->
nb_tx
];
unsigned
int
txs
;
int
i
;
T
(
T_ENB_PHY_OUTPUT_SIGNAL
,
T_INT
(
0
),
T_INT
(
0
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
fp
->
get_samples_slot_timestamp
(
slot
,
fp
,
0
)],
fp
->
get_samples_per_slot
(
slot
,
fp
)
*
4
));
T
(
T_ENB_PHY_OUTPUT_SIGNAL
,
T_INT
(
0
),
T_INT
(
0
),
T_INT
(
frame
),
T_INT
(
slot
),
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
fp
->
get_samples_slot_timestamp
(
slot
,
fp
,
0
)],
fp
->
get_samples_per_slot
(
slot
,
fp
)
*
4
));
int
sf_extension
=
0
;
int
siglen
=
fp
->
get_samples_per_slot
(
slot
,
fp
);
radio_tx_burst_flag_t
flags_burst
=
TX_BURST_INVALID
;
...
...
executables/nr-softmodem-common.h
View file @
f6417903
executables/nr-ue.c
View file @
f6417903
...
...
@@ -944,17 +944,14 @@ void *UE_thread(void *arg)
return
NULL
;
}
void
init_NR_UE
(
int
nb_inst
,
char
*
uecap_file
,
char
*
rrc_config_path
,
char
*
reconfig_file
,
char
*
rbconfig_file
)
{
void
init_NR_UE
(
int
nb_inst
,
char
*
uecap_file
,
char
*
rrc_config_path
,
char
*
reconfig_file
,
char
*
rbconfig_file
)
{
int
inst
;
NR_UE_MAC_INST_t
*
mac_inst
;
NR_UE_RRC_INST_t
*
rrc_inst
;
for
(
inst
=
0
;
inst
<
nb_inst
;
inst
++
)
{
AssertFatal
((
rrc_inst
=
nr_l3_init_ue
(
uecap_file
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
))
!=
NULL
,
"can not initialize RRC module
\n
"
);
AssertFatal
((
rrc_inst
=
nr_l3_init_ue
(
uecap_file
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
))
!=
NULL
,
"can not initialize RRC module
\n
"
);
AssertFatal
((
mac_inst
=
nr_l2_init_ue
(
rrc_inst
))
!=
NULL
,
"can not initialize L2 module
\n
"
);
AssertFatal
((
mac_inst
->
if_module
=
nr_ue_if_module_init
(
inst
))
!=
NULL
,
"can not initialize IF module
\n
"
);
}
...
...
executables/nr-uesoftmodem.c
View file @
f6417903
...
...
@@ -474,7 +474,7 @@ int main( int argc, char **argv ) {
#endif
LOG_I
(
HW
,
"Version: %s
\n
"
,
PACKAGE_VERSION
);
init_NR_UE
(
1
,
uecap_file
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
);
init_NR_UE
(
1
,
uecap_file
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
);
int
mode_offset
=
get_softmodem_params
()
->
nsa
?
NUMBER_OF_UE_MAX
:
1
;
uint16_t
node_number
=
get_softmodem_params
()
->
node_number
;
...
...
executables/nr-uesoftmodem.h
View file @
f6417903
...
...
@@ -93,7 +93,7 @@ extern nrUE_params_t *get_nrUE_params(void);
// In nr-ue.c
extern
int
setup_nr_ue_buffers
(
PHY_VARS_NR_UE
**
phy_vars_ue
,
openair0_config_t
*
openair0_cfg
);
extern
void
fill_ue_band_info
(
void
);
extern
void
init_NR_UE
(
int
,
char
*
,
char
*
,
char
*
,
char
*
);
extern
void
init_NR_UE
(
int
,
char
*
,
char
*
,
char
*
,
char
*
);
extern
void
init_NR_UE_threads
(
int
);
extern
void
reset_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
...
...
openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
View file @
f6417903
...
...
@@ -60,14 +60,11 @@ void peak_estimator(int32_t *buffer, int32_t buf_len, int32_t *peak_idx, int32_t
}
// Check for detection threshold
LOG_D
(
PHY
,
"PRS ToA estimator: max_val %d, mean_val %d, max_idx %d
\n
"
,
max_val
,
mean_val
,
max_idx
);
if
((
mean_val
!=
0
)
&&
(
max_val
/
mean_val
>
10
))
{
LOG_D
(
PHY
,
"PRS ToA estimator: max_val %d, mean_val %d, max_idx %d
\n
"
,
max_val
,
mean_val
,
max_idx
);
if
((
mean_val
!=
0
)
&&
(
max_val
/
mean_val
>
10
))
{
*
peak_val
=
max_val
;
*
peak_idx
=
max_idx
;
}
else
{
}
else
{
*
peak_val
=
0
;
*
peak_idx
=
0
;
}
...
...
@@ -107,8 +104,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
int16_t
scale_factor
=
(
1
.
0
f
/
(
float
)(
prs_cfg
->
NumPRSSymbols
))
*
(
1
<<
15
);
int16_t
num_pilots
=
(
12
/
prs_cfg
->
CombSize
)
*
prs_cfg
->
NumRB
;
int16_t
first_half
=
frame_params
->
ofdm_symbol_size
-
frame_params
->
first_carrier_offset
;
int16_t
second_half
=
(
prs_cfg
->
NumRB
*
12
)
-
first_half
;
int16_t
start_offset
=
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
-
first_half
;
int16_t
second_half
=
(
prs_cfg
->
NumRB
*
12
)
-
first_half
;
int16_t
start_offset
=
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
-
first_half
;
LOG_D
(
PHY
,
"start_offset %d, first_half %d, second_half %d
\n
"
,
start_offset
,
first_half
,
second_half
);
int16_t
k_prime_table
[
K_PRIME_TABLE_ROW_SIZE
][
K_PRIME_TABLE_COL_SIZE
]
=
PRS_K_PRIME_TABLE
;
...
...
@@ -142,10 +139,11 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
for
(
rxAnt
=
0
;
rxAnt
<
frame_params
->
nb_antennas_rx
;
rxAnt
++
)
{
// reset variables
snr
=
0
;
rsrp
=
0
;
snr
=
0
;
rsrp
=
0
;
// calculate RE offset
k
=
(
prs_cfg
->
REOffset
+
k_prime
)
%
prs_cfg
->
CombSize
+
prs_cfg
->
RBOffset
*
12
+
frame_params
->
first_carrier_offset
;
k
=
(
prs_cfg
->
REOffset
+
k_prime
)
%
prs_cfg
->
CombSize
+
prs_cfg
->
RBOffset
*
12
+
frame_params
->
first_carrier_offset
;
// Channel estimation and interpolation
pil
=
(
int16_t
*
)
&
mod_prs
[
0
];
...
...
@@ -187,8 +185,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
8
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
(
c16_t
*
)
rxF
)
-
squaredMod
(
*
(
c16_t
*
)
noiseFig
))
-
10
*
log10
(
squaredMod
(
*
(
c16_t
*
)
noiseFig
));
...
...
@@ -219,8 +217,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
8
);
}
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
(
c16_t
*
)
rxF
)
-
squaredMod
(
*
(
c16_t
*
)
noiseFig
))
-
10
*
log10
(
squaredMod
(
*
(
c16_t
*
)
noiseFig
));
...
...
@@ -248,8 +246,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
8
);
}
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -270,13 +268,23 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
8
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
#ifdef DEBUG_PRS_PRINTS
printf
(
"[Rx %d] pilot %3d, SNR %+2d dB: rxF - > (%+3d, %+3d) addr %p ch -> (%+3d, %+3d), pil -> (%+d, %+d)
\n
"
,
rxAnt
,
num_pilots
-
1
,
snr
/
num_pilots
,
rxF
[
0
],
rxF
[
1
],
&
rxF
[
0
],
ch
[
0
],
ch
[
1
],
pil
[
0
],
pil
[
1
]);
printf
(
"[Rx %d] pilot %3d, SNR %+2d dB: rxF - > (%+3d, %+3d) addr %p ch -> (%+3d, %+3d), pil -> (%+d, %+d)
\n
"
,
rxAnt
,
num_pilots
-
1
,
snr
/
num_pilots
,
rxF
[
0
],
rxF
[
1
],
&
rxF
[
0
],
ch
[
0
],
ch
[
1
],
pil
[
0
],
pil
[
1
]);
#endif
}
else
if
(
prs_cfg
->
CombSize
==
4
)
...
...
@@ -333,8 +341,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
16
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -352,8 +360,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
16
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -375,8 +383,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
16
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -397,8 +405,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
16
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -416,8 +424,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
ch_tmp
,
16
);
//SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
//
SNR & RSRP estimation
rsrp
+=
squaredMod
(
*
((
c16_t
*
)
rxF
));
noiseFig
[
0
]
=
rxF
[
0
]
-
(
int16_t
)(((
int32_t
)
ch
[
0
]
*
pil
[
0
]
-
(
int32_t
)
ch
[
1
]
*
pil
[
1
])
>>
15
);
noiseFig
[
1
]
=
rxF
[
1
]
-
(
int16_t
)(((
int32_t
)
ch
[
1
]
*
pil
[
0
]
+
(
int32_t
)
ch
[
0
]
*
pil
[
1
])
>>
15
);
snr
+=
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
rxF
))
-
squaredMod
(
*
((
c16_t
*
)
noiseFig
)))
-
10
*
log10
(
squaredMod
(
*
((
c16_t
*
)
noiseFig
)));
...
...
@@ -431,8 +439,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
}
// average out the SNR and RSRP computed
prs_meas
[
rxAnt
]
->
snr
=
snr
/
(
float
)
num_pilots
;
prs_meas
[
rxAnt
]
->
rsrp
=
rsrp
/
(
float
)
num_pilots
;
prs_meas
[
rxAnt
]
->
snr
=
snr
/
(
float
)
num_pilots
;
prs_meas
[
rxAnt
]
->
rsrp
=
rsrp
/
(
float
)
num_pilots
;
//reset channel pointer
ch_tmp
=
(
int16_t
*
)
ch_tmp_buf
;
...
...
@@ -463,9 +471,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
// Place PRS channel estimates in FFT shifted format
if
(
first_half
>
0
)
memcpy
((
int16_t
*
)
&
chF_interpol
[
rxAnt
][
start_offset
],
&
ch_tmp
[
0
],
first_half
*
sizeof
(
int32_t
));
memcpy
((
int16_t
*
)
&
chF_interpol
[
rxAnt
][
start_offset
],
&
ch_tmp
[
0
],
first_half
*
sizeof
(
int32_t
));
if
(
second_half
>
0
)
memcpy
((
int16_t
*
)
&
chF_interpol
[
rxAnt
][
0
],
&
ch_tmp
[
first_half
<<
1
],
second_half
*
sizeof
(
int32_t
));
memcpy
((
int16_t
*
)
&
chF_interpol
[
rxAnt
][
0
],
&
ch_tmp
[
first_half
<<
1
],
second_half
*
sizeof
(
int32_t
));
// Time domain IMPULSE response
idft_size_idx_t
idftsizeidx
;
...
...
@@ -549,21 +557,14 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
(
int16_t
*
)
&
chT_interpol
[
rxAnt
][
0
],
1
);
// peak estimator
mean_val
=
squaredMod
(((
c16_t
*
)
ch_tmp
)[(
prs_cfg
->
NumRB
*
12
)
>>
1
]);
peak_estimator
(
&
chT_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
,
&
prs_toa
,
&
ch_pwr
,
mean_val
);
mean_val
=
squaredMod
(((
c16_t
*
)
ch_tmp
)[(
prs_cfg
->
NumRB
*
12
)
>>
1
]);
peak_estimator
(
&
chT_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
,
&
prs_toa
,
&
ch_pwr
,
mean_val
);
// adjusting the rx_gains for channel peak power
ch_pwr_dbm
=
10
*
log10
(
ch_pwr
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
frame_params
->
ofdm_symbol_size
);
ch_pwr_dbm
=
10
*
log10
(
ch_pwr
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
frame_params
->
ofdm_symbol_size
);
prs_meas
[
rxAnt
]
->
rsrp_dBm
=
10
*
log10
(
prs_meas
[
rxAnt
]
->
rsrp
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
prs_meas
[
rxAnt
]
->
rsrp_dBm
=
10
*
log10
(
prs_meas
[
rxAnt
]
->
rsrp
)
+
30
-
10
*
log10
(
pow
(
2
,
30
))
-
((
int
)
openair0_cfg
[
0
].
rx_gain
[
0
]
-
(
int
)
openair0_cfg
[
0
].
rx_gain_offset
[
0
])
-
dB_fixed
(
ue
->
frame_parms
.
ofdm_symbol_size
);
//prs measurements
prs_meas
[
rxAnt
]
->
gNB_id
=
gNB_id
;
...
...
@@ -571,10 +572,21 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
prs_meas
[
rxAnt
]
->
slot
=
proc
->
nr_slot_rx
;
prs_meas
[
rxAnt
]
->
rxAnt_idx
=
rxAnt
;
prs_meas
[
rxAnt
]
->
dl_aoa
=
rsc_id
;
prs_meas
[
rxAnt
]
->
dl_toa
=
prs_toa
/
(
float
)
NR_PRS_IDFT_OVERSAMP_FACTOR
;
if
((
frame_params
->
ofdm_symbol_size
-
prs_meas
[
rxAnt
]
->
dl_toa
)
<
frame_params
->
ofdm_symbol_size
/
2
)
prs_meas
[
rxAnt
]
->
dl_toa
=
prs_toa
/
(
float
)
NR_PRS_IDFT_OVERSAMP_FACTOR
;
if
((
frame_params
->
ofdm_symbol_size
-
prs_meas
[
rxAnt
]
->
dl_toa
)
<
frame_params
->
ofdm_symbol_size
/
2
)
prs_meas
[
rxAnt
]
->
dl_toa
-=
(
frame_params
->
ofdm_symbol_size
);
LOG_I
(
PHY
,
"[gNB %d][rsc %d][Rx %d][sfn %d][slot %d] DL PRS ToA ==> %.1f / %d samples, peak channel power %.1f dBm, SNR %+.1f dB, rsrp %+.1f dBm
\n
"
,
gNB_id
,
rsc_id
,
rxAnt
,
proc
->
frame_rx
,
proc
->
nr_slot_rx
,
prs_meas
[
rxAnt
]
->
dl_toa
,
frame_params
->
ofdm_symbol_size
,
ch_pwr_dbm
,
prs_meas
[
rxAnt
]
->
snr
,
prs_meas
[
rxAnt
]
->
rsrp_dBm
);
LOG_I
(
PHY
,
"[gNB %d][rsc %d][Rx %d][sfn %d][slot %d] DL PRS ToA ==> %.1f / %d samples, peak channel power %.1f dBm, SNR %+.1f dB, rsrp %+.1f dBm
\n
"
,
gNB_id
,
rsc_id
,
rxAnt
,
proc
->
frame_rx
,
proc
->
nr_slot_rx
,
prs_meas
[
rxAnt
]
->
dl_toa
,
frame_params
->
ofdm_symbol_size
,
ch_pwr_dbm
,
prs_meas
[
rxAnt
]
->
snr
,
prs_meas
[
rxAnt
]
->
rsrp_dBm
);
#ifdef DEBUG_PRS_CHEST
sprintf
(
filename
,
"%s%i%s"
,
"PRSpilot_"
,
rxAnt
,
".m"
);
...
...
@@ -595,13 +607,21 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
rxAnt
),
T_BUFFER
(
&
rxdataF
[
rxAnt
][
0
],
frame_params
->
samples_per_slot_wCP
*
sizeof
(
int32_t
)));
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE_FREQ
,
T_INT
(
gNB_id
),
T_INT
(
rsc_id
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
rxAnt
),
T_BUFFER
(
&
chF_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
)));
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
gNB_id
),
T_INT
(
rsc_id
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
rxAnt
),
T_BUFFER
(
&
chT_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
)));
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE_FREQ
,
T_INT
(
gNB_id
),
T_INT
(
rsc_id
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
rxAnt
),
T_BUFFER
(
&
chF_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
)));
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
gNB_id
),
T_INT
(
rsc_id
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
nr_slot_rx
),
T_INT
(
rxAnt
),
T_BUFFER
(
&
chT_interpol
[
rxAnt
][
0
],
NR_PRS_IDFT_OVERSAMP_FACTOR
*
frame_params
->
ofdm_symbol_size
*
sizeof
(
int32_t
)));
}
return
(
0
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
f6417903
...
...
@@ -187,7 +187,7 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
#ifdef DEBUG_INITIAL_SYNCH
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully, ssb index %d
\n
"
,
ue
->
Mod_id
,
frame_parms
->
ssb_index
);
LOG_I
(
PHY
,
"[UE%d] Initial sync: pbch decoded sucessfully, ssb index %d
\n
"
,
ue
->
Mod_id
,
frame_parms
->
ssb_index
);
#endif
return
(
0
);
}
else
{
...
...
openair1/PHY/defs_nr_common.h
View file @
f6417903
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
f6417903
...
...
@@ -943,13 +943,7 @@ void pbch_pdcch_processing(PHY_VARS_NR_UE *ue,
(
j
%
fp
->
symbols_per_slot
),
rxdataF
);
}
nr_prs_channel_estimation
(
gNB_id
,
rsc_id
,
i
,
ue
,
proc
,
fp
,
rxdataF
);
nr_prs_channel_estimation
(
gNB_id
,
rsc_id
,
i
,
ue
,
proc
,
fp
,
rxdataF
);
}
}
// for i
}
// for rsc_id
...
...
openair2/RRC/NR_UE/main_ue.c
View file @
f6417903
...
...
@@ -34,8 +34,9 @@
#include "rrc_proto.h"
#include "common/utils/LOG/log.h"
NR_UE_RRC_INST_t
*
nr_l3_init_ue
(
char
*
uecap
,
char
*
rrc_config_path
,
char
*
reconfig_file
,
char
*
rbconfig_file
){
//LOG_I(RRC, "[MAIN] NR UE MAC initialization...\n");
NR_UE_RRC_INST_t
*
nr_l3_init_ue
(
char
*
uecap
,
char
*
rrc_config_path
,
char
*
reconfig_file
,
char
*
rbconfig_file
)
{
// LOG_I(RRC, "[MAIN] NR UE MAC initialization...\n");
return
openair_rrc_top_init_ue_nr
(
uecap
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
);
return
openair_rrc_top_init_ue_nr
(
uecap
,
rrc_config_path
,
reconfig_file
,
rbconfig_file
);
}
openair2/RRC/NR_UE/rrc_UE.c
View file @
f6417903
...
...
@@ -344,7 +344,6 @@ void process_nsa_message(NR_UE_RRC_INST_t *rrc, nsa_message_t nsa_message_type,
}
NR_UE_RRC_INST_t
*
openair_rrc_top_init_ue_nr
(
char
*
uecap_file
,
char
*
rrc_config_path
,
char
*
reconfig_file
,
char
*
rbconfig_file
)
{
if
(
NB_NR_UE_INST
>
0
)
{
...
...
@@ -371,11 +370,11 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* uecap_file, char* rrc_config_
FILE
*
fd
;
char
filename
[
1024
];
if
(
rrc_config_path
&&
reconfig_file
)
sprintf
(
filename
,
"%s/%s"
,
rrc_config_path
,
reconfig_file
);
sprintf
(
filename
,
"%s/%s"
,
rrc_config_path
,
reconfig_file
);
else
sprintf
(
filename
,
"reconfig.raw"
);
LOG_I
(
NR_RRC
,
"using %s for rrc init[1/2]
\n
"
,
filename
);
LOG_I
(
NR_RRC
,
"using %s for rrc init[1/2]
\n
"
,
filename
);
fd
=
fopen
(
filename
,
"r"
);
char
buffer
[
1024
];
AssertFatal
(
fd
,
...
...
@@ -387,11 +386,11 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* uecap_file, char* rrc_config_
fclose
(
fd
);
process_nsa_message
(
NR_UE_rrc_inst
,
nr_SecondaryCellGroupConfig_r15
,
buffer
,
msg_len
);
if
(
rrc_config_path
&&
rbconfig_file
)
sprintf
(
filename
,
"%s/%s"
,
rrc_config_path
,
rbconfig_file
);
sprintf
(
filename
,
"%s/%s"
,
rrc_config_path
,
rbconfig_file
);
else
sprintf
(
filename
,
"rbconfig.raw"
);
LOG_I
(
NR_RRC
,
"using %s for rrc init[2/2]
\n
"
,
filename
);
LOG_I
(
NR_RRC
,
"using %s for rrc init[2/2]
\n
"
,
filename
);
fd
=
fopen
(
filename
,
"r"
);
AssertFatal
(
fd
,
"cannot read file %s: errno %d, %s
\n
"
,
...
...
@@ -418,7 +417,6 @@ NR_UE_RRC_INST_t* openair_rrc_top_init_ue_nr(char* uecap_file, char* rrc_config_
return
NR_UE_rrc_inst
;
}
int8_t
nr_ue_process_rlc_bearer_list
(
NR_CellGroupConfig_t
*
cell_group_config
){
return
0
;
...
...
openair2/RRC/NR_UE/rrc_proto.h
View file @
f6417903
...
...
@@ -56,16 +56,14 @@ extern queue_t nr_ul_tti_req_queue;
// main_rrc.c
//
/**\brief Layer 3 initialization*/
NR_UE_RRC_INST_t
*
nr_l3_init_ue
(
char
*
,
char
*
,
char
*
,
char
*
);
NR_UE_RRC_INST_t
*
nr_l3_init_ue
(
char
*
,
char
*
,
char
*
,
char
*
);
//
// UE_rrc.c
//
/**\brief Initial the top level RRC structure instance*/
NR_UE_RRC_INST_t
*
openair_rrc_top_init_ue_nr
(
char
*
,
char
*
,
char
*
,
char
*
);
NR_UE_RRC_INST_t
*
openair_rrc_top_init_ue_nr
(
char
*
,
char
*
,
char
*
,
char
*
);
/**\brief Decode RRC Connection Reconfiguration, sent from E-UTRA RRC Connection Reconfiguration v1510 carring EN-DC config
\param buffer encoded NR-RRC-Connection-Reconfiguration/Secondary-Cell-Group-Config message.
...
...
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