From 556a35316096853a19321118acc7e2d6ae5b2276 Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Wed, 11 Dec 2013 19:32:57 +0000 Subject: [PATCH] Start to handle NAS_CELL_SELECTION_REQ. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4676 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair2/RRC/LITE/rrc_UE.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index c42effd2d8..725491f117 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -2476,7 +2476,7 @@ void *rrc_ue_task(void *args_p) { RRC_MAC_CCCH_DATA_IND (msg_p).enb_index); break; -#ifdef Rel10 +# ifdef Rel10 case RRC_MAC_MCCH_DATA_IND: LOG_I(RRC, "[UE %d] Received %s: frame %d, eNB %d, mbsfn SA %d\n", Mod_id, msg_name, RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area); @@ -2485,7 +2485,7 @@ void *rrc_ue_task(void *args_p) { RRC_MAC_MCCH_DATA_IND (msg_p).sdu, RRC_MAC_MCCH_DATA_IND (msg_p).sdu_size, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area); break; -#endif +# endif /* PDCP messages */ case RRC_DCCH_DATA_IND: @@ -2500,11 +2500,34 @@ void *rrc_ue_task(void *args_p) { itti_free (ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND (msg_p).sdu_p); break; +# if defined(ENABLE_USE_MME) /* NAS messages */ case NAS_CELL_SELECTION_REQ: - LOG_I(RRC, "[UE %d] Received %s: plmnID %d, rat %x\n", Mod_id, msg_name, NAS_CELL_SELECTION_REQ (msg_p).plmnID, - NAS_CELL_SELECTION_REQ (msg_p).rat); + Mod_id = 0; /* TODO force Mod_id to first UE, NAS UE not virtualized yet */ + + LOG_I(RRC, "[UE %d] Received %s: state %d, plmnID %d, rat %x\n", Mod_id, msg_name, UE_rrc_inst[Mod_id].RrcState, + NAS_CELL_SELECTION_REQ (msg_p).plmnID, NAS_CELL_SELECTION_REQ (msg_p).rat); + + switch (UE_rrc_inst[Mod_id].RrcState) { + case RRC_STATE_INACTIVE: + /* Need to first activate lower layers */ + + UE_rrc_inst[Mod_id].RrcState = RRC_STATE_IDLE; + break; + case RRC_STATE_IDLE: + /* Ask to layer 1 to find a cell matching the criterion */ + break; + + case RRC_STATE_CONNECTED: + /* should not happen */ + LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", Mod_id, msg_name, UE_rrc_inst[Mod_id].RrcState); + break; + + default: + LOG_C(RRC, "[UE %d] Invalid RRC state %d\n", Mod_id, UE_rrc_inst[Mod_id].RrcState); + break; + } /* TODO process message */ break; @@ -2550,6 +2573,7 @@ void *rrc_ue_task(void *args_p) { { LOG_I(RRC, "[UE %d] Received %s\n", Mod_id, msg_name); } +# endif default: LOG_E(RRC, "[UE %d] Received unexpected message %s\n", Mod_id, msg_name); -- GitLab