Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
151 lines
4.4 KiB
C
Executable File
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();
|
|
}*/
|