enb_config.h 3.86 KB
Newer Older
1
/*******************************************************************************
gauthier's avatar
gauthier committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Eurecom OpenAirInterface 2
Copyright(c) 1999 - 2014 Eurecom

This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License,
version 2, as published by the Free Software Foundation.

This program is distributed in the hope 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
this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.

The full GNU General Public License is included in this distribution in
the file called "COPYING".

Contact Information
Openair Admin: openair_admin@eurecom.fr
Openair Tech : openair_tech@eurecom.fr
Forums       : http://forums.eurecom.fsr/openairinterface
Address      : EURECOM,
               Campus SophiaTech,
               450 Route des Chappes,
               CS 50193
               06904 Biot Sophia Antipolis cedex,
               FRANCE
31
*******************************************************************************/
gauthier's avatar
gauthier committed
32 33 34 35 36 37 38
/*
                                enb_config.h
                             -------------------
  AUTHOR  : Lionel GAUTHIER, Laurent Winckel
  COMPANY : EURECOM
  EMAIL   : Lionel.Gauthier@eurecom.fr
*/
39 40 41 42 43

#ifndef ENB_CONFIG_H_
#define ENB_CONFIG_H_

#include "commonDef.h"
44
#include "PHY/impl_defs_lte.h"
45 46
#include "s1ap_messages_types.h"

47 48 49
// Hard to find a defined value for max enb...
#define MAX_ENB 16

gauthier's avatar
gauthier committed
50 51 52 53 54 55 56 57
#define IPV4_STR_ADDR_TO_INT_NWBO(AdDr_StR,NwBo,MeSsAgE ) do {\
            struct in_addr inp;\
            if ( inet_aton(AdDr_StR, &inp ) < 0 ) {\
                AssertFatal (0, MeSsAgE);\
            } else {\
                NwBo = inp.s_addr;\
            }\
        } while (0);
58

59 60 61 62 63 64 65 66 67 68 69 70 71
typedef struct mme_ip_address_s {
    unsigned  ipv4:1;
    unsigned  ipv6:1;
    unsigned  active:1;
    char     *ipv4_address;
    char     *ipv6_address;
} mme_ip_address_t;

typedef struct Enb_properties_s {
    /* Unique eNB_id to identify the eNB within EPC.
     * For macro eNB ids this field should be 20 bits long.
     * For home eNB ids this field should be 28 bits long.
     */
72
    uint32_t            eNB_id;
73 74

    /* The type of the cell */
75
    enum cell_type_e    cell_type;
76 77 78 79 80

    /* Optional name for the cell
     * NOTE: the name can be NULL (i.e no name) and will be cropped to 150
     * characters.
     */
81
    char               *eNB_name;
82 83

    /* Tracking area code */
84
    uint16_t            tac;
85 86 87 88

    /* Mobile Country Code
     * Mobile Network Code
     */
89 90
    uint16_t            mcc;
    uint16_t            mnc;
91 92

    /* Default Paging DRX of the eNB as defined in TS 36.304 */
93 94 95 96
    paging_drx_t        default_drx;

    /* Physical parameters */
    lte_frame_type_t    frame_type;
97 98
    uint8_t             tdd_config;
    uint8_t             tdd_config_s;
99
    lte_prefix_type_t   prefix_type;
100
    int16_t             eutra_band;
101
    uint32_t            downlink_frequency;
102
    int32_t             uplink_frequency_offset;
103 104

    /* Nb of MME to connect to */
105
    uint8_t             nb_mme;
106
    /* List of MME to connect to */
107
    mme_ip_address_t    mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
gauthier's avatar
gauthier committed
108

109 110
    char               *enb_interface_name_for_S1U;
    uint32_t            enb_ipv4_address_for_S1U;
gauthier's avatar
gauthier committed
111

112 113
    char               *enb_interface_name_for_S1_MME;
    uint32_t            enb_ipv4_address_for_S1_MME;
gauthier's avatar
gauthier committed
114

115 116
} Enb_properties_t;

117 118 119 120 121 122 123 124
typedef struct Enb_properties_array_s {
    int                  number;
    Enb_properties_t    *properties[MAX_ENB];
} Enb_properties_array_t;

const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP);

const Enb_properties_array_t *enb_config_get(void);
125 126

#endif /* ENB_CONFIG_H_ */