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
180c23f1
Commit
180c23f1
authored
Sep 06, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Restructure create_tasks(): start tasks depending on RAN type, is read in RCconfig_RRC()
parent
b03b8698
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
84 additions
and
213 deletions
+84
-213
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+0
-3
openair2/ENB_APP/enb_app.c
openair2/ENB_APP/enb_app.c
+72
-64
targets/COMMON/create_tasks.c
targets/COMMON/create_tasks.c
+0
-103
targets/COMMON/create_tasks.h
targets/COMMON/create_tasks.h
+0
-33
targets/COMMON/create_tasks_ue.c
targets/COMMON/create_tasks_ue.c
+1
-2
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+9
-7
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+2
-0
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+0
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
180c23f1
...
...
@@ -2082,7 +2082,6 @@ add_executable(lte-softmodem
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem.c
${
OPENAIR2_DIR
}
/ENB_APP/NB_IoT_interface.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/multicast_link.c
...
...
@@ -2123,7 +2122,6 @@ add_executable(lte-softmodem-nos1
${
OPENAIR_TARGETS
}
/RT/USER/lte-softmodem.c
${
OPENAIR2_DIR
}
/ENB_APP/NB_IoT_interface.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/rb_config.c
...
...
@@ -2163,7 +2161,6 @@ add_executable(lte-uesoftmodem
${
OPENAIR_TARGETS
}
/RT/USER/lte-ru.c
${
OPENAIR_TARGETS
}
/RT/USER/rfsim.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/taus.c
${
OPENAIR_TARGETS
}
/COMMON/create_tasks_ue.c
${
OPENAIR_TARGETS
}
/ARCH/COMMON/common_lib.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/multicast_link.c
...
...
openair2/ENB_APP/enb_app.c
View file @
180c23f1
...
...
@@ -41,9 +41,12 @@
# include "intertask_interface.h"
# include "timer.h"
# if defined(ENABLE_USE_MME)
# define ENB_REGISTER_RETRY_DELAY 10
# include "s1ap_eNB.h"
# include "sctp_eNB_task.h"
# include "gtpv1u_eNB_task.h"
# include "nas_ue_task.h"
# include "udp_eNB_task.h"
# endif
#if defined(FLEXRAN_AGENT_SB_IF)
...
...
@@ -54,61 +57,66 @@
extern
unsigned
char
NB_eNB_INST
;
#endif
extern
int
emulate_rf
;
extern
RAN_CONTEXT_t
RC
;
extern
void
*
l2l1_task
(
void
*
arg
);
#if defined(ENABLE_ITTI)
#include "LAYER2/PROTO_AGENT/proto_agent.h"
//#include "../PROTO_AGENT/proto_agent.h"
/*------------------------------------------------------------------------------*/
# if defined(ENABLE_USE_MME)
# define ENB_REGISTER_RETRY_DELAY 10
# endif
/*------------------------------------------------------------------------------*/
/*
static void configure_phy(module_id_t enb_id, const Enb_properties_array_t* enb_properties)
static
void
create_remaining_tasks
(
module_id_t
enb_id
)
{
MessageDef *msg_p;
int CC_id;
msg_p = itti_alloc_new_message (TASK_ENB_APP, PHY_CONFIGURATION_REQ);
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
PHY_CONFIGURATION_REQ (msg_p).frame_type[CC_id] = enb_properties->properties[enb_id]->frame_type[CC_id];
PHY_CONFIGURATION_REQ (msg_p).prefix_type[CC_id] = enb_properties->properties[enb_id]->prefix_type[CC_id];
PHY_CONFIGURATION_REQ (msg_p).downlink_frequency[CC_id] = enb_properties->properties[enb_id]->downlink_frequency[CC_id];
PHY_CONFIGURATION_REQ (msg_p).uplink_frequency_offset[CC_id] = enb_properties->properties[enb_id]->uplink_frequency_offset[CC_id];
PHY_CONFIGURATION_REQ (msg_p).nb_antennas_tx[CC_id] = enb_properties->properties[enb_id]->nb_antennas_tx[CC_id];
PHY_CONFIGURATION_REQ (msg_p).nb_antennas_rx[CC_id] = enb_properties->properties[enb_id]->nb_antennas_rx[CC_id];
PHY_CONFIGURATION_REQ (msg_p).tx_gain[CC_id] = enb_properties->properties[enb_id]->tx_gain[CC_id];
PHY_CONFIGURATION_REQ (msg_p).rx_gain[CC_id] = enb_properties->properties[enb_id]->rx_gain[CC_id];
ngran_node_t
type
=
RC
.
rrc
[
enb_id
]
->
node_type
;
int
rc
;
itti_wait_ready
(
1
);
switch
(
type
)
{
case
ngran_eNB
:
case
ngran_ng_eNB
:
case
ngran_gNB
:
case
ngran_eNB_CU
:
case
ngran_ng_eNB_CU
:
case
ngran_gNB_CU
:
rc
=
itti_create_task
(
TASK_SCTP
,
sctp_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for SCTP failed
\n
"
);
rc
=
itti_create_task
(
TASK_S1AP
,
s1ap_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for S1AP failed
\n
"
);
if
(
!
emulate_rf
){
rc
=
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for UDP failed
\n
"
);
}
rc
=
itti_create_task
(
TASK_GTPV1_U
,
&
gtpv1u_eNB_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for GTPV1U failed
\n
"
);
break
;
default:
/* intentionally left blank */
break
;
}
itti_send_msg_to_task (TASK_PHY_ENB, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
switch
(
type
)
{
case
ngran_eNB
:
case
ngran_ng_eNB
:
case
ngran_gNB
:
case
ngran_eNB_DU
:
case
ngran_gNB_DU
:
rc
=
itti_create_task
(
TASK_L2L1
,
l2l1_task
,
NULL
);
AssertFatal
(
rc
>=
0
,
"Create task for L2L1 failed
\n
"
);
break
;
default:
/* intentioally left blank */
break
;
}
itti_wait_ready
(
0
);
}
*/
/*------------------------------------------------------------------------------*/
static
void
configure_rrc
(
uint32_t
enb_id
)
static
void
configure_rrc
(
uint32_t
enb_id
,
MessageDef
**
msg_p
)
{
MessageDef
*
msg_p
=
NULL
;
// int CC_id;
msg_p
=
itti_alloc_new_message
(
TASK_ENB_APP
,
RRC_CONFIGURATION_REQ
);
if
(
RC
.
rrc
[
enb_id
])
{
RCconfig_RRC
(
msg_p
,
enb_id
,
RC
.
rrc
[
enb_id
]);
LOG_I
(
ENB_APP
,
"Sending configuration message to RRC task
\n
"
);
itti_send_msg_to_task
(
TASK_RRC_ENB
,
ENB_MODULE_ID_TO_INSTANCE
(
enb_id
),
msg_p
);
}
else
AssertFatal
(
0
,
"RRC context for eNB %d not allocated
\n
"
,
enb_id
);
RC
.
rrc
[
enb_id
]
=
malloc
(
sizeof
(
eNB_RRC_INST
));
AssertFatal
(
RC
.
rrc
[
enb_id
],
"RRC context for eNB %d not allocated
\n
"
,
enb_id
);
LOG_I
(
ENB_APP
,
"%s() Creating RRC instance RC.rrc[%d]: %p
\n
"
,
__FUNCTION__
,
enb_id
,
RC
.
rrc
[
enb_id
]);
memset
((
void
*
)
RC
.
rrc
[
enb_id
],
0
,
sizeof
(
eNB_RRC_INST
));
*
msg_p
=
itti_alloc_new_message
(
TASK_ENB_APP
,
RRC_CONFIGURATION_REQ
);
RCconfig_RRC
(
*
msg_p
,
enb_id
,
RC
.
rrc
[
enb_id
]);
}
/*------------------------------------------------------------------------------*/
...
...
@@ -175,49 +183,49 @@ void *eNB_app_task(void *args_p)
MessageDef
*
msg_p
=
NULL
;
instance_t
instance
;
int
result
;
MessageDef
*
rrc_msg_p
[
enb_nb
];
/* for no gcc warnings */
(
void
)
instance
;
int
mac_has_f1
[
MAX_MAC_INST
];
memset
(
mac_has_f1
,
0
,
MAX_MAC_INST
*
sizeof
(
int
));
itti_mark_task_ready
(
TASK_ENB_APP
);
LOG_I
(
PHY
,
"%s() Task ready initialise structures
\n
"
,
__FUNCTION__
);
LOG_I
(
PHY
,
"%s() Task ready, initialise L1/MAC/RRC structures
\n
"
,
__FUNCTION__
);
RCconfig_L1
();
RCconfig_macrlc
(
mac_has_f1
);
LOG_I
(
PHY
,
"%s() RC.nb_L1_inst:%d
\n
"
,
__FUNCTION__
,
RC
.
nb_macrlc_inst
);
LOG_I
(
PHY
,
"%s() RC.nb_L1_inst:%d
\n
"
,
__FUNCTION__
,
RC
.
nb_L1_inst
);
if
(
RC
.
nb_L1_inst
>
0
)
AssertFatal
(
l1_north_init_eNB
()
==
0
,
"could not initialize L1 north interface
\n
"
);
LOG_I
(
PHY
,
"%s() RC.nb_macrlc_inst:%d
\n
"
,
__FUNCTION__
,
RC
.
nb_macrlc_inst
);
AssertFatal
(
enb_nb
<=
RC
.
nb_inst
,
"Number of eNB is greater than eNB defined in configuration file (%d/%d)!"
,
enb_nb
,
RC
.
nb_inst
);
if
(
RC
.
nb_L1_inst
>
0
)
AssertFatal
(
l1_north_init_eNB
()
==
0
,
"could not initialize L1 north interface
\n
"
);
if
(
RC
.
nb_macrlc_inst
>
0
)
AssertFatal
(
RC
.
nb_macrlc_inst
==
enb_id_end
-
enb_id_start
,
"Number of MACRLC instances %d != number of RRC instances %d
\n
"
,
RC
.
nb_macrlc_inst
,
enb_id_end
-
enb_id_start
);
LOG_I
(
ENB_APP
,
"Allocating eNB_RRC_INST for %d instances
\n
"
,
RC
.
nb_inst
);
RC
.
rrc
=
(
eNB_RRC_INST
**
)
malloc
(
RC
.
nb_inst
*
sizeof
(
eNB_RRC_INST
*
));
LOG_I
(
ENB_APP
,
"%s() RC.nb_inst:%d RC.rrc:%p
\n
"
,
__FUNCTION__
,
RC
.
nb_inst
,
RC
.
rrc
);
if
(
RC
.
nb_macrlc_inst
>
0
)
AssertFatal
(
RC
.
nb_macrlc_inst
==
enb_id_end
-
enb_id_start
,
"Number of MACRLC instances %d != number of RRC instances %d
\n
"
,
RC
.
nb_macrlc_inst
,
enb_id_end
-
enb_id_start
);
for
(
enb_id
=
enb_id_start
;
(
enb_id
<
enb_id_end
)
;
enb_id
++
)
{
RC
.
rrc
[
enb_id
]
=
(
eNB_RRC_INST
*
)
malloc
(
sizeof
(
eNB_RRC_INST
));
LOG_I
(
ENB_APP
,
"%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)
\n
"
,
__FUNCTION__
,
enb_id
,
RC
.
rrc
[
enb_id
],
enb_id
+
1
,
enb_id_end
);
memset
((
void
*
)
RC
.
rrc
[
enb_id
],
0
,
sizeof
(
eNB_RRC_INST
));
configure_rrc
(
enb_id
);
configure_rrc
(
enb_id
,
&
rrc_msg_p
[
enb_id
]);
if
(
RC
.
nb_macrlc_inst
>
0
&&
mac_has_f1
[
enb_id
]
==
1
)
RC
.
rrc
[
enb_id
]
->
node_type
=
ngran_eNB_DU
;
else
pdcp_layer_init
();
if
(
RC
.
nb_macrlc_inst
>
0
&&
mac_has_f1
[
enb_id
]
==
1
)
RC
.
rrc
[
enb_id
]
->
node_type
=
ngran_eNB_DU
;
else
pdcp_layer_init
();
}
create_remaining_tasks
(
0
);
for
(
enb_id
=
enb_id_start
;
(
enb_id
<
enb_id_end
)
;
enb_id
++
)
{
LOG_I
(
ENB_APP
,
"Sending configuration message to RRC task
\n
"
);
itti_send_msg_to_task
(
TASK_RRC_ENB
,
ENB_MODULE_ID_TO_INSTANCE
(
enb_id
),
rrc_msg_p
[
enb_id
]);
}
# if defined(ENABLE_USE_MME)
/* Try to register each eNB */
...
...
targets/COMMON/create_tasks.c
deleted
100644 → 0
View file @
b03b8698
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#if defined(ENABLE_ITTI)
# include "intertask_interface.h"
# include "create_tasks.h"
# include "log.h"
# ifdef OPENAIR2
# if defined(ENABLE_USE_MME)
# include "sctp_eNB_task.h"
# include "s1ap_eNB.h"
# include "nas_ue_task.h"
# include "udp_eNB_task.h"
# include "gtpv1u_eNB_task.h"
# endif
# if ENABLE_RAL
# include "lteRALue.h"
# include "lteRALenb.h"
# endif
# include "RRC/LTE/rrc_defs.h"
# endif
# include "enb_app.h"
extern
int
emulate_rf
;
int
create_tasks
(
uint32_t
enb_nb
)
{
LOG_D
(
ENB_APP
,
"%s(enb_nb:%d
\n
"
,
__FUNCTION__
,
enb_nb
);
itti_wait_ready
(
1
);
if
(
itti_create_task
(
TASK_L2L1
,
l2l1_task
,
NULL
)
<
0
)
{
LOG_E
(
PDCP
,
"Create task for L2L1 failed
\n
"
);
return
-
1
;
}
if
(
enb_nb
>
0
)
{
/* Last task to create, others task must be ready before its start */
if
(
itti_create_task
(
TASK_ENB_APP
,
eNB_app_task
,
NULL
)
<
0
)
{
LOG_E
(
ENB_APP
,
"Create task for eNB APP failed
\n
"
);
return
-
1
;
}
}
# if defined(ENABLE_USE_MME)
if
(
enb_nb
>
0
)
{
if
(
itti_create_task
(
TASK_SCTP
,
sctp_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
SCTP
,
"Create task for SCTP failed
\n
"
);
return
-
1
;
}
if
(
itti_create_task
(
TASK_S1AP
,
s1ap_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
S1AP
,
"Create task for S1AP failed
\n
"
);
return
-
1
;
}
if
(
!
emulate_rf
){
if
(
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
UDP_
,
"Create task for UDP failed
\n
"
);
return
-
1
;
}
}
if
(
itti_create_task
(
TASK_GTPV1_U
,
&
gtpv1u_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
GTPU
,
"Create task for GTPV1U failed
\n
"
);
return
-
1
;
}
}
# endif
if
(
enb_nb
>
0
)
{
LOG_I
(
RRC
,
"Creating RRC eNB Task
\n
"
);
if
(
itti_create_task
(
TASK_RRC_ENB
,
rrc_enb_task
,
NULL
)
<
0
)
{
LOG_E
(
RRC
,
"Create task for RRC eNB failed
\n
"
);
return
-
1
;
}
}
itti_wait_ready
(
0
);
return
0
;
}
#endif
targets/COMMON/create_tasks.h
deleted
100644 → 0
View file @
b03b8698
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef CREATE_TASKS_H_
#define CREATE_TASKS_H_
#if defined(ENABLE_ITTI)
/* External declaration of L2L1 task that depend on the target */
extern
void
*
l2l1_task
(
void
*
arg
);
int
create_tasks
(
uint32_t
enb_nb
);
int
create_tasks_ue
(
uint32_t
ue_nb
);
#endif
#endif
/* CREATE_TASKS_H_ */
targets/COMMON/create_tasks_ue.c
View file @
180c23f1
...
...
@@ -21,7 +21,6 @@
#if defined(ENABLE_ITTI)
# include "intertask_interface.h"
# include "create_tasks.h"
# include "log.h"
# ifdef OPENAIR2
...
...
@@ -77,4 +76,4 @@ int create_tasks_ue(uint32_t ue_nb)
return
0
;
}
#endif
\ No newline at end of file
#endif
targets/RT/USER/lte-softmodem.c
View file @
180c23f1
...
...
@@ -84,7 +84,6 @@ unsigned short config_frames[4] = {2,9,11,13};
#if defined(ENABLE_ITTI)
#include "intertask_interface_init.h"
#include "create_tasks.h"
#endif
#include "PHY/INIT/phy_init.h"
...
...
@@ -1064,13 +1063,16 @@ int main( int argc, char **argv )
int
have_rrc
=
0
;
if
(
RC
.
nb_inst
>
0
)
{
// don't create if node doesn't connect to RRC/S1/F1/GTP
if
(
create_tasks
(
1
)
<
0
)
{
printf
(
"cannot create ITTI tasks
\n
"
);
exit
(
-
1
);
// need a softer mode
LOG_I
(
ENB_APP
,
"Creating ENB_APP eNB Task
\n
"
);
if
(
itti_create_task
(
TASK_ENB_APP
,
eNB_app_task
,
NULL
)
<
0
)
{
LOG_E
(
ENB_APP
,
"Create task for eNB APP failed
\n
"
);
return
-
1
;
}
LOG_I
(
RRC
,
"Creating RRC eNB Task
\n
"
);
if
(
itti_create_task
(
TASK_RRC_ENB
,
rrc_enb_task
,
NULL
)
<
0
)
{
LOG_E
(
RRC
,
"Create task for RRC eNB failed
\n
"
);
return
-
1
;
}
printf
(
"ITTI tasks created
\n
"
);
have_rrc
=
1
;
}
else
{
...
...
targets/RT/USER/lte-softmodem.h
View file @
180c23f1
...
...
@@ -289,4 +289,6 @@ extern PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
extern
void
*
eNB_app_task
(
void
*
args
);
#endif
targets/RT/USER/lte-uesoftmodem.c
View file @
180c23f1
...
...
@@ -85,7 +85,6 @@
#if defined(ENABLE_ITTI)
#include "intertask_interface_init.h"
#include "create_tasks.h"
#endif
#include "system.h"
...
...
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