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
wangwenhui
OpenXG-RAN
Commits
5c5c3363
Commit
5c5c3363
authored
Nov 21, 2016
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixes to make lte-softmodem compile again
parent
12f1cb9c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
61 deletions
+59
-61
targets/ARCH/EXMIMO/DEFS/openair_device.h
targets/ARCH/EXMIMO/DEFS/openair_device.h
+3
-3
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
+4
-4
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+48
-50
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+4
-4
No files found.
targets/ARCH/EXMIMO/DEFS/openair_device.h
View file @
5c5c3363
...
...
@@ -24,9 +24,9 @@
// Maximum number of concurrently supported cards
//
#define MAX_CARDS 16
#define INIT_ZEROS {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
//
defined in openair_common_lib.h
//
#define MAX_CARDS 16
//
#define INIT_ZEROS {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/** PCIe subsystem configuration Space
...
...
targets/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
View file @
5c5c3363
...
...
@@ -63,7 +63,7 @@
exmimo_pci_interface_bot_virtual_t
openair0_exmimo_pci
[
MAX_CARDS
];
// contains userspace pointers for each card
char
*
bigshm_top
[
MAX_CARDS
]
=
INIT_ZEROS
;
char
*
bigshm_top
[
MAX_CARDS
];
int
openair0_fd
;
int
openair0_num_antennas
[
MAX_CARDS
];
...
...
@@ -126,7 +126,8 @@ int openair0_open(void)
//printf("bigshm_top_kvirtptr (MAX_CARDS %d): %p %p %p %p\n", MAX_CARDS,bigshm_top_kvirtptr[0], bigshm_top_kvirtptr[1], bigshm_top_kvirtptr[2], bigshm_top_kvirtptr[3]);
for
(
card
=
0
;
card
<
MAX_CARDS
;
card
++
)
bigshm_top
[
card
]
=
NULL
;
for
(
card
=
0
;
card
<
openair0_num_detected_cards
;
card
++
)
{
bigshm_top
[
card
]
=
(
char
*
)
mmap
(
NULL
,
...
...
@@ -530,6 +531,7 @@ int trx_exmimo_read(openair0_device *device, openair0_timestamp *ptimestamp, voi
return
(
0
);
}
ret
=
pthread_mutex_lock
(
&
exm
->
watchdog_mutex
);
switch
(
ret
)
{
case
EINVAL
:
...
...
@@ -558,8 +560,6 @@ int trx_exmimo_read(openair0_device *device, openair0_timestamp *ptimestamp, voi
break
;
}
ret
=
pthread_mutex_lock
(
&
exm
->
watchdog_mutex
);
ts
=
exm
->
ts
;
if
(
exm
->
wait_first_read
==
1
)
{
exm
->
wait_first_read
=
0
;
...
...
targets/RT/USER/lte-enb.c
View file @
5c5c3363
...
...
@@ -277,75 +277,73 @@ static inline void wait_sync(char *thread_name) {
void
do_OFDM_mod_rt
(
int
subframe
,
PHY_VARS_eNB
*
phy_vars_eNB
)
{
unsigned
int
aa
,
slot_offset
,
slot_offset_F
;
int
dummy_tx_b
[
7680
*
4
]
__attribute__
((
aligned
(
32
)));
unsigned
int
aa
,
slot_offset
;
//
int dummy_tx_b[7680*4] __attribute__((aligned(32)));
int
i
,
tx_offset
;
int
slot_sizeF
=
(
phy_vars_eNB
->
lte_frame_parms
.
ofdm_symbol_size
)
*
((
phy_vars_eNB
->
lte_frame_parms
.
Ncp
==
1
)
?
6
:
7
);
//int slot_sizeF = (phy_vars_eNB->frame_parms.ofdm_symbol_size)* ((phy_vars_eNB->frame_parms.Ncp==1) ? 6 : 7);
int
len
;
//int slot_offset_F = (subframe<<1)*slot_sizeF;
slot_offset_F
=
(
subframe
<<
1
)
*
slot_sizeF
;
slot_offset
=
subframe
*
phy_vars_eNB
->
lte_frame_parms
.
samples_per_tti
;
slot_offset
=
subframe
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
if
((
subframe_select
(
&
phy_vars_eNB
->
lte_
frame_parms
,
subframe
)
==
SF_DL
)
||
((
subframe_select
(
&
phy_vars_eNB
->
lte_
frame_parms
,
subframe
)
==
SF_S
)))
{
if
((
subframe_select
(
&
phy_vars_eNB
->
frame_parms
,
subframe
)
==
SF_DL
)
||
((
subframe_select
(
&
phy_vars_eNB
->
frame_parms
,
subframe
)
==
SF_S
)))
{
// LOG_D(HW,"Frame %d: Generating slot %d\n",frame,next_slot);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION
,
1
);
do_OFDM_mod_symbol
(
&
phy_vars_eNB
->
lte_eNB_
common_vars
,
do_OFDM_mod_symbol
(
&
phy_vars_eNB
->
common_vars
,
0
,
subframe
<<
1
,
&
phy_vars_eNB
->
lte_
frame_parms
);
&
phy_vars_eNB
->
frame_parms
);
// if S-subframe generate first slot only
if
(
subframe_select
(
&
phy_vars_eNB
->
lte_
frame_parms
,
subframe
)
==
SF_DL
)
{
do_OFDM_mod_symbol
(
&
phy_vars_eNB
->
lte_eNB_
common_vars
,
if
(
subframe_select
(
&
phy_vars_eNB
->
frame_parms
,
subframe
)
==
SF_DL
)
{
do_OFDM_mod_symbol
(
&
phy_vars_eNB
->
common_vars
,
0
,
1
+
(
subframe
<<
1
),
&
phy_vars_eNB
->
lte_
frame_parms
);
&
phy_vars_eNB
->
frame_parms
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION
,
0
);
/*
for (aa=0; aa<phy_vars_eNB->
lte_
frame_parms.nb_antennas_tx; aa++) {
if (phy_vars_eNB->
lte_
frame_parms.Ncp == EXTENDED) {
PHY_ofdm_mod(&phy_vars_eNB->
lte_eNB_
common_vars.txdataF[0][aa][slot_offset_F],
for (aa=0; aa<phy_vars_eNB->frame_parms.nb_antennas_tx; aa++) {
if (phy_vars_eNB->frame_parms.Ncp == EXTENDED) {
PHY_ofdm_mod(&phy_vars_eNB->common_vars.txdataF[0][aa][slot_offset_F],
dummy_tx_b,
phy_vars_eNB->
lte_
frame_parms.ofdm_symbol_size,
phy_vars_eNB->frame_parms.ofdm_symbol_size,
6,
phy_vars_eNB->
lte_
frame_parms.nb_prefix_samples,
phy_vars_eNB->frame_parms.nb_prefix_samples,
CYCLIC_PREFIX);
PHY_ofdm_mod(&phy_vars_eNB->
lte_eNB_
common_vars.txdataF[0][aa][slot_offset_F+slot_sizeF],
dummy_tx_b+(phy_vars_eNB->
lte_
frame_parms.samples_per_tti>>1),
phy_vars_eNB->
lte_
frame_parms.ofdm_symbol_size,
PHY_ofdm_mod(&phy_vars_eNB->common_vars.txdataF[0][aa][slot_offset_F+slot_sizeF],
dummy_tx_b+(phy_vars_eNB->frame_parms.samples_per_tti>>1),
phy_vars_eNB->frame_parms.ofdm_symbol_size,
6,
phy_vars_eNB->
lte_
frame_parms.nb_prefix_samples,
phy_vars_eNB->frame_parms.nb_prefix_samples,
CYCLIC_PREFIX);
} else {
normal_prefix_mod(&phy_vars_eNB->
lte_eNB_
common_vars.txdataF[0][aa][slot_offset_F],
normal_prefix_mod(&phy_vars_eNB->common_vars.txdataF[0][aa][slot_offset_F],
dummy_tx_b,
7,
&(phy_vars_eNB->
lte_
frame_parms));
&(phy_vars_eNB->frame_parms));
// if S-subframe generate first slot only
if (subframe_select(&phy_vars_eNB->
lte_
frame_parms,subframe) == SF_DL)
normal_prefix_mod(&phy_vars_eNB->
lte_eNB_
common_vars.txdataF[0][aa][slot_offset_F+slot_sizeF],
dummy_tx_b+(phy_vars_eNB->
lte_
frame_parms.samples_per_tti>>1),
if (subframe_select(&phy_vars_eNB->frame_parms,subframe) == SF_DL)
normal_prefix_mod(&phy_vars_eNB->common_vars.txdataF[0][aa][slot_offset_F+slot_sizeF],
dummy_tx_b+(phy_vars_eNB->frame_parms.samples_per_tti>>1),
7,
&(phy_vars_eNB->
lte_
frame_parms));
&(phy_vars_eNB->frame_parms));
}
} */
for
(
aa
=
0
;
aa
<
phy_vars_eNB
->
lte_
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
for
(
aa
=
0
;
aa
<
phy_vars_eNB
->
frame_parms
.
nb_antennas_tx
;
aa
++
)
{
// if S-subframe generate first slot only
if
(
subframe_select
(
&
phy_vars_eNB
->
lte_
frame_parms
,
subframe
)
==
SF_S
)
len
=
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
>>
1
;
if
(
subframe_select
(
&
phy_vars_eNB
->
frame_parms
,
subframe
)
==
SF_S
)
len
=
phy_vars_eNB
->
frame_parms
.
samples_per_tti
>>
1
;
else
len
=
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
;
len
=
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
/*
for (i=0;i<len;i+=4) {
dummy_tx_b[i] = 0x100;
...
...
@@ -358,42 +356,42 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
if
(
tx_offset
<
0
)
tx_offset
+=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
;
tx_offset
+=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
if
(
tx_offset
>=
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
))
tx_offset
-=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
;
if
(
tx_offset
>=
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
))
tx_offset
-=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
/* ((short*)&phy_vars_eNB->
lte_eNB_
common_vars.txdata[0][aa][tx_offset])[0] = ((short*)dummy_tx_b)[2*i]<<openair0_cfg[0].iq_txshift;
/* ((short*)&phy_vars_eNB->common_vars.txdata[0][aa][tx_offset])[0] = ((short*)dummy_tx_b)[2*i]<<openair0_cfg[0].iq_txshift;
((short*)&phy_vars_eNB->
lte_eNB_
common_vars.txdata[0][aa][tx_offset])[1] = ((short*)dummy_tx_b)[2*i+1]<<openair0_cfg[0].iq_txshift; */
((short*)&phy_vars_eNB->common_vars.txdata[0][aa][tx_offset])[1] = ((short*)dummy_tx_b)[2*i+1]<<openair0_cfg[0].iq_txshift; */
((
short
*
)
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
0
]
=
((
short
*
)
&
phy_vars_eNB
->
lte_eNB_
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
0
]
<<
openair0_cfg
[
0
].
iq_txshift
;
((
short
*
)
&
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
0
]
=
((
short
*
)
&
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
0
]
<<
openair0_cfg
[
0
].
iq_txshift
;
((
short
*
)
&
phy_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
1
]
=
((
short
*
)
&
phy_vars_eNB
->
lte_eNB_
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
1
]
<<
openair0_cfg
[
0
].
iq_txshift
;
((
short
*
)
&
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
1
]
=
((
short
*
)
&
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
])[
1
]
<<
openair0_cfg
[
0
].
iq_txshift
;
}
// if S-subframe switch to RX in second subframe
if
(
subframe_select
(
&
phy_vars_eNB
->
lte_
frame_parms
,
subframe
)
==
SF_S
)
{
if
(
subframe_select
(
&
phy_vars_eNB
->
frame_parms
,
subframe
)
==
SF_S
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
phy_vars_eNB
->
lte_eNB_
common_vars
.
txdata
[
0
][
aa
][
tx_offset
++
]
=
0x00010001
;
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
++
]
=
0x00010001
;
}
}
if
((((
phy_vars_eNB
->
lte_
frame_parms
.
tdd_config
==
0
)
||
(
phy_vars_eNB
->
lte_
frame_parms
.
tdd_config
==
1
)
||
(
phy_vars_eNB
->
lte_
frame_parms
.
tdd_config
==
2
)
||
(
phy_vars_eNB
->
lte_
frame_parms
.
tdd_config
==
6
))
&&
if
((((
phy_vars_eNB
->
frame_parms
.
tdd_config
==
0
)
||
(
phy_vars_eNB
->
frame_parms
.
tdd_config
==
1
)
||
(
phy_vars_eNB
->
frame_parms
.
tdd_config
==
2
)
||
(
phy_vars_eNB
->
frame_parms
.
tdd_config
==
6
))
&&
(
subframe
==
0
))
||
(
subframe
==
5
))
{
// turn on tx switch N_TA_offset before
//LOG_D(HW,"subframe %d, time to switch to tx (N_TA_offset %d, slot_offset %d) \n",subframe,phy_vars_eNB->N_TA_offset,slot_offset);
for
(
i
=
0
;
i
<
phy_vars_eNB
->
N_TA_offset
;
i
++
)
{
tx_offset
=
(
int
)
slot_offset
+
time_offset
[
aa
]
+
i
-
phy_vars_eNB
->
N_TA_offset
/
2
;
if
(
tx_offset
<
0
)
tx_offset
+=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
;
tx_offset
+=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
if
(
tx_offset
>=
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
))
tx_offset
-=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
lte_
frame_parms
.
samples_per_tti
;
if
(
tx_offset
>=
(
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
))
tx_offset
-=
LTE_NUMBER_OF_SUBFRAMES_PER_FRAME
*
phy_vars_eNB
->
frame_parms
.
samples_per_tti
;
phy_vars_eNB
->
lte_eNB_
common_vars
.
txdata
[
0
][
aa
][
tx_offset
]
=
0x00000000
;
phy_vars_eNB
->
common_vars
.
txdata
[
0
][
aa
][
tx_offset
]
=
0x00000000
;
}
}
}
...
...
targets/RT/USER/lte-softmodem.c
View file @
5c5c3363
...
...
@@ -1121,13 +1121,13 @@ static void get_options (int argc, char **argv)
frame_parms
[
CC_id
]
->
N_RB_DL
=
enb_properties
->
properties
[
i
]
->
N_RB_DL
[
CC_id
];
frame_parms
[
CC_id
]
->
N_RB_UL
=
enb_properties
->
properties
[
i
]
->
N_RB_DL
[
CC_id
];
frame_parms
[
CC_id
]
->
nb_antennas_tx
=
enb_properties
->
properties
[
i
]
->
nb_antennas_tx
[
CC_id
];
frame_parms
[
CC_id
]
->
nb_antenna
s_tx
_eNB
=
enb_properties
->
properties
[
i
]
->
nb_antenna_ports
[
CC_id
];
frame_parms
[
CC_id
]
->
nb_antenna
_ports
_eNB
=
enb_properties
->
properties
[
i
]
->
nb_antenna_ports
[
CC_id
];
frame_parms
[
CC_id
]
->
nb_antennas_rx
=
enb_properties
->
properties
[
i
]
->
nb_antennas_rx
[
CC_id
];
frame_parms
[
CC_id
]
->
prach_config_common
.
prach_ConfigInfo
.
prach_ConfigIndex
=
enb_properties
->
properties
[
i
]
->
prach_config_index
[
CC_id
];
frame_parms
[
CC_id
]
->
prach_config_common
.
prach_ConfigInfo
.
prach_FreqOffset
=
enb_properties
->
properties
[
i
]
->
prach_freq_offset
[
CC_id
];
frame_parms
[
CC_id
]
->
mode1_flag
=
(
frame_parms
[
CC_id
]
->
nb_antenna
s_tx
_eNB
==
1
)
?
1
:
0
;
frame_parms
[
CC_id
]
->
mode1_flag
=
(
frame_parms
[
CC_id
]
->
nb_antenna
_ports
_eNB
==
1
)
?
1
:
0
;
frame_parms
[
CC_id
]
->
threequarter_fs
=
threequarter_fs
;
//} // j
...
...
@@ -1225,7 +1225,7 @@ void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]) {
frame_parms
[
CC_id
]
->
Ncp_UL
=
NORMAL
;
frame_parms
[
CC_id
]
->
Nid_cell
=
0
;
frame_parms
[
CC_id
]
->
num_MBSFN_config
=
0
;
frame_parms
[
CC_id
]
->
nb_antenna
s_tx
_eNB
=
1
;
frame_parms
[
CC_id
]
->
nb_antenna
_ports
_eNB
=
1
;
frame_parms
[
CC_id
]
->
nb_antennas_tx
=
1
;
frame_parms
[
CC_id
]
->
nb_antennas_rx
=
1
;
...
...
@@ -1524,7 +1524,7 @@ int main( int argc, char **argv )
if
(
UE_flag
==
1
)
{
frame_parms
[
CC_id
]
->
nb_antennas_tx
=
1
;
frame_parms
[
CC_id
]
->
nb_antennas_rx
=
1
;
frame_parms
[
CC_id
]
->
nb_antenna
s_tx
_eNB
=
1
;
//initial value overwritten by initial sync later
frame_parms
[
CC_id
]
->
nb_antenna
_ports
_eNB
=
1
;
//initial value overwritten by initial sync later
}
init_ul_hopping
(
frame_parms
[
CC_id
]);
...
...
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