From a0289d74fa610bd73ac2bb79d20da8bc8a685411 Mon Sep 17 00:00:00 2001 From: Xenofon Foukas <x.foukas@sms.ed.ac.uk> Date: Tue, 9 Feb 2016 13:03:31 +0000 Subject: [PATCH] Added support for eNB, cell, UE and logical channel configuration messages to the progRAN protocol --- cmake_targets/CMakeLists.txt | 4 + .../ENB_APP/MESSAGES/V2/config_common.proto | 174 ++++++++++++++++++ .../ENB_APP/MESSAGES/V2/config_messages.proto | 88 +++++++++ openair2/ENB_APP/MESSAGES/V2/header.proto | 12 +- openair2/ENB_APP/MESSAGES/V2/progran.proto | 40 +++- 5 files changed, 315 insertions(+), 3 deletions(-) create mode 100644 openair2/ENB_APP/MESSAGES/V2/config_common.proto create mode 100644 openair2/ENB_APP/MESSAGES/V2/config_messages.proto diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 8631fe92a5..93aa36c727 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -713,6 +713,8 @@ if (ENB_AGENT_SB_IF) ${PRPT_MSG_DIR}/time_common.proto ${PRPT_MSG_DIR}/controller_commands.proto ${PRPT_MSG_DIR}/mac_primitives.proto + ${PRPT_MSG_DIR}/config_messages.proto + ${PRPT_MSG_DIR}/config_common.proto ) set(PRPT_C_DIR ${protobuf_generated_dir}/${PRPTDIR}) @@ -727,6 +729,8 @@ if (ENB_AGENT_SB_IF) ${PRPT_C_DIR}/time_common.pb-c.c ${PRPT_C_DIR}/controller_commands.pb-c.c ${PRPT_C_DIR}/mac_primitives.pb-c.c + ${PRPT_C_DIR}/config_messages.pb-c.c + ${PRPT_C_DIR}/config_common.pb-c.c ) file(GLOB prpt_h ${PRPT_C_DIR}/*.h) diff --git a/openair2/ENB_APP/MESSAGES/V2/config_common.proto b/openair2/ENB_APP/MESSAGES/V2/config_common.proto new file mode 100644 index 0000000000..ab6e8b8c22 --- /dev/null +++ b/openair2/ENB_APP/MESSAGES/V2/config_common.proto @@ -0,0 +1,174 @@ +//'syntax = "proto2";' +package protocol; + +// +// Cell config related structures and enums +// + +message prp_si_config { + optional uint32 sfn = 1; + optional uint32 sib1_length = 2; // The length of SIB1 in bytes + optional uint32 si_window_length = 3; // The scheduling window for all SIs in SF + repeated prp_si_message si_message = 4; // List of SI messages to be sent. + // The index identifies the type of an SI message + // 0 - SIB1 + // 1..31 - SIx + // 32..63 - PCCH +} + +message prp_si_message { + optional uint32 periodicity = 1; // Periodicity of SI msg in radio frames + optional uint32 length = 2; // The length of the SI message in bytes +} + +enum prp_hopping_mode { + PRHM_INTER = 0; + PRHM_INTERINTRA = 1; +} + +enum prp_phich_resource { + PRPR_ONE_SIXTH = 0; + PRPR_HALF = 1; + PRPR_ONE = 2; + PRPR_TWO = 3; +} + +enum prp_phich_duration { + PRPD_NORMAL = 0; + PRPD_EXTENDED = 1; +} + +enum prp_ul_cyclic_prefix_length { + PRUCPL_NORMAL = 0; + PRUCPL_EXTENDED = 1; +} + +enum prp_dl_cyclic_prefix_length { + PRDCPL_NORMAL = 0; + PRDCPL_EXTENDED = 1; +} + +enum prp_duplex_mode { + PRDM_TDD = 0; + PRDM_FDD = 1; +} + +enum prp_qam { + PREQ_MOD_16QAM = 0; + PREQ_MOD_64QAM = 1; +} + +// +// UE config related structures and enums +// + +message prp_drx_config { + optional uint32 on_duration_timer = 1; // Timer in SF. See TS 36.321 + optional uint32 drx_inactivity_timer = 2; // Timer in SF. See TS 36.321 + optional uint32 drx_retransmission_timer = 3; // Timer in SF. See TS 36.321 + optional uint32 long_drx_cycle = 4; // In SF. See TS 36.321 + optional uint32 long_drx_cycle_start_offset = 5;// See TS 36.321 + optional uint32 short_drx_cycle = 6; // In SF + optional uint32 drx_short_cycle_timer = 7; // Timer in subframes. See TS 36.321 +} + +message prp_sps_config { + optional uint32 semi_persistent_sched_interval_UL = 1; // SPS UL scheduling interval in SF + optional uint32 semi_persistent_sched_interval_DL = 2; // SPS DL scheduling interval in SF + optional uint32 num_of_conf_sps_proc = 3; // Number of SPS HARQ processes. See TS 36.321 + repeated uint32 n1_PUCCH_AN_persistent_element = 4;// See TS36.213. Ignored when config is used + // as part of PRPT_SET_UE_CONFIG + optional uint32 implicit_release_after = 5; // number of empty transmissions before release of SPS +} + +message prp_sr_config { + optional uint32 sr_action = 1; // Indicates if SR config should be changed or released + // One of the PRSRA_* enum values + optional uint32 sched_interval = 2; // SR scheduling interval in SF + optional uint32 dsr_trans_max = 3; // See TS 36.213 +} + +message prp_cqi_config { + optional uint32 cqi_action = 1; // Indicats if CQI changed or released. + // One of the PRSRA_* enum values + optional uint32 cqi_sched_interval = 2; // CQI scheduling interval in SF + optional uint32 ri_sched_interval = 3; // RI scheduling interval in SF +} + +message prp_ue_capabilities { + optional uint32 half_duplex = 1; // Boolean value. Only half duplex support. FDD operation + optional uint32 intra_SF_hopping = 2; // Support for intra-subframe hopping. Boolean value + optional uint32 type2_sb_1 = 3; // Support for type 2 hopping with n_sb > 1 + optional uint32 ue_category = 4; + optional uint32 res_alloc_type1 = 5; // Boolean value. UE support for resource allocation type 1 +} + +message prp_scell_config { + optional uint32 carrier_index = 1; // Id of the carrier component + optional uint32 scell_index = 2; // Index of this Scell (RRC SCellIndex) + optional uint32 use_ccs = 3; // Boolean value. Indicates if cross-carrier scheduling + // is used by this SCell + optional uint32 sched_cell_index = 4; // Index of the cell responsible for scheduling + // this SCell if cross-carrier scheduling is enabled + optional uint32 pdsch_start = 5; // Starting OFDM symbol of PDSCH data region for this SCell +} + +enum prp_meas_gap_config_pattern { + PRMGCP_GP1 = 0; + PRMGCP_GP2 = 1; + PRMGCP_OFF = 2; +} + +enum prp_setup_release_action { + PRSRA_SETUP = 0; + PRSRA_RELEASE = 1; +} + +enum prp_ue_transmission_antenna { + PRUTA_NONE = 0; + PRUTA_OPEN_LOOP = 1; + PRUTA_CLOSED_LOOP = 2; +} + +enum prp_aperiodic_cqi_report_mode { + PRACRM_RM12 = 0; + PRACRM_RM20 = 1; + PRACRM_RM22 = 2; + PRACRM_RM30 = 3; + PRACRM_RM31 = 4; + PRACRM_NONE = 5; +} + +enum prp_tdd_ack_nack_feedback_mode { + PRTANFM_BUNDLING = 0; + PRTANFM_MULTIPLEXING = 1; +} + +// +// Logical channel config related structures and enums +// + +message prp_lc_config { + optional uint32 lcid = 1; // The logical channel id + optional uint32 lcg = 2; // The logical channel group (0..3) the LC is mapped to + optional uint32 direction = 3; // The LC direction. One of the PRLCD_* enum values + optional uint32 qos_bearer_type = 4;// GBR or NGBR bearer. One of the PRQBT_* enum values + optional uint32 qci = 5; // The QCI defined in TS 23.203, coded as defined in TS 36.413 + // One less than the actual QCI value + optional uint64 e_RAB_max_bitrate_UL = 6; // In bps (GBR only) + optional uint64 e_RAB_max_bitrate_DL = 7; // In bps (GBR only) + optional uint64 e_RAB_guaranteed_bitrate_UL = 8; // In bps (GBR only) + optional uint64 e_RAB_guranteed_bitrate_DL = 9; // In bps (GBR only) +} + +enum prp_lc_direction { + PRLCD_UL = 0; + PRLCD_DL = 1; + PRLCD_BOTH = 2; +} + +enum prp_qos_bearer_type { + PRQBT_NON_GBR = 0; + PRQBT_GBR = 1; +} + diff --git a/openair2/ENB_APP/MESSAGES/V2/config_messages.proto b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto new file mode 100644 index 0000000000..4e1151a7e8 --- /dev/null +++ b/openair2/ENB_APP/MESSAGES/V2/config_messages.proto @@ -0,0 +1,88 @@ +//'syntax = "proto2";' +package protocol; + +import "config_common.proto"; + +message prp_cell_config { + optional uint32 phy_cell_id = 1; // The PCI of this cell + optional uint32 cell_id = 2; // The PLMN cell id of this cell + optional uint32 pusch_hopping_offset = 3; // PUSCH resources in RBs for hopping + optional uint32 hopping_mode = 4; // One of the PRHM_* enum values + optional uint32 n_sb = 5; // The number of subbands + optional uint32 phich_resource = 6; // The number of REGs used for PHICH + // One of the PRPR_* enum values + optional uint32 phich_duration = 7; // One of the PRPD_* enum values + optional uint32 init_nr_PDCCH_OFDM_sym = 8; // See TS 36.211, section 6.9 + optional prp_si_config si_config = 9; // The SI configuration + optional uint32 dl_bandwidth = 10; // The DL transmission bandwidth in RBs + optional uint32 ul_bandwidth = 11; // The UL transmission bandwidth in RBs + optional uint32 ul_cyclic_prefix_length = 13; // One of the PRUCPL_* enum values + optional uint32 dl_cyclic_prefix_length = 14; // One of the PRDCPL_* enum values + optional uint32 antenna_ports_count = 15; // Number of cell specific antenna ports + optional uint32 duplex_mode = 16; // One of the PRDM_* enum values + optional uint32 subframe_assignment = 17; // DL/UL subframe assignment. TDD only + optional uint32 special_subframe_patterns = 18; // TDD only. See TS 36.211, table 4.2.1 + repeated uint32 mbsfn_subframe_config_rfperiod = 19; // The MBSFN radio frame period (Optional) + repeated uint32 mbsfn_subframe_config_rfoffset = 20; // The radio frame offset (Optional) + repeated uint32 mbsfn_subframe_config_sfalloc = 21; // Bitmap indicating the MBSFN subframes (Optional) + optional uint32 prach_config_index = 22; // See TS 36.211, section 5.7.1 + optional uint32 prach_freq_offset = 23; // See TS 36.211, section 5.7.1 + optional uint32 ra_response_window_size = 24; // The duration of the RA response window in SF + optional uint32 mac_contention_resolution_timer = 25; // Timer for RA + optional uint32 max_HARQ_Msg3Tx = 26; // See TS 36.321 + optional uint32 n1PUCCH_AN = 27; // See TS 36.213, section 10.1 + optional uint32 deltaPUCCH_shift = 28; // See TS 36.211, section 5.4 + optional uint32 nRB_cqi = 29; // See TS 36.211, section 5.4 + optional uint32 srs_subframe_config = 30; // See TS 36.211, table 5.5.3.3-1 and 2 + optional uint32 srs_bw_config = 31; // See TS 36.211, section 5.5.3.2 + optional uint32 srs_mac_up_pts = 32; // Boolean value. See TS 36.211, section 5.5.3.2. TDD only + optional uint32 enable_64QAM = 33; // One of the PREQ_* enum values + optional uint32 carrier_index = 34; // Carrier component index +} + +message prp_ue_config { + optional uint32 rnti = 1; + optional prp_drx_config drx_config = 2; // The DRX configuration (Optional) + optional uint32 time_alignment_timer = 3; // Timer in SF. Control the synchronization + // status of the UE, not the actual advance procedure + // See TS 36.321 + optional uint32 meas_gap_config_pattern = 4; // Measurement gap configuration. + // One of the PRMGCP_* enum values + // See TS 36.133 + optional uint32 meas_gap_config_sf_offset = 5; // Measurement gap offset if applicable + optional prp_sps_config sps_config = 6; // The SPS configuration (Optional) + optional prp_sr_config sr_config = 7; // The SR configuration (Optional) + optional prp_cqi_config cqi_config = 8; // The CQI configuration (Optional) + optional uint32 transmission_mode = 9; // The UE transmission mode + optional uint64 ue_aggregated_max_bitrate_UL = 10; // Aggregated bit-rate of non-gbr bearer + // per UE. See TS 36.413 + optional uint64 ue_aggregated_max_bitrate_DL = 11; // Aggregated bit-rate of non-gbr bearer + // per UE. See TS 36.413 + optional prp_ue_capabilities capabilities = 12; + optional uint32 ue_transmission_antenna = 13; // One of the PRUTA_* enum values + optional uint32 tti_bundling = 14; // Boolean value. See TS 36.321 + optional uint32 max_HARQ_tx = 15; // The max HARQ retransmission for UL + optional uint32 beta_offset_ACK_index = 16; // See TS 36.213 + optional uint32 beta_offset_RI_index = 17; // See TS 36.213 + optional uint32 beta_offset_CQI_index = 18; // See TS 36.213 + optional uint32 ack_nack_simultaneous_trans = 19;// Boolean. See TS 36.213 + optional uint32 simultaneous_ack_nack_cqi = 20; // Boolean. See TS 36.213 + optional uint32 aperiodic_cqi_rep_mode = 21; // One of the PRACRM_* enum values + optional uint32 tdd_ack_nack_feedback = 22; // One of the PRTANFM_* enum values + optional uint32 ack_nack_repetition_factor = 23;// See TS 36.213, section 10.1 + optional uint32 extended_bsr_size = 24; // Boolean for extended BSR size + optional uint32 ca_support = 25; // Boolean. Support for carrier aggregation + optional uint32 cross_carrier_sched_support = 26; // Boolean value + optional uint32 pcell_carrier_index = 27; // Index of primary cell + repeated prp_scell_config scell_config = 28; // Secondary cells configuration + optional uint32 scell_deactivation_timer = 29;// Deactivation timer for secondary cell +} + +message prp_lc_ue_config { + optional uint32 rnti = 1; + repeated prp_lc_config lc_config = 2; // A list of LC configurations for the given UE +} + + + + diff --git a/openair2/ENB_APP/MESSAGES/V2/header.proto b/openair2/ENB_APP/MESSAGES/V2/header.proto index 10a18ddcef..be0341f132 100644 --- a/openair2/ENB_APP/MESSAGES/V2/header.proto +++ b/openair2/ENB_APP/MESSAGES/V2/header.proto @@ -19,10 +19,18 @@ enum prp_type { // Time indication messages PRPT_SF_TRIGGER = 5; - //Asynchronous messages + // Asynchronous messages PRPT_UL_SR_INFO = 6; + // eNB configuration messages + PRPT_GET_ENB_CONFIG_REQUEST = 7; + PRPT_GET_ENB_CONFIG_REPLY = 8; + PRPT_GET_UE_CONFIG_REQUEST = 9; + PRPT_GET_UE_CONFIG_REPLY = 10; + PRPT_GET_LC_CONFIG_REQUEST = 11; + PRPT_GET_LC_CONFIG_REPLY = 12; + //Controller command messages - PRPT_DL_MAC_CONFIG = 7; + PRPT_DL_MAC_CONFIG = 13; } diff --git a/openair2/ENB_APP/MESSAGES/V2/progran.proto b/openair2/ENB_APP/MESSAGES/V2/progran.proto index 5d0ec15518..f1178c0f57 100644 --- a/openair2/ENB_APP/MESSAGES/V2/progran.proto +++ b/openair2/ENB_APP/MESSAGES/V2/progran.proto @@ -4,6 +4,7 @@ package protocol; import "stats_messages.proto"; import "header.proto"; import "time_common.proto"; +import "config_messages.proto"; import "controller_commands.proto"; message progran_message { @@ -16,7 +17,13 @@ message progran_message { prp_stats_reply stats_reply_msg = 5; prp_sf_trigger sf_trigger_msg = 6; prp_ul_sr_info ul_sr_info_msg = 7; - prp_dl_mac_config dl_mac_config_msg = 8; + prp_enb_config_request enb_config_request = 8; + prp_enb_config_reply enb_config_reply = 9; + prp_ue_config_request ue_config_request = 10; + prp_ue_config_reply ue_config_reply = 11; + prp_lc_config_request lc_config_request = 12; + prp_lc_config_reply lc_config_reply = 13; + prp_dl_mac_config dl_mac_config_msg = 14; } } @@ -108,6 +115,37 @@ message prp_ul_sr_info { repeated uint32 rnti = 3; } +// +// eNB configuration messages +// +message prp_enb_config_request { + optional prp_header header = 1; +} + +message prp_enb_config_reply { + optional prp_header header = 1; + optional uint32 eNB_id = 2; // Unique id to distinguish the eNB + repeated prp_cell_config cell_config = 3; +} + +message prp_ue_config_request { + optional prp_header header = 1; +} + +message prp_ue_config_reply { + optional prp_header header = 1; + repeated prp_ue_config ue_config = 2; +} + +message prp_lc_config_request { + optional prp_header header = 1; +} + +message prp_lc_config_reply { + optional prp_header header = 1; + repeated prp_lc_ue_config lc_ue_config = 2; +} + // // Controller command messages // -- GitLab