diff --git a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h index cec382b95f14ca69adc6f63e090c6704148b4a88..a2348a56465bbd03df8dce0673936ed425f013cf 100644 --- a/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h +++ b/nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface_scf.h @@ -60,12 +60,24 @@ typedef enum { //3.3.1 PARAM +typedef struct { + nfapi_tl_t tl; + uint16_t value; + +} nfapi_nr_param_tlv_t; + //same with nfapi_param_request_t typedef struct { nfapi_p4_p5_message_header_t header; nfapi_vendor_extension_tlv_t vendor_extension; } nfapi_nr_param_request_t; +typedef enum { + NFAPI_NR_PARAM_MSG_OK = 0, + NFAPI_NR_PARAM_MSG_INVALID_STATE + +} nfapi_nr_param_errors_e; + typedef struct { nfapi_nr_param_errors_e error_code; //Number of TLVs contained in the message body. @@ -73,18 +85,9 @@ typedef struct { nfapi_nr_param_tlv_t TLV; } nfapi_nr_param_response_t; -typedef enum { - NFAPI_NR_PARAM_MSG_OK = 0, - NFAPI_NR_PARAM_MSG_INVALID_STATE - -} nfapi_nr_param_errors_e; //PARAM and CONFIG TLVs are used in the PARAM and CONFIG message exchanges, respectively -typedef struct { - nfapi_tl_t tl; - uint16_t value; -} nfapi_nr_param_tlv_t; //nfapi_nr_param_tlv_format_t cell param ~ measurement_param: @@ -145,6 +148,11 @@ typedef struct { #define NFAPI_NR_PARAM_TLV_MAX_PRACH_FD_OCCASIONS_IN_A_SLOT_TAG 0x0035 #define NFAPI_NR_PARAM_TLV_RSSI_MEASUREMENT_SUPPORT_TAG 0x0036 +typedef struct{ + uint16_t num_config_tlvs_to_report; + nfapi_nr_param_tlv_t tlv; +} nfapi_nr_num_config_tlvs_to_report; + typedef struct { uint16_t release_capability;//TAG 0x0001 @@ -154,11 +162,6 @@ typedef struct nfapi_nr_num_config_tlvs_to_report* num_config_tlvs_to_report_list; } nfapi_nr_cell_param_t; -typedef struct{ - uint16_t num_config_tlvs_to_report; - nfapi_nr_param_tlv_t tlv; -} nfapi_nr_num_config_tlvs_to_report; - //table 3-10 Carrier parameters typedef struct { @@ -252,16 +255,20 @@ typedef struct //-------------------------------------------// //3.3.2 CONFIG +typedef struct { + nfapi_tl_t tl; + uint16_t value; +} nfapi_nr_config_tlv_t; typedef struct { uint8_t number_of_tlvs; nfapi_nr_config_tlv_t tlv; } nfapi_nr_config_request_t; -typedef struct { - nfapi_tl_t tl; - uint16_t value; -} nfapi_nr_config_tlv_t; +typedef enum { + NFAPI_NR_CONFIG_MSG_OK = 0, + NFAPI_NR_CONFIG_MSG_INVALID_CONFIG //The configuration provided has missing mandatory TLVs, or TLVs that are invalid or unsupported in this state. +} nfapi_nr_config_errors_e; typedef struct { nfapi_nr_config_errors_e error_code; @@ -275,11 +282,6 @@ typedef struct { } nfapi_nr_config_response_t; -typedef enum { - NFAPI_NR_CONFIG_MSG_OK = 0, - NFAPI_NR_CONFIG_MSG_INVALID_CONFIG //The configuration provided has missing mandatory TLVs, or TLVs that are invalid or unsupported in this state. -} nfapi_nr_config_errors_e; - //nfapi_nr_config_tlv_format_t carrier config ~ precoding config: #define NFAPI_NR_CONFIG_DL_BANDWIDTH_TAG 0x1001 @@ -363,17 +365,12 @@ typedef struct } nfapi_nr_ssb_config_t; //table 3-24 + typedef struct { - uint8_t prach_sequence_length;//RACH sequence length. Long or Short sequence length. Only short sequence length is supported for FR2. [38.211, sec 6.3.3.1] Value: 0 = Long sequence 1 = Short sequence - uint8_t prach_sub_c_spacing;//Subcarrier spacing of PRACH. [38.211 sec 4.2] Value:0->4 - uint8_t restricted_set_config;//PRACH restricted set config Value: 0: unrestricted 1: restricted set type A 2: restricted set type B - uint8_t num_prach_fd_occasions;//Number of RACH frequency domain occasions. Corresponds to the parameter ð‘€ in [38.211, sec 6.3.3.2] which equals the higher layer parameter msg1FDM Value: 1,2,4,8 - nfapi_nr_num_prach_fd_occasions_t* num_prach_fd_occasions_list; - uint8_t ssb_per_rach;//SSB-per-RACH-occasion Value: 0: 1/8 1:1/4, 2:1/2 3:1 4:2 5:4, 6:8 7:16 - uint8_t prach_multiple_carriers_in_a_band;//0 = disabled 1 = enabled + uint8_t unused_root_sequences;//Unused root sequence or sequences per FD occasion. Required for noise estimation. -} nfapi_nr_prach_config_t; +} nfapi_nr_num_unused_root_sequences_t; typedef struct { @@ -389,11 +386,29 @@ typedef struct typedef struct { - uint8_t unused_root_sequences;//Unused root sequence or sequences per FD occasion. Required for noise estimation. + uint8_t prach_sequence_length;//RACH sequence length. Long or Short sequence length. Only short sequence length is supported for FR2. [38.211, sec 6.3.3.1] Value: 0 = Long sequence 1 = Short sequence + uint8_t prach_sub_c_spacing;//Subcarrier spacing of PRACH. [38.211 sec 4.2] Value:0->4 + uint8_t restricted_set_config;//PRACH restricted set config Value: 0: unrestricted 1: restricted set type A 2: restricted set type B + uint8_t num_prach_fd_occasions;//Number of RACH frequency domain occasions. Corresponds to the parameter ð‘€ in [38.211, sec 6.3.3.2] which equals the higher layer parameter msg1FDM Value: 1,2,4,8 + nfapi_nr_num_prach_fd_occasions_t* num_prach_fd_occasions_list; + uint8_t ssb_per_rach;//SSB-per-RACH-occasion Value: 0: 1/8 1:1/4, 2:1/2 3:1 4:2 5:4, 6:8 7:16 + uint8_t prach_multiple_carriers_in_a_band;//0 = disabled 1 = enabled -} nfapi_nr_num_unused_root_sequences_t; +} nfapi_nr_prach_config_t; //table 3-25 +typedef struct +{ + uint32_t ssb_mask;//Bitmap for actually transmitted SSB. MSB->LSB of first 32 bit number corresponds to SSB 0 to SSB 31 MSB->LSB of second 32 bit number corresponds to SSB 32 to SSB 63 Value for each bit: 0: not transmitted 1: transmitted + +} nfapi_nr_ssb_mask_size_2_t; + +typedef struct +{ + uint8_t beam_id[64];//BeamID for each SSB in SsbMask. For example, if SSB mask bit 26 is set to 1, then BeamId[26] will be used to indicate beam ID of SSB 26. Value: from 0 to 63 + +} nfapi_nr_ssb_mask_size_64_t; + typedef struct { uint16_t ssb_offset_point_a;//Offset of lowest subcarrier of lowest resource block used for SS/PBCH block. Given in PRB [38.211, section 4.4.4.2] Value: 0->2199 @@ -408,27 +423,14 @@ typedef struct } nfapi_nr_ssb_table_t; -typedef struct -{ - uint32_t ssb_mask;//Bitmap for actually transmitted SSB. MSB->LSB of first 32 bit number corresponds to SSB 0 to SSB 31 MSB->LSB of second 32 bit number corresponds to SSB 32 to SSB 63 Value for each bit: 0: not transmitted 1: transmitted - -} nfapi_nr_ssb_mask_size_2_t; - -typedef struct -{ - uint8_t beam_id[64];//BeamID for each SSB in SsbMask. For example, if SSB mask bit 26 is set to 1, then BeamId[26] will be used to indicate beam ID of SSB 26. Value: from 0 to 63 - -} nfapi_nr_ssb_mask_size_64_t; - //table 3-26 //? typedef struct { - uint8_t tdd_period;//DL UL Transmission Periodicity. Value:0: ms0p5 1: ms0p625 2: ms1 3: ms1p25 4: ms2 5: ms2p5 6: ms5 7: ms10 - nfapi_nr_max_tdd_periodicity_t* max_tdd_periodicity_list; + uint8_t slot_config;//For each symbol in each slot a uint8_t value is provided indicating: 0: DL slot 1: UL slot 2: Guard slot -} nfapi_nr_tdd_table_t; +} nfapi_nr_max_num_of_symbol_per_slot_t; typedef struct { @@ -438,9 +440,10 @@ typedef struct typedef struct { - uint8_t slot_config;//For each symbol in each slot a uint8_t value is provided indicating: 0: DL slot 1: UL slot 2: Guard slot + uint8_t tdd_period;//DL UL Transmission Periodicity. Value:0: ms0p5 1: ms0p625 2: ms1 3: ms1p25 4: ms2 5: ms2p5 6: ms5 7: ms10 + nfapi_nr_max_tdd_periodicity_t* max_tdd_periodicity_list; -} nfapi_nr_max_num_of_symbol_per_slot_t; +} nfapi_nr_tdd_table_t; //table 3-27 typedef struct @@ -478,6 +481,17 @@ typedef enum { } nfapi_nr_stop_errors_e; //3.3.5 PHY Notifications +typedef enum { + NFAPI_NR_PHY_API_MSG_OK =0x0, + NFAPI_NR_PHY_API_MSG_INVALID_STATE =0x1, + NFAPI_NR_PHY_API_MSG_INVALID_CONFIG =0x2, + NFAPI_NR_PHY_API_SFN_OUT_OF_SYNC =0X3, + NFAPI_NR_PHY_API_MSG_SLOR_ERR =0X4, + NFAPI_NR_PHY_API_MSG_BCH_MISSING =0X5, + NFAPI_NR_PHY_API_MSG_INVALID_SFN =0X6, + NFAPI_NR_PHY_API_MSG_UL_DCI_ERR =0X7, + NFAPI_NR_PHY_API_MSG_TX_ERR =0X8 +} nfapi_nr_phy_notifications_errors_e; typedef struct { uint16_t sfn; //0~1023 @@ -486,31 +500,11 @@ typedef struct { nfapi_nr_phy_notifications_errors_e error_code; } nfapi_nr_phy_notifications_error_indicate_t; -typedef enum { - NFAPI_NR_PHY_API_MSG_OK =0x0, - NFAPI_NR_PHY_API_MSG_INVALID_STATE =0x1, - NFAPI_NR_PHY_API_MSG_INVALID_CONFIG =0x2, - NFAPI_NR_PHY_API_SFN_OUT_OF_SYNC =0X03, - NFAPI_NR_PHY_API_MSG_SLOR_ERR =0X04, - NFAPI_NR_PHY_API_MSG_BCH_MISSING =0X05, - NFAPI_NR_PHY_API_MSG_INVALID_SFN =0X06, - NFAPI_NR_PHY_API_MSG_UL_DCI_ERR =0X07, - NFAPI_NR_PHY_API_MSG_TX_ERR =0X08 -} nfapi_nr_phy_notifications_errors_e; - - //-----------------------// //3.3.6 Storing Precoding and Beamforming Tables //table 3-32 //? -typedef struct { - uint16_t num_dig_beams; //0~65535 - uint16_t num_txrus; //0~65535 - nfapi_nr_dig_beam_t* dig_beam_list; - nfapi_nr_txru_t* txru_list; -} nfapi_nr_dbt_pdu_t; - typedef struct { uint16_t beam_idx; //0~65535 } nfapi_nr_dig_beam_t; @@ -520,25 +514,33 @@ typedef struct { uint16_t dig_beam_weight_Im; } nfapi_nr_txru_t; -//? table 3-33 typedef struct { - uint16_t pm_idx; //0~65535 - nfapi_nr_num_layers_t* num_layers_list; //0~65535 - nfapi_nr_num_ant_ports_t* num_ant_ports_list; -} nfapi_nr_pm_pdu_t; + uint16_t num_dig_beams; //0~65535 + uint16_t num_txrus; //0~65535 + nfapi_nr_dig_beam_t* dig_beam_list; + nfapi_nr_txru_t* txru_list; +} nfapi_nr_dbt_pdu_t; -typedef struct { - uint16_t numLayers; //0~65535 - nfapi_nr_num_ant_ports_t* num_ant_ports_list; -} nfapi_nr_num_layers_t; +//table 3-33 +//? typedef struct { uint16_t num_ant_ports; int16_t precoder_weight_Re; int16_t precoder_weight_Im; } nfapi_nr_num_ant_ports_t; -// Section 3.4 +typedef struct { + uint16_t numLayers; //0~65535 + nfapi_nr_num_ant_ports_t* num_ant_ports_list; +} nfapi_nr_num_layers_t; + +typedef struct { + uint16_t pm_idx; //0~65535 + nfapi_nr_num_layers_t* num_layers_list; //0~65535 + //nfapi_nr_num_ant_ports_t* num_ant_ports_list; +} nfapi_nr_pm_pdu_t; +// Section 3.4 #endif