From 4d84f5cd872799deba619a32a2b264c82021540a Mon Sep 17 00:00:00 2001 From: Kujou <874864293@qq.com> Date: Wed, 14 Aug 2019 21:39:43 +0800 Subject: [PATCH] to test --- .vscode/launch.json | 28 + .../nfapi/public_inc/nfapi_nr_interface_scf.h | 934 ++++-------------- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c | 2 +- openair2/NR_PHY_INTERFACE/nfapi_5g_test.c | 20 + 4 files changed, 246 insertions(+), 738 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 openair2/NR_PHY_INTERFACE/nfapi_5g_test.c diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..6757ed47f6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,28 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "(gdb) Launch", + "type": "cppdbg", + "request": "launch", + "program": "enter program name, for example ${workspaceFolder}/a.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "/path/to/gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file 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 c62c316ab9..cec382b95f 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 @@ -1,17 +1,17 @@ /* nfapi_nr_interface.h ------------------- - AUTHOR : Raymond Knopp, Guy de Souza, WEI-TAI CHEN, Chenyu Zhang - COMPANY : EURECOM, NTUST - EMAIL : Lionel.Gauthier@eurecom.fr, desouza@eurecom.fr, kroempa@gmail.com + AUTHOR : Chenyu Zhang, Florian Kaltenberger + COMPANY : BUPT, EURECOM + EMAIL : octopus@bupt.edu.cn, florian.kaltenberger@eurecom.fr */ -#ifndef _NFAPI_NR_INTERFACE_H_ -#define _NFAPI_NR_INTERFACE_H_ +#ifndef _NFAPI_NR_INTERFACE_SCF_H_ +#define _NFAPI_NR_INTERFACE_SCF_H_ +#include "stddef.h" #include "nfapi_interface.h" - #define NFAPI_NR_MAX_NB_CCE_AGGREGATION_LEVELS 5 #define NFAPI_NR_MAX_NB_TCI_STATES_PDCCH 64 #define NFAPI_NR_MAX_NB_CORESETS 12 @@ -28,702 +28,9 @@ typedef struct { uint32_t value; } nfapi_uint32_tlv_t; -/*typedef struct { - nfapi_tl_t tl; - int64_t value; -} nfapi_int64_tlv_t;*/ - -typedef struct { - nfapi_tl_t tl; - uint64_t value; -} nfapi_uint64_tlv_t; - -// nFAPI enums -typedef enum { - NFAPI_NR_DL_CONFIG_DCI_DL_PDU_TYPE = 0, - NFAPI_NR_DL_CONFIG_BCH_PDU_TYPE, - NFAPI_NR_DL_CONFIG_DLSCH_PDU_TYPE, - NFAPI_NR_DL_CONFIG_PCH_PDU_TYPE, - NFAPI_NR_DL_CONFIG_NBCH_PDU_TYPE, - NFAPI_NR_DL_CONFIG_NPDCCH_PDU_TYPE, - NFAPI_NR_DL_CONFIG_NDLSCH_PDU_TYPE -} nfapi_nr_dl_config_pdu_type_e; - -//These TLVs are used exclusively by nFAPI -typedef struct -{ - // These TLVs are used to setup the transport connection between VNF and PNF - // nfapi_ipv4_address_t p7_vnf_address_ipv4; - // nfapi_ipv6_address_t p7_vnf_address_ipv6; - // nfapi_uint16_tlv_t p7_vnf_port; - - // nfapi_ipv4_address_t p7_pnf_address_ipv4; - // nfapi_ipv6_address_t p7_pnf_address_ipv6; - // nfapi_uint16_tlv_t p7_pnf_port; - - // // These TLVs are used to setup the transport connection between VNF and PNF - // nfapi_uint8_tlv_t dl_ue_per_sf; - // nfapi_uint8_tlv_t ul_ue_per_sf; - - // These TLVs are used by PNF to report its RF capabilities to the VNF software - nfapi_rf_bands_t rf_bands; - - // These TLVs are used by the VNF to configure the synchronization with the PNF. - // nfapi_uint8_tlv_t timing_window; - // nfapi_uint8_tlv_t timing_info_mode; - // nfapi_uint8_tlv_t timing_info_period; - - // These TLVs are used by the VNF to configure the RF in the PNF - // nfapi_uint16_tlv_t max_transmit_power; - nfapi_uint32_tlv_t nrarfcn; - - // nfapi_nmm_frequency_bands_t nmm_gsm_frequency_bands; - // nfapi_nmm_frequency_bands_t nmm_umts_frequency_bands; - // nfapi_nmm_frequency_bands_t nmm_lte_frequency_bands; - // nfapi_uint8_tlv_t nmm_uplink_rssi_supported; - -} nfapi_nr_nfapi_t; - -#define NFAPI_NR_NFAPI_P7_VNF_ADDRESS_IPV4_TAG 0x5100 -#define NFAPI_NR_NFAPI_P7_VNF_ADDRESS_IPV6_TAG 0x5101 -#define NFAPI_NR_NFAPI_P7_VNF_PORT_TAG 0x5102 -#define NFAPI_NR_NFAPI_P7_PNF_ADDRESS_IPV4_TAG 0x5103 -#define NFAPI_NR_NFAPI_P7_PNF_ADDRESS_IPV6_TAG 0x5104 -#define NFAPI_NR_NFAPI_P7_PNF_PORT_TAG 0x5105 - -#define NFAPI_NR_NFAPI_DOWNLINK_UES_PER_SUBFRAME_TAG 0x510A -#define NFAPI_NR_NFAPI_UPLINK_UES_PER_SUBFRAME_TAG 0x510B -#define NFAPI_NR_NFAPI_RF_BANDS_TAG 0x5114 -#define NFAPI_NR_NFAPI_TIMING_WINDOW_TAG 0x511E -#define NFAPI_NR_NFAPI_TIMING_INFO_MODE_TAG 0x511F -#define NFAPI_NR_NFAPI_TIMING_INFO_PERIOD_TAG 0x5120 -#define NFAPI_NR_NFAPI_MAXIMUM_TRANSMIT_POWER_TAG 0x5128 -#define NFAPI_NR_NFAPI_NRARFCN_TAG 0x5129 -#define NFAPI_NR_NFAPI_NMM_GSM_FREQUENCY_BANDS_TAG 0x5130 -#define NFAPI_NR_NFAPI_NMM_UMTS_FREQUENCY_BANDS_TAG 0x5131 -#define NFAPI_NR_NFAPI_NMM_LTE_FREQUENCY_BANDS_TAG 0x5132 -#define NFAPI_NR_NFAPI_NMM_UPLINK_RSSI_SUPPORTED_TAG 0x5133 - -// P5 Message Structures - -typedef struct{ - nfapi_tl_t tl; - uint16_t corset_ID; ///// L1 parameter 'CORESET-ID' - uint16_t freq_dom; ///// L1 parameter 'CORESET-freq-dom' - uint16_t duration; ///// L1 parameter 'CORESET-time-duration' - uint16_t reg_type; ///// L1 parameter 'CORESET-CCE-REG-mapping-type' - uint16_t reg_bundlesize; ///// L1 parameter 'CORESET-REG-bundle-size' - uint16_t interleaversize; ///// L1 parameter 'CORESET-interleaver-size' - uint16_t shiftindex; ///// L1 parameter 'CORESET-shift-index' - uint16_t precodergranularity; ///// L1 parameter 'CORESET-precoder-granuality' - uint16_t tci_stateId; ///// L1 parameter 'TCI-StatesPDCCH' - uint16_t tci_present; ///// L1 parameter 'TCI-PresentInDCI' - uint16_t dmrs_scramblingID; ///// L1 parameter 'PDCCH-DMRS-Scrambling-ID' -} nfapi_nr_ControlResourcesSet_t; - -typedef struct{ - nfapi_tl_t tl; - nfapi_nr_ControlResourcesSet_t coreset; - uint16_t monitoringSlotPeriodicityAndOffset; ///// L1 parameters 'Montoring-periodicity-PDCCH-slot' - uint16_t monitoringSymbolsWithinSlot; ///// L1 parameter 'Montoring-symbols-PDCCH-within-slot' - uint16_t nrofCand_aggLevel1; ///// L1 parameter 'Aggregation-level-1' - uint16_t nrofCand_aggLevel2; ///// L1 parameter 'Aggregation-level-2' - uint16_t nrofCand_aggLevel4; ///// L1 parameter 'Aggregation-level-4' - uint16_t nrofCand_aggLevel8; ///// L1 parameter 'Aggregation-level-8' - uint16_t nrofCand_aggLevel16; ///// L1 parameter 'Aggregation-level-16' - uint16_t sfi_agg_fmt2_0; ///// L1 parameters 'SFI-Num-PDCCH-cand' and 'SFI-Aggregation-Level' - uint16_t monitoringperiodicity_fmt2_3; ///// L1 parameter 'SRS-monitoring-periodicity' - uint16_t nrof_candidates_fmt_2_3; ///// L1 parameter 'SRS-Num-PDCCH-cand' -} nfapi_nr_SearchSpace_t; - - -typedef struct { - nfapi_uint16_tlv_t numerology_index_mu; - nfapi_uint16_tlv_t duplex_mode; - nfapi_uint16_tlv_t dl_cyclic_prefix_type; - nfapi_uint16_tlv_t ul_cyclic_prefix_type; -} nfapi_nr_subframe_config_t; - -#define NFAPI_NR_SUBFRAME_CONFIG_DUPLEX_MODE_TAG 0x5001 -#define NFAPI_NR_SUBFRAME_CONFIG_PCFICH_POWER_OFFSET_TAG 0x5002 -#define NFAPI_NR_SUBFRAME_CONFIG_PB_TAG 0x5003 -#define NFAPI_NR_SUBFRAME_CONFIG_DL_CYCLIC_PREFIX_TYPE_TAG 0x5004 -#define NFAPI_NR_SUBFRAME_CONFIG_UL_CYCLIC_PREFIX_TYPE_TAG 0x5005 -#define NFAPI_NR_SUBFRAME_CONFIG_NUMEROLOGY_INDEX_MU_TAG 0x5006 - -typedef struct { - nfapi_uint16_tlv_t dl_carrier_bandwidth; - nfapi_uint16_tlv_t ul_carrier_bandwidth; - nfapi_uint16_tlv_t dl_bwp_subcarrierspacing; - nfapi_uint16_tlv_t ul_bwp_subcarrierspacing; - nfapi_uint16_tlv_t dl_locationandbandwidth; - nfapi_uint16_tlv_t ul_locationandbandwidth; - nfapi_uint16_tlv_t dl_absolutefrequencypointA; - nfapi_uint16_tlv_t ul_absolutefrequencypointA; - nfapi_uint16_tlv_t dl_offsettocarrier; - nfapi_uint16_tlv_t ul_offsettocarrier; - nfapi_uint16_tlv_t dl_subcarrierspacing; - nfapi_uint16_tlv_t ul_subcarrierspacing; - nfapi_uint16_tlv_t dl_specificcarrier_k0; - nfapi_uint16_tlv_t ul_specificcarrier_k0; - nfapi_uint16_tlv_t NIA_subcarrierspacing; -} nfapi_nr_rf_config_t; - -#define NFAPI_NR_RF_CONFIG_DL_CARRIER_BANDWIDTH_TAG 0x500A -#define NFAPI_NR_RF_CONFIG_UL_CARRIER_BANDWIDTH_TAG 0x500B -#define NFAPI_NR_RF_CONFIG_DL_SUBCARRIERSPACING_TAG 0x500C -#define NFAPI_NR_RF_CONFIG_UL_SUBCARRIERSPACING_TAG 0x500D - -typedef struct { - nfapi_uint16_tlv_t physical_cell_id; - nfapi_uint16_tlv_t half_frame_index; - nfapi_uint16_tlv_t ssb_subcarrier_offset; - nfapi_uint16_tlv_t ssb_sib1_position_in_burst; // in sib1 - nfapi_uint64_tlv_t ssb_scg_position_in_burst; // in servingcellconfigcommon - nfapi_uint16_tlv_t ssb_periodicity; - nfapi_uint16_tlv_t ss_pbch_block_power; - nfapi_uint16_tlv_t n_ssb_crb; - nfapi_uint16_tlv_t rmsi_pdcch_config; -} nfapi_nr_sch_config_t; - -#define NFAPI_NR_SCH_CONFIG_PHYSICAL_CELL_ID_TAG 0x501E -#define NFAPI_NR_SCH_CONFIG_HALF_FRAME_INDEX_TAG 0x501F -#define NFAPI_NR_SCH_CONFIG_SSB_SUBCARRIER_OFFSET_TAG 0x5020 -#define NFAPI_NR_SCH_CONFIG_SSB_POSITION_IN_BURST 0x5021 -#define NFAPI_NR_SCH_CONFIG_SSB_PERIODICITY 0x5022 -#define NFAPI_NR_SCH_CONFIG_SS_PBCH_BLOCK_POWER 0x5023 -#define NFAPI_NR_SCH_CONFIG_N_SSB_CRB 0x5024 - -typedef struct { - nfapi_uint16_tlv_t data_scrambling_id; - nfapi_uint16_tlv_t dmrs_typeA_position; - nfapi_uint16_tlv_t dmrs_additional_position; - nfapi_uint16_tlv_t dmrs_type; - nfapi_uint16_tlv_t dmrs_max_length; - nfapi_uint16_tlv_t mapping_type; - nfapi_uint16_tlv_t resource_allocation; - nfapi_uint16_tlv_t time_allocation_list; - nfapi_uint16_tlv_t mcs_table; - nfapi_uint16_tlv_t aggregation_factor; - nfapi_uint16_tlv_t prb_bundling_type; - nfapi_uint16_tlv_t rbg_size; - nfapi_uint16_tlv_t vrb_to_prb_interleaver; - nfapi_uint16_tlv_t code_block_groug_transmission; - nfapi_uint16_tlv_t x_overhead; - nfapi_uint16_tlv_t max_dci_codewords; - -} nfapi_nr_pdsch_config_t; -#define NFAPI_NR_PDSCH_CONFIG_TAG - - -typedef struct { - nfapi_uint16_tlv_t prach_RootSequenceIndex; ///// L1 parameter 'PRACHRootSequenceIndex' - nfapi_uint16_tlv_t prach_msg1_SubcarrierSpacing; ///// L1 parameter 'prach-Msg1SubcarrierSpacing' - nfapi_uint16_tlv_t restrictedSetConfig; - nfapi_uint16_tlv_t msg3_transformPrecoding; ///// L1 parameter 'msg3-tp' - /////////////////--------------------NR RACH-ConfigGeneric--------------------///////////////// - nfapi_uint16_tlv_t prach_ConfigurationIndex; ///// L1 parameter 'PRACHConfigurationIndex' - nfapi_uint16_tlv_t prach_msg1_FDM; ///// L1 parameter 'prach-FDM' - nfapi_uint16_tlv_t prach_msg1_FrequencyStart; ///// L1 parameter 'prach-frequency-start' - nfapi_uint16_tlv_t zeroCorrelationZoneConfig; - nfapi_uint16_tlv_t preambleReceivedTargetPower; -} nfapi_nr_rach_config_t; - -typedef struct { - nfapi_uint16_tlv_t groupHoppingEnabledTransformPrecoding; ///// L1 parameter 'Group-hopping-enabled-Transform-precoding' - nfapi_uint16_tlv_t msg3_DeltaPreamble; ///// L1 parameter 'Delta-preamble-msg3' - nfapi_uint16_tlv_t p0_NominalWithGrant; ///// L1 parameter 'p0-nominal-pusch-withgrant' - nfapi_uint16_tlv_t TimeDomainResourceAllocation_k2; ///// L1 parameter 'K2' - nfapi_uint16_tlv_t TimeDomainResourceAllocation_mappingType; ///// L1 parameter 'Mapping-type' -} nfapi_nr_pusch_config_t; - -typedef struct { - nfapi_uint16_tlv_t pucch_GroupHopping; ///// L1 parameter 'PUCCH-GroupHopping' - nfapi_uint16_tlv_t p0_nominal; ///// L1 parameter 'p0-nominal-pucch' -} nfapi_nr_pucch_config_t; - - -typedef struct { - nfapi_tl_t tl; - nfapi_nr_SearchSpace_t sib1searchSpace; - nfapi_nr_SearchSpace_t sibssearchSpace; - nfapi_nr_SearchSpace_t ra_SearchSpace; -}nfapi_nr_pdcch_config_t; - -typedef struct { -//NR TDD-UL-DL-ConfigCommon ///// L1 parameter 'UL-DL-configuration-common' - nfapi_uint16_tlv_t subcarrierspacing; ///// L1 parameter 'reference-SCS' - nfapi_uint16_tlv_t dl_ul_periodicity; ///// L1 parameter 'DL-UL-transmission-periodicity' - nfapi_uint16_tlv_t nrofDownlinkSlots; ///// L1 parameter 'number-of-DL-slots' - nfapi_uint16_tlv_t nrofDownlinkSymbols; ///// L1 parameter 'number-of-DL-symbols-common' - nfapi_uint16_tlv_t nrofUplinkSlots; ///// L1 parameter 'number-of-UL-slots' - nfapi_uint16_tlv_t nrofUplinkSymbols; ///// L1 parameter 'number-of-UL-symbols-common' -} nfapi_nr_tdd_ul_dl_config_t; - -typedef struct { - //RateMatchPattern is used to configure one rate matching pattern for PDSCH ///// L1 parameter 'Resource-set-cekk' - nfapi_uint16_tlv_t Match_Id; - nfapi_uint16_tlv_t patternType; - nfapi_uint16_tlv_t symbolsInResourceBlock; ///// L1 parameter 'rate-match-PDSCH-bitmap2 - nfapi_uint16_tlv_t periodicityAndPattern; ///// L1 parameter 'rate-match-PDSCH-bitmap3' - nfapi_uint16_tlv_t controlResourceSet; - nfapi_uint16_tlv_t subcarrierSpacing; ///// L1 parameter 'resource-pattern-scs' - nfapi_uint16_tlv_t mode; -} nfapi_nr_ratematchpattern_t; - -typedef struct { - //NR RateMatchPatternLTE-CRS - nfapi_uint16_tlv_t carrierfreqDL; ///// L1 parameter 'center-subcarrier-location' - nfapi_uint16_tlv_t dl_bandwidth; ///// L1 parameter 'BW' - nfapi_uint16_tlv_t nrofcrs_Ports; ///// L1 parameter 'rate-match-resources-numb-LTE-CRS-antenna-port' - nfapi_uint16_tlv_t v_Shift; ///// L1 parameter 'rate-match-resources-LTE-CRS-v-shift' - nfapi_uint16_tlv_t frame_Period; - nfapi_uint16_tlv_t frame_Offset; -} nfapi_nr_ratematchpattern_lte_crs_t; - -typedef struct { - nfapi_p4_p5_message_header_t header; - uint8_t num_tlv; - nfapi_nr_subframe_config_t subframe_config; - nfapi_nr_rf_config_t rf_config; - nfapi_nr_sch_config_t sch_config; - nfapi_nr_pdsch_config_t pdsch_config; - nfapi_nr_rach_config_t rach_config; - nfapi_nr_pusch_config_t pusch_config; - nfapi_nr_pucch_config_t pucch_config; - nfapi_nr_pdcch_config_t pdcch_config; - nfapi_nr_tdd_ul_dl_config_t tdd_ul_dl_config; - nfapi_nr_ratematchpattern_t ratematchpattern; - nfapi_nr_ratematchpattern_lte_crs_t ratematchpattern_lte_crs; - nfapi_nr_nfapi_t nfapi_config; - - nfapi_vendor_extension_tlv_t vendor_extension; -} nfapi_nr_config_request_t; - - - -typedef enum { - NFAPI_NR_DL_DCI_FORMAT_1_0 = 0, - NFAPI_NR_DL_DCI_FORMAT_1_1, - NFAPI_NR_DL_DCI_FORMAT_2_0, - NFAPI_NR_DL_DCI_FORMAT_2_1, - NFAPI_NR_DL_DCI_FORMAT_2_2, - NFAPI_NR_DL_DCI_FORMAT_2_3, - NFAPI_NR_UL_DCI_FORMAT_0_0, - NFAPI_NR_UL_DCI_FORMAT_0_1 -} nfapi_nr_dci_format_e; - -typedef enum { - NFAPI_NR_RNTI_new = 0, - NFAPI_NR_RNTI_C, - NFAPI_NR_RNTI_RA, - NFAPI_NR_RNTI_P, - NFAPI_NR_RNTI_CS, - NFAPI_NR_RNTI_TC, - NFAPI_NR_RNTI_SP_CSI, - NFAPI_NR_RNTI_SI, - NFAPI_NR_RNTI_SFI, - NFAPI_NR_RNTI_INT, - NFAPI_NR_RNTI_TPC_PUSCH, - NFAPI_NR_RNTI_TPC_PUCCH, - NFAPI_NR_RNTI_TPC_SRS -} nfapi_nr_rnti_type_e; - -typedef enum { - NFAPI_NR_USS_FORMAT_0_0_AND_1_0, - NFAPI_NR_USS_FORMAT_0_1_AND_1_1, -} nfapi_nr_uss_dci_formats_e; - -typedef enum { - NFAPI_NR_SEARCH_SPACE_TYPE_COMMON=0, - NFAPI_NR_SEARCH_SPACE_TYPE_UE_SPECIFIC -} nfapi_nr_search_space_type_e; - -typedef enum { - NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0=0, - NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_0A, - NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_1, - NFAPI_NR_COMMON_SEARCH_SPACE_TYPE_2 -} nfapi_nr_common_search_space_type_e; - -typedef enum { - NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE1=0, - NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE2, - NFAPI_NR_SSB_AND_CSET_MUX_PATTERN_TYPE3 -} nfapi_nr_ssb_and_cset_mux_pattern_type_e; - -typedef enum { - NFAPI_NR_CCE_REG_MAPPING_INTERLEAVED=0, - NFAPI_NR_CCE_REG_MAPPING_NON_INTERLEAVED -} nfapi_nr_cce_reg_mapping_type_e; - -typedef enum { - NFAPI_NR_CSET_CONFIG_MIB_SIB1=0, - NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG, // implicit assumption of coreset Id other than 0 - NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG_CSET_0 -} nfapi_nr_coreset_config_type_e; - -typedef enum { - NFAPI_NR_CSET_SAME_AS_REG_BUNDLE=0, - NFAPI_NR_CSET_ALL_CONTIGUOUS_RBS -} nfapi_nr_coreset_precoder_granularity_type_e; - -typedef enum { - NFAPI_NR_QCL_TYPE_A=0, - NFAPI_NR_QCL_TYPE_B, - NFAPI_NR_QCL_TYPE_C, - NFAPI_NR_QCL_TYPE_D -} nfapi_nr_qcl_type_e; - -typedef enum { - NFAPI_NR_SS_PERIODICITY_SL1=1, - NFAPI_NR_SS_PERIODICITY_SL2=2, - NFAPI_NR_SS_PERIODICITY_SL4=4, - NFAPI_NR_SS_PERIODICITY_SL5=5, - NFAPI_NR_SS_PERIODICITY_SL8=8, - NFAPI_NR_SS_PERIODICITY_SL10=10, - NFAPI_NR_SS_PERIODICITY_SL16=16, - NFAPI_NR_SS_PERIODICITY_SL20=20, - NFAPI_NR_SS_PERIODICITY_SL40=40, - NFAPI_NR_SS_PERIODICITY_SL80=80, - NFAPI_NR_SS_PERIODICITY_SL160=160, - NFAPI_NR_SS_PERIODICITY_SL320=320, - NFAPI_NR_SS_PERIODICITY_SL640=640, - NFAPI_NR_SS_PERIODICITY_SL1280=1280, - NFAPI_NR_SS_PERIODICITY_SL2560=2560 -} nfapi_nr_search_space_monitoring_periodicity_e; - -typedef enum { - NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_A=0, - NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_B, - NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_DEFAULT_C, - NFAPI_NR_PDSCH_TIME_DOMAIN_ALLOC_TYPE_ALLOC_LIST -} nfapi_nr_pdsch_time_domain_alloc_type_e; - -typedef enum { - NFAPI_NR_PDSCH_MAPPING_TYPE_A=0, - NFAPI_NR_PDSCH_MAPPING_TYPE_B -} nfapi_nr_pdsch_mapping_type_e; - -typedef enum { - NFAPI_NR_PDSCH_RBG_CONFIG_TYPE1=0, - NFAPI_NR_PDSCH_RBG_CONFIG_TYPE2 -} nfapi_nr_pdsch_rbg_config_type_e; - -typedef enum { - NFAPI_NR_PRG_GRANULARITY_2=2, - NFAPI_NR_PRG_GRANULARITY_4=4, - NFAPI_NR_PRG_GRANULARITY_WIDEBAND -} nfapi_nr_prg_granularity_e; - -typedef enum { - NFAPI_NR_PRB_BUNDLING_TYPE_STATIC=0, - NFAPI_NR_PRB_BUNDLING_TYPE_DYNAMIC -} nfapi_nr_prb_bundling_type_e; - -typedef enum { - NFAPI_NR_MCS_TABLE_QAM64_LOW_SE=0, - NFAPI_NR_MCS_TABLE_QAM256 -} nfapi_nr_pdsch_mcs_table_e; - -typedef enum { - NFAPI_NR_DMRS_TYPE1=0, - NFAPI_NR_DMRS_TYPE2 -} nfapi_nr_dmrs_type_e; - -// P7 Sub Structures - -typedef struct { - -nfapi_tl_t tl; - -uint8_t format_indicator; //1 bit -uint16_t frequency_domain_assignment; //up to 16 bits -uint8_t time_domain_assignment; // 4 bits -uint8_t frequency_hopping_flag; //1 bit - -uint8_t ra_preamble_index; //6 bits -uint8_t ss_pbch_index; //6 bits -uint8_t prach_mask_index; //4 bits - -uint8_t vrb_to_prb_mapping; //0 or 1 bit -uint8_t mcs; //5 bits -uint8_t ndi; //1 bit -uint8_t rv; //2 bits -uint8_t harq_pid; //4 bits -uint8_t dai; //0, 2 or 4 bits -uint8_t dai1; //1 or 2 bits -uint8_t dai2; //0 or 2 bits -uint8_t tpc; //2 bits -uint8_t pucch_resource_indicator; //3 bits -uint8_t pdsch_to_harq_feedback_timing_indicator; //0, 1, 2 or 3 bits - -uint8_t short_messages_indicator; //2 bits -uint8_t short_messages; //8 bits -uint8_t tb_scaling; //2 bits - -uint8_t carrier_indicator; //0 or 3 bits -uint8_t bwp_indicator; //0, 1 or 2 bits -uint8_t prb_bundling_size_indicator; //0 or 1 bits -uint8_t rate_matching_indicator; //0, 1 or 2 bits -uint8_t zp_csi_rs_trigger; //0, 1 or 2 bits -uint8_t transmission_configuration_indication; //0 or 3 bits -uint8_t srs_request; //2 bits -uint8_t cbgti; //CBG Transmission Information: 0, 2, 4, 6 or 8 bits -uint8_t cbgfi; //CBG Flushing Out Information: 0 or 1 bit -uint8_t dmrs_sequence_initialization; //0 or 1 bit - -uint8_t srs_resource_indicator; -uint8_t precoding_information; -uint8_t csi_request; -uint8_t ptrs_dmrs_association; -uint8_t beta_offset_indicator; //0 or 2 bits - -uint8_t slot_format_indicator_count; -uint8_t *slot_format_indicators; - -uint8_t pre_emption_indication_count; -uint16_t *pre_emption_indications; //14 bit - -uint8_t block_number_count; -uint8_t *block_numbers; - -uint8_t ul_sul_indicator; //0 or 1 bit -uint8_t antenna_ports; - -uint16_t reserved; //1_0/C-RNTI:10 bits, 1_0/P-RNTI: 6 bits, 1_0/SI-&RA-RNTI: 16 bits -uint16_t padding; - -} nfapi_nr_dl_config_dci_dl_pdu_rel15_t; - -//#define NFAPI_NR_DL_CONFIG_REQUEST_DCI_DL_PDU_REL15_TAG 0x???? - -typedef struct{ - nfapi_tl_t tl; - uint8_t coreset_id; - uint64_t frequency_domain_resources; - uint8_t duration; - uint8_t cce_reg_mapping_type; - uint8_t reg_bundle_size; - uint8_t interleaver_size; - uint8_t shift_index; - uint8_t precoder_granularity; - uint8_t tci_state_id; - uint8_t tci_present_in_dci; - uint32_t dmrs_scrambling_id; -} nfapi_nr_coreset_t; - -typedef struct{ - nfapi_tl_t tl; - uint8_t search_space_id; - uint8_t coreset_id; - uint8_t search_space_type; - uint8_t duration; - uint8_t css_formats_0_0_and_1_0; - uint8_t css_format_2_0; - uint8_t css_format_2_1; - uint8_t css_format_2_2; - uint8_t css_format_2_3; - uint8_t uss_dci_formats; - uint16_t srs_monitoring_periodicity; - uint16_t slot_monitoring_periodicity; - uint16_t slot_monitoring_offset; - uint16_t monitoring_symbols_in_slot; - uint16_t number_of_candidates[NFAPI_NR_MAX_NB_CCE_AGGREGATION_LEVELS]; -} nfapi_nr_search_space_t; - -typedef struct { - nfapi_tl_t tl; - uint16_t rnti; - uint8_t rnti_type; - uint8_t dci_format; - /// Number of CRB in BWP that this DCI configures - uint16_t n_RB_BWP; - uint8_t config_type; - uint8_t search_space_type; - uint8_t common_search_space_type; - uint8_t aggregation_level; - uint8_t n_rb; - uint8_t n_symb; - int8_t rb_offset; - uint8_t cr_mapping_type; - uint8_t reg_bundle_size; - uint8_t interleaver_size; - uint8_t shift_index; - uint8_t mux_pattern; - uint8_t precoder_granularity; - uint8_t first_slot; - uint8_t first_symbol; - uint8_t nb_ss_sets_per_slot; - uint8_t nb_slots; - uint8_t sfn_mod2; - uint16_t scrambling_id; - nfapi_bf_vector_t bf_vector; -} nfapi_nr_dl_config_pdcch_parameters_rel15_t; - -typedef struct { - nfapi_tl_t tl; - uint16_t length; - int16_t pdu_index; - uint16_t transmission_power; -} nfapi_nr_dl_config_bch_pdu_rel15_t; -#define NFAPI_NR_DL_CONFIG_REQUEST_BCH_PDU_REL15_TAG 0x5025 - -typedef struct { - nfapi_nr_dl_config_bch_pdu_rel15_t bch_pdu_rel15; -} nfapi_nr_dl_config_bch_pdu; - -typedef struct { - nfapi_tl_t tl; - uint16_t length; - uint8_t pdu_index; - uint16_t rnti; - uint16_t nb_mod_symbols; - uint8_t time_allocation_type; - uint8_t freq_allocation_type; - uint8_t start_prb; - uint8_t n_prb; - uint8_t start_symbol; - uint8_t nb_symbols; - uint8_t mcs_idx; - uint8_t ndi; - uint8_t nb_codewords; - uint8_t nb_layers; - uint16_t coding_rate; - uint8_t modulation; - uint8_t modulation_order; - uint16_t transport_block_size; - uint8_t nb_re_dmrs; - uint8_t time_alloc_list_flag; - uint8_t time_alloc_list; - uint8_t rbg_list; - uint8_t virtual_resource_block_assignment_flag; - uint32_t resource_block_coding; - uint8_t redundancy_version; - uint8_t transport_blocks; - uint8_t transmission_scheme; - uint8_t number_of_subbands; - uint8_t codebook_index[NFAPI_MAX_NUM_SUBBANDS]; - uint8_t ue_category_capacity; - uint8_t pa; - uint8_t delta_power_offset_index; - uint8_t ngap; - uint8_t transmission_mode; - uint8_t num_bf_prb_per_subband; - uint8_t num_bf_vector; - nfapi_bf_vector_t bf_vector[NFAPI_MAX_BF_VECTORS]; -}nfapi_nr_dl_config_dlsch_pdu_rel15_t; -#define NFAPI_NR_DL_CONFIG_REQUEST_DLSCH_PDU_REL15_TAG - -typedef struct { - nfapi_nr_dl_config_dlsch_pdu_rel15_t dlsch_pdu_rel15; -} nfapi_nr_dl_config_dlsch_pdu; - -typedef struct { - nfapi_tl_t tl; - nfapi_nr_search_space_t pagingSearchSpace; - nfapi_nr_coreset_t pagingControlResourceSets; -}nfapi_nr_dl_config_pch_pdu_rel15_t; - -typedef struct { - -} nfapi_nr_dl_config_nbch_pdu_rel15_t; - -typedef struct { - -} nfapi_nr_dl_config_npdcch_pdu_rel15_t; - -typedef struct { - -} nfapi_nr_dl_config_ndlsch_pdu_rel15_t; - -typedef struct { - nfapi_nr_dl_config_dci_dl_pdu_rel15_t dci_dl_pdu_rel15; - nfapi_nr_dl_config_pdcch_parameters_rel15_t pdcch_params_rel15; -} nfapi_nr_dl_config_dci_dl_pdu; - - -typedef struct { - uint8_t pdu_type; - uint8_t pdu_size; - - union { - nfapi_nr_dl_config_dci_dl_pdu dci_dl_pdu; - nfapi_nr_dl_config_bch_pdu_rel15_t bch_pdu_rel15; - nfapi_nr_dl_config_dlsch_pdu dlsch_pdu; - nfapi_nr_dl_config_pch_pdu_rel15_t pch_pdu_rel15; - nfapi_nr_dl_config_nbch_pdu_rel15_t nbch_pdu_rel15; - nfapi_nr_dl_config_npdcch_pdu_rel15_t npdcch_pdu_rel15; - nfapi_nr_dl_config_ndlsch_pdu_rel15_t ndlsch_pdu_rel15; - }; -} nfapi_nr_dl_config_request_pdu_t; - -typedef struct { - nfapi_tl_t tl; - uint8_t number_dci; - uint8_t number_pdu; - uint8_t number_pdsch_rnti; - nfapi_nr_dl_config_request_pdu_t *dl_config_pdu_list; -} nfapi_nr_dl_config_request_body_t; - -typedef struct { - nfapi_p7_message_header_t header; - uint16_t sfn_sf; - nfapi_nr_dl_config_request_body_t dl_config_request_body; - nfapi_vendor_extension_tlv_t vendor_extension; -} nfapi_nr_dl_config_request_t; - - -typedef enum {nr_pusch_freq_hopping_disabled = 0 , - nr_pusch_freq_hopping_enabled = 1 - } nr_pusch_freq_hopping_t; - -typedef struct{ - uint8_t aperiodicSRS_ResourceTrigger; -} nfapi_nr_ul_srs_config_t; - -typedef struct { - uint8_t bandwidth_part_ind; - uint16_t number_rbs; - uint16_t start_rb; - uint8_t frame_offset; - uint16_t number_symbols; - uint16_t start_symbol; - uint8_t nb_re_dmrs; - uint8_t length_dmrs; - nr_pusch_freq_hopping_t pusch_freq_hopping; - uint8_t mcs; - uint8_t Qm; - uint8_t ndi; - uint8_t rv; - int8_t accumulated_delta_PUSCH; - int8_t absolute_delta_PUSCH; - uint8_t n_layers; - uint8_t tpmi; - uint8_t n_dmrs_cdm_groups; - uint8_t dmrs_ports[4]; - uint8_t n_front_load_symb; - nfapi_nr_ul_srs_config_t srs_config; - uint8_t csi_reportTriggerSize; - uint8_t maxCodeBlockGroupsPerTransportBlock; - uint8_t ptrs_dmrs_association_port; - uint8_t beta_offset_ind; -} nfapi_nr_ul_config_ulsch_pdu_rel15_t; - -typedef struct { - uint16_t rnti; - nfapi_nr_ul_config_ulsch_pdu_rel15_t ulsch_pdu_rel15; -} nfapi_nr_ul_config_ulsch_pdu; - - - - - - +// 2019.8 // SCF222_5G-FAPI_PHY_SPI_Specificayion.pdf Section 3.2 -//typedef unsigned long int uint64_t; - //PHY API message types typedef enum { @@ -753,7 +60,7 @@ typedef enum { //3.3.1 PARAM -//same with nfapi_param_request_t ? +//same with nfapi_param_request_t typedef struct { nfapi_p4_p5_message_header_t header; nfapi_vendor_extension_tlv_t vendor_extension; @@ -769,12 +76,14 @@ typedef struct { 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: @@ -838,7 +147,7 @@ typedef struct { typedef struct { - uint16_t release_capability; + uint16_t release_capability;//TAG 0x0001 uint16_t phy_state; uint8_t skip_blank_dl_config; uint8_t skip_blank_ul_config; @@ -853,7 +162,7 @@ typedef struct{ //table 3-10 Carrier parameters typedef struct { - uint8_t cyclic_prefix; + uint8_t cyclic_prefix;//TAG 0x0006 uint8_t supported_subcarrier_spacings_dl; uint16_t supported_bandwidth_dl; uint8_t supported_subcarrier_spacings_ul; @@ -869,7 +178,7 @@ typedef struct uint8_t coreset_precoder_granularity_coreset; uint8_t pdcch_mu_mimo; uint8_t pdcch_precoder_cycling; - uint8_t max_pdcch_per_slot; + uint8_t max_pdcch_per_slot;//TAG 0x0010 } nfapi_nr_pdcch_param_t; @@ -884,25 +193,61 @@ typedef struct //table 3-13 PDSCH parameters typedef struct { - + uint8_t pdsch_mapping_type; + uint8_t pdsch_allocation_types; + uint8_t pdsch_vrb_to_prb_mapping; + uint8_t pdsch_cbg; + uint8_t pdsch_dmrs_config_types; + uint8_t pdsch_dmrs_max_length; + uint8_t pdsch_dmrs_additional_pos; + uint8_t max_pdsch_tbs_per_slot; + uint8_t max_number_mimo_layers_pdsch; + uint8_t supported_max_modulation_order_dl; + uint8_t max_mu_mimo_users_dl; + uint8_t pdsch_data_in_dmrs_symbols; + uint8_t premption_support;//TAG 0x001F + uint8_t pdsch_non_slot_support; + } nfapi_nr_pdsch_param_t; //table 3-14 typedef struct { - + uint8_t uci_mux_ulsch_in_pusch; + uint8_t uci_only_pusch; + uint8_t pusch_frequency_hopping; + uint8_t pusch_dmrs_config_types; + uint8_t pusch_dmrs_max_len; + uint8_t pusch_dmrs_additional_pos; + uint8_t pusch_cbg; + uint8_t pusch_mapping_type; + uint8_t pusch_allocation_types; + uint8_t pusch_vrb_to_prb_mapping; + //uint8 ? ↓ see table 3-14 + uint8_t pusch_max_ptrs_ports; + uint8_t max_pduschs_tbs_per_slot; + uint8_t max_number_mimo_layers_non_cb_pusch; + uint8_t supported_modulation_order_ul; + uint8_t max_mu_mimo_users_ul; + uint8_t dfts_ofdm_support; + uint8_t pusch_aggregation_factor;//TAG 0x0031 + } nfapi_nr_pusch_param_t; //table 3-15 typedef struct { - + uint8_t prach_long_formats; + uint8_t prach_short_formats; + uint8_t prach_restricted_sets; + uint8_t max_prach_fd_occasions_in_a_slot; + } nfapi_nr_prach_param_t; //table 3-16 typedef struct { - + uint8_t rssi_measurement_support; } nfapi_nr_measurement_param_t; //-------------------------------------------// @@ -920,77 +265,193 @@ typedef struct { typedef struct { nfapi_nr_config_errors_e error_code; - uint8_t number_of_invalid_tlvs; + uint8_t number_of_invalid_tlvs_that_can_only_be_configured_in_idle; uint8_t unmber_of_missing_tlvs; //? ↓ - nfapi_nr_config_tlv_t tlv; + nfapi_nr_config_tlv_t* tlv_invalid_list; + nfapi_nr_config_tlv_t* tlv_invalid_idle_list; + nfapi_nr_config_tlv_t* tlv_invalid_running_list; + nfapi_nr_config_tlv_t* tlv_missing_list; + } nfapi_nr_config_response_t; typedef enum { NFAPI_NR_CONFIG_MSG_OK = 0, - NFAPI_NR_CONFIG_MSG_INVALID_STATE + 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 +#define NFAPI_NR_CONFIG_DL_FREQUENCY_TAG 0x1002 +#define NFAPI_NR_CONFIG_DL_K0_TAG 0x1003 +#define NFAPI_NR_CONFIG_DL_GRID_SIZE_TAG 0x1004 +#define NFAPI_NR_CONFIG_NUM_TX_ANT_TAG 0x1005 +#define NFAPI_NR_CONFIG_UPLINK_BANDWIDTH_TAG 0x1006 +#define NFAPI_NR_CONFIG_UPLINK_FREQUENCY_TAG 0x1007 +#define NFAPI_NR_CONFIG_UL_K0_TAG 0x1008 +#define NFAPI_NR_CONFIG_UL_GRID_SIZE_TAG 0x1009 +#define NFAPI_NR_CONFIG_NUM_RX_ANT_TAG 0x100A +#define NFAPI_NR_CONFIG_FREQUENCY_SHIFT_7P5KHZ_TAG 0x100B + +#define NFAPI_NR_CONFIG_PHY_CELL_ID_TAG 0x100C +#define NFAPI_NR_CONFIG_FRAME_DUPLEX_TYPE_TAG 0x100D + +#define NFAPI_NR_CONFIG_SS_PBCH_POWER_TAG 0x100E +#define NFAPI_NR_CONFIG_BCH_PAYLOAD_TAG 0x100F +#define NFAPI_NR_CONFIG_SCS_COMMON_TAG 0x1010 + +#define NFAPI_NR_CONFIG_PRACH_SEQUENCE_LENGTH_TAG 0x1011 +#define NFAPI_NR_CONFIG_PRACH_SUB_C_SPACING_TAG 0x1012 +#define NFAPI_NR_CONFIG_RESTRICTED_SET_CONFIG_TAG 0x1013 +#define NFAPI_NR_CONFIG_NUM_PRACH_FD_OCCASIONS_TAG 0x1014 +#define NFAPI_NR_CONFIG_PRACH_ROOT_SEQUENCE_INDEX_TAG 0x1015 +#define NFAPI_NR_CONFIG_NUM_ROOT_SEQUENCES_TAG 0x1016 +#define NFAPI_NR_CONFIG_K1_TAG 0x1017 +#define NFAPI_NR_CONFIG_PRACH_ZERO_CORR_CONF_TAG 0x1018 +#define NFAPI_NR_CONFIG_NUM_UNUSED_ROOT_SEQUENCES_TAG 0x1019 +#define NFAPI_NR_CONFIG_UNUSED_ROOT_SEQUENCES_TAG 0x101A +#define NFAPI_NR_CONFIG_SSB_PER_RACH_TAG 0x101B +#define NFAPI_NR_CONFIG_PRACH_MULTIPLE_CARRIERS_IN_A_BAND_TAG 0x101C + +#define NFAPI_NR_CONFIG_SSB_OFFSET_POINT_A_TAG 0x101D +#define NFAPI_NR_CONFIG_BETA_PSS_TAG 0x101E +#define NFAPI_NR_CONFIG_SSB_PERIOD_TAG 0x101F +#define NFAPI_NR_CONFIG_SSB_SUBCARRIER_OFFSET_TAG 0x1020 +#define NFAPI_NR_CONFIG_MIB_TAG 0x1021 +#define NFAPI_NR_CONFIG_SSB_MASK_TAG 0x1022 +#define NFAPI_NR_CONFIG_BEAM_ID_TAG 0x1023 +#define NFAPI_NR_CONFIG_SS_PBCH_MULTIPLE_CARRIERS_IN_A_BAND_TAG 0x1024 +#define NFAPI_NR_CONFIG_MULTIPLE_CELLS_SS_PBCH_IN_A_CARRIER_TAG 0x1025 +#define NFAPI_NR_CONFIG_TDD_PERIOD_TAG 0x1026 +#define NFAPI_NR_CONFIG_SLOT_CONFIG_TAG 0x1027 + +#define NFAPI_NR_CONFIG_RSSI_MEASUREMENT_TAG 0x1028 + //table 3-21 typedef struct { - -} nfapi_nr_carrier_config_t; + uint16_t dl_bandwidth;//Carrier bandwidth for DL in MHz [38.104, sec 5.3.2] Values: 5, 10, 15, 20, 25, 30, 40,50, 60, 70, 80,90,100,200,400 + uint32_t dl_frequency; //Absolute frequency of DL point A in KHz [38.104, sec5.2 and 38.211 sec 4.4.4.2] Value: 450000 -> 52600000 + uint16_t dl_k0[5];//π‘˜_{0}^{πœ‡} for each of the numerologies [38.211, sec 5.3.1] Value: 0 ->23699 + uint16_t dl_grid_size[5];//Grid size 𝑁_{π‘”π‘Ÿπ‘–π‘‘}^{𝑠𝑖𝑧𝑒,πœ‡} for each of the numerologies [38.211, sec 4.4.2] Value: 0->275 0 = this numerology not used + uint16_t num_tx_ant;//Number of Tx antennas + uint16_t uplink_bandwidth;//Carrier bandwidth for UL in MHz. [38.104, sec 5.3.2] Values: 5, 10, 15, 20, 25, 30, 40,50, 60, 70, 80,90,100,200,400 + uint32_t uplink_frequency;//Absolute frequency of UL point A in KHz [38.104, sec5.2 and 38.211 sec 4.4.4.2] Value: 450000 -> 52600000 + uint16_t ul_k0[5];//π‘˜0 πœ‡ for each of the numerologies [38.211, sec 5.3.1] Value: : 0 ->23699 + uint16_t ul_grid_size[5];//Grid size π‘π‘”π‘Ÿπ‘–π‘‘ 𝑠𝑖𝑧𝑒,πœ‡ for each of the numerologies [38.211, sec 4.4.2]. Value: 0->275 0 = this numerology not used + uint16_t num_rx_ant;// + uint8_t frequency_shift_7p5khz;//Indicates presence of 7.5KHz frequency shift. Value: 0 = false 1 = true + +} nfapi_nr_carrier_config_t; //table 3-22 typedef struct { - + uint8_t phy_cell_id;//Physical Cell ID, 𝑁_{𝐼𝐷}^{𝑐𝑒𝑙𝑙} [38.211, sec 7.4.2.1] Value: 0 ->1007 + uint8_t frame_duplex_type;//Frame duplex type Value: 0 = FDD 1 = TDD + } nfapi_nr_cell_config_t; //table 3-23 typedef struct { - + uint32_t ss_pbch_power;//SSB Block Power Value: TBD (-60..50 dBm) + uint8_t bch_payload;//Defines option selected for generation of BCH payload, see Table 3-13 (v0.0.011 Value: 0: MAC generates the full PBCH payload 1: PHY generates the timing PBCH bits 2: PHY generates the full PBCH payload + uint8_t scs_common;//subcarrierSpacing for common, used for initial access and broadcast message. [38.211 sec 4.2] Value:0->3 + } 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 + } nfapi_nr_prach_config_t; +typedef struct +{ + uint8_t num_prach_fd_occasions; + uint16_t prach_root_sequence_index;//Starting logical root sequence index, 𝑖, equivalent to higher layer parameter prach-RootSequenceIndex [38.211, sec 6.3.3.1] Value: 0 -> 837 + uint8_t num_root_sequences;//Number of root sequences for a particular FD occasion that are required to generate the necessary number of preambles + uint16_t k1;//Frequency offset (from UL bandwidth part) for each FD. [38.211, sec 6.3.3.2] Value: from 0 to 272 + uint8_t prach_zero_corr_conf;//PRACH Zero CorrelationZone Config which is used to dervive 𝑁𝑐𝑠 [38.211, sec 6.3.3.1] Value: from 0 to 15 + uint8_t num_unused_root_sequences;//Number of unused sequences available for noise estimation per FD occasion. At least one unused root sequence is required per FD occasion. + nfapi_nr_num_unused_root_sequences_t* num_unused_root_sequences_list; + +} nfapi_nr_num_prach_fd_occasions_t; + +typedef struct +{ + uint8_t unused_root_sequences;//Unused root sequence or sequences per FD occasion. Required for noise estimation. + +} nfapi_nr_num_unused_root_sequences_t; + //table 3-25 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 + uint8_t beta_pss;//PSS EPRE to SSS EPRE in a SS/PBCH block [38.213, sec 4.1] Values: 0 = 0dB + uint8_t ssb_period;//SSB periodicity in msec Value: 0: ms5 1: ms10 2: ms20 3: ms40 4: ms80 5: ms160 + uint8_t ssb_subcarrier_offset;//ssbSubcarrierOffset or π‘˜π‘†π‘†π΅ (38.211, section 7.4.3.1) Value: 0->31 + uint32_t MIB;//MIB payload, where the 24 MSB are used and represent the MIB in [38.331 MIB IE] and represent 0 1 2 3 1 , , , ,..., Aβˆ’ a a a a a [38.212, sec 7.1.1] + nfapi_nr_ssb_mask_size_2_t* ssb_mask_size_2_list;//2 + nfapi_nr_ssb_mask_size_64_t* ssb_mask_size_64_list;//64 + uint8_t ss_pbch_multiple_carriers_in_a_band;//0 = disabled 1 = enabled + uint8_t multiple_cells_ss_pbch_in_a_carrier;//Indicates that multiple cells will be supported in a single carrier 0 = disabled 1 = enabled + } nfapi_nr_ssb_table_t; -//table 3-26 typedef struct { - -} nfapi_nr_tdd_tablr_t; + 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; + +} nfapi_nr_tdd_table_t; + +typedef struct +{ + nfapi_nr_max_num_of_symbol_per_slot_t* max_num_of_symbol_per_slot_list; + +} nfapi_nr_max_tdd_periodicity_t; + +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 + +} nfapi_nr_max_num_of_symbol_per_slot_t; //table 3-27 typedef struct { - + uint8_t rssi_measurement;//RSSI measurement unit. See Table 3-16 for RSSI definition. Value: 0: Do not report RSSI 1: dBm 2: dBFS + } nfapi_nr_measurement_config_t; -//table 3-32 -typedef struct -{ - -} nfapi_nr_beamforming_table_t; - -//table 3-33 -typedef struct -{ - -} nfapi_nr_precoding_table_t; - //------------------------------// //3.3.3 START -// ? typedef struct { nfapi_p4_p5_message_header_t header; nfapi_vendor_extension_tlv_t vendor_extension; @@ -1002,13 +463,11 @@ typedef enum { //3.3.4 STOP -// ? typedef struct { nfapi_p4_p5_message_header_t header; nfapi_vendor_extension_tlv_t vendor_extension; } nfapi_nr_stop_request_t; -// ? typedef struct { nfapi_p4_p5_message_header_t header; nfapi_vendor_extension_tlv_t vendor_extension; @@ -1043,6 +502,8 @@ typedef enum { //-----------------------// //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 @@ -1079,6 +540,5 @@ typedef struct { // Section 3.4 -//3.4.1 #endif diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c index 02c27930d3..1c5a809129 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c @@ -435,7 +435,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, } // Phytest scheduling/ option not activated because of pending bug - + /*if (slotP==2) nr_schedule_css_dlsch_phytest(module_idP, frameP, slotP);*/ diff --git a/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c b/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c new file mode 100644 index 0000000000..29fe8daffd --- /dev/null +++ b/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c @@ -0,0 +1,20 @@ + + +//openair2/NR_PHY_INTERFACE/nfapi_5g_test.c +#include "nfapi_nr_interface_scf.h" + +#include // for printf + +int main ( int argc, char** argv) +{ + nfapi_nr_cell_param_t nfapi_nr_cell_param_test; + nfapi_nr_num_config_tlvs_to_report* num_config_tlvs_to_report_list; + nfapi_nr_cell_param_test.num_config_tlvs_to_report_list = num_config_tlvs_to_report_list; + nfapi_nr_cell_param_test.phy_state = 0; + nfapi_nr_cell_param_test.release_capability = 0; + nfapi_nr_cell_param_test.skip_blank_dl_config = 0; + nfapi_nr_cell_param_test.skip_blank_ul_config = 0; + + printf(" test nfapi \n"); + return 0; +}