Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
b8f96b05
Commit
b8f96b05
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
04859a0d
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 @
b8f96b05
...
...
@@ -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 @
b8f96b05
...
...
@@ -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 @
b8f96b05
...
...
@@ -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 @
b8f96b05
...
...
@@ -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