diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index eb9474e6709e4b1f618ccb39d6d1d11884a19cc9..2a847b30737f77922eb2a27dbc16df792de1d99e 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -710,6 +710,8 @@ if (ENB_AGENT_SB_IF) ${PRPT_MSG_DIR}/stats_common.proto ${PRPT_MSG_DIR}/stats_messages.proto ${PRPT_MSG_DIR}/time_common.proto + ${PRPT_MSG_DIR}/controller_commands.proto + ${PRPT_MSG_DIR}/mac_primitives.proto ) set(PRPT_C_DIR ${protobuf_generated_dir}/${PRPTDIR}) @@ -722,6 +724,8 @@ if (ENB_AGENT_SB_IF) ${PRPT_C_DIR}/stats_common.pb-c.c ${PRPT_C_DIR}/stats_messages.pb-c.c ${PRPT_C_DIR}/time_common.pb-c.c + ${PRPT_C_DIR}/controller_commands.pb-c.c + ${PRPT_C_DIR}/mac_primitives.pb-c.c ) file(GLOB prpt_h ${PRPT_C_DIR}/*.h) diff --git a/openair2/ENB_APP/MESSAGES/V2/controller_commands.proto b/openair2/ENB_APP/MESSAGES/V2/controller_commands.proto new file mode 100644 index 0000000000000000000000000000000000000000..4ef8c0a370b2217549e56f48780a0f2927a82859 --- /dev/null +++ b/openair2/ENB_APP/MESSAGES/V2/controller_commands.proto @@ -0,0 +1,58 @@ +package protocol; + +import "mac_primitives.proto"; + +// +// Body of UE DL MAC scheduling configuration info +// + +message prp_dl_data { + optional uint32 rnti = 1; + optional prp_dl_dci dl_dci = 2; + repeated uint32 ce_bitmap = 3; // list of 2 MAC CEs, one for each TB + repeated prp_rlc_pdu rlc_pdu = 4; // list of parameters for the creation of RLC PDUs. One for each lcid + optional uint32 serv_cell_index = 5; + optional uint32 act_deact_ce = 6; //Hex content of MAC CE for Activation/Deactivation in CA +} + +// +// Body of the RAR scheduler configuration +// +message prp_dl_rar { + optional uint32 rnti = 1; + optional uint32 grant = 2; // The 20-bit UL grant. TS 36.213, sec 6.2 + optional prp_dl_dci rar_dci = 3; + optional uint32 carrier_index = 4; // The carrier index for the RAR +} + +// +// Body of the paging/broadcast configuration message +// + +message prp_dl_broadcast { + optional uint32 type = 1; // The PRBT_* values + optional uint32 index = 2; // Index of the broadcast message: + // 0 - SIB1, + // 1..31 - Six, + // 32..63 - PCCH (PCCH index obtained from prp_paging_info) + optional prp_dl_dci broad_dci = 3; + optional uint32 carrier_index = 4; // Index of the carrier for broadcast +} + +// +// Body of the OFDM symbol count message +// + +message prp_pdcch_ofdm_sym_count { + optional uint32 carrier_index = 1; + optional uint32 num_pdcch_ofdm_symbols = 2; +} + +// +// Types of commands related enums +// + +enum prp_broadcast_type { + PRBT_BCCH = 0; + PRBT_PCCH = 1; +} \ No newline at end of file diff --git a/openair2/ENB_APP/MESSAGES/V2/header.proto b/openair2/ENB_APP/MESSAGES/V2/header.proto index 8534d2f304db9ea7daf00dee90d68b0d8365fd7a..10a18ddcef7b095e07dfa5fb4ab534ce02255d99 100644 --- a/openair2/ENB_APP/MESSAGES/V2/header.proto +++ b/openair2/ENB_APP/MESSAGES/V2/header.proto @@ -21,5 +21,8 @@ enum prp_type { //Asynchronous messages PRPT_UL_SR_INFO = 6; + + //Controller command messages + PRPT_DL_MAC_CONFIG = 7; } diff --git a/openair2/ENB_APP/MESSAGES/V2/mac_primitives.proto b/openair2/ENB_APP/MESSAGES/V2/mac_primitives.proto new file mode 100644 index 0000000000000000000000000000000000000000..4378e6d6682b504f59ca6a5cde0a34839d26edd2 --- /dev/null +++ b/openair2/ENB_APP/MESSAGES/V2/mac_primitives.proto @@ -0,0 +1,76 @@ +package protocol; + +// +// Message containing the DL DCI info +// + +message prp_dl_dci { + optional uint32 rnti = 1; + optional uint32 res_alloc = 2; // Type of resource allocation + optional uint32 rb_bitmap = 3; // Bitmap for RB allocation + optional uint32 rb_shift = 4; // See TS 36.214, section 7.1.6.2 + repeated uint32 tbs_size = 5; // The size of each TBS + repeated uint32 mcs = 6; // The MCS of each TB + repeated uint32 ndi = 7; // New data indicator of each TB + repeated uint32 rv = 8; // Redundancy version of each TB + optional uint32 cce_index = 9; // CCE index used to send the DCI + optional uint32 aggr_level = 10; + optional uint32 precoding_info = 11; // 2 antenna ports:0..6, + // 4 antenna ports:0..50 + optional uint32 format = 12; // DCI format. A PRDCIF_* value + optional uint32 tpc = 13; // TS 36.213, sec 5.1.1.1 + optional uint32 harq_process = 14; // HARQ process ID + optional uint32 dai = 15; // TDD only + optional uint32 vrb_format = 16; // One of the PRVRBF_* values + optional uint32 tb_swap = 17; // Boolean. TB to codeword swap flag + optional uint32 sps_release = 18; // Flag value + optional uint32 pdcch_order = 19; + optional uint32 preamble_index = 20; // Only valid if pdcch_order = 1 + optional uint32 prach_mask_index = 21; // Only valid if pdcch_order = 1 + optional uint32 n_gap = 22; // One of the PRNGV_* values + optional uint32 tbs_idx = 23; // The TBS index for Format 1A + optional uint32 dl_power_offset = 24; // For format 1D + optional uint32 pdcch_power_offset = 25; // DL PDCCH power boosting in dB + optional uint32 cif_present = 26; // Boolean. Indication of CIF field + optional uint32 cif = 27; // CIF for cross-carrier scheduling +} + +// +// Messages related to the creation of RLC PDUs +// + +message prp_rlc_pdu { + repeated prp_rlc_pdu_tb rlc_pdu_tb = 1; // list of parameters for the creation of RLC PDUs. One for each TB +} + +message prp_rlc_pdu_tb { + optional uint32 logical_channel_id = 1; + optional uint32 size = 2; // Maximum RLC PDU to be created in bytes +} + +// +// MAC content types related enums +// + +enum prp_dci_format { + PRDCIF_1 = 0; + PRDCIF_1A = 1; + PRDCIF_1B = 2; + PRDCIF_1C = 3; + PRDCIF_1D = 4; + PRDCIF_2 = 5; + PRDCIF_2A = 6; + PRDCIF_2B = 7; + PRDCIF_3 = 8; + PRDCIF_3A = 9; +} + +enum prp_vrb_format { + PRVRBF_LOCALIZED = 0; + PRVRBF_DISTRIBUTED = 1; +} + +enum prp_ngap_val { + PRNGV_1 = 0; + PRNGV_2 = 1; +} \ No newline at end of file diff --git a/openair2/ENB_APP/MESSAGES/V2/progran.proto b/openair2/ENB_APP/MESSAGES/V2/progran.proto index 730726aab4617e7b634d2e3d4d8b0e53b4e0c50a..5d0ec15518126a3245d1b1af1add69c190637dd6 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 "controller_commands.proto"; message progran_message { optional progran_direction msg_dir = 100; @@ -15,6 +16,7 @@ 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; } } @@ -106,6 +108,19 @@ message prp_ul_sr_info { repeated uint32 rnti = 3; } +// +// Controller command messages +// + +message prp_dl_mac_config { + optional prp_header header = 1; + optional uint32 sfn_sf = 2; + repeated prp_dl_data dl_ue_data = 3; + repeated prp_dl_rar dl_rar = 4; + repeated prp_dl_broadcast dl_broadcast = 5; + repeated prp_pdcch_ofdm_sym_count ofdm_sym = 6; // OFDM symbol count for each CC +} + // Extensions of the echo request and reply // messages for carrying a latency value in ms message prp_echo_request_latency {