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
wangjie
OpenXG-RAN
Commits
00c32c90
Commit
00c32c90
authored
Oct 31, 2018
by
Wolfgang A. Mozart
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding phy_scope to UE
bugfixes
parent
d81cd6da
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
960 additions
and
68 deletions
+960
-68
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+5
-2
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+2
-1
openair1/PHY/TOOLS/nr_phy_scope.c
openair1/PHY/TOOLS/nr_phy_scope.c
+821
-0
openair1/PHY/TOOLS/nr_phy_scope.h
openair1/PHY/TOOLS/nr_phy_scope.h
+84
-0
targets/RT/USER/nr-ue.c
targets/RT/USER/nr-ue.c
+8
-4
targets/RT/USER/nr-uesoftmodem.c
targets/RT/USER/nr-uesoftmodem.c
+37
-58
targets/RT/USER/nr-uesoftmodem.h
targets/RT/USER/nr-uesoftmodem.h
+3
-3
No files found.
cmake_targets/CMakeLists.txt
View file @
00c32c90
...
...
@@ -2142,6 +2142,9 @@ if (${XFORMS})
set
(
XFORMS_SOURCE
${
OPENAIR1_DIR
}
/PHY/TOOLS/lte_phy_scope.c
)
set
(
XFORMS_SOURCE_NR
${
OPENAIR1_DIR
}
/PHY/TOOLS/nr_phy_scope.c
)
set
(
XFORMS_SOURCE_SOFTMODEM
${
OPENAIR_TARGETS
}
/RT/USER/stats.c
)
...
...
@@ -2444,7 +2447,7 @@ add_executable(nr-uesoftmodem
${
OPENAIR3_DIR
}
/NAS/UE/nas_ue_task.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE
_NR
}
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
...
...
@@ -2478,7 +2481,7 @@ add_executable(nr-uesoftmodem-nos1
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE
}
${
XFORMS_SOURCE
_NR
}
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
View file @
00c32c90
...
...
@@ -156,6 +156,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
// FK: added N_RB_DL paramter here as this function shares code with the gNB where it is needed. We should rewrite this function for the UE.
nr_init_frame_parms_ue
(
fp
,
NR_MU_1
,
NORMAL
,
fp
->
N_RB_DL
,
n_ssb_crb
,
0
);
LOG_D
(
PHY
,
"nr_initial sync ue RB_DL %d
\n
"
,
fp
->
N_RB_DL
);
/*
write_output("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*fp->samples_per_subframe,1,1);
exit(-1);
...
...
@@ -196,7 +197,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
#endif
/* check that SSS/PBCH block is continuous inside the received buffer */
if
(
sync_pos
<
(
10
*
fp
->
slots_per_subframe
*
fp
->
samples_per_subframe
-
(
NB_SYMBOLS_PBCH
*
fp
->
ofdm_symbol_size
)))
{
if
(
sync_pos
<
(
NR_NUMBER_OF_SUBFRAMES_PER_FRAME
*
fp
->
samples_per_subframe
-
(
NB_SYMBOLS_PBCH
*
fp
->
ofdm_symbol_size
)))
{
#ifdef DEBUG_INITIAL_SYNCH
LOG_I
(
PHY
,
"Calling sss detection (normal CP)
\n
"
);
...
...
openair1/PHY/TOOLS/nr_phy_scope.c
0 → 100644
View file @
00c32c90
This diff is collapsed.
Click to expand it.
openair1/PHY/TOOLS/nr_phy_scope.h
0 → 100644
View file @
00c32c90
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/* Header file generated by fdesign on Tue Nov 13 09:42:50 2012 */
#ifndef FD_lte_scope_h_
#define FD_lte_scope_h_
#include <forms.h>
//#include "PHY/defs_eNB.h"
//#include "PHY/defs_UE.h"
//#include "PHY/impl_defs_top.h"
#include "PHY/defs_nr_UE.h"
/* Forms and Objects */
typedef
struct
{
FL_FORM
*
lte_phy_scope_enb
;
FL_OBJECT
*
rxsig_t
;
FL_OBJECT
*
chest_f
;
FL_OBJECT
*
chest_t
;
FL_OBJECT
*
pusch_comp
;
FL_OBJECT
*
pucch_comp
;
FL_OBJECT
*
pucch_comp1
;
FL_OBJECT
*
pusch_llr
;
FL_OBJECT
*
pusch_tput
;
FL_OBJECT
*
button_0
;
}
FD_lte_phy_scope_enb
;
typedef
struct
{
FL_FORM
*
lte_phy_scope_ue
;
FL_OBJECT
*
rxsig_t
;
FL_OBJECT
*
chest_f
;
FL_OBJECT
*
chest_t
;
FL_OBJECT
*
pbch_comp
;
FL_OBJECT
*
pbch_llr
;
FL_OBJECT
*
pdcch_comp
;
FL_OBJECT
*
pdcch_llr
;
FL_OBJECT
*
pdsch_comp
;
FL_OBJECT
*
pdsch_llr
;
FL_OBJECT
*
pdsch_comp1
;
FL_OBJECT
*
pdsch_llr1
;
FL_OBJECT
*
pdsch_tput
;
FL_OBJECT
*
button_0
;
}
FD_lte_phy_scope_ue
;
FD_lte_phy_scope_enb
*
create_lte_phy_scope_enb
(
void
);
FD_lte_phy_scope_ue
*
create_lte_phy_scope_ue
(
void
);
/*
void phy_scope_eNB(FD_lte_phy_scope_enb *form,
PHY_VARS_gNB *phy_vars_enb,
int UE_id);
*/
void
phy_scope_UE
(
FD_lte_phy_scope_ue
*
form
,
PHY_VARS_NR_UE
*
phy_vars_ue
,
int
eNB_id
,
int
UE_id
,
uint8_t
subframe
);
#endif
/* FD_lte_scope_h_ */
targets/RT/USER/nr-ue.c
View file @
00c32c90
...
...
@@ -532,6 +532,7 @@ static void *UE_thread_synch(void *arg) {
}
else
{
// initial sync failed
// calculate new offset and try again
if
(
UE
->
UE_scan_carrier
==
1
)
{
if
(
freq_offset
>=
0
)
freq_offset
+=
100
;
...
...
@@ -553,6 +554,7 @@ static void *UE_thread_synch(void *arg) {
return
&
UE_thread_synch_retval
;
// not reached
}
}
#if DISABLE_LOG_X
printf
(
"[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)
\n
"
,
freq_offset
,
...
...
@@ -646,8 +648,8 @@ static void *UE_thread_rxn_txnp4(void *arg) {
}
// initRefTimes(t2);
initRefTimes
(
t3
);
pickTime
(
current
);
//
initRefTimes(t3);
//
pickTime(current);
// updateTimes(proc->gotIQs, &t2, 10000, "Delay to wake up UE_Thread_Rx (case 2)");
// Process Rx data for one sub-frame
...
...
@@ -876,7 +878,7 @@ void *UE_thread(void *arg) {
if
(
UE
->
mode
!=
loop_through_memory
)
{
for
(
int
i
=
0
;
i
<
UE
->
frame_parms
.
nb_antennas_rx
;
i
++
)
rxp
[
i
]
=
(
void
*
)
&
dummy_rx
[
i
][
0
];
for
(
int
sf
=
0
;
sf
<
LTE
_NUMBER_OF_SUBFRAMES_PER_FRAME
;
sf
++
)
for
(
int
sf
=
0
;
sf
<
NR
_NUMBER_OF_SUBFRAMES_PER_FRAME
;
sf
++
)
// printf("Reading dummy sf %d\n",sf);
AssertFatal
(
UE
->
frame_parms
.
samples_per_subframe
==
UE
->
rfdevice
.
trx_read_func
(
&
UE
->
rfdevice
,
...
...
@@ -1114,6 +1116,7 @@ void init_UE_threads(PHY_VARS_NR_UE *UE) {
pthread_mutex_init
(
&
UE
->
proc
.
mutex_synch
,
NULL
);
pthread_cond_init
(
&
UE
->
proc
.
cond_synch
,
NULL
);
UE
->
proc
.
instance_cnt_synch
=
-
1
;
// the threads are not yet active, therefore access is allowed without locking
int
nb_threads
=
RX_NB_TH
;
...
...
@@ -1186,6 +1189,7 @@ void fill_ue_band_info(void) {
}*/
#endif
/*
int setup_ue_buffers(PHY_VARS_NR_UE **phy_vars_ue, openair0_config_t *openair0_cfg) {
int i, CC_id;
...
...
@@ -1225,4 +1229,4 @@ int setup_ue_buffers(PHY_VARS_NR_UE **phy_vars_ue, openair0_config_t *openair0_c
}
return 0;
}
*/
targets/RT/USER/nr-uesoftmodem.c
View file @
00c32c90
...
...
@@ -80,7 +80,7 @@ unsigned short config_frames[4] = {2,9,11,13};
#include "system.h"
#include "stats.h"
#ifdef XFORMS
#include "PHY/TOOLS/
lte
_phy_scope.h"
#include "PHY/TOOLS/
nr
_phy_scope.h"
//#include "stats.h"
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
// at eNB 0, an UL scope for every UE
...
...
@@ -111,11 +111,10 @@ volatile int oai_exit = 0;
static
clock_source_t
clock_source
=
internal
;
static
int
wait_for_sync
=
0
;
static
char
UE_flag
=
0
;
unsigned
int
mmapped_dma
=
0
;
int
single_thread_flag
=
1
;
unsigned
int
mmapped_dma
=
0
;
int
single_thread_flag
=
1
;
static
char
threequarter_fs
=
0
;
int
threequarter_fs
=
0
;
uint32_t
downlink_frequency
[
MAX_NUM_CCs
][
4
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
][
4
];
...
...
@@ -149,7 +148,7 @@ double rx_gain_off = 0.0;
double
sample_rate
=
30.72e6
;
double
bw
=
10.0e6
;
static
int
tx_max_power
[
MAX_NUM_CCs
];
/* = {0,0}*/
;
static
int
tx_max_power
[
MAX_NUM_CCs
]
=
{
0
}
;
char
rf_config_file
[
1024
];
...
...
@@ -175,7 +174,7 @@ int rx_input_level_dBm;
#ifdef XFORMS
extern
int
otg_enabled
;
static
char
do_forms
=
0
;
int
do_forms
=
0
;
#else
int
otg_enabled
;
#endif
...
...
@@ -415,22 +414,19 @@ static void *scope_thread(void *arg) {
#endif
while
(
!
oai_exit
)
{
if
(
UE_flag
==
1
)
{
//len = dump_ue_stats (PHY_vars_UE_g[0][0], &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0],stats_buffer, 0, mode,rx_input_level_dBm);
//fl_set_object_label(form_stats->stats_text, stats_buffer);
fl_clear_browser
(
form_stats
->
stats_text
);
fl_add_browser_line
(
form_stats
->
stats_text
,
stats_buffer
);
/*phy_scope_UE(form_ue[0],
PHY_vars_UE_g[0][0],
0,
0,7);*/
}
//printf("doing forms\n");
//usleep(100000); // 100 ms
sleep
(
1
);
//len = dump_ue_stats (PHY_vars_UE_g[0][0], &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0],stats_buffer, 0, mode,rx_input_level_dBm);
//fl_set_object_label(form_stats->stats_text, stats_buffer);
fl_clear_browser
(
form_stats
->
stats_text
);
fl_add_browser_line
(
form_stats
->
stats_text
,
stats_buffer
);
phy_scope_UE
(
form_ue
[
0
],
PHY_vars_UE_g
[
0
][
0
],
0
,
0
,
7
);
//printf("doing forms\n");
//usleep(100000); // 100 ms
sleep
(
1
);
}
// printf("%s",stats_buffer);
...
...
@@ -615,10 +611,6 @@ static void get_options(void) {
uecap_xer_in
=
1
;
}
/* UE with config file */
#if defined(OAI_USRP) || defined(CPRIGW) || defined(OAI_ADRV9371_ZC706)
int
clock_src
;
#endif
}
#if T_TRACER
...
...
@@ -1002,8 +994,6 @@ int main( int argc, char **argv ) {
UE
[
CC_id
]
->
pdcch_vars
[
1
][
0
]
->
crnti
=
0x1235
;
}
rx_gain
[
CC_id
][
0
]
=
81
;
tx_max_power
[
CC_id
]
=
-
40
;
UE
[
CC_id
]
->
rx_total_gain_dB
=
(
int
)
rx_gain
[
CC_id
][
0
]
+
rx_gain_off
;
UE
[
CC_id
]
->
tx_power_max_dBm
=
tx_max_power
[
CC_id
];
...
...
@@ -1120,11 +1110,14 @@ int main( int argc, char **argv ) {
#ifdef XFORMS
int
UE_id
;
int
fl_argc
=
1
;
if
(
do_forms
==
1
)
{
fl_initialize
(
&
argc
,
argv
,
NULL
,
0
,
0
);
form_stats
=
create_form_stats_form
();
// fl_initialize messes with argv and argc, so pretend to not pass any options
fl_initialize
(
&
fl_argc
,
argv
,
NULL
,
0
,
0
);
// restore the original command line args
// argv = fl_get_cmdline_args( &argc );
form_stats
=
create_form_stats_form
();
fl_show_form
(
form_stats
->
stats_form
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
"stats"
);
UE_id
=
0
;
form_ue
[
UE_id
]
=
create_lte_phy_scope_ue
();
...
...
@@ -1155,48 +1148,34 @@ int main( int argc, char **argv ) {
rt_sleep_ns
(
10
*
100000000ULL
);
// start the main thread
//if (UE_flag == 1) {
init_UE
(
1
);
number_of_cards
=
1
;
init_UE
(
1
);
number_of_cards
=
1
;
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
card
=
0
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
chain
=
CC_id
+
chain_offset
;
}
//}
// connect the TX/RX buffers
//if (UE_flag==1) {
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
#if defined(OAI_USRP) || defined(OAI_ADRV9371_ZC706)
UE
[
CC_id
]
->
hw_timing_advance
=
timing_advance
;
#else
UE
[
CC_id
]
->
hw_timing_advance
=
160
;
#endif
}
if
(
setup_ue_buffers
(
UE
,
&
openair0_cfg
[
0
])
!=
0
)
{
printf
(
"Error setting up eNB buffer
\n
"
);
exit
(
-
1
);
}
if
(
input_fd
)
{
printf
(
"Reading in from file to antenna buffer %d
\n
"
,
0
);
if
(
fread
(
UE
[
0
]
->
common_vars
.
rxdata
[
0
],
sizeof
(
int32_t
),
frame_parms
[
0
]
->
samples_per_subframe
*
10
,
input_fd
)
!=
frame_parms
[
0
]
->
samples_per_subframe
*
10
)
printf
(
"error reading from file
\n
"
);
}
if
(
input_fd
)
{
printf
(
"Reading in from file to antenna buffer %d
\n
"
,
0
);
if
(
fread
(
UE
[
0
]
->
common_vars
.
rxdata
[
0
],
sizeof
(
int32_t
),
frame_parms
[
0
]
->
samples_per_subframe
*
10
,
input_fd
)
!=
frame_parms
[
0
]
->
samples_per_subframe
*
10
)
printf
(
"error reading from file
\n
"
);
}
//p_exmimo_config->framing.tdd_config = TXRXSWITCH_TESTRX;
//}
sleep
(
3
);
...
...
targets/RT/USER/nr-uesoftmodem.h
View file @
00c32c90
...
...
@@ -136,7 +136,7 @@
{"ue-nb-ant-tx", CONFIG_HLP_UENANTT, 0, u8ptr:&nb_antenna_tx, defuintval:1, TYPE_UINT8, 0}, \
{"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&UE_scan_carrier, defintval:0, TYPE_INT, 0}, \
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
{"r" , CONFIG_HLP_PRB, 0,
u8ptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT8
, 0}, \
{"r" , CONFIG_HLP_PRB, 0,
iptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT
, 0}, \
{"dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0}, \
{"usrp-clksrc", CONFIG_HLP_USRP_CLK_SRC,0, strptr:(char **)&usrp_clksrc, defstrval:"internal", TYPE_STRING, 0} \
...
...
@@ -167,8 +167,8 @@
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
{"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:2680000000, TYPE_UINT, 0}, \
{"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL,
uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8
, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i
8ptr:&threequarter_fs, defintval:0, TYPE_INT8
, 0}, \
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL,
iptr:&do_forms, defintval:0, TYPE_INT
, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i
ptr:&threequarter_fs, defintval:0, TYPE_INT
, 0}, \
{"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 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