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
zzha zzha
OpenXG-RAN
Commits
87093e1b
Commit
87093e1b
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
f19fa8ad
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 @
87093e1b
...
...
@@ -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 @
87093e1b
...
...
@@ -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 @
f19fa8ad
/*
* 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 @
f19fa8ad
/*
* 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 @
87093e1b
...
...
@@ -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 @
87093e1b
...
...
@@ -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 @
87093e1b
...
...
@@ -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 @
87093e1b
...
...
@@ -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