Minimal TLVs to do Beamforming with Aerial 25.2
This commit is contained in:
committed by
freebacca
parent
582ce818d7
commit
3f3576bba6
@@ -1143,15 +1143,21 @@ uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *e
|
|||||||
&pack_uint8_tlv_value);
|
&pack_uint8_tlv_value);
|
||||||
numTLVs++;
|
numTLVs++;
|
||||||
// END Measurement Config
|
// END Measurement Config
|
||||||
#ifndef ENABLE_AERIAL
|
#ifdef ENABLE_AERIAL
|
||||||
// START Digital Beam Table (DBT) PDU
|
retval &= pack_nr_tlv(NFAPI_NR_CONFIG_NUM_TX_PORT_TAG,
|
||||||
if (pNfapiMsg->dbt_config.num_dig_beams != 0) {
|
&(pNfapiMsg->carrier_config.num_tx_port),
|
||||||
nfapi_nr_dbt_tlv_ve_t dbt_tlv = {.tl.tag = NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG, .value = pNfapiMsg->dbt_config};
|
ppWritePackedMsg,
|
||||||
pack_nr_tlv(NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG, &dbt_tlv, ppWritePackedMsg, end, &pack_dbt_table_tlv_value);
|
end,
|
||||||
numTLVs++;
|
&pack_uint16_tlv_value);
|
||||||
}
|
numTLVs++;
|
||||||
// END Digital Beam Table (DBT) PDU
|
|
||||||
|
|
||||||
|
retval &= pack_nr_tlv(NFAPI_NR_CONFIG_NUM_RX_PORT_TAG,
|
||||||
|
&(pNfapiMsg->carrier_config.num_rx_port),
|
||||||
|
ppWritePackedMsg,
|
||||||
|
end,
|
||||||
|
&pack_uint16_tlv_value);
|
||||||
|
numTLVs++;
|
||||||
|
#else
|
||||||
// START Precoding Matrix (PM) PDU
|
// START Precoding Matrix (PM) PDU
|
||||||
if (pNfapiMsg->pmi_list.num_pm_idx != 0) {
|
if (pNfapiMsg->pmi_list.num_pm_idx != 0) {
|
||||||
nfapi_nr_pm_tlv_ve_t pm_tlv = {.tl.tag = NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG, .value = pNfapiMsg->pmi_list};
|
nfapi_nr_pm_tlv_ve_t pm_tlv = {.tl.tag = NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG, .value = pNfapiMsg->pmi_list};
|
||||||
|
|||||||
@@ -332,6 +332,10 @@ typedef struct
|
|||||||
#define NFAPI_NR_CONFIG_TDD_TABLE 0x1035
|
#define NFAPI_NR_CONFIG_TDD_TABLE 0x1035
|
||||||
#define NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG 0x1043 // This tag was added in version 5 of the SCF222 standard ( Table 3-50 of SCF222.10.05 )
|
#define NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG 0x1043 // This tag was added in version 5 of the SCF222 standard ( Table 3-50 of SCF222.10.05 )
|
||||||
#define NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG 0x104B // This tag was added in version 6 of the SCF222 standard ( Table 3-52 of SCF222.10.06 )
|
#define NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG 0x104B // This tag was added in version 6 of the SCF222 standard ( Table 3-52 of SCF222.10.06 )
|
||||||
|
#ifdef ENABLE_AERIAL
|
||||||
|
#define NFAPI_NR_CONFIG_NUM_TX_PORT_TAG 0xA016
|
||||||
|
#define NFAPI_NR_CONFIG_NUM_RX_PORT_TAG 0xA017
|
||||||
|
#endif
|
||||||
|
|
||||||
//table 3-21
|
//table 3-21
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -347,6 +351,8 @@ typedef struct
|
|||||||
nfapi_uint16_tlv_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
|
nfapi_uint16_tlv_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
|
||||||
nfapi_uint16_tlv_t num_rx_ant;//
|
nfapi_uint16_tlv_t num_rx_ant;//
|
||||||
nfapi_uint8_tlv_t frequency_shift_7p5khz;//Indicates presence of 7.5KHz frequency shift. Value: 0 = false 1 = true
|
nfapi_uint8_tlv_t frequency_shift_7p5khz;//Indicates presence of 7.5KHz frequency shift. Value: 0 = false 1 = true
|
||||||
|
nfapi_uint16_tlv_t num_tx_port; //used by Aerial L1 when BF mode is enabled to signal the number of logical antenna ports
|
||||||
|
nfapi_uint16_tlv_t num_rx_port; //used by Aerial L1 when BF mode is enabled to signal the number of logical antenna ports
|
||||||
|
|
||||||
} nfapi_nr_carrier_config_t;
|
} nfapi_nr_carrier_config_t;
|
||||||
|
|
||||||
|
|||||||
@@ -691,7 +691,19 @@ static void config_common(gNB_MAC_INST *nrmac, const nr_mac_config_t *config, NR
|
|||||||
cfg->carrier_config.num_tx_ant.value);
|
cfg->carrier_config.num_tx_ant.value);
|
||||||
cfg->num_tlv++;
|
cfg->num_tlv++;
|
||||||
cfg->num_tlv++;
|
cfg->num_tlv++;
|
||||||
|
#ifdef ENABLE_AERIAL
|
||||||
|
if (nrmac->beam_info.beam_mode == PRECONFIGURED_BEAM_IDX) {
|
||||||
|
// if we are doing BF in Aerial we need these Custom TLV
|
||||||
|
cfg->carrier_config.num_rx_ant.value = 64; //TOOD: Read number of baseband ports (phy ant) from Config?
|
||||||
|
cfg->carrier_config.num_tx_ant.value = 64; //TOOD: Read number of baseband ports (phy ant) from Config?
|
||||||
|
}else{
|
||||||
|
// In CAT-A Mode these are equal to num_rx_ant (and Aerial ignores the value)
|
||||||
|
cfg->carrier_config.num_rx_port.value = pusch_AntennaPorts;
|
||||||
|
cfg->carrier_config.num_rx_port.tl.tag = NFAPI_NR_CONFIG_NUM_RX_PORT_TAG;
|
||||||
|
cfg->carrier_config.num_tx_port.value = num_pdsch_antenna_ports;
|
||||||
|
cfg->carrier_config.num_tx_port.tl.tag = NFAPI_NR_CONFIG_NUM_TX_PORT_TAG;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
// Frame structure configuration
|
// Frame structure configuration
|
||||||
uint8_t mu = frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
|
uint8_t mu = frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing;
|
||||||
if (cfg->cell_config.frame_duplex_type.value == TDD) {
|
if (cfg->cell_config.frame_duplex_type.value == TDD) {
|
||||||
|
|||||||
Reference in New Issue
Block a user