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
ccba895b
Commit
ccba895b
authored
Jul 24, 2016
by
Rohit Gupta
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into feature-34-test_framework
parents
ebf8975c
39df998e
Changes
15
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
749 additions
and
416 deletions
+749
-416
.gitlab-ci.yml
.gitlab-ci.yml
+0
-2
cmake_targets/autotests/README.txt
cmake_targets/autotests/README.txt
+2
-4
common/utils/T/tracer/enb.c
common/utils/T/tracer/enb.c
+41
-8
common/utils/T/tracer/logger/Makefile
common/utils/T/tracer/logger/Makefile
+2
-1
common/utils/T/tracer/logger/iqdotlog.c
common/utils/T/tracer/logger/iqdotlog.c
+82
-0
common/utils/T/tracer/logger/iqlog.c
common/utils/T/tracer/logger/iqlog.c
+1
-1
common/utils/T/tracer/logger/logger.h
common/utils/T/tracer/logger/logger.h
+2
-0
common/utils/T/tracer/openair_logo.h
common/utils/T/tracer/openair_logo.h
+586
-389
common/utils/T/tracer/openair_logo.png
common/utils/T/tracer/openair_logo.png
+0
-0
common/utils/T/tracer/record.c
common/utils/T/tracer/record.c
+1
-0
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+1
-0
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+6
-0
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+1
-1
openair2/RRC/LITE/L2_interface.c
openair2/RRC/LITE/L2_interface.c
+6
-7
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+18
-3
No files found.
.gitlab-ci.yml
View file @
ccba895b
...
@@ -34,6 +34,4 @@ job1:
...
@@ -34,6 +34,4 @@ job1:
-
cat $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml
-
cat $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml
-
exce_log=`egrep -i 'warning|error|critical|exception' $OPENAIR_DIR/cmake_targets/autotests/log/python_autotest.log |cat `
-
exce_log=`egrep -i 'warning|error|critical|exception' $OPENAIR_DIR/cmake_targets/autotests/log/python_autotest.log |cat `
-
if [ -n "$exce_log" ]; then echo -e "\e[31mThere are errors in $NFS_TEST_RESULTS_DIR/log/python_autotest.log. Please check the logs\e[0m" ; fi
-
if [ -n "$exce_log" ]; then echo -e "\e[31mThere are errors in $NFS_TEST_RESULTS_DIR/log/python_autotest.log. Please check the logs\e[0m" ; fi
-
exce_log=`egrep -i 'warning|error|critical|exception' $OPENAIR_DIR/cmake_targets/autotests/log/python_autotest_cleanup.log |cat `
-
if [ -n "$exce_log" ]; then echo -e "\e[31mThere are errors in $NFS_TEST_RESULTS_DIR/log/python_autotest_cleanup.log. Please check the logs\e[0m" ; fi
cmake_targets/autotests/README.txt
View file @
ccba895b
...
@@ -239,7 +239,7 @@ Obj.# Case# Test# Description
...
@@ -239,7 +239,7 @@ Obj.# Case# Test# Description
02 Functional test case
02 Functional test case
03
Non-Functional test case
03
Autotests specific to OAI UE
04 Failure test case
04 Failure test case
...
@@ -250,5 +250,3 @@ Obj.# Case# Test# Description
...
@@ -250,5 +250,3 @@ Obj.# Case# Test# Description
#TODO: Add test cases for TDD/FDD
#TODO: Add test cases for TDD/FDD
#TODO: Test and compile seperately for Rel8/Rel10
#TODO: Test and compile seperately for Rel8/Rel10
#TODO: Case03.py eMBMS test case
#TODO: Case03.py eMBMS test case
\ No newline at end of file
common/utils/T/tracer/enb.c
View file @
ccba895b
...
@@ -139,7 +139,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
...
@@ -139,7 +139,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
logger_add_view
(
input_signal_log
,
input_signal_view
);
logger_add_view
(
input_signal_log
,
input_signal_view
);
/* UE 0 PUSCH IQ data */
/* UE 0 PUSCH IQ data */
w
=
new_xy_plot
(
g
,
55
,
55
,
"PUSCH IQ"
,
50
);
w
=
new_xy_plot
(
g
,
55
,
55
,
"PUSCH IQ
[UE 0]
"
,
50
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
-
1000
,
1000
,
-
1000
,
1000
);
xy_plot_set_range
(
g
,
w
,
-
1000
,
1000
,
-
1000
,
1000
);
l
=
new_iqlog
(
h
,
database
,
"ENB_PHY_PUSCH_IQ"
,
"nb_rb"
,
l
=
new_iqlog
(
h
,
database
,
"ENB_PHY_PUSCH_IQ"
,
"nb_rb"
,
...
@@ -149,11 +149,10 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
...
@@ -149,11 +149,10 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
logger_set_filter
(
l
,
logger_set_filter
(
l
,
filter_eq
(
filter_eq
(
filter_evarg
(
database
,
"ENB_PHY_PUSCH_IQ"
,
"UE_ID"
),
filter_evarg
(
database
,
"ENB_PHY_PUSCH_IQ"
,
"UE_ID"
),
filter_int
(
0
)
filter_int
(
0
)));
));
/* UE 0 estimated UL channel */
/* UE 0 estimated UL channel */
w
=
new_xy_plot
(
g
,
2
56
*
2
,
55
,
"UL estimated channel
"
,
50
);
w
=
new_xy_plot
(
g
,
2
80
,
55
,
"UL estimated channel [UE 0]
"
,
50
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
512
*
10
,
-
10
,
80
);
xy_plot_set_range
(
g
,
w
,
0
,
512
*
10
,
-
10
,
80
);
l
=
new_framelog
(
h
,
database
,
l
=
new_framelog
(
h
,
database
,
...
@@ -165,12 +164,44 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
...
@@ -165,12 +164,44 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
logger_set_filter
(
l
,
logger_set_filter
(
l
,
filter_eq
(
filter_eq
(
filter_evarg
(
database
,
"ENB_PHY_UL_CHANNEL_ESTIMATE"
,
"UE_ID"
),
filter_evarg
(
database
,
"ENB_PHY_UL_CHANNEL_ESTIMATE"
,
"UE_ID"
),
filter_int
(
0
)
filter_int
(
0
)));
));
/* UE 0 PUCCH energy */
w
=
new_xy_plot
(
g
,
128
,
55
,
"PUCCH1 energy (SR) [UE 0]"
,
50
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
10
,
80
);
l
=
new_ttilog
(
h
,
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"frame"
,
"subframe"
,
"threshold"
,
0
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#ff0000"
));
logger_add_view
(
l
,
v
);
logger_set_filter
(
l
,
filter_eq
(
filter_evarg
(
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"UE_ID"
),
filter_int
(
0
)));
l
=
new_ttilog
(
h
,
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"frame"
,
"subframe"
,
"energy"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
logger_set_filter
(
l
,
filter_eq
(
filter_evarg
(
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"UE_ID"
),
filter_int
(
0
)));
/* UE 0 PUCCH IQ data */
w
=
new_xy_plot
(
g
,
55
,
55
,
"PUCCH IQ [UE 0]"
,
50
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
-
100
,
100
,
-
100
,
100
);
l
=
new_iqdotlog
(
h
,
database
,
"ENB_PHY_PUCCH_1AB_IQ"
,
"I"
,
"Q"
);
v
=
new_view_xy
(
500
,
10
,
g
,
w
,
new_color
(
g
,
"#000"
),
XY_LOOP_MODE
);
logger_add_view
(
l
,
v
);
logger_set_filter
(
l
,
filter_eq
(
filter_evarg
(
database
,
"ENB_PHY_PUCCH_1AB_IQ"
,
"UE_ID"
),
filter_int
(
0
)));
/* downlink/uplink UE DCIs */
/* downlink/uplink UE DCIs */
widget_add_child
(
g
,
top_container
,
widget_add_child
(
g
,
top_container
,
new_label
(
g
,
"DL/UL TICK/DCI/ACK/NACK "
),
-
1
);
new_label
(
g
,
"DL/UL TICK/DCI/ACK/NACK
[all UEs]
"
),
-
1
);
line
=
new_container
(
g
,
HORIZONTAL
);
line
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
timeline_plot
=
new_timeline
(
g
,
512
,
8
,
5
);
timeline_plot
=
new_timeline
(
g
,
512
,
8
,
5
);
...
@@ -220,7 +251,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
...
@@ -220,7 +251,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database)
/* harq processes' ticktime view */
/* harq processes' ticktime view */
widget_add_child
(
g
,
top_container
,
widget_add_child
(
g
,
top_container
,
new_label
(
g
,
"DL/UL HARQ (x8) "
),
-
1
);
new_label
(
g
,
"DL/UL HARQ (x8)
[UE 0]
"
),
-
1
);
line
=
new_container
(
g
,
HORIZONTAL
);
line
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
timeline_plot
=
new_timeline
(
g
,
512
,
2
*
8
+
2
,
3
);
timeline_plot
=
new_timeline
(
g
,
512
,
2
*
8
+
2
,
3
);
...
@@ -491,6 +522,8 @@ int main(int n, char **v)
...
@@ -491,6 +522,8 @@ int main(int n, char **v)
on_off
(
database
,
"ENB_PHY_ULSCH_UE_NACK"
,
is_on
,
1
);
on_off
(
database
,
"ENB_PHY_ULSCH_UE_NACK"
,
is_on
,
1
);
on_off
(
database
,
"ENB_MASTER_TICK"
,
is_on
,
1
);
on_off
(
database
,
"ENB_MASTER_TICK"
,
is_on
,
1
);
on_off
(
database
,
"ENB_PHY_PUSCH_IQ"
,
is_on
,
1
);
on_off
(
database
,
"ENB_PHY_PUSCH_IQ"
,
is_on
,
1
);
on_off
(
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
is_on
,
1
);
on_off
(
database
,
"ENB_PHY_PUCCH_1AB_IQ"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_RRC_INFO"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_RRC_INFO"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_RRC_ERROR"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_RRC_ERROR"
,
is_on
,
1
);
...
...
common/utils/T/tracer/logger/Makefile
View file @
ccba895b
CC
=
gcc
CC
=
gcc
CFLAGS
=
-Wall
-g
-pthread
-I
..
CFLAGS
=
-Wall
-g
-pthread
-I
..
OBJS
=
logger.o textlog.o framelog.o ttilog.o timelog.o ticklog.o iqlog.o
OBJS
=
logger.o textlog.o framelog.o ttilog.o timelog.o ticklog.o iqlog.o
\
iqdotlog.o
logger.a
:
$(OBJS)
logger.a
:
$(OBJS)
ar cr logger.a
$(OBJS)
ar cr logger.a
$(OBJS)
...
...
common/utils/T/tracer/logger/iqdotlog.c
0 → 100644
View file @
ccba895b
#include "logger.h"
#include "logger_defs.h"
#include "handler.h"
#include "database.h"
#include "filter/filter.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct
iqdotlog
{
struct
logger
common
;
void
*
database
;
int
i_arg
;
int
q_arg
;
};
static
void
_event
(
void
*
p
,
event
e
)
{
struct
iqdotlog
*
l
=
p
;
int
i
;
float
I
,
Q
;
if
(
l
->
common
.
filter
!=
NULL
&&
filter_eval
(
l
->
common
.
filter
,
e
)
==
0
)
return
;
I
=
e
.
e
[
l
->
i_arg
].
i
;
Q
=
e
.
e
[
l
->
q_arg
].
i
;
for
(
i
=
0
;
i
<
l
->
common
.
vsize
;
i
++
)
l
->
common
.
v
[
i
]
->
append
(
l
->
common
.
v
[
i
],
&
I
,
&
Q
,
1
);
}
logger
*
new_iqdotlog
(
event_handler
*
h
,
void
*
database
,
char
*
event_name
,
char
*
I
,
char
*
Q
)
{
struct
iqdotlog
*
ret
;
int
event_id
;
database_event_format
f
;
int
i
;
ret
=
calloc
(
1
,
sizeof
(
struct
iqdotlog
));
if
(
ret
==
NULL
)
abort
();
ret
->
common
.
event_name
=
strdup
(
event_name
);
if
(
ret
->
common
.
event_name
==
NULL
)
abort
();
ret
->
database
=
database
;
event_id
=
event_id_from_name
(
database
,
event_name
);
ret
->
common
.
handler_id
=
register_handler_function
(
h
,
event_id
,
_event
,
ret
);
f
=
get_format
(
database
,
event_id
);
/* look for args */
ret
->
i_arg
=
-
1
;
ret
->
q_arg
=
-
1
;
for
(
i
=
0
;
i
<
f
.
count
;
i
++
)
{
if
(
!
strcmp
(
f
.
name
[
i
],
I
))
ret
->
i_arg
=
i
;
if
(
!
strcmp
(
f
.
name
[
i
],
Q
))
ret
->
q_arg
=
i
;
}
if
(
ret
->
i_arg
==
-
1
)
{
printf
(
"%s:%d: argument '%s' not found in event '%s'
\n
"
,
__FILE__
,
__LINE__
,
I
,
event_name
);
abort
();
}
if
(
ret
->
q_arg
==
-
1
)
{
printf
(
"%s:%d: argument '%s' not found in event '%s'
\n
"
,
__FILE__
,
__LINE__
,
Q
,
event_name
);
abort
();
}
if
(
strcmp
(
f
.
type
[
ret
->
i_arg
],
"int"
)
!=
0
)
{
printf
(
"%s:%d: argument '%s' has wrong type (should be 'int')
\n
"
,
__FILE__
,
__LINE__
,
I
);
abort
();
}
if
(
strcmp
(
f
.
type
[
ret
->
q_arg
],
"int"
)
!=
0
)
{
printf
(
"%s:%d: argument '%s' has wrong type (should be 'int')
\n
"
,
__FILE__
,
__LINE__
,
Q
);
abort
();
}
return
ret
;
}
common/utils/T/tracer/logger/iqlog.c
View file @
ccba895b
...
@@ -169,7 +169,7 @@ logger *new_iqlog(event_handler *h, void *database,
...
@@ -169,7 +169,7 @@ logger *new_iqlog(event_handler *h, void *database,
}
}
if
(
strcmp
(
f
.
type
[
ret
->
N_RB_UL_arg
],
"int"
)
!=
0
)
{
if
(
strcmp
(
f
.
type
[
ret
->
N_RB_UL_arg
],
"int"
)
!=
0
)
{
printf
(
"%s:%d: argument '%s' has wrong type (should be 'int')
\n
"
,
printf
(
"%s:%d: argument '%s' has wrong type (should be 'int')
\n
"
,
__FILE__
,
__LINE__
,
nb_rb
);
__FILE__
,
__LINE__
,
N_RB_UL
);
abort
();
abort
();
}
}
if
(
strcmp
(
f
.
type
[
ret
->
symbols_per_tti_arg
],
"int"
)
!=
0
)
{
if
(
strcmp
(
f
.
type
[
ret
->
symbols_per_tti_arg
],
"int"
)
!=
0
)
{
...
...
common/utils/T/tracer/logger/logger.h
View file @
ccba895b
...
@@ -16,6 +16,8 @@ logger *new_ticklog(void *event_handler, void *database,
...
@@ -16,6 +16,8 @@ logger *new_ticklog(void *event_handler, void *database,
logger
*
new_iqlog
(
void
*
event_handler
,
void
*
database
,
logger
*
new_iqlog
(
void
*
event_handler
,
void
*
database
,
char
*
event_name
,
char
*
nb_rb
,
char
*
N_RB_UL
,
char
*
symbols_per_tti
,
char
*
event_name
,
char
*
nb_rb
,
char
*
N_RB_UL
,
char
*
symbols_per_tti
,
char
*
buffer_varname
);
char
*
buffer_varname
);
logger
*
new_iqdotlog
(
void
*
event_handler
,
void
*
database
,
char
*
event_name
,
char
*
I
,
char
*
Q
);
void
framelog_set_skip
(
logger
*
_this
,
int
skip_delay
);
void
framelog_set_skip
(
logger
*
_this
,
int
skip_delay
);
void
framelog_set_update_only_at_sf9
(
logger
*
_this
,
int
update_only_at_sf9
);
void
framelog_set_update_only_at_sf9
(
logger
*
_this
,
int
update_only_at_sf9
);
...
...
common/utils/T/tracer/openair_logo.h
View file @
ccba895b
This diff is collapsed.
Click to expand it.
common/utils/T/tracer/openair_logo.png
View replaced file @
ebf8975c
View file @
ccba895b
4.55 KB
|
W:
|
H:
6.86 KB
|
W:
|
H:
2-up
Swipe
Onion skin
common/utils/T/tracer/record.c
View file @
ccba895b
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdlib.h>
#include <signal.h>
#include <signal.h>
#include <string.h>
#include <string.h>
#include <unistd.h>
#include "database.h"
#include "database.h"
#include "utils.h"
#include "utils.h"
#include "../T_defs.h"
#include "../T_defs.h"
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
ccba895b
...
@@ -6389,6 +6389,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
...
@@ -6389,6 +6389,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
first_tx
==
1
)
{
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
first_tx
==
1
)
{
// ulsch->harq_processes[harq_pid]->Ndi = 1;
// ulsch->harq_processes[harq_pid]->Ndi = 1;
ulsch
->
harq_processes
[
harq_pid
]
->
first_tx
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
first_tx
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
DCINdi
=
ndi
;
ulsch
->
harq_processes
[
harq_pid
]
->
round
=
0
;
ulsch
->
harq_processes
[
harq_pid
]
->
round
=
0
;
}
else
{
}
else
{
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
DCINdi
!=
ndi
)
{
// new SDU opportunity
if
(
ulsch
->
harq_processes
[
harq_pid
]
->
DCINdi
!=
ndi
)
{
// new SDU opportunity
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
ccba895b
...
@@ -298,6 +298,12 @@ int rrc_mac_remove_ue(module_id_t mod_idP,rnti_t rntiP)
...
@@ -298,6 +298,12 @@ int rrc_mac_remove_ue(module_id_t mod_idP,rnti_t rntiP)
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
int
pCC_id
=
UE_PCCID
(
mod_idP
,
UE_id
);
int
pCC_id
=
UE_PCCID
(
mod_idP
,
UE_id
);
if
(
UE_id
==
-
1
)
{
LOG_W
(
MAC
,
"rrc_mac_remove_ue: UE %x not found
\n
"
,
rntiP
);
mac_phy_remove_ue
(
mod_idP
,
rntiP
);
return
0
;
}
LOG_I
(
MAC
,
"Removing UE %d from Primary CC_id %d (rnti %x)
\n
"
,
UE_id
,
pCC_id
,
rntiP
);
LOG_I
(
MAC
,
"Removing UE %d from Primary CC_id %d (rnti %x)
\n
"
,
UE_id
,
pCC_id
,
rntiP
);
dump_ue_list
(
UE_list
,
0
);
dump_ue_list
(
UE_list
,
0
);
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
ccba895b
...
@@ -103,7 +103,7 @@ rlc_am_get_buffer_occupancy_in_bytes (
...
@@ -103,7 +103,7 @@ rlc_am_get_buffer_occupancy_in_bytes (
}
}
#endif
#endif
return
rlc_pP
->
status_buffer_occupancy
+
rlc_pP
->
retrans
mission_buffer_occupancy
+
rlc_pP
->
sdu_buffer_occupancy
+
max_li_overhead
+
header_overhead
;
return
rlc_pP
->
status_buffer_occupancy
+
rlc_pP
->
retrans
_num_bytes_to_retransmit
+
rlc_pP
->
sdu_buffer_occupancy
+
max_li_overhead
+
header_overhead
;
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void
void
...
...
openair2/RRC/LITE/L2_interface.c
View file @
ccba895b
...
@@ -723,8 +723,8 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
...
@@ -723,8 +723,8 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
const
int
CC_idP
,
const
int
CC_idP
,
const
frame_t
frameP
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
)
{
const
rnti_t
rntiP
)
{
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_eNB_get_ue_context
(
ue_context_p
=
rrc_eNB_get_ue_context
(
&
eNB_rrc_inst
[
Mod_instP
],
&
eNB_rrc_inst
[
Mod_instP
],
...
@@ -735,10 +735,9 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
...
@@ -735,10 +735,9 @@ void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP,
ue_context_p
->
ue_context
.
ul_failure_timer
=
1
;
ue_context_p
->
ue_context
.
ul_failure_timer
=
1
;
}
}
else
{
else
{
LOG_W
(
RRC
,
"Frame %d, Subframe %d: UE %x unknown
\n
"
,
frameP
,
subframeP
,
rntiP
);
LOG_W
(
RRC
,
"Frame %d, Subframe %d: UL failure: UE %x unknown
\n
"
,
frameP
,
subframeP
,
rntiP
);
rrc_mac_remove_ue
(
Mod_instP
,
rntiP
);
}
}
rrc_mac_remove_ue
(
Mod_instP
,
rntiP
);
}
}
void
mac_eNB_rrc_ul_in_sync
(
const
module_id_t
Mod_instP
,
void
mac_eNB_rrc_ul_in_sync
(
const
module_id_t
Mod_instP
,
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
ccba895b
...
@@ -3790,14 +3790,29 @@ rrc_eNB_decode_ccch(
...
@@ -3790,14 +3790,29 @@ rrc_eNB_decode_ccch(
//#warning "TODO: stmsi_exist: remove UE from MAC/PHY (how?)"
//#warning "TODO: stmsi_exist: remove UE from MAC/PHY (how?)"
LOG_I
(
RRC
,
" S-TMSI exists, ue_context_p %p
\n
"
,
ue_context_p
);
LOG_I
(
RRC
,
" S-TMSI exists, ue_context_p %p
\n
"
,
ue_context_p
);
stmsi_received
=
1
;
stmsi_received
=
1
;
/* replace rnti in the context */
/* for that, remove the context from the RB tree */
RB_REMOVE
(
rrc_ue_tree_s
,
&
eNB_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
/* and insert again, after changing rnti everywhere it has to be changed */
ue_context_p
->
ue_id_rnti
=
ctxt_pP
->
rnti
;
ue_context_p
->
ue_context
.
rnti
=
ctxt_pP
->
rnti
;
ue_context_p
->
ue_context
.
rnti
=
ctxt_pP
->
rnti
;
RB_INSERT
(
rrc_ue_tree_s
,
&
eNB_rrc_inst
[
ctxt_pP
->
module_id
].
rrc_ue_head
,
ue_context_p
);
/* reset timers */
ue_context_p
->
ue_context
.
ul_failure_timer
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer
=
0
;
// AssertFatal(0 == 1, "TODO: remove UE from MAC/PHY (how?)");
// AssertFatal(0 == 1, "TODO: remove UE from MAC/PHY (how?)");
// ue_context_p = NULL;
// ue_context_p = NULL;
}
else
{
}
else
{
ue_context_p
=
rrc_eNB_get_next_free_ue_context
(
ctxt_pP
,
NOT_A_RANDOM_UE_IDENTITY
);
ue_context_p
=
rrc_eNB_get_next_free_ue_context
(
ctxt_pP
,
NOT_A_RANDOM_UE_IDENTITY
);
if
(
ue_context_p
==
NULL
)
LOG_E
(
RRC
,
"%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
if
(
ue_context_p
!=
NULL
)
{
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
presence
=
TRUE
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
presence
=
TRUE
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
mme_code
=
mme_code
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
mme_code
=
mme_code
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
m_tmsi
=
m_tmsi
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
m_tmsi
=
m_tmsi
;
}
else
{
break
;
}
}
}
MSC_LOG_RX_MESSAGE
(
MSC_LOG_RX_MESSAGE
(
...
...
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