defs.h 16.8 KB
Newer Older
1
/*******************************************************************************
2 3
    OpenAirInterface
    Copyright(c) 1999 - 2014 Eurecom
4

5 6 7 8
    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.
9 10


11 12 13 14
    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.
15

16 17 18 19
    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/>.
20 21

  Contact Information
22 23 24 25
  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

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


/*! \file defs.h
32 33 34
* \brief RRC struct definitions and function prototypes
* \author Navid Nikaein and Raymond Knopp
* \date 2010 - 2014
35 36
* \version 1.0
* \company Eurecom
37
* \email: navid.nikaein@eurecom.fr, raymond.knopp@eurecom.fr 
38 39 40 41 42 43 44 45 46 47 48
*/

#ifndef __OPENAIR_RRC_DEFS_H__
#define __OPENAIR_RRC_DEFS_H__

#ifdef USER_MODE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif

winckel's avatar
winckel committed
49
#include "rrc_types.h"
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
#include "PHY/defs.h"
#include "COMMON/platform_constants.h"

#include "COMMON/mac_rrc_primitives.h"
#include "LAYER2/MAC/defs.h"

//#include "COMMON/openair_defs.h"
#ifndef USER_MODE
#include <rtai.h>
#endif

#include "SystemInformationBlockType1.h"
#include "SystemInformation.h"
#include "RRCConnectionReconfiguration.h"
#include "RRCConnectionReconfigurationComplete.h"
#include "RRCConnectionSetup.h"
#include "RRCConnectionSetupComplete.h"
#include "RRCConnectionRequest.h"
68
#include "RRCConnectionReestablishmentRequest.h"
69 70 71 72 73
#include "BCCH-DL-SCH-Message.h"
#include "BCCH-BCH-Message.h"
#ifdef Rel10
#include "MCCH-Message.h"
#include "MBSFNAreaConfiguration-r9.h"
74
#include "SCellToAddMod-r10.h"
75
#endif
76 77
#include "AS-Config.h"
#include "AS-Context.h"
78 79 80
#include "UE-EUTRA-Capability.h"
#include "MeasResults.h"

81 82 83 84 85 86 87 88 89 90 91 92 93 94
// This corrects something generated by asn1c which is different between Rel8 and Rel10
#ifndef Rel10
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member SystemInformation_r8_IEs_sib_TypeAndInfo_Member
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib3
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib4
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib5
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib6
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib7
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib8
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib9
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib10
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib11
#endif
95 96 97 98 99 100
/*
#ifdef Rel10
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib12_v920
#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib13_v920
#endif 
*/
101 102 103 104 105 106 107
//#include "L3_rrc_defs.h"
#ifndef NO_RRM
#include "L3_rrc_interface.h"
#include "rrc_rrm_msg.h"
#include "rrc_rrm_interface.h"
#endif

108 109 110 111
#if defined(ENABLE_ITTI)
# include "intertask_interface.h"
#endif

112 113 114 115
#if defined(ENABLE_USE_MME)
# include "commonDef.h"
#endif

gauthier's avatar
gauthier committed
116 117 118 119
#if defined(ENABLE_RAL)
# include "collection/hashtable/obj_hashtable.h"
#endif

120 121 122 123 124
/** @defgroup _rrc_impl_ RRC Layer Reference Implementation
 * @ingroup _ref_implementation_
 * @{
 */

gauthier's avatar
gauthier committed
125 126 127 128 129 130 131
#if defined(ENABLE_RAL)
typedef struct rrc_ral_threshold_key_s {
    ral_link_param_type_t   link_param_type;
    ral_threshold_t         threshold;
}rrc_ral_threshold_key_t;
#endif

132 133
//#define NUM_PRECONFIGURED_LCHAN (NB_CH_CX*2)  //BCCH, CCCH

134 135
#define UE_MODULE_INVALID ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!!
#define UE_INDEX_INVALID  ((module_id_t) ~0) // FIXME attention! depends on type uint8_t!!! used to be -1
136

winckel's avatar
winckel committed
137
typedef enum UE_STATE_e {
winckel's avatar
winckel committed
138 139
  RRC_INACTIVE=0,
  RRC_IDLE,
140 141
  RRC_SI_RECEIVED,
  RRC_CONNECTED,
142 143
  RRC_RECONFIGURED,
  RRC_HO_EXECUTION
144 145
} UE_STATE_t;

winckel's avatar
winckel committed
146
typedef enum HO_STATE_e {
147 148 149 150 151 152 153
  HO_IDLE=0,
  HO_MEASURMENT,
  HO_PREPARE,
  HO_CMD, // initiated by the src eNB
  HO_COMPLETE // initiated by the target eNB
} HO_STATE_t;

154 155 156 157 158 159
//#define NUMBER_OF_UE_MAX MAX_MOBILES_PER_RG
#define RRM_FREE(p)       if ( (p) != NULL) { free(p) ; p=NULL ; }
#define RRM_MALLOC(t,n)   (t *) malloc16( sizeof(t) * n ) 
#define RRM_CALLOC(t,n)   (t *) malloc16( sizeof(t) * n) 
#define RRM_CALLOC2(t,s)  (t *) malloc16( s ) 

160 161 162
#define MAX_MEAS_OBJ 6
#define MAX_MEAS_CONFIG 6
#define MAX_MEAS_ID 6
163 164

#define PAYLOAD_SIZE_MAX 1024
165
#define RRC_BUF_SIZE 255
166 167 168 169 170 171
#define UNDEF_SECURITY_MODE 0xff
#define NO_SECURITY_MODE 0x33

#define CBA_OFFSET        0xfff4
// #define NUM_MAX_CBA_GROUP 4 // in the platform_constants

winckel's avatar
winckel committed
172
typedef struct UE_RRC_INFO_s {
173
  UE_STATE_t State;
174 175 176
  uint8_t SIB1Status;
  uint8_t SIB1systemInfoValueTag;
  uint8_t SIStatus;
177
#ifdef Rel10
178
  uint8_t MCCHStatus[8]; // MAX_MBSFN_AREA
179
#endif
180 181
  uint8_t SIwindowsize;
  uint8_t handoverTarget;
182
  HO_STATE_t ho_state; 
183
  uint16_t SIperiod;
184
  unsigned short UE_index;
185 186 187 188 189 190 191 192
  uint32_t T300_active;
  uint32_t T300_cnt;
  uint32_t T304_active;
  uint32_t T304_cnt;
  uint32_t T310_active;
  uint32_t T310_cnt;
  uint32_t N310_cnt;
  uint32_t N311_cnt;
winckel's avatar
winckel committed
193
} __attribute__ ((__packed__)) UE_RRC_INFO;
194

195 196 197 198
typedef struct UE_S_TMSI_s {
    uint8_t  presence;
    uint8_t  mme_code;
    uint32_t m_tmsi;
winckel's avatar
winckel committed
199
} __attribute__ ((__packed__)) UE_S_TMSI;
200

201
#if defined(ENABLE_ITTI)
winckel's avatar
winckel committed
202
typedef enum e_rab_satus_e {
203 204 205 206 207
    E_RAB_STATUS_NEW,
    E_RAB_STATUS_DONE,
    E_RAB_STATUS_FAILED,
} e_rab_status_t;

208 209 210
typedef struct e_rab_param_s {
    e_rab_t param;
    uint8_t status;
winckel's avatar
winckel committed
211
} __attribute__ ((__packed__)) e_rab_param_t;
212 213
#endif

winckel's avatar
winckel committed
214
typedef struct eNB_RRC_UE_INFO_s {
215
    uint8_t Status;
216 217 218 219 220 221

#if defined(ENABLE_ITTI)
    /* Information from UE RRC ConnectionRequest */
    UE_S_TMSI Initialue_identity_s_TMSI;
    EstablishmentCause_t establishment_cause;

222 223 224 225 226
  /* Information from UE RRC ConnectionReestablishmentRequest */
    
    ReestablishmentCause_t reestablishment_cause;


227 228 229
    /* UE id for initial connection to S1AP */
    uint16_t ue_initial_id;

230
    /* Information from S1AP initial_context_setup_req */
231
    uint32_t eNB_ue_s1ap_id :24;
232 233 234

    security_capabilities_t security_capabilities;

235 236 237
    /* Number of e_rab to be setup in the list */
    uint8_t nb_of_e_rabs;
    /* list of e_rab to be setup by RRC layers */
238
    e_rab_param_t e_rab[S1AP_MAX_E_RAB];
239 240 241 242 243 244

    // LG: For GTPV1 TUNNELS
    uint32_t                enb_gtp_teid[S1AP_MAX_E_RAB];
    transport_layer_addr_t  enb_gtp_addrs[S1AP_MAX_E_RAB];
    rb_id_t                 enb_gtp_ebi[S1AP_MAX_E_RAB];

245
#endif
winckel's avatar
winckel committed
246
} __attribute__ ((__packed__)) eNB_RRC_UE_INFO;
247

winckel's avatar
winckel committed
248
typedef struct eNB_RRC_INFO_s {
249 250 251 252
  /* Number of UE handle by the eNB */
  uint8_t Nb_ue;

  /* UE list for UE index allocation */
253
  uint64_t UE_list[NUMBER_OF_UE_MAX];
254 255 256

  /* Information on UE */
  eNB_RRC_UE_INFO UE[NUMBER_OF_UE_MAX];
winckel's avatar
winckel committed
257
} __attribute__ ((__packed__)) eNB_RRC_INFO;
258

winckel's avatar
winckel committed
259
typedef struct RRC_INFO_s {
260 261 262 263 264
  int Status;
union{
	UE_RRC_INFO UE_info;
	eNB_RRC_INFO CH_info;
 }Info;
winckel's avatar
winckel committed
265
} RRC_INFO;
266

267
/* Intermediate structure for Hanodver management. Associated per-UE in eNB_RRC_INST */
winckel's avatar
winckel committed
268
typedef struct HANDOVER_INFO_s {
269 270 271 272 273 274
  uint8_t ho_prepare;
  uint8_t ho_complete;
  uint8_t modid_s; //module_idP of serving cell
  uint8_t modid_t; //module_idP of target cell
  uint8_t ueid_s; //UE index in serving cell
  uint8_t ueid_t; //UE index in target cell
275 276 277 278
  AS_Config_t as_config; /* these two parameters are taken from 36.331 section 10.2.2: HandoverPreparationInformation-r8-IEs */
  AS_Context_t as_context; /* They are mandatory for HO */
  uint8_t buf[RRC_BUF_SIZE];	/* ASN.1 encoded handoverCommandMessage */
  int size;		/* size of above message in bytes */
winckel's avatar
winckel committed
279
} HANDOVER_INFO;
280 281 282 283 284 285 286 287 288 289

#define RRC_HEADER_SIZE_MAX 64
#define RRC_BUFFER_SIZE_MAX 1024
typedef struct{
  char Payload[RRC_BUFFER_SIZE_MAX];
  char Header[RRC_HEADER_SIZE_MAX];  
  char payload_size;
}RRC_BUFFER; 
#define RRC_BUFFER_SIZE sizeof(RRC_BUFFER)

winckel's avatar
winckel committed
290
typedef struct RB_INFO_s {
291
  uint16_t Rb_id;  //=Lchan_id
292 293
  LCHAN_DESC Lchan_desc[2];
  MAC_MEAS_REQ_ENTRY *Meas_entry;
winckel's avatar
winckel committed
294
} RB_INFO;
295

winckel's avatar
winckel committed
296
typedef struct SRB_INFO_s {
297
  uint16_t Srb_id;  //=Lchan_id
298 299 300 301
  RRC_BUFFER Rx_buffer; 
  RRC_BUFFER Tx_buffer; 
  LCHAN_DESC Lchan_desc[2];
  unsigned int Trans_id;
302
  uint8_t Active;
winckel's avatar
winckel committed
303
} SRB_INFO;
304

winckel's avatar
winckel committed
305
typedef struct RB_INFO_TABLE_ENTRY_s {
306
  RB_INFO Rb_info;
307 308 309
  uint8_t Active;
  uint32_t Next_check_frame;
  uint8_t Status;
winckel's avatar
winckel committed
310
} RB_INFO_TABLE_ENTRY;
311

312
typedef struct SRB_INFO_TABLE_ENTRY_s {
313
  SRB_INFO Srb_info;
314 315 316
  uint8_t Active;
  uint8_t Status;
  uint32_t Next_check_frame;
317 318
}SRB_INFO_TABLE_ENTRY;

winckel's avatar
winckel committed
319
typedef struct MEAS_REPORT_LIST_s {
320 321
  MeasId_t measId;
  //CellsTriggeredList	cellsTriggeredList;//OPTIONAL
322
  uint32_t numberOfReportsSent;
323
} MEAS_REPORT_LIST;
324

winckel's avatar
winckel committed
325
typedef struct HANDOVER_INFO_UE_s {
326
  PhysCellId_t targetCellId;
327
  uint8_t measFlag;
winckel's avatar
winckel committed
328
} HANDOVER_INFO_UE;
329

winckel's avatar
winckel committed
330
typedef struct eNB_RRC_INST_s {
331 332 333 334 335
  uint8_t                           *SIB1;
  uint8_t                           sizeof_SIB1;
  uint8_t                           *SIB23;
  uint8_t                           sizeof_SIB23;
  uint16_t                          physCellId;
336 337 338
#ifdef Rel10
  SCellToAddMod_r10_t              sCell_config[NUMBER_OF_UE_MAX][2];
#endif
339 340 341 342 343 344 345 346 347 348
  BCCH_BCH_Message_t                mib;
  BCCH_DL_SCH_Message_t             siblock1;
  BCCH_DL_SCH_Message_t             systemInformation;
  //  SystemInformation_t               systemInformation;
  SystemInformationBlockType1_t     *sib1;
  SystemInformationBlockType2_t     *sib2;
  SystemInformationBlockType3_t     *sib3;
#ifdef Rel10
  SystemInformationBlockType13_r9_t *sib13;
  uint8_t                           MBMS_flag;
349 350 351
  uint8_t                           num_mbsfn_sync_area;
  uint8_t                           **MCCH_MESSAGE; //  MAX_MBSFN_AREA
  uint8_t                           sizeof_MCCH_MESSAGE[8];// MAX_MBSFN_AREA
352 353
  MCCH_Message_t            mcch;
  MBSFNAreaConfiguration_r9_t       *mcch_message;  
354
  SRB_INFO                          MCCH_MESS[8];// MAX_MBSFN_AREA
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375
#endif 
#ifdef CBA
  uint8_t                        num_active_cba_groups;
  uint16_t                       cba_rnti[NUM_MAX_CBA_GROUP];
#endif
  SRB_ToAddModList_t                *SRB_configList[NUMBER_OF_UE_MAX];
  DRB_ToAddModList_t                *DRB_configList[NUMBER_OF_UE_MAX];
  uint8_t                           DRB_active[NUMBER_OF_UE_MAX][8];
  struct PhysicalConfigDedicated    *physicalConfigDedicated[NUMBER_OF_UE_MAX];
  struct SPS_Config                 *sps_Config[NUMBER_OF_UE_MAX];
  MeasObjectToAddMod_t              *MeasObj[NUMBER_OF_UE_MAX][MAX_MEAS_OBJ];
  struct ReportConfigToAddMod       *ReportConfig[NUMBER_OF_UE_MAX][MAX_MEAS_CONFIG];
  struct QuantityConfig             *QuantityConfig[NUMBER_OF_UE_MAX];
  struct MeasIdToAddMod             *MeasId[NUMBER_OF_UE_MAX][MAX_MEAS_ID];
  MAC_MainConfig_t                  *mac_MainConfig[NUMBER_OF_UE_MAX];
  MeasGapConfig_t                   *measGapConfig[NUMBER_OF_UE_MAX];
  eNB_RRC_INFO                      Info;
  SRB_INFO                          SI;
  SRB_INFO                          Srb0;
  SRB_INFO_TABLE_ENTRY              Srb1[NUMBER_OF_UE_MAX+1];
  SRB_INFO_TABLE_ENTRY              Srb2[NUMBER_OF_UE_MAX+1];
376 377
  MeasConfig_t                      *measConfig[NUMBER_OF_UE_MAX];
  HANDOVER_INFO                     *handover_info[NUMBER_OF_UE_MAX];
378
  uint8_t                           HO_flag;
gauthier's avatar
gauthier committed
379 380 381
#if defined(ENABLE_RAL)
  obj_hash_table_t                  *ral_meas_thresholds;
#endif
382 383 384 385 386 387 388
#if defined(ENABLE_SECURITY)
  /* KeNB as derived from KASME received from EPC */
  uint8_t kenb[NUMBER_OF_UE_MAX][32];
#endif
  /* Used integrity/ciphering algorithms */
  e_SecurityAlgorithmConfig__cipheringAlgorithm     ciphering_algorithm[NUMBER_OF_UE_MAX];
  e_SecurityAlgorithmConfig__integrityProtAlgorithm integrity_algorithm[NUMBER_OF_UE_MAX];
389 390 391 392 393 394 395 396 397 398
#ifdef LOCALIZATION
  /// localization type, 0: power based, 1: time based
  uint8_t loc_type;
  /// epoch timestamp in millisecond, RRC
  int32_t reference_timestamp_ms;
  /// aggregate physical states every n millisecond
  int32_t aggregation_period_ms; 
  /// localization list for aggregated measurements from PHY
  struct list loc_list;
#endif 
399 400 401
} eNB_RRC_INST;

#define MAX_UE_CAPABILITY_SIZE 255
winckel's avatar
winckel committed
402
typedef struct OAI_UECapability_s {
403 404 405 406 407
  uint8_t sdu[MAX_UE_CAPABILITY_SIZE];
  uint8_t sdu_size;
  UE_EUTRA_Capability_t *UE_EUTRA_Capability;
} OAI_UECapability_t;

winckel's avatar
winckel committed
408
typedef struct UE_RRC_INST_s {
winckel's avatar
winckel committed
409 410
  Rrc_State_t     RrcState;
  Rrc_Sub_State_t RrcSubState;
411
# if defined(ENABLE_USE_MME)
winckel's avatar
winckel committed
412 413 414
  plmn_t          plmnID;
  Byte_t          rat;
  as_nas_info_t   initialNasMsg;
415
# endif
416
  OAI_UECapability_t *UECap;
417 418 419 420 421 422
  uint8_t *UECapability;
  uint8_t UECapability_size;
  UE_RRC_INFO Info[NB_SIG_CNX_UE];
  SRB_INFO Srb0[NB_SIG_CNX_UE];
  SRB_INFO_TABLE_ENTRY Srb1[NB_CNX_UE];
  SRB_INFO_TABLE_ENTRY Srb2[NB_CNX_UE];
423
  HANDOVER_INFO_UE HandoverInfoUe;
424 425 426 427 428 429
  uint8_t *SIB1[NB_CNX_UE];
  uint8_t sizeof_SIB1[NB_CNX_UE];
  uint8_t *SI[NB_CNX_UE];
  uint8_t sizeof_SI[NB_CNX_UE];
  uint8_t SIB1Status[NB_CNX_UE];
  uint8_t SIStatus[NB_CNX_UE];
430 431 432 433 434 435 436 437 438 439 440 441
  SystemInformationBlockType1_t *sib1[NB_CNX_UE];
  SystemInformation_t *si[NB_CNX_UE][8];
  SystemInformationBlockType2_t *sib2[NB_CNX_UE];
  SystemInformationBlockType3_t *sib3[NB_CNX_UE];
  SystemInformationBlockType4_t *sib4[NB_CNX_UE];
  SystemInformationBlockType5_t *sib5[NB_CNX_UE];
  SystemInformationBlockType6_t *sib6[NB_CNX_UE];
  SystemInformationBlockType7_t *sib7[NB_CNX_UE];
  SystemInformationBlockType8_t *sib8[NB_CNX_UE];
  SystemInformationBlockType9_t *sib9[NB_CNX_UE];
  SystemInformationBlockType10_t *sib10[NB_CNX_UE];
  SystemInformationBlockType11_t *sib11[NB_CNX_UE];
442

443
#ifdef Rel10
444
  uint8_t                           MBMS_flag;
445 446 447
  uint8_t *MCCH_MESSAGE[NB_CNX_UE];
  uint8_t sizeof_MCCH_MESSAGE[NB_CNX_UE];
  uint8_t MCCH_MESSAGEStatus[NB_CNX_UE];
448 449 450 451 452 453 454 455
  MBSFNAreaConfiguration_r9_t       *mcch_message[NB_CNX_UE];  
  SystemInformationBlockType12_r9_t *sib12[NB_CNX_UE];
  SystemInformationBlockType13_r9_t *sib13[NB_CNX_UE];
#endif 
#ifdef CBA
  uint8_t                         num_active_cba_groups;
  uint16_t                        cba_rnti[NUM_MAX_CBA_GROUP];
#endif
456
  uint8_t                         num_srb;
457 458 459 460 461 462 463
  struct SRB_ToAddMod             *SRB1_config[NB_CNX_UE];
  struct SRB_ToAddMod             *SRB2_config[NB_CNX_UE];
  struct DRB_ToAddMod             *DRB_config[NB_CNX_UE][8];
  MeasObjectToAddMod_t            *MeasObj[NB_CNX_UE][MAX_MEAS_OBJ];
  struct ReportConfigToAddMod     *ReportConfig[NB_CNX_UE][MAX_MEAS_CONFIG];
  struct QuantityConfig           *QuantityConfig[NB_CNX_UE];
  struct MeasIdToAddMod           *MeasId[NB_CNX_UE][MAX_MEAS_ID];
464
  MEAS_REPORT_LIST		  *measReportList[NB_CNX_UE][MAX_MEAS_ID];
465
  uint32_t				   measTimer[NB_CNX_UE][MAX_MEAS_ID][6]; // 6 neighboring cells
466
  RSRP_Range_t                    s_measure;
467
  struct MeasConfig__speedStatePars *speedStatePars;
468 469 470 471
  struct PhysicalConfigDedicated  *physicalConfigDedicated[NB_CNX_UE];
  struct SPS_Config               *sps_Config[NB_CNX_UE];
  MAC_MainConfig_t                *mac_MainConfig[NB_CNX_UE];
  MeasGapConfig_t                 *measGapConfig[NB_CNX_UE];
472 473 474 475 476 477
  double                          filter_coeff_rsrp; // [7] ???
  double                          filter_coeff_rsrq; // [7] ??? 
  float                           rsrp_db[7];
  float                           rsrq_db[7];
  float                           rsrp_db_filtered[7];
  float                           rsrq_db_filtered[7];
gauthier's avatar
gauthier committed
478 479
#if defined(ENABLE_RAL)
  obj_hash_table_t               *ral_meas_thresholds;
480
  ral_transaction_id_t            scan_transaction_id;
gauthier's avatar
gauthier committed
481
#endif
482 483 484 485 486 487 488 489
#if defined(ENABLE_SECURITY)
  /* KeNB as computed from parameters within USIM card */
  uint8_t kenb[32];
#endif

  /* Used integrity/ciphering algorithms */
  e_SecurityAlgorithmConfig__cipheringAlgorithm     ciphering_algorithm;
  e_SecurityAlgorithmConfig__integrityProtAlgorithm integrity_algorithm;
winckel's avatar
winckel committed
490
} UE_RRC_INST;
491

492
#include "proto.h"
winckel's avatar
winckel committed
493

494 495
#endif
/** @ */