git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4166 818b1a75-f10b-46b9-bf7c-635c3b92a50f
180 lines
6.1 KiB
C
Executable File
180 lines
6.1 KiB
C
Executable File
/***************************************************************************
|
|
rrc_ue_init.c
|
|
-------------------
|
|
copyright : (C) 2008, 2010 by Eurecom
|
|
created by : Michelle.Wetterwald@eurecom.fr
|
|
**************************************************************************
|
|
Initialization of RRC protocol entity for User Equipment
|
|
***************************************************************************/
|
|
/********************
|
|
// OpenAir includes
|
|
********************/
|
|
#include "LAYER2/MAC/extern.h"
|
|
#include "COMMON/openair_defs.h"
|
|
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
|
|
#include "LAYER2/RLC/rlc.h"
|
|
#include "COMMON/mac_rrc_primitives.h"
|
|
|
|
//#include "SIMULATION/simulation_defs.h"
|
|
//extern EMULATION_VARS *Emul_vars;
|
|
//extern CH_MAC_INST *CH_mac_inst;
|
|
//extern UE_MAC_INST *UE_mac_inst;
|
|
|
|
/********************
|
|
// RRC includes
|
|
********************/
|
|
#include "rrc_ue_vars.h"
|
|
#include "as_configuration.h"
|
|
//#include "rrc_L2_proto.h"
|
|
//-----------------------------------------------------------------------------
|
|
#include "rrc_proto_int.h"
|
|
#include "rrc_proto_fsm.h"
|
|
//#include "rrc_proto_intf.h"
|
|
#include "rrc_proto_bch.h"
|
|
#include "rrc_proto_mbms.h"
|
|
//-----------------------------------------------------------------------------
|
|
|
|
int *pt_nas_ue_irq;
|
|
u8 nas_IMEI[14];
|
|
#ifndef USER_MODE
|
|
EXPORT_SYMBOL(pt_nas_ue_irq);
|
|
EXPORT_SYMBOL(nas_IMEI);
|
|
#endif
|
|
|
|
LCHAN_DESC BCCH_LCHAN_DESC,CCCH_LCHAN_DESC, DCCH_LCHAN_DESC, DTCH_DL_LCHAN_DESC,DTCH_UL_LCHAN_DESC;
|
|
rlc_info_t Rlc_info_um;
|
|
rlc_info_t Rlc_info_am_config;
|
|
|
|
//-------------------------------------------------------------------
|
|
void rrc_ue_get_mobile_id (void){
|
|
//-------------------------------------------------------------------
|
|
// TEMP : This function sets the mobile ID - 1st version, hard coded
|
|
// Later, will be retrieved from configuration to allow sevearl mobile terminals
|
|
|
|
rrc_ue_mobileId = 0;
|
|
//#ifdef OAI_EMU
|
|
#ifdef RRC_OAI_EMU
|
|
rrc_ue_mobileId = rrc_ethernet_id - 1;
|
|
msg ("[RRC CELL]rrc_ue_get_mobile_id - EMULATION - UE_ID initialized to: %d\n", rrc_ue_mobileId);
|
|
#endif
|
|
#ifndef RRC_OAI_EMU
|
|
msg ("[RRC CELL]rrc_ue_get_mobile_id - UE_ID not initialized. Use default value: %d\n", rrc_ue_mobileId);
|
|
#endif
|
|
}
|
|
//-------------------------------------------------------------------
|
|
int rrc_ue_get_initial_id (void){
|
|
//-------------------------------------------------------------------
|
|
int UE_Id = 99;
|
|
|
|
// #ifdef USER_MODE
|
|
// int uni;
|
|
//
|
|
// UE_Id = rrc_ue_mobileId;
|
|
//
|
|
// uni = uniform ();
|
|
// protocol_ms->rrc.IMEI[0] = (uni & 0x0F000000) >> 24;
|
|
// protocol_ms->rrc.IMEI[1] = (uni & 0x000F0000) >> 16;
|
|
// protocol_ms->rrc.IMEI[2] = (uni & 0x00000F00) >> 8;
|
|
// protocol_ms->rrc.IMEI[3] = uni & 0x0000000F;
|
|
// uni = uniform ();
|
|
// protocol_ms->rrc.IMEI[4] = (uni & 0x0F000000) >> 24;
|
|
// protocol_ms->rrc.IMEI[5] = (uni & 0x000F0000) >> 16;
|
|
// protocol_ms->rrc.IMEI[6] = (uni & 0x00000F00) >> 8;
|
|
// protocol_ms->rrc.IMEI[7] = uni & 0x0000000F;
|
|
// uni = uniform ();
|
|
// protocol_ms->rrc.IMEI[8] = (uni & 0x0F000000) >> 24;
|
|
// protocol_ms->rrc.IMEI[9] = (uni & 0x000F0000) >> 16;
|
|
// protocol_ms->rrc.IMEI[10] = (uni & 0x00000F00) >> 8;
|
|
// protocol_ms->rrc.IMEI[11] = uni & 0x0000000F;
|
|
// uni = uniform ();
|
|
// protocol_ms->rrc.IMEI[12] = (uni & 0x0F000000) >> 24;
|
|
// protocol_ms->rrc.IMEI[13] = (uni & 0x000F0000) >> 16;
|
|
// #else
|
|
|
|
protocol_ms->rrc.IMEI[0] = IMEI_D0;
|
|
protocol_ms->rrc.IMEI[1] = IMEI_D1;
|
|
protocol_ms->rrc.IMEI[2] = IMEI_D2;
|
|
protocol_ms->rrc.IMEI[3] = IMEI_D3;
|
|
protocol_ms->rrc.IMEI[4] = IMEI_D4;
|
|
protocol_ms->rrc.IMEI[5] = IMEI_D5;
|
|
protocol_ms->rrc.IMEI[6] = IMEI_D6;
|
|
protocol_ms->rrc.IMEI[7] = IMEI_D7;
|
|
protocol_ms->rrc.IMEI[8] = IMEI_D8;
|
|
protocol_ms->rrc.IMEI[9] = IMEI_D9;
|
|
protocol_ms->rrc.IMEI[10] = IMEI_D10;
|
|
protocol_ms->rrc.IMEI[11] = IMEI_D11;
|
|
protocol_ms->rrc.IMEI[12] = IMEI_D12;
|
|
protocol_ms->rrc.IMEI[13] = rrc_ue_mobileId;
|
|
// protocol_ms->rrc.IMEI[13] = IMEI_D13;
|
|
// #endif
|
|
UE_Id = 32- rrc_ue_mobileId;
|
|
|
|
#ifdef DEBUG_RRC_STATE
|
|
msg ("[RRC CELL]rrc_ue_get_initial_id (UE_ID %d) IMEI initialized to:", UE_Id);
|
|
rrc_print_buffer ((char *)protocol_ms->rrc.IMEI, 14);
|
|
#endif
|
|
return UE_Id;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
void rrc_ue_init (u8 Mod_id){
|
|
//-----------------------------------------------------------------------------
|
|
// int i;
|
|
#ifdef DEBUG_RRC_STATE
|
|
printk("\n\n***********************************************\n");
|
|
printk("**************[RRC CELL][UE-INIT]**************\n");
|
|
printk("***********************************************\n");
|
|
#endif
|
|
printk("[RRC CELL][UE-INIT] Init UE function start\n");
|
|
|
|
// Initialize the control block for variables
|
|
pool_buffer_init();
|
|
protocol_ms = &prot_pool_ms;
|
|
memset ((char *)protocol_ms, 0, sizeof (struct protocol_pool_ms));
|
|
|
|
rrm_config = &rrc_as_config;
|
|
memset ((char *)rrm_config, 0, sizeof (RRM_VARS));
|
|
|
|
rrc_release_all_ressources = 0;
|
|
|
|
protocol_ms->rrc.ue_wait_establish_req = 0;
|
|
protocol_ms->rrc.protocol_state = RRC_UE_IDLE;
|
|
protocol_ms->rrc.u_rnti = 0;
|
|
protocol_ms->rrc.cell_id = 0;
|
|
protocol_ms->rrc.mod_id = Mod_id; //Saved for future use in rrc_ue_L2_frontend.c
|
|
//list2_init (&protocol_ms->rrc.rrc_timers, NULL);
|
|
|
|
rrc_ue_bch_init ();
|
|
rrc_rb_ue_init ();
|
|
|
|
// initialise NAS global variables
|
|
pt_nas_ue_irq = (int *) &(protocol_ms->rrc.ip_rx_irq);
|
|
rrc_ue_get_mobile_id(); // Read mobile Id from command line parameters
|
|
protocol_ms->rrc.ue_initial_id = rrc_ue_get_initial_id ();
|
|
memcpy (nas_IMEI, (char *)protocol_ms->rrc.IMEI, 14);
|
|
rrc_ue_fsm_init (protocol_ms->rrc.ue_initial_id);
|
|
protocol_ms->rrc.rrc_currently_updating = FALSE;
|
|
|
|
#ifdef USER_MODE
|
|
#ifdef RRC_NETLINK
|
|
rrc_ue_netlink_init ();
|
|
#else
|
|
rrc_ue_sap_init (); // init FIFOs towards NAS
|
|
//qos_fifo_open ();
|
|
#endif
|
|
#endif
|
|
//Initialise MBMS
|
|
#ifdef ALLOW_MBMS_PROTOCOL
|
|
rrc_ue_mbms_init();
|
|
#endif
|
|
|
|
rrc_init_mac_config();
|
|
|
|
//
|
|
printk("\n[RRC CELL][UE-INIT] cell_id %d\n",protocol_ms->rrc.cell_id );
|
|
printk("[RRC CELL][UE-INIT] Init UE function completed\n");
|
|
printk("***********************************************\n\n\n");
|
|
|
|
}
|
|
|