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
1008be90
Commit
1008be90
authored
Mar 28, 2019
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/tdd-fixes-2019-w11' into develop_integration_2019_w13
parents
7dd91db2
275e5b3a
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
47 additions
and
19 deletions
+47
-19
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+3
-3
openair1/PHY/defs_eNB.h
openair1/PHY/defs_eNB.h
+4
-0
openair2/ENB_APP/enb_paramdef.h
openair2/ENB_APP/enb_paramdef.h
+7
-1
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+33
-15
No files found.
cmake_targets/CMakeLists.txt
View file @
1008be90
...
@@ -2368,9 +2368,9 @@ if (${T_TRACER})
...
@@ -2368,9 +2368,9 @@ if (${T_TRACER})
oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
oai_eth_transpro
oai_eth_transpro
FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
FLPT_MSG ASYNC_IF FLEXRAN_AGENT HASHTABLE MSC UTIL OMG_SUMO SECU_OSA
SECU_CN SCHED_LIB
PHY L2 default_sched remote_sched RAL CN_UTILS
SECU_CN SCHED_LIB
SCHED_RU_LIB SCHED_UE_LIB PHY L2 default_sched
GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS LFDS7 SIMU OPENAIR0_LIB PHY_MEX
remote_sched RAL CN_UTILS GTPV1U SCTP_CLIENT UDP LIB_NAS_UE LFDS
coding
)
LFDS7 SIMU OPENAIR0_LIB PHY_MEX
coding
)
if
(
TARGET
${
i
}
)
if
(
TARGET
${
i
}
)
add_dependencies
(
${
i
}
generate_T
)
add_dependencies
(
${
i
}
generate_T
)
endif
()
endif
()
...
...
openair1/PHY/defs_eNB.h
View file @
1008be90
...
@@ -312,6 +312,10 @@ typedef struct RU_t_s{
...
@@ -312,6 +312,10 @@ typedef struct RU_t_s{
LTE_DL_FRAME_PARMS
frame_parms
;
LTE_DL_FRAME_PARMS
frame_parms
;
///timing offset used in TDD
///timing offset used in TDD
int
N_TA_offset
;
int
N_TA_offset
;
/// SF extension used in TDD (unit: number of samples at 30.72MHz) (this is an expert option)
int
sf_extension
;
/// "end of burst delay" used in TDD (unit: number of samples at 30.72MHz) (this is an expert option)
int
end_of_burst_delay
;
/// RF device descriptor
/// RF device descriptor
openair0_device
rfdevice
;
openair0_device
rfdevice
;
/// HW configuration
/// HW configuration
...
...
openair2/ENB_APP/enb_paramdef.h
View file @
1008be90
...
@@ -101,6 +101,8 @@ typedef enum {
...
@@ -101,6 +101,8 @@ typedef enum {
#define CONFIG_STRING_RU_NBIOTRRC_LIST "NbIoT_RRC_instances"
#define CONFIG_STRING_RU_NBIOTRRC_LIST "NbIoT_RRC_instances"
#define CONFIG_STRING_RU_SDR_ADDRS "sdr_addrs"
#define CONFIG_STRING_RU_SDR_ADDRS "sdr_addrs"
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
#define CONFIG_STRING_RU_SF_EXTENSION "sf_extension"
#define CONFIG_STRING_RU_END_OF_BURST_DELAY "end_of_burst_delay"
#define RU_LOCAL_IF_NAME_IDX 0
#define RU_LOCAL_IF_NAME_IDX 0
#define RU_LOCAL_ADDRESS_IDX 1
#define RU_LOCAL_ADDRESS_IDX 1
...
@@ -122,6 +124,8 @@ typedef enum {
...
@@ -122,6 +124,8 @@ typedef enum {
#define RU_NBIOTRRC_LIST_IDX 17
#define RU_NBIOTRRC_LIST_IDX 17
#define RU_SDR_ADDRS 18
#define RU_SDR_ADDRS 18
#define RU_SDR_CLK_SRC 19
#define RU_SDR_CLK_SRC 19
#define RU_SF_EXTENSION_IDX 20
#define RU_END_OF_BURST_DELAY_IDX 21
...
@@ -150,6 +154,8 @@ typedef enum {
...
@@ -150,6 +154,8 @@ typedef enum {
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
}
}
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------------------*/
...
...
targets/RT/USER/lte-ru.c
View file @
1008be90
...
@@ -818,7 +818,6 @@ void tx_rf(RU_t *ru) {
...
@@ -818,7 +818,6 @@ void tx_rf(RU_t *ru) {
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
proc
->
subframe_tx
*
fp
->
samples_per_tti
],
fp
->
samples_per_tti
*
4
));
T_INT
(
0
),
T_BUFFER
(
&
ru
->
common
.
txdata
[
0
][
proc
->
subframe_tx
*
fp
->
samples_per_tti
],
fp
->
samples_per_tti
*
4
));
lte_subframe_t
SF_type
=
subframe_select
(
fp
,
proc
->
subframe_tx
%
10
);
lte_subframe_t
SF_type
=
subframe_select
(
fp
,
proc
->
subframe_tx
%
10
);
lte_subframe_t
prevSF_type
=
subframe_select
(
fp
,(
proc
->
subframe_tx
+
9
)
%
10
);
lte_subframe_t
prevSF_type
=
subframe_select
(
fp
,(
proc
->
subframe_tx
+
9
)
%
10
);
lte_subframe_t
nextSF_type
=
subframe_select
(
fp
,(
proc
->
subframe_tx
+
1
)
%
10
);
int
sf_extension
=
0
;
int
sf_extension
=
0
;
if
((
SF_type
==
SF_DL
)
||
if
((
SF_type
==
SF_DL
)
||
...
@@ -826,24 +825,24 @@ void tx_rf(RU_t *ru) {
...
@@ -826,24 +825,24 @@ void tx_rf(RU_t *ru) {
int
siglen
=
fp
->
samples_per_tti
,
flags
=
1
;
int
siglen
=
fp
->
samples_per_tti
,
flags
=
1
;
if
(
SF_type
==
SF_S
)
{
if
(
SF_type
==
SF_S
)
{
siglen
=
fp
->
dl_symbols_in_S_subframe
*
(
fp
->
ofdm_symbol_size
+
fp
->
nb_prefix_samples0
);
/* end_of_burst_delay is used to stop TX only "after a while".
* If we stop right after effective signal, with USRP B210 and
* B200mini, we observe a high EVM on the S subframe (on the
* PSS).
* A value of 400 (for 30.72MHz) solves this issue. This is
* the default.
*/
siglen
=
(
fp
->
ofdm_symbol_size
+
fp
->
nb_prefix_samples0
)
+
(
fp
->
dl_symbols_in_S_subframe
-
1
)
*
(
fp
->
ofdm_symbol_size
+
fp
->
nb_prefix_samples
)
+
ru
->
end_of_burst_delay
;
flags
=
3
;
// end of burst
flags
=
3
;
// end of burst
}
}
if
((
fp
->
frame_type
==
TDD
)
&&
if
(
fp
->
frame_type
==
TDD
&&
(
SF_type
==
SF_DL
)
&&
SF_type
==
SF_DL
&&
(
prevSF_type
==
SF_UL
)
&&
prevSF_type
==
SF_UL
)
{
(
nextSF_type
==
SF_DL
))
{
flags
=
2
;
// start of burst
flags
=
2
;
// start of burst
sf_extension
=
ru
->
N_TA_offset
;
sf_extension
=
ru
->
sf_extension
;
}
if
((
fp
->
frame_type
==
TDD
)
&&
(
SF_type
==
SF_DL
)
&&
(
prevSF_type
==
SF_UL
)
&&
(
nextSF_type
==
SF_UL
))
{
flags
=
4
;
// start of burst and end of burst (only one DL SF between two UL)
sf_extension
=
ru
->
N_TA_offset
;
}
}
#if defined(__x86_64) || defined(__i386__)
#if defined(__x86_64) || defined(__i386__)
...
@@ -1386,6 +1385,22 @@ int setup_RU_buffers(RU_t *ru) {
...
@@ -1386,6 +1385,22 @@ int setup_RU_buffers(RU_t *ru) {
* TODO: find a proper cleaner solution
* TODO: find a proper cleaner solution
*/
*/
ru
->
N_TA_offset
=
0
;
ru
->
N_TA_offset
=
0
;
if
(
frame_parms
->
N_RB_DL
==
100
)
/* no scaling to do */
;
else
if
(
frame_parms
->
N_RB_DL
==
50
)
{
ru
->
sf_extension
/=
2
;
ru
->
end_of_burst_delay
/=
2
;
}
else
if
(
frame_parms
->
N_RB_DL
==
25
)
{
ru
->
sf_extension
/=
4
;
ru
->
end_of_burst_delay
/=
4
;
}
else
{
printf
(
"not handled, todo
\n
"
);
exit
(
1
);
}
}
else
{
ru
->
N_TA_offset
=
0
;
ru
->
sf_extension
=
0
;
ru
->
end_of_burst_delay
=
0
;
}
}
if
(
ru
->
openair0_cfg
.
mmapped_dma
==
1
)
{
if
(
ru
->
openair0_cfg
.
mmapped_dma
==
1
)
{
...
@@ -2883,6 +2898,9 @@ void RCconfig_RU(void) {
...
@@ -2883,6 +2898,9 @@ void RCconfig_RU(void) {
RC
.
ru
[
j
]
->
max_pdschReferenceSignalPower
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RS_EPRE_IDX
].
uptr
);;
RC
.
ru
[
j
]
->
max_pdschReferenceSignalPower
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RS_EPRE_IDX
].
uptr
);;
RC
.
ru
[
j
]
->
max_rxgain
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RXGAIN_IDX
].
uptr
);
RC
.
ru
[
j
]
->
max_rxgain
=
*
(
RUParamList
.
paramarray
[
j
][
RU_MAX_RXGAIN_IDX
].
uptr
);
RC
.
ru
[
j
]
->
num_bands
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
numelt
;
RC
.
ru
[
j
]
->
num_bands
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
numelt
;
/* sf_extension is in unit of samples for 30.72MHz here, has to be scaled later */
RC
.
ru
[
j
]
->
sf_extension
=
*
(
RUParamList
.
paramarray
[
j
][
RU_SF_EXTENSION_IDX
].
uptr
);
RC
.
ru
[
j
]
->
end_of_burst_delay
=
*
(
RUParamList
.
paramarray
[
j
][
RU_END_OF_BURST_DELAY_IDX
].
uptr
);
for
(
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_bands
;
i
++
)
RC
.
ru
[
j
]
->
band
[
i
]
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
iptr
[
i
];
for
(
i
=
0
;
i
<
RC
.
ru
[
j
]
->
num_bands
;
i
++
)
RC
.
ru
[
j
]
->
band
[
i
]
=
RUParamList
.
paramarray
[
j
][
RU_BAND_LIST_IDX
].
iptr
[
i
];
}
//strcmp(local_rf, "yes") == 0
}
//strcmp(local_rf, "yes") == 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