Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
362 lines
13 KiB
C
Executable File
362 lines
13 KiB
C
Executable File
/***************************************************************************
|
|
rrc_rrm_primitives.h
|
|
-------------------
|
|
copyright : (C) 2010 by Eurecom
|
|
created by : Lionel.Gauthier@eurecom.fr
|
|
modified by : Michelle.Wetterwald@eurecom.fr
|
|
**************************************************************************
|
|
Definition of RRC external interface to RRM
|
|
**************************************************************************/
|
|
#ifndef __RRC_RRMPRIM_H__
|
|
#define __RRC_RRMPRIM_H__
|
|
|
|
#include "rrm_constants.h"
|
|
|
|
//----------------------------------------------------------
|
|
// Primitives
|
|
//----------------------------------------------------------
|
|
// LG : IT IS MANDATORY THAT ALL MESSAGES ARE INDEXED FROM
|
|
// 0 TO N WHITH NO HOLE IN NUMEROTATION -> ARRAY OF POINTERS
|
|
#define RPC_CONNECTION_REQUEST 0
|
|
#define RPC_CONNECTION_RESPONSE 1
|
|
#define RPC_CONNECTION_CLOSE 2
|
|
#define RPC_CONNECTION_CLOSE_ACK 3
|
|
#define RPC_ADD_USER_REQUEST 4
|
|
#define RPC_ADD_USER_RESPONSE 5
|
|
#define RPC_ADD_USER_CONFIRM 6
|
|
#define RPC_REMOVE_USER_REQUEST 7
|
|
#define RPC_REMOVE_USER_RESPONSE 8
|
|
#define RPC_ADD_RADIO_ACCESS_BEARER_REQUEST 9
|
|
#define RPC_ADD_RADIO_ACCESS_BEARER_RESPONSE 10
|
|
#define RPC_ADD_RADIO_ACCESS_BEARER_CONFIRM 11
|
|
#define RPC_REMOVE_RADIO_ACCESS_BEARER_REQUEST 12
|
|
#define RPC_REMOVE_RADIO_ACCESS_BEARER_RESPONSE 13
|
|
#define RPC_MEASUREMENT_REQUEST 14
|
|
#define RPC_L1_MEASUREMENT_RG_INTERNAL_REPORT 15
|
|
#define RPC_L1_MEASUREMENT_RG_QUALITY_REPORT 16
|
|
#define RPC_L1_MEASUREMENT_RG_TRAFFIC_VOLUME_REPORT 17
|
|
#define RPC_L1_MEASUREMENT_RG_PHYSICAL_CHANNEL_DATA_AMP_REPORT 18
|
|
#define RPC_L1_MEASUREMENT_MT_INTERNAL_REPORT 19
|
|
#define RPC_L1_MEASUREMENT_MT_QUALITY_REPORT 20
|
|
#define RPC_L1_MEASUREMENT_MT_TRAFFIC_VOLUME_REPORT 21
|
|
#define RPC_L1_MEASUREMENT_MT_INTRA_FREQUENCY_REPORT 22
|
|
#define RPC_UPLINK_PHYSICAL_CHANNEL_CONTROL 23
|
|
#define RPC_CONFIG_REQUEST 24
|
|
#define RPC_ACK 25
|
|
#define RPC_NB_RPC 26
|
|
|
|
//----------------------------------------------------------
|
|
// Constants
|
|
//----------------------------------------------------------
|
|
#define RRM_MAX_MESSAGE_SIZE 1500
|
|
|
|
#define RRM_SERVER_PORT 9900L
|
|
#define RRC_SERVER_PORT 9899L
|
|
|
|
#define RADIO_GATEWAY_MASTER 77
|
|
#define RADIO_GATEWAY_SLAVE 83
|
|
#define RADIO_GATEWAY_SIMULATION 83
|
|
#define RADIO_GATEWAY_SIMULATION_BYPASS_L1 66
|
|
#define RADIO_GATEWAY_REAL_TIME_RF 82
|
|
#define RADIO_GATEWAY_REAL_TIME_IF 73
|
|
|
|
// CLASS_OF_TRAFFIC
|
|
#define CONVERSATIONAL 1
|
|
#define STREAMING 2
|
|
#define INTERACTIVE 3
|
|
#define BACKGROUND 4
|
|
|
|
// CONNECTION RESPONSE STATUS
|
|
#define STATUS_CONNECTION_ACCEPTED 0
|
|
#define STATUS_CONNECTION_REFUSED_ALREADY_CONNECTED -1
|
|
#define STATUS_CONNECTION_REFUSED_TOO_MANY_RG -2
|
|
// ADD USER RESPONSE STATUS
|
|
#define ADD_USER_SUCCESSFUL 3
|
|
#define ADD_USER_FAILED -3
|
|
// REMOVE USER RESPONSE STATUS
|
|
#define REMOVE_USER_SUCCESSFUL 4
|
|
#define REMOVE_USER_FAILED -4
|
|
// ADD RADIO ACCESS BEARER STATUS
|
|
#define ADD_RADIO_ACCESS_BEARER_SUCCESSFUL 5
|
|
#define ADD_RADIO_ACCESS_BEARER_FAILED -5
|
|
// REMOVE RADIO ACCESS BEARER STATUS
|
|
#define REMOVE_RADIO_ACCESS_BEARER_SUCCESSFUL 6
|
|
#define REMOVE_RADIO_ACCESS_BEARER_FAILED -6
|
|
|
|
// Measure command
|
|
#define RRC_RRM_SETUP 1
|
|
#define RRC_RRM_RELEASE 3
|
|
|
|
// Measure type
|
|
#define RRC_RRM_TYPE_IntraFreq 0
|
|
#define RRC_RRM_TYPE_TrafficVolume 1
|
|
#define RRC_RRM_TYPE_Quality 2
|
|
#define RRC_RRM_TYPE_Internal 3
|
|
|
|
|
|
//----------------------------------------------------------
|
|
// Parameter types
|
|
//----------------------------------------------------------
|
|
struct rrc_rrm_measure_ctl {
|
|
u8 command; //setup-release as above
|
|
u8 amount; //number of measures 0-1-2-4-8-16-32-64
|
|
u16 period; //250--> 64000 ms
|
|
u8 type;
|
|
u8 BaseStation; //1=YES
|
|
u16 UE_Id;
|
|
};
|
|
|
|
// Measure report
|
|
// from Mobile Terminal
|
|
struct rrc_rrm_meas_report_mt_if {
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 if_num_cells __attribute__ ((packed));
|
|
u16 if_cell_id[maxCells] __attribute__ ((packed));
|
|
u16 if_cell_parms_id[maxCells] __attribute__ ((packed));
|
|
u16 if_BCH_RSCP[maxCells] __attribute__ ((packed));
|
|
u16 if_pathloss[maxCells] __attribute__ ((packed));
|
|
u16 if_slot_iscp[maxCells][JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
};
|
|
struct rrc_rrm_meas_report_mt_tv {
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 tv_num_rbs __attribute__ ((packed));
|
|
u16 tv_rbid[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_payload[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_average[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_variance[MAXMEASRBS] __attribute__ ((packed));
|
|
};
|
|
struct rrc_rrm_meas_report_mt_q {
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 q_num_TrCH __attribute__ ((packed));
|
|
u16 q_dl_TrCH_id[MAXMEASTRCH] __attribute__ ((packed));
|
|
u16 q_dl_TrCH_BLER[MAXMEASTRCH] __attribute__ ((packed));
|
|
u16 q_num_tfcs __attribute__ ((packed));
|
|
u16 q_tfcs_id[MAXMEASTFCS] __attribute__ ((packed));
|
|
u16 q_sir[MAXMEASTFCS][JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
};
|
|
struct rrc_rrm_meas_report_mt_int {
|
|
// u8 UE_Id;
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 int_xmit_power[JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
u16 int_timing_advance __attribute__ ((packed));
|
|
};
|
|
|
|
union rrc_rrm_meas_report_mt_rrc {
|
|
struct rrc_rrm_meas_report_mt_if meas_rep_mt_if;
|
|
struct rrc_rrm_meas_report_mt_tv meas_rep_mt_tv;
|
|
struct rrc_rrm_meas_report_mt_q meas_rep_mt_q;
|
|
struct rrc_rrm_meas_report_mt_int meas_rep_mt_int;
|
|
};
|
|
|
|
// from Base station
|
|
struct rrc_rrm_meas_report_bs_tv {
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 tv_num_rbs __attribute__ ((packed));
|
|
u16 tv_rbid[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_payload[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_average[MAXMEASRBS] __attribute__ ((packed));
|
|
u16 tv_rb_variance[MAXMEASRBS] __attribute__ ((packed));
|
|
};
|
|
|
|
struct rrc_rrm_meas_report_bs_q {
|
|
u16 UE_Id __attribute__ ((packed));
|
|
u16 q_num_TrCH __attribute__ ((packed));
|
|
u16 q_dl_TrCH_id[MAXMEASTRCH] __attribute__ ((packed));
|
|
u16 q_dl_TrCH_BLER[MAXMEASTRCH] __attribute__ ((packed));
|
|
u16 q_num_tfcs __attribute__ ((packed));
|
|
u16 q_tfcs_id[MAXMEASTFCS] __attribute__ ((packed));
|
|
u16 q_sir[MAXMEASTFCS][JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
};
|
|
|
|
struct rrc_rrm_meas_report_bs_int {
|
|
s32 int_xmit_power[numANTENNAS][JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
s32 int_rscp[JRRM_SLOTS_PER_FRAME][MAXCH] __attribute__ ((packed));
|
|
s32 int_rssi_rf[numANTENNAS][JRRM_SLOTS_PER_FRAME] __attribute__ ((packed));
|
|
u16 int_spare[NUMSPARE] __attribute__ ((packed));
|
|
};
|
|
|
|
union rrc_rrm_meas_report_bs_rrc {
|
|
struct rrc_rrm_meas_report_bs_tv meas_rep_bs_tv;
|
|
struct rrc_rrm_meas_report_bs_q meas_rep_bs_q;
|
|
struct rrc_rrm_meas_report_bs_int meas_rep_bs_int;
|
|
};
|
|
|
|
//----------------------------------------------------------
|
|
// Primitive definitions
|
|
//----------------------------------------------------------
|
|
// Message Header
|
|
typedef struct rrc_rrm_message_header {
|
|
u16 type;
|
|
u16 length; // length includes only data following this header
|
|
u32 frame;
|
|
} rpc_message;
|
|
|
|
|
|
// Message Content
|
|
|
|
// Primitives without content
|
|
// RPC_CONNECTION_CLOSE_ACK 3
|
|
// RPC_UPLINK_PHYSICAL_CHANNEL_CONTROL 23
|
|
// RPC_CONFIG_REQUEST 24
|
|
// RPC_ACK 25
|
|
// RPC_NB_RPC 26
|
|
|
|
//-------------------------------------------
|
|
// RPC_CONNECTION_REQUEST 0
|
|
typedef struct connection_request {
|
|
char radio_gateway_type; // master or slave
|
|
char radio_gateway_execution_mode; // simulation, simulation + bypass L1, real time RF, real time IF
|
|
u8 nb_antennas;
|
|
} connection_request;
|
|
//-------------------------------------------
|
|
// RPC_CONNECTION_RESPONSE 1
|
|
typedef struct connection_response {
|
|
s8 status;
|
|
u8 equipment_id;
|
|
} connection_response;
|
|
//-------------------------------------------
|
|
// RPC_CONNECTION_CLOSE 2
|
|
typedef struct connection_close {
|
|
u8 equipment_id;
|
|
} connection_close;
|
|
//-------------------------------------------
|
|
// RPC_ADD_USER_REQUEST 4
|
|
typedef struct add_user_request {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 tx_id;
|
|
} add_user_request;
|
|
|
|
//-------------------------------------------
|
|
// RPC_ADD_USER_RESPONSE 5
|
|
typedef struct add_user_response {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 status;
|
|
u8 tx_id;
|
|
} add_user_response;
|
|
//-------------------------------------------
|
|
// RPC_ADD_USER_CONFIRM 6
|
|
typedef struct add_user_confirm {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
} add_user_confirm;
|
|
//-------------------------------------------
|
|
// RPC_REMOVE_USER_REQUEST 7
|
|
typedef struct remove_user_request {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 tx_id;
|
|
} remove_user_request;
|
|
//-------------------------------------------
|
|
// RPC_REMOVE_USER_RESPONSE 8
|
|
typedef struct remove_user_response {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 status;
|
|
u8 tx_id;
|
|
} remove_user_response;
|
|
//-------------------------------------------
|
|
// RPC_ADD_RADIO_ACCESS_BEARER_REQUEST 9
|
|
typedef struct add_radio_access_bearer_request {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 tx_id;
|
|
u8 rab_id;
|
|
u16 traffic_class;
|
|
u16 delay;
|
|
u32 guaranted_bit_rate_uplink;
|
|
u32 max_bit_rate_uplink;
|
|
u32 guaranted_bit_rate_downlink;
|
|
u32 max_bit_rate_downlink;
|
|
} add_radio_access_bearer_request;
|
|
//-------------------------------------------
|
|
// RPC_ADD_RADIO_ACCESS_BEARER_RESPONSE 10
|
|
typedef struct add_radio_access_bearer_response {
|
|
u8 user_id;
|
|
u8 rab_id;
|
|
u8 status;
|
|
u8 tx_id;
|
|
} add_radio_access_bearer_response;
|
|
//-------------------------------------------
|
|
// RPC_ADD_RADIO_ACCESS_BEARER_CONFIRM 11
|
|
typedef struct add_radio_access_bearer_confirm {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 rab_id;
|
|
} add_radio_access_bearer_confirm;
|
|
//-------------------------------------------
|
|
// RPC_REMOVE_RADIO_ACCESS_BEARER_REQUEST 12
|
|
typedef struct remove_radio_access_bearer_request {
|
|
u8 equipment_id;
|
|
u8 user_id;
|
|
u8 rab_id;
|
|
u8 tx_id;
|
|
} remove_radio_access_bearer_request;
|
|
//-------------------------------------------
|
|
// RPC_REMOVE_RADIO_ACCESS_BEARER_RESPONSE 13
|
|
typedef struct remove_radio_access_bearer_response {
|
|
u8 user_id;
|
|
u8 rab_id;
|
|
u8 status;
|
|
u8 tx_id;
|
|
} remove_radio_access_bearer_response;
|
|
//-------------------------------------------
|
|
// RPC_MEASUREMENT_REQUEST 14
|
|
typedef struct measurement_request {
|
|
u8 measurement_type;
|
|
u8 measurement_command;
|
|
u8 equipment_type;
|
|
u8 equipment_id;
|
|
u16 amount;
|
|
u16 period;
|
|
} measurement_request;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_RG_INTERNAL_REPORT 15
|
|
typedef struct l1_measurement_rg_internal_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_bs_int measurements;
|
|
} l1_measurement_rg_internal_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_RG_QUALITY_REPORT 16
|
|
typedef struct l1_measurement_rg_quality_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_bs_q measurements;
|
|
} l1_measurement_rg_quality_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_RG_TRAFFIC_VOLUME_REPORT 17
|
|
typedef struct l1_measurement_rg_traffic_volume_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_bs_tv measurements;
|
|
} l1_measurement_rg_traffic_volume_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_RG_PHYSICAL_CHANNEL_DATA_AMP_REPORT 18
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_MT_INTERNAL_REPORT 19
|
|
typedef struct l1_measurement_mt_internal_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_mt_int measurements;
|
|
} l1_measurement_mt_internal_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_MT_QUALITY_REPORT 20
|
|
typedef struct l1_measurement_mt_quality_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_mt_q measurements;
|
|
} l1_measurement_mt_quality_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_MT_TRAFFIC_VOLUME_REPORT 21
|
|
typedef struct l1_measurement_mt_traffic_volume_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_mt_tv measurements;
|
|
} l1_measurement_mt_traffic_volume_report;
|
|
//-------------------------------------------
|
|
// RPC_L1_MEASUREMENT_MT_INTRA_FREQUENCY_REPORT 22
|
|
typedef struct l1_measurement_mt_intra_frequency_report {
|
|
u32 equipment_id;
|
|
struct rrc_rrm_meas_report_mt_if measurements;
|
|
} l1_measurement_mt_intra_frequency_report;
|
|
//-------------------------------------------
|
|
|
|
|
|
#endif
|