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
ZhouShuya
OpenXG-RAN
Commits
7fad4560
Commit
7fad4560
authored
Feb 25, 2015
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
git-svn-id:
http://svn.eurecom.fr/openair4G/trunk@6612
818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent
14f403e4
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
19 deletions
+26
-19
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+26
-19
No files found.
targets/RT/USER/lte-ue.c
View file @
7fad4560
...
@@ -277,7 +277,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -277,7 +277,7 @@ static void *UE_thread_synch(void *arg) {
#endif
#endif
}
}
#ifdef EXMIMO
#ifdef EXMIMO
openair0_config
(
&
openair0_cfg
[
card
],
1
);
//
openair0_config(&openair0_cfg[card],1);
#endif
#endif
}
}
#ifdef USRP
#ifdef USRP
...
@@ -357,7 +357,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -357,7 +357,7 @@ static void *UE_thread_synch(void *arg) {
}
}
#ifdef EXMIMO
#ifdef EXMIMO
openair0_config
(
&
openair0_cfg
[
card
],
1
);
//
openair0_config(&openair0_cfg[card],1);
#endif
#endif
}
}
#ifdef USRP
#ifdef USRP
...
@@ -368,7 +368,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -368,7 +368,7 @@ static void *UE_thread_synch(void *arg) {
#endif
#endif
break
;
break
;
case
pbch
:
case
pbch
:
printf
(
"
Running initial sync
\n
"
);
// printf("synch:
Running initial sync\n");
// This is a hack to fix a bug when using USRP
// This is a hack to fix a bug when using USRP
memset
(
PHY_vars_UE_g
[
0
][
0
]
->
lte_ue_common_vars
.
rxdata
[
0
],
0
,
1024
);
memset
(
PHY_vars_UE_g
[
0
][
0
]
->
lte_ue_common_vars
.
rxdata
[
0
],
0
,
1024
);
if
(
initial_sync
(
UE
,
UE
->
mode
)
==
0
)
{
if
(
initial_sync
(
UE
,
UE
->
mode
)
==
0
)
{
...
@@ -399,7 +399,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -399,7 +399,7 @@ static void *UE_thread_synch(void *arg) {
LOG_I
(
HW
,
"Got synch: hw_slot_offset %d
\n
"
,
hw_slot_offset
);
LOG_I
(
HW
,
"Got synch: hw_slot_offset %d
\n
"
,
hw_slot_offset
);
}
}
else
{
else
{
// intial_synch
if
(
openair_daq_vars
.
freq_offset
>=
0
)
{
if
(
openair_daq_vars
.
freq_offset
>=
0
)
{
openair_daq_vars
.
freq_offset
+=
100
;
openair_daq_vars
.
freq_offset
+=
100
;
...
@@ -408,6 +408,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -408,6 +408,7 @@ static void *UE_thread_synch(void *arg) {
else
{
else
{
openair_daq_vars
.
freq_offset
*=
-
1
;
openair_daq_vars
.
freq_offset
*=
-
1
;
}
}
if
(
abs
(
openair_daq_vars
.
freq_offset
)
>
7500
)
{
if
(
abs
(
openair_daq_vars
.
freq_offset
)
>
7500
)
{
LOG_I
(
PHY
,
"[initial_sync] No cell synchronization found, abandoning
\n
"
);
LOG_I
(
PHY
,
"[initial_sync] No cell synchronization found, abandoning
\n
"
);
mac_xface
->
macphy_exit
(
"No cell synchronization found, abandoning"
);
mac_xface
->
macphy_exit
(
"No cell synchronization found, abandoning"
);
...
@@ -421,8 +422,9 @@ static void *UE_thread_synch(void *arg) {
...
@@ -421,8 +422,9 @@ static void *UE_thread_synch(void *arg) {
for
(
i
=
0
;
i
<
openair0_cfg
[
card
].
rx_num_channels
;
i
++
)
{
for
(
i
=
0
;
i
<
openair0_cfg
[
card
].
rx_num_channels
;
i
++
)
{
openair0_cfg
[
card
].
rx_freq
[
i
]
=
downlink_frequency
[
card
][
i
]
+
openair_daq_vars
.
freq_offset
;
openair0_cfg
[
card
].
rx_freq
[
i
]
=
downlink_frequency
[
card
][
i
]
+
openair_daq_vars
.
freq_offset
;
openair0_cfg
[
card
].
tx_freq
[
i
]
=
downlink_frequency
[
card
][
i
]
+
uplink_frequency_offset
[
card
][
i
]
+
openair_daq_vars
.
freq_offset
;
openair0_cfg
[
card
].
tx_freq
[
i
]
=
downlink_frequency
[
card
][
i
]
+
uplink_frequency_offset
[
card
][
i
]
+
openair_daq_vars
.
freq_offset
;
openair0_cfg
[
card
].
rx_gain
[
i
]
=
UE
->
rx_total_gain_dB
-
USRP_GAIN_OFFSET
;
// 65 calibrated for USRP B210 @ 2.6 GHz
#ifdef USRP
#ifdef USRP
openair0_cfg
[
card
].
rx_gain
[
i
]
=
UE
->
rx_total_gain_dB
-
USRP_GAIN_OFFSET
;
// 65 calibrated for USRP B210 @ 2.6 GHz
switch
(
UE
->
lte_frame_parms
.
N_RB_DL
)
{
switch
(
UE
->
lte_frame_parms
.
N_RB_DL
)
{
case
6
:
case
6
:
openair0_cfg
[
card
].
rx_gain
[
i
]
-=
12
;
openair0_cfg
[
card
].
rx_gain
[
i
]
-=
12
;
...
@@ -437,11 +439,12 @@ static void *UE_thread_synch(void *arg) {
...
@@ -437,11 +439,12 @@ static void *UE_thread_synch(void *arg) {
printf
(
"Unknown number of RBs %d
\n
"
,
UE
->
lte_frame_parms
.
N_RB_DL
);
printf
(
"Unknown number of RBs %d
\n
"
,
UE
->
lte_frame_parms
.
N_RB_DL
);
break
;
break
;
}
}
printf
(
"UE synch: setting RX gain (%d,%d) to %d
\n
"
,
card
,
i
,
openair0_cfg
[
card
].
rx_gain
[
i
]);
//
printf("UE synch: setting RX gain (%d,%d) to %d\n",card,i,openair0_cfg[card].rx_gain[i]);
#endif
#endif
}
}
#ifdef EXMIMO
#ifdef EXMIMO
openair0_config
(
&
openair0_cfg
[
card
],
1
);
//openair0_config(&openair0_cfg[card],1);
//rt_sleep_ns(FRAME_PERIOD);
#endif
#endif
}
}
#ifdef USRP
#ifdef USRP
...
@@ -450,8 +453,6 @@ static void *UE_thread_synch(void *arg) {
...
@@ -450,8 +453,6 @@ static void *UE_thread_synch(void *arg) {
// openair0_set_gains(&openair0,&openair0_cfg[0]);
// openair0_set_gains(&openair0,&openair0_cfg[0]);
#endif
#endif
#else
#endif
#endif
...
@@ -459,6 +460,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -459,6 +460,7 @@ static void *UE_thread_synch(void *arg) {
// openair0_dump_config(&openair0_cfg[0],UE_flag);
// openair0_dump_config(&openair0_cfg[0],UE_flag);
// rt_sleep_ns(FRAME_PERIOD);
// rt_sleep_ns(FRAME_PERIOD);
}
// freq_offset
}
// freq_offset
}
// initial_sync=0
}
// initial_sync=0
break
;
break
;
...
@@ -467,7 +469,7 @@ static void *UE_thread_synch(void *arg) {
...
@@ -467,7 +469,7 @@ static void *UE_thread_synch(void *arg) {
break
;
break
;
}
}
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH
,
0
);
vcd_signal_dumper_dump_function_by_name
(
VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SYNCH
,
0
);
printf
(
"Finished synch : Locking synch mutex (thread_sync)
\n
"
);
if
(
pthread_mutex_lock
(
&
UE
->
mutex_synch
)
!=
0
)
{
if
(
pthread_mutex_lock
(
&
UE
->
mutex_synch
)
!=
0
)
{
printf
(
"[openair][SCHED][eNB] error locking mutex for UE synch
\n
"
);
printf
(
"[openair][SCHED][eNB] error locking mutex for UE synch
\n
"
);
}
}
...
@@ -653,7 +655,7 @@ static void *UE_thread_rx(void *arg) {
...
@@ -653,7 +655,7 @@ static void *UE_thread_rx(void *arg) {
// This creates a 1ms reservation every 10ms period
// This creates a 1ms reservation every 10ms period
attr
.
sched_policy
=
SCHED_DEADLINE
;
attr
.
sched_policy
=
SCHED_DEADLINE
;
attr
.
sched_runtime
=
1
*
8
00000
;
// each rx thread requires 1ms to finish its job
attr
.
sched_runtime
=
1
*
5
00000
;
// each rx thread requires 1ms to finish its job
attr
.
sched_deadline
=
1
*
1000000
;
// each rx thread will finish within 1ms
attr
.
sched_deadline
=
1
*
1000000
;
// each rx thread will finish within 1ms
attr
.
sched_period
=
1
*
1000000
;
// each rx thread has a period of 1ms from the starting point
attr
.
sched_period
=
1
*
1000000
;
// each rx thread has a period of 1ms from the starting point
...
@@ -1111,7 +1113,7 @@ void *UE_thread(void *arg) {
...
@@ -1111,7 +1113,7 @@ void *UE_thread(void *arg) {
// This creates a .25 ms reservation
// This creates a .25 ms reservation
attr
.
sched_policy
=
SCHED_DEADLINE
;
attr
.
sched_policy
=
SCHED_DEADLINE
;
attr
.
sched_runtime
=
0
.
25
*
1000000
;
attr
.
sched_runtime
=
0
.
1
*
1000000
;
attr
.
sched_deadline
=
0
.
25
*
1000000
;
attr
.
sched_deadline
=
0
.
25
*
1000000
;
attr
.
sched_period
=
0
.
5
*
1000000
;
attr
.
sched_period
=
0
.
5
*
1000000
;
...
@@ -1339,15 +1341,19 @@ void *UE_thread(void *arg) {
...
@@ -1339,15 +1341,19 @@ void *UE_thread(void *arg) {
// wait until we can lock mutex_synch
// wait until we can lock mutex_synch
printf
(
"Locking mutex_synch (UE_thread)
\n
"
);
if
(
pthread_mutex_lock
(
&
UE
->
mutex_synch
)
!=
0
)
{
if
(
pthread_mutex_lock
(
&
UE
->
mutex_synch
)
!=
0
)
{
LOG_E
(
PHY
,
"[SCHED][UE] error locking mutex for UE initial synch thread
\n
"
);
LOG_E
(
PHY
,
"[SCHED][UE] error locking mutex for UE initial synch thread
\n
"
);
exit_fun
(
"noting to add"
);
exit_fun
(
"noting to add"
);
}
}
else
{
else
{
printf
(
"Before getting frame IC %d (UE_thread)
\n
"
,
UE
->
instance_cnt_synch
);
if
(
UE
->
instance_cnt_synch
<
0
)
{
if
(
UE
->
instance_cnt_synch
<
0
)
{
wait_sync_cnt
=
0
;
wait_sync_cnt
=
0
;
openair0_get_frame
(
0
);
openair0_get_frame
(
0
);
rt_sleep_ns
(
FRAME_PERIOD
);
// increment instance count for sync thread
// increment instance count for sync thread
UE
->
instance_cnt_synch
++
;
UE
->
instance_cnt_synch
++
;
pthread_mutex_unlock
(
&
UE
->
mutex_synch
);
pthread_mutex_unlock
(
&
UE
->
mutex_synch
);
...
@@ -1359,6 +1365,7 @@ void *UE_thread(void *arg) {
...
@@ -1359,6 +1365,7 @@ void *UE_thread(void *arg) {
else
{
else
{
wait_sync_cnt
++
;
wait_sync_cnt
++
;
pthread_mutex_unlock
(
&
UE
->
mutex_synch
);
pthread_mutex_unlock
(
&
UE
->
mutex_synch
);
if
(
wait_sync_cnt
>
1000
)
if
(
wait_sync_cnt
>
1000
)
exit_fun
(
"waiting to long for synch thread"
);
exit_fun
(
"waiting to long for synch thread"
);
else
else
...
...
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