Files
openairinterface5g/openair2/RRC/CELLULAR/rrc_rb_ue_data.c
T
2013-06-25 09:05:02 +00:00

151 lines
4.4 KiB
C
Executable File

/***************************************************************************
rrc_rb_ue_data.c - description
-------------------
begin : April 30, 2002
copyright : (C) 2002, 2010 by Eurecom
author : Michelle.Wetterwald@eurecom.fr
**************************************************************************
This file contains the definition of the functions called by Esterel FSM
***************************************************************************/
/********************
//OpenAir definitions
********************/
#include "LAYER2/MAC/extern.h"
#include "UTIL/MEM/mem_block.h"
/********************
// RRC definitions
********************/
#include "rrc_ue_vars.h"
//-----------------------------------------------------------------------------
#include "rrc_proto_fsm.h"
//-----------------------------------------------------------------------------
/* Initialization
input parm: User Equipment Id*/
void rrc_rb_ue_init (void){
// execute reset
RRC_RB_UE_reset ();
RRC_RB_UE ();
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM] FSM initialized\n");
msg ("[RRC_RB][FSM]\n States : IDLE = 1, CELL_FACH = 6, CELL_DCH = 10 \n");
msg ("[RRC_RB][FSM]\n Boolean : true = 1, false = 0\n");
#endif
// First tick
RRC_RB_UE ();
}
/* Input trigger functions - to be called by RRC_RB_UE_fsm_control() only */
void rrc_rb_ue_new_state (int newState){
// force state transition in the RRC_RB_UE fsm
switch (newState) {
case CELL_FACH:
RRC_RB_UE_I_I_Go_CELL_FACH ();
break;
case CELL_DCH:
RRC_RB_UE_I_I_Go_CELL_DCH ();
break;
case RRC_CELL_IDLE:
RRC_RB_UE_I_I_Go_Idle ();
break;
default:
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM] Invalid State for transition\n");
#endif
break;
}
RRC_RB_UE ();
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM] Transition to state %d\n", newState);
#endif
}
void rrc_rb_ue_RB_Setup_rx (int rb_id, int next_state, int prot_error){
// send input signal RRC_Conn_Setup
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] RB Setup Received, rb_id %d , next_state %d , protocol error %d.\n", rb_id, next_state, prot_error);
#endif
RRC_RB_UE_I_I_Radio_Bearer_ID (rb_id);
RRC_RB_UE_I_I_IE_RRC_State (next_state);
RRC_RB_UE_I_I_Prot_Error (prot_error);
RRC_RB_UE_I_I_RADIO_BEARER_SETUP ();
RRC_RB_UE ();
}
void rrc_rb_ue_RB_Release_rx (int rb_id, int next_state, int prot_error){
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] RB Release Received, rb_id %d , next_state %d , protocol error %d.\n", rb_id, next_state, prot_error);
#endif
RRC_RB_UE_I_I_Radio_Bearer_ID (rb_id);
RRC_RB_UE_I_I_IE_RRC_State (next_state);
RRC_RB_UE_I_I_Prot_Error (prot_error);
RRC_RB_UE_I_I_RADIO_BEARER_RELEASE ();
RRC_RB_UE ();
}
void rrc_rb_ue_Cell_Update_cnf_rx (void){
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] Cell Update Confirm Received.\n");
#endif
RRC_RB_UE_I_I_CELL_UPDATE_CONFIRM ();
RRC_RB_UE ();
}
void rrc_rb_ue_PHY_Setup_rx (void){
// simulate PHY_Synch received (DCH established)
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] PHY_Synch_Success Received \n");
#endif
RRC_RB_UE_I_I_CPHY_SYNCH_IND ();
RRC_RB_UE ();
}
void rrc_rb_ue_CPHY_Synch_Failure_rx (void){
// simulate PHY_Failure received (DCH failed to established)
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] PHY_Synch_Failure Received \n");
#endif
RRC_RB_UE_I_I_CPHY_SYNCH_Failure ();
RRC_RB_UE ();
}
void rrc_rb_ue_CPHY_Out_of_Synch_rx (void){
// simulate Out of Synch received (DCH failure)
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] PHY_Out_Of_Synch Received \n");
#endif
RRC_RB_UE_I_I_CPHY_OUT_OF_SYNCH ();
RRC_RB_UE ();
}
void rrc_rb_ue_CRLC_Status_rx (void){
// simulate RLC_Status_Ind received (unrecoverable errors on RLC)
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] RLC_Status_Ind Received \n");
#endif
RRC_RB_UE_I_I_CRLC_STATUS ();
RRC_RB_UE ();
}
void rrc_rb_ue_RLC_Data_Confirm_rx (void){
// simulate (to be removed?) RLC_Data_Confirm received
#ifdef DEBUG_RRC_STATE
msg ("[RRC_RB][FSM-IN] RLC_Data_Confirm Received\n");
#endif
RRC_RB_UE_I_I_RLC_Success ();
RRC_RB_UE ();
}
/*void rrc_rb_ue_RLC_failure_rx (void)
{
// simulate (to be removed?) RLC_Data_Confirm received
#ifdef DEBUG_RRC_STATE
msg("[RRC_RB][FSM-IN] RLC_Data_Failure Received\n");
#endif
RRC_RB_UE_I_I_RLC_Failure ();
RRC_RB_UE();
}*/