339 lines
9.6 KiB
Protocol Buffer
339 lines
9.6 KiB
Protocol Buffer
syntax = "proto2";
|
|
package protocol;
|
|
|
|
//
|
|
// Cell config related structures and enums
|
|
//
|
|
|
|
message flex_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 flex_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 flex_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 flex_hopping_mode {
|
|
FLHM_INTER = 0;
|
|
FLHM_INTERINTRA = 1;
|
|
}
|
|
|
|
enum flex_phich_resource {
|
|
FLPR_ONE_SIXTH = 0;
|
|
FLPR_HALF = 1;
|
|
FLPR_ONE = 2;
|
|
FLPR_TWO = 3;
|
|
}
|
|
|
|
enum flex_phich_duration {
|
|
FLPD_NORMAL = 0;
|
|
FLPD_EXTENDED = 1;
|
|
}
|
|
|
|
enum flex_ul_cyclic_prefix_length {
|
|
FLUCPL_NORMAL = 0;
|
|
FLUCPL_EXTENDED = 1;
|
|
}
|
|
|
|
enum flex_dl_cyclic_prefix_length {
|
|
FLDCPL_NORMAL = 0;
|
|
FLDCPL_EXTENDED = 1;
|
|
}
|
|
|
|
enum flex_duplex_mode {
|
|
FLDM_TDD = 0;
|
|
FLDM_FDD = 1;
|
|
}
|
|
|
|
enum flex_qam {
|
|
FLEQ_MOD_16QAM = 0;
|
|
FLEQ_MOD_64QAM = 1;
|
|
}
|
|
|
|
//
|
|
// Slice config related structures and enums
|
|
//
|
|
enum flex_dl_sorting {
|
|
|
|
CR_ROUND = 0; // Highest HARQ first
|
|
CR_SRB12 = 1; // Highest SRB1+2 first
|
|
CR_HOL = 2; // Highest HOL first
|
|
CR_LC = 3; // Greatest RLC buffer first
|
|
CR_CQI = 4; // Highest CQI first
|
|
CR_LCP = 5; // Highest LC priority first
|
|
}
|
|
|
|
enum flex_ul_sorting {
|
|
CRU_ROUND = 0; // Highest HARQ first
|
|
CRU_BUF = 1; // Highest BSR first
|
|
CRU_BTS = 2; // More bytes to schedule first
|
|
CRU_MCS = 3; // Highest MCS first
|
|
CRU_LCP = 4; // Highest LC priority first
|
|
CRU_HOL = 5; // Highest HOL first
|
|
}
|
|
|
|
enum flex_dl_accounting_policy {
|
|
POL_FAIR = 0;
|
|
POL_GREEDY = 1;
|
|
POL_NUM = 2;
|
|
}
|
|
|
|
enum flex_ul_accounting_policy {
|
|
POLU_FAIR = 0;
|
|
POLU_GREEDY = 1;
|
|
POLU_NUM = 2;
|
|
}
|
|
|
|
enum flex_slice_label {
|
|
xMBB = 0;
|
|
URLLC = 1;
|
|
mMTC = 2;
|
|
xMTC = 3;
|
|
Other = 4;
|
|
}
|
|
|
|
message flex_dl_slice {
|
|
optional uint32 id = 1;
|
|
optional flex_slice_label label = 2;
|
|
// should be between 0 and 100
|
|
optional uint32 percentage = 3;
|
|
// whether this slice should be exempted form interslice sharing
|
|
optional bool isolation = 4;
|
|
// increasing value means increasing prio
|
|
optional uint32 priority = 5;
|
|
// min and max RB to use (in frequency) in the range [0, N_RBG_MAX]
|
|
optional uint32 position_low = 6;
|
|
optional uint32 position_high = 7;
|
|
// maximum MCS to be allowed in this slice
|
|
optional uint32 maxmcs = 8;
|
|
repeated flex_dl_sorting sorting = 9;
|
|
optional flex_dl_accounting_policy accounting = 10;
|
|
optional string scheduler_name = 11;
|
|
}
|
|
|
|
message flex_ul_slice {
|
|
optional uint32 id = 1;
|
|
optional flex_slice_label label = 2;
|
|
// should be between 0 and 100
|
|
optional uint32 percentage = 3;
|
|
// whether this slice should be exempted form interslice sharing
|
|
optional bool isolation = 4;
|
|
// increasing value means increasing prio
|
|
optional uint32 priority = 5;
|
|
// RB start to use (in frequency) in the range [0, N_RB_MAX]
|
|
optional uint32 first_rb = 6;
|
|
// TODO RB number
|
|
//optional uint32 length_rb = 7;
|
|
// maximum MCS to be allowed in this slice
|
|
optional uint32 maxmcs = 8;
|
|
repeated flex_ul_sorting sorting = 9;
|
|
optional flex_ul_accounting_policy accounting = 10;
|
|
optional string scheduler_name = 11;
|
|
}
|
|
|
|
//
|
|
// UE config related structures and enums
|
|
//
|
|
|
|
message flex_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 flex_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 FLPT_SET_UE_CONFIG
|
|
optional uint32 implicit_release_after = 5; // number of empty transmissions before release of SPS
|
|
}
|
|
|
|
message flex_sr_config {
|
|
optional uint32 sr_action = 1; // Indicates if SR config should be changed or released
|
|
// One of the FLSRA_* enum values
|
|
optional uint32 sched_interval = 2; // SR scheduling interval in SF
|
|
optional uint32 dsr_trans_max = 3; // See TS 36.213
|
|
}
|
|
|
|
message flex_cqi_config {
|
|
optional uint32 cqi_action = 1; // Indicats if CQI changed or released.
|
|
// One of the FLSRA_* 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 flex_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 flex_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 flex_meas_gap_config_pattern {
|
|
FLMGCP_GP1 = 0;
|
|
FLMGCP_GP2 = 1;
|
|
FLMGCP_OFF = 2;
|
|
}
|
|
|
|
enum flex_setup_release_action {
|
|
FLSRA_SETUP = 0;
|
|
FLSRA_RELEASE = 1;
|
|
}
|
|
|
|
enum flex_ue_transmission_antenna {
|
|
FLUTA_NONE = 0;
|
|
FLUTA_OPEN_LOOP = 1;
|
|
FLUTA_CLOSED_LOOP = 2;
|
|
}
|
|
|
|
enum flex_aperiodic_cqi_report_mode {
|
|
FLACRM_RM12 = 0;
|
|
FLACRM_RM20 = 1;
|
|
FLACRM_RM22 = 2;
|
|
FLACRM_RM30 = 3;
|
|
FLACRM_RM31 = 4;
|
|
FLACRM_NONE = 5;
|
|
FLACRM_RM32_v1250 = 6;
|
|
FLACRM_RM10_v1310 = 7;
|
|
FLACRM_RM11_v1310 = 8;
|
|
}
|
|
|
|
enum flex_tdd_ack_nack_feedback_mode {
|
|
FLTANFM_BUNDLING = 0;
|
|
FLTANFM_MULTIPLEXING = 1;
|
|
}
|
|
|
|
//
|
|
// Logical channel config related structures and enums
|
|
//
|
|
|
|
message flex_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 FLLCD_* enum values
|
|
optional uint32 qos_bearer_type = 4;// GBR or NGBR bearer. One of the FLQBT_* 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_guaranteed_bitrate_DL = 9; // In bps (GBR only)
|
|
}
|
|
|
|
enum flex_lc_direction {
|
|
FLLCD_UL = 0;
|
|
FLLCD_DL = 1;
|
|
FLLCD_BOTH = 2;
|
|
}
|
|
|
|
enum flex_qos_bearer_type {
|
|
FLQBT_NON_GBR = 0;
|
|
FLQBT_GBR = 1;
|
|
}
|
|
|
|
enum flex_ue_state_change_type {
|
|
FLUESC_UPDATED = 0;
|
|
FLUESC_ACTIVATED = 1;
|
|
FLUESC_DEACTIVATED = 2;
|
|
FLUESC_MOVED = 3;
|
|
}
|
|
|
|
message flex_plmn {
|
|
optional uint32 mcc = 1;
|
|
optional uint32 mnc = 2;
|
|
optional uint32 mnc_length = 3;
|
|
}
|
|
|
|
//
|
|
// UE-related RRC configuration
|
|
|
|
message flex_measurement_info {
|
|
// arbitrary offset OFS, from TS
|
|
optional int64 offset_freq_serving = 1;
|
|
// arbitrary offset OFN
|
|
optional int64 offset_freq_neighbouring = 2;
|
|
// arbitrary offset OCS + OCN
|
|
repeated int64 cell_individual_offset = 3;
|
|
// Parameter k for exponential moving average calculation coefficient
|
|
// a = 1/2^(k/4) of all measured RSRPs
|
|
optional int64 filter_coefficient_rsrp = 4;
|
|
// Parameter k for RSRQ filtering
|
|
optional int64 filter_coefficient_rsrq = 5;
|
|
optional flex_measurement_event event = 6;
|
|
}
|
|
|
|
message flex_measurement_event {
|
|
optional flex_per_event periodical = 1;
|
|
optional flex_a1_event a1 = 2;
|
|
optional flex_a2_event a2 = 3;
|
|
optional flex_a3_event a3 = 4;
|
|
optional flex_a4_event a4 = 5;
|
|
optional flex_a5_event a5 = 6;
|
|
}
|
|
|
|
message flex_per_event {
|
|
optional int64 max_report_cells = 1;
|
|
}
|
|
|
|
message flex_a1_event {
|
|
optional int64 threshold_rsrp = 1;
|
|
optional int64 hysteresis = 2;
|
|
optional int64 time_to_trigger = 3;
|
|
optional int64 max_report_cells = 4;
|
|
}
|
|
|
|
message flex_a2_event {
|
|
optional int64 threshold_rsrp = 1;
|
|
optional int64 hysteresis = 2;
|
|
optional int64 time_to_trigger = 3;
|
|
optional int64 max_report_cells = 4;
|
|
}
|
|
|
|
message flex_a3_event {
|
|
optional int64 a3_offset = 1;
|
|
optional int32 report_on_leave = 2;
|
|
optional int64 hysteresis = 3;
|
|
optional int64 time_to_trigger = 4;
|
|
optional int64 max_report_cells = 5;
|
|
}
|
|
|
|
message flex_a4_event {
|
|
optional int64 threshold_rsrp = 1;
|
|
optional int64 hysteresis = 2;
|
|
optional int64 time_to_trigger = 3;
|
|
optional int64 max_report_cells = 4;
|
|
}
|
|
|
|
message flex_a5_event {
|
|
optional int64 threshold_rsrp_1 = 1;
|
|
optional int64 threshold_rsrp_2 = 2;
|
|
optional int64 hysteresis = 3;
|
|
optional int64 time_to_trigger = 4;
|
|
optional int64 max_report_cells = 5;
|
|
}
|