create_tasks.c 4.39 KB
Newer Older
1
/*******************************************************************************
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
    OpenAirInterface 
    Copyright(c) 1999 - 2014 Eurecom

    OpenAirInterface is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.


    OpenAirInterface is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with OpenAirInterface.The full GNU General Public License is 
    included in this distribution in the file called "COPYING". If not, 
    see <http://www.gnu.org/licenses/>.

   Contact Information
   OpenAirInterface Admin: openair_admin@eurecom.fr
   OpenAirInterface Tech : openair_tech@eurecom.fr
   OpenAirInterface Dev  : openair4g-devel@eurecom.fr
  
ghaddab's avatar
ghaddab committed
26
   Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
27 28 29 30 31 32 33 34 35 36 37 38 39

 *******************************************************************************/

#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"
gauthier's avatar
gauthier committed
40
#     include "udp_eNB_task.h"
41
#     include "gtpv1u_eNB_task.h"
42
#   endif
43 44 45 46
#   if defined(ENABLE_RAL)
#     include "lteRALue.h"
#     include "lteRALenb.h"
#   endif
47 48 49 50 51 52
#   include "RRC/LITE/defs.h"
# endif
# include "enb_app.h"

int create_tasks(uint32_t enb_nb, uint32_t ue_nb)
{
53
    itti_wait_ready(1);
54 55 56 57 58 59 60 61
# ifdef OPENAIR2
    {
#   if defined(ENABLE_USE_MME)
        {
            if (enb_nb > 0)
            {
                if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0)
                {
62
                    LOG_E(SCTP, "Create task for SCTP failed\n");
63 64 65 66 67
                    return -1;
                }

                if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0)
                {
68
                    LOG_E(S1AP, "Create task for S1AP failed\n");
69 70
                    return -1;
                }
gauthier's avatar
gauthier committed
71 72 73

                if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0)
                {
74
                    LOG_E(UDP_, "Create task for UDP failed\n");
gauthier's avatar
gauthier committed
75 76
                    return -1;
                }
77 78 79

                if (itti_create_task (TASK_GTPV1_U, &gtpv1u_eNB_task, NULL) < 0)
                {
80
                    LOG_E(GTPU, "Create task for GTPV1U failed\n");
81 82
                    return -1;
                }
83 84 85 86 87 88
            }

            if (ue_nb > 0)
            {
                if (itti_create_task (TASK_NAS_UE, nas_ue_task, NULL) < 0)
                {
89
                    LOG_E(NAS, "Create task for NAS UE failed\n");
90 91 92 93 94 95 96 97 98 99
                    return -1;
                }
            }
        }
#   endif

        if (enb_nb > 0)
        {
            if (itti_create_task (TASK_RRC_ENB, rrc_enb_task, NULL) < 0)
            {
100
                LOG_E(RRC, "Create task for RRC eNB failed\n");
winckel's avatar
winckel committed
101
                return -1;
102
            }
103 104
#   if defined(ENABLE_RAL)
            if (itti_create_task (TASK_RAL_ENB, eRAL_task, NULL) < 0) {
105
                LOG_E(RAL_ENB, "Create task for RAL eNB failed\n");
106 107 108
                return -1;
            }
#   endif
109 110 111 112 113 114
        }

        if (ue_nb > 0)
        {
            if (itti_create_task (TASK_RRC_UE, rrc_ue_task, NULL) < 0)
            {
115
                LOG_E(RRC, "Create task for RRC UE failed\n");
winckel's avatar
winckel committed
116
                return -1;
117
            }
118 119
#   if defined(ENABLE_RAL)
            if (itti_create_task (TASK_RAL_UE, mRAL_task, NULL) < 0) {
120
                LOG_E(RAL_UE, "Create task for RAL UE failed\n");
121 122 123
                return -1;
            }
#   endif
124 125 126 127 128 129
        }
    }
# endif

    if (itti_create_task (TASK_L2L1, l2l1_task, NULL) < 0)
    {
130
        LOG_E(PDCP, "Create task for L2L1 failed\n");
131 132 133 134 135 136 137 138
        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)
        {
139
            LOG_E(ENB_APP, "Create task for eNB APP failed\n");
140 141 142
            return -1;
        }
    }
143 144
    itti_wait_ready(0);

145 146 147
    return 0;
}
#endif