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
Michael Black
OpenXG-RAN
Commits
631b4cac
Commit
631b4cac
authored
Jul 22, 2016
by
Sandeep Kumar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
read node fn, timing from config data
parent
6a120cf2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
108 deletions
+35
-108
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+7
-5
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+28
-103
No files found.
targets/RT/USER/lte-enb.c
View file @
631b4cac
...
...
@@ -157,7 +157,7 @@ static struct {
void
exit_fun
(
const
char
*
s
);
void
init_eNB
(
eNB_func_t
node_function
);
void
init_eNB
(
eNB_func_t
node_function
[],
eNB_timing_t
node_timing
[]
);
void
stop_eNB
(
void
);
...
...
@@ -1577,13 +1577,15 @@ void print_opp_meas(void) {
}
void
init_eNB
(
eNB_func_t
node_function
)
{
void
init_eNB
(
eNB_func_t
node_function
[],
eNB_timing_t
node_timing
[]
)
{
int
CC_id
;
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
PHY_vars_eNB_g
[
0
][
CC_id
]
->
node_function
=
node_function
;
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
PHY_vars_eNB_g
[
0
][
CC_id
]
->
node_function
=
node_function
[
CC_id
];
PHY_vars_eNB_g
[
0
][
CC_id
]
->
node_timing
=
node_timing
[
CC_id
];
}
init_eNB_proc
();
sleep
(
1
);
LOG_D
(
HW
,
"[lte-softmodem.c] eNB threads created
\n
"
);
...
...
targets/RT/USER/lte-softmodem.c
View file @
631b4cac
...
...
@@ -119,7 +119,7 @@ unsigned short config_frames[4] = {2,9,11,13};
// In lte-enb.c
extern
int
setup_eNB_buffers
(
PHY_VARS_eNB
**
phy_vars_eNB
,
openair0_config_t
*
openair0_cfg
,
openair0_rf_map
rf_map
[
MAX_NUM_CCs
]);
extern
void
init_eNB
(
eNB_func_t
);
extern
void
init_eNB
(
eNB_func_t
*
,
eNB_timing_t
*
);
extern
void
stop_eNB
(
void
);
extern
void
kill_eNB_proc
(
void
);
...
...
@@ -229,7 +229,9 @@ int otg_enabled;
static
LTE_DL_FRAME_PARMS
*
frame_parms
[
MAX_NUM_CCs
];
eNB_func_t
node_function
=
eNodeB_3GPP
;
eNB_func_t
node_function
[
MAX_NUM_CCs
];
eNB_timing_t
node_timing
[
MAX_NUM_CCs
];
int16_t
node_synch_ref
[
MAX_NUM_CCs
];
uint32_t
target_dl_mcs
=
28
;
//maximum allowed mcs
uint32_t
target_ul_mcs
=
20
;
...
...
@@ -237,8 +239,6 @@ uint32_t timing_advance = 0;
uint8_t
exit_missed_slots
=
1
;
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
extern
void
reset_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
int
transmission_mode
=
1
;
...
...
@@ -387,11 +387,6 @@ void help (void) {
printf
(
" --ue-scan_carrier set UE to scan around carrier
\n
"
);
printf
(
" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW
\n
"
);
printf
(
" --mmapped-dma sets flag for improved EXMIMO UE performance
\n
"
);
printf
(
" --RCC run using NGFI RCC node function IF4 split
\n
"
);
printf
(
" --RRU run using NGFI RRU node function IF4 split
\n
"
);
printf
(
" --eNB run using 3GPP eNB node function
\n
"
);
printf
(
" --BBU run using 3GPP eNB node function with IF5 split
\n
"
);
printf
(
" --RRH run using RRH node function with IF5 split
\n
"
);
printf
(
" -C Set the downlink frequency for all component carriers
\n
"
);
printf
(
" -d Enable soft scope and L1 and L2 stats (Xforms)
\n
"
);
printf
(
" -F Calibrate the EXMIMO borad, available files: exmimo2_2arxg.lime exmimo2_2brxg.lime
\n
"
);
...
...
@@ -688,12 +683,7 @@ static void get_options (int argc, char **argv)
LONG_OPTION_DUMP_FRAME
,
LONG_OPTION_LOOPMEMORY
,
LONG_OPTION_PHYTEST
,
LONG_OPTION_MMAPPED_DMA
,
LONG_OPTION_RCC
,
LONG_OPTION_RRU
,
LONG_OPTION_ENB
,
LONG_OPTION_ENB_BBU
,
LONG_OPTION_RRH
LONG_OPTION_MMAPPED_DMA
#if T_TRACER
,
LONG_OPTION_T_PORT
,
...
...
@@ -718,11 +708,6 @@ static void get_options (int argc, char **argv)
{
"loop-memory"
,
required_argument
,
NULL
,
LONG_OPTION_LOOPMEMORY
},
{
"phy-test"
,
no_argument
,
NULL
,
LONG_OPTION_PHYTEST
},
{
"mmapped-dma"
,
no_argument
,
NULL
,
LONG_OPTION_MMAPPED_DMA
},
{
"RCC"
,
no_argument
,
NULL
,
LONG_OPTION_RCC
},
{
"RRU"
,
no_argument
,
NULL
,
LONG_OPTION_RRU
},
{
"eNB"
,
no_argument
,
NULL
,
LONG_OPTION_ENB
},
{
"BBU"
,
no_argument
,
NULL
,
LONG_OPTION_ENB_BBU
},
{
"RRH"
,
no_argument
,
NULL
,
LONG_OPTION_RRH
},
#if T_TRACER
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
{
"T_nowait"
,
no_argument
,
0
,
LONG_OPTION_T_NOWAIT
},
...
...
@@ -817,26 +802,6 @@ static void get_options (int argc, char **argv)
case
LONG_OPTION_MMAPPED_DMA
:
mmapped_dma
=
1
;
break
;
case
LONG_OPTION_RCC
:
node_function
=
NGFI_RCC_IF4
;
break
;
case
LONG_OPTION_RRU
:
node_function
=
NGFI_RRU_IF4
;
break
;
case
LONG_OPTION_ENB
:
node_function
=
eNodeB_3GPP
;
break
;
case
LONG_OPTION_ENB_BBU
:
node_function
=
eNodeB_3GPP_BBU
;
break
;
case
LONG_OPTION_RRH
:
node_function
=
NGFI_RRU_IF5
;
break
;
#if T_TRACER
case
LONG_OPTION_T_PORT
:
{
...
...
@@ -1116,6 +1081,10 @@ static void get_options (int argc, char **argv)
}
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
node_function
[
CC_id
]
=
enb_properties
->
properties
[
i
]
->
cc_node_function
[
CC_id
];
node_timing
[
CC_id
]
=
enb_properties
->
properties
[
i
]
->
cc_node_timing
[
CC_id
];
node_synch_ref
[
CC_id
]
=
enb_properties
->
properties
[
i
]
->
cc_node_synch_ref
[
CC_id
];
frame_parms
[
CC_id
]
->
frame_type
=
enb_properties
->
properties
[
i
]
->
frame_type
[
CC_id
];
frame_parms
[
CC_id
]
->
tdd_config
=
enb_properties
->
properties
[
i
]
->
tdd_config
[
CC_id
];
frame_parms
[
CC_id
]
->
tdd_config_S
=
enb_properties
->
properties
[
i
]
->
tdd_config_s
[
CC_id
];
...
...
@@ -1668,7 +1637,7 @@ int main( int argc, char **argv )
if
(
UE_flag
==
0
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
node_function
==
NGFI_RRU_IF4
||
node_function
==
NGFI_RRU_IF5
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF4
||
node_function
[
CC_id
]
==
NGFI_RRU_IF5
)
{
PHY_vars_eNB_g
[
0
][
CC_id
]
->
rfdevice
.
host_type
=
RRH_HOST
;
PHY_vars_eNB_g
[
0
][
CC_id
]
->
ifdevice
.
host_type
=
RRH_HOST
;
}
else
{
...
...
@@ -1683,69 +1652,39 @@ int main( int argc, char **argv )
openair0
.
type
=
NONE_DEV
;
/* transport type is initialized NONE_TP (no transport protocol) when the transport protocol will be initiated transport protocol type will be set */
openair0
.
transp_type
=
NONE_TP
;
// Legacy BBU - RRH init
//int returns=-1;
///* BBU can have either a local or a remote radio head */
//if (local_remote_radio == BBU_LOCAL_RADIO_HEAD) { //local radio head active - load library of radio head and initiate it
//if (mode!=loop_through_memory) {
//returns=openair0_device_load(&openair0, &openair0_cfg[0]);
//printf("openair0_device_init returns %d\n",returns);
//if (returns<0) {
//printf("Exiting, cannot initialize device\n");
//exit(-1);
//}
//}
//else if (mode==loop_through_memory) {
//}
//} else { //remote radio head active - load library of transport protocol and initiate it
//if (mode!=loop_through_memory) {
//returns=openair0_transport_load(&openair0, &openair0_cfg[0], eth_params);
//printf("openair0_transport_init returns %d\n",returns);
//if (returns<0) {
//printf("Exiting, cannot initialize transport protocol\n");
//exit(-1);
//}
//}
//else if (mode==loop_through_memory) {
//}
//}
int
returns
=-
1
;
// Handle spatially distributed MIMO antenna ports
// Load RF device and initialize
if
(
node_function
==
NGFI_RRU_IF5
||
node_function
==
NGFI_RRU_IF4
||
node_function
==
eNodeB_3GPP
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
(
node_function
[
CC_id
]
==
NGFI_RRU_IF5
||
node_function
[
CC_id
]
==
NGFI_RRU_IF4
||
node_function
[
CC_id
]
==
eNodeB_3GPP
)
{
if
(
mode
!=
loop_through_memory
)
{
returns
=
(
UE_flag
==
0
)
?
openair0_device_load
(
&
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
rfdevice
),
&
openair0_cfg
[
0
])
:
openair0_device_load
(
&
openair0
,
&
openair0_cfg
[
0
]);
returns
=
(
UE_flag
==
0
)
?
openair0_device_load
(
&
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
rfdevice
),
&
openair0_cfg
[
0
])
:
openair0_device_load
(
&
openair0
,
&
openair0_cfg
[
0
]);
printf
(
"openair0_device_init returns %d for CC_id %d
\n
"
,
returns
,
CC_id
);
if
(
returns
<
0
)
{
printf
(
"Exiting, cannot initialize device
\n
"
);
exit
(
-
1
);
printf
(
"Exiting, cannot initialize device
\n
"
);
exit
(
-
1
);
}
}
else
if
(
mode
==
loop_through_memory
)
{
}
else
if
(
mode
==
loop_through_memory
)
{
}
}
}
// Load transport protocol and initialize
if
((
UE_flag
==
0
)
&&
(
node_function
!=
eNodeB_3GPP
)){
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
if
((
UE_flag
==
0
)
&&
(
node_function
[
CC_id
]
!=
eNodeB_3GPP
))
{
if
(
mode
!=
loop_through_memory
)
{
returns
=
openair0_transport_load
(
&
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
ifdevice
),
&
openair0_cfg
[
0
],
(
eth_params
+
CC_id
));
returns
=
openair0_transport_load
(
&
(
PHY_vars_eNB_g
[
0
][
CC_id
]
->
ifdevice
),
&
openair0_cfg
[
0
],
(
eth_params
+
CC_id
));
printf
(
"openair0_transport_init returns %d for CC_id %d
\n
"
,
returns
,
CC_id
);
if
(
returns
<
0
)
{
printf
(
"Exiting, cannot initialize transport protocol
\n
"
);
exit
(
-
1
);
printf
(
"Exiting, cannot initialize transport protocol
\n
"
);
exit
(
-
1
);
}
}
else
if
(
mode
==
loop_through_memory
)
{
}
else
if
(
mode
==
loop_through_memory
)
{
}
}
}
...
...
@@ -1783,7 +1722,6 @@ int main( int argc, char **argv )
number_of_cards
=
1
;
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
rf_map
[
CC_id
].
card
=
0
;
rf_map
[
CC_id
].
chain
=
CC_id
+
chain_offset
;
...
...
@@ -1905,17 +1843,12 @@ int main( int argc, char **argv )
// start the main thread
if
(
UE_flag
==
1
)
init_UE
();
else
init_eNB
(
node_function
);
else
init_eNB
(
node_function
,
node_timing
);
// Sleep to allow all threads to setup
sleep
(
3
);
// *** Handle per CC_id openair0
printf
(
"Sending sync to all threads
\n
"
);
pthread_mutex_lock
(
&
sync_mutex
);
...
...
@@ -1977,7 +1910,6 @@ int main( int argc, char **argv )
pthread_cond_destroy
(
&
sync_cond
);
pthread_mutex_destroy
(
&
sync_mutex
);
// *** Handle per CC_id openair0
if
(
UE_flag
==
1
)
openair0
.
trx_end_func
(
&
openair0
);
...
...
@@ -1998,10 +1930,3 @@ int main( int argc, char **argv )
return
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