Add SSB Case V3 vendor extension TLV to CONFIG.request pack/unpack and to utility functions
This commit is contained in:
committed by
francescomani
parent
0219e4d3c7
commit
f66a7b2108
@@ -1229,6 +1229,14 @@ uint8_t pack_nr_config_request(void *msg, uint8_t **ppWritePackedMsg, uint8_t *e
|
|||||||
// only increase if it was set
|
// only increase if it was set
|
||||||
numTLVs += pNfapiMsg->analog_beamforming_ve.analog_bf_vendor_ext.tl.tag == NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG;
|
numTLVs += pNfapiMsg->analog_beamforming_ve.analog_bf_vendor_ext.tl.tag == NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG;
|
||||||
|
|
||||||
|
retval &= pack_nr_tlv(NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG,
|
||||||
|
&(pNfapiMsg->ssb_table.case_v3),
|
||||||
|
ppWritePackedMsg,
|
||||||
|
end,
|
||||||
|
&pack_uint8_tlv_value);
|
||||||
|
|
||||||
|
numTLVs += pNfapiMsg->ssb_table.case_v3.tl.tag == NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG;
|
||||||
|
|
||||||
pNfapiMsg->num_tlv = numTLVs;
|
pNfapiMsg->num_tlv = numTLVs;
|
||||||
retval &= push8(pNfapiMsg->num_tlv, &pNumTLVFields, end);
|
retval &= push8(pNfapiMsg->num_tlv, &pNumTLVFields, end);
|
||||||
return retval;
|
return retval;
|
||||||
@@ -1391,10 +1399,13 @@ uint8_t unpack_nr_config_request(uint8_t **ppReadPackedMsg, uint8_t *end, void *
|
|||||||
#endif
|
#endif
|
||||||
{NFAPI_NR_FAPI_NUM_BEAMS_PERIOD_VENDOR_EXTENSION_TAG,
|
{NFAPI_NR_FAPI_NUM_BEAMS_PERIOD_VENDOR_EXTENSION_TAG,
|
||||||
&(pNfapiMsg->analog_beamforming_ve.num_beams_period_vendor_ext),
|
&(pNfapiMsg->analog_beamforming_ve.num_beams_period_vendor_ext),
|
||||||
&unpack_uint8_tlv_value},
|
&unpack_uint8_tlv_value},
|
||||||
{NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG,
|
{NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG,
|
||||||
&(pNfapiMsg->analog_beamforming_ve.analog_bf_vendor_ext),
|
&(pNfapiMsg->analog_beamforming_ve.analog_bf_vendor_ext),
|
||||||
&unpack_uint8_tlv_value},
|
&unpack_uint8_tlv_value},
|
||||||
|
{NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG,
|
||||||
|
&(pNfapiMsg->ssb_table.case_v3),
|
||||||
|
&unpack_uint8_tlv_value},
|
||||||
{NFAPI_NR_CONFIG_RSSI_MEASUREMENT_TAG, &(pNfapiMsg->measurement_config.rssi_measurement), &unpack_uint8_tlv_value},
|
{NFAPI_NR_CONFIG_RSSI_MEASUREMENT_TAG, &(pNfapiMsg->measurement_config.rssi_measurement), &unpack_uint8_tlv_value},
|
||||||
{NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG, NULL, &unpack_dbt_table_tlv_value},
|
{NFAPI_NR_CONFIG_BEAMFORMING_TABLE_TAG, NULL, &unpack_dbt_table_tlv_value},
|
||||||
{NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG, NULL, &unpack_pm_table_tlv_value},
|
{NFAPI_NR_CONFIG_PRECODING_TABLE_V6_TAG, NULL, &unpack_pm_table_tlv_value},
|
||||||
|
|||||||
@@ -240,6 +240,8 @@ bool eq_config_request(const nfapi_nr_config_request_scf_t *unpacked_req, const
|
|||||||
EQ_TLV(unpacked_req->ssb_table.ssb_beam_id_list[i].beam_id, req->ssb_table.ssb_beam_id_list[i].beam_id);
|
EQ_TLV(unpacked_req->ssb_table.ssb_beam_id_list[i].beam_id, req->ssb_table.ssb_beam_id_list[i].beam_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EQ_TLV(unpacked_req->ssb_table.case_v3, req->ssb_table.case_v3);
|
||||||
|
|
||||||
if (req->cell_config.frame_duplex_type.value == 1 /* TDD */) {
|
if (req->cell_config.frame_duplex_type.value == 1 /* TDD */) {
|
||||||
EQ_TLV(unpacked_req->tdd_table.tdd_period, req->tdd_table.tdd_period);
|
EQ_TLV(unpacked_req->tdd_table.tdd_period, req->tdd_table.tdd_period);
|
||||||
|
|
||||||
@@ -786,6 +788,8 @@ void copy_config_request(const nfapi_nr_config_request_scf_t *src, nfapi_nr_conf
|
|||||||
COPY_TLV(dst->ssb_table.ssb_beam_id_list[i].beam_id, src->ssb_table.ssb_beam_id_list[i].beam_id);
|
COPY_TLV(dst->ssb_table.ssb_beam_id_list[i].beam_id, src->ssb_table.ssb_beam_id_list[i].beam_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COPY_TLV(dst->ssb_table.case_v3, src->ssb_table.case_v3);
|
||||||
|
|
||||||
if (src->cell_config.frame_duplex_type.value == 1 /* TDD */) {
|
if (src->cell_config.frame_duplex_type.value == 1 /* TDD */) {
|
||||||
COPY_TLV(dst->tdd_table.tdd_period, src->tdd_table.tdd_period);
|
COPY_TLV(dst->tdd_table.tdd_period, src->tdd_table.tdd_period);
|
||||||
|
|
||||||
@@ -1225,6 +1229,10 @@ void dump_config_request(const nfapi_nr_config_request_scf_t *msg)
|
|||||||
depth--;
|
depth--;
|
||||||
INDENTED_TLV_PRINT("ssPBCH Multiple Carriers in a Band", ssb_table->ss_pbch_multiple_carriers_in_a_band);
|
INDENTED_TLV_PRINT("ssPBCH Multiple Carriers in a Band", ssb_table->ss_pbch_multiple_carriers_in_a_band);
|
||||||
INDENTED_TLV_PRINT("Multiple Cells ssPBCH in a Carrier", ssb_table->multiple_cells_ss_pbch_in_a_carrier);
|
INDENTED_TLV_PRINT("Multiple Cells ssPBCH in a Carrier", ssb_table->multiple_cells_ss_pbch_in_a_carrier);
|
||||||
|
// Only print if it's filled
|
||||||
|
if (ssb_table->case_v3.tl.tag == NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG) {
|
||||||
|
INDENTED_TLV_PRINT("SSB Case V3", ssb_table->case_v3);
|
||||||
|
}
|
||||||
/* TDD Table */
|
/* TDD Table */
|
||||||
const nfapi_nr_tdd_table_t *tdd_table = &msg->tdd_table;
|
const nfapi_nr_tdd_table_t *tdd_table = &msg->tdd_table;
|
||||||
if (cell_config->frame_duplex_type.value == 1 /* TDD */) {
|
if (cell_config->frame_duplex_type.value == 1 /* TDD */) {
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
#define NFAPI_NR_NFAPI_TIMING_INFO_PERIOD_TAG 0x0120
|
#define NFAPI_NR_NFAPI_TIMING_INFO_PERIOD_TAG 0x0120
|
||||||
#define NFAPI_NR_FAPI_NUM_BEAMS_PERIOD_VENDOR_EXTENSION_TAG 0xA000
|
#define NFAPI_NR_FAPI_NUM_BEAMS_PERIOD_VENDOR_EXTENSION_TAG 0xA000
|
||||||
#define NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG 0xA001
|
#define NFAPI_NR_FAPI_ANALOG_BF_VENDOR_EXTENSION_TAG 0xA001
|
||||||
|
#define NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG 0xA002
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint16_t phy_id;
|
uint16_t phy_id;
|
||||||
|
|||||||
@@ -412,15 +412,15 @@ typedef struct
|
|||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
nfapi_uint16_tlv_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
|
nfapi_uint16_tlv_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
|
||||||
nfapi_uint8_tlv_t beta_pss;//PSS EPRE to SSS EPRE in a SS/PBCH block [38.213, sec 4.1] Values: 0 = 0dB
|
nfapi_uint8_tlv_t beta_pss;//PSS EPRE to SSS EPRE in a SS/PBCH block [38.213, sec 4.1] Values: 0 = 0dB
|
||||||
nfapi_uint8_tlv_t ssb_period;//SSB periodicity in msec Value: 0: ms5 1: ms10 2: ms20 3: ms40 4: ms80 5: ms160
|
nfapi_uint8_tlv_t ssb_period;//SSB periodicity in msec Value: 0: ms5 1: ms10 2: ms20 3: ms40 4: ms80 5: ms160
|
||||||
nfapi_uint8_tlv_t ssb_subcarrier_offset;//ssbSubcarrierOffset or 𝑘𝑆𝑆𝐵 (38.211, section 7.4.3.1) Value: 0->31
|
nfapi_uint8_tlv_t ssb_subcarrier_offset;//ssbSubcarrierOffset or 𝑘𝑆𝑆𝐵 (38.211, section 7.4.3.1) Value: 0->31
|
||||||
nfapi_uint32_tlv_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_uint32_tlv_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_list_t ssb_mask_list[2];
|
nfapi_nr_ssb_mask_list_t ssb_mask_list[2];
|
||||||
nfapi_nr_ssb_beam_id_list_t ssb_beam_id_list[64];
|
nfapi_nr_ssb_beam_id_list_t ssb_beam_id_list[64];
|
||||||
nfapi_uint8_tlv_t ss_pbch_multiple_carriers_in_a_band;//0 = disabled 1 = enabled
|
nfapi_uint8_tlv_t ss_pbch_multiple_carriers_in_a_band;//0 = disabled 1 = enabled
|
||||||
nfapi_uint8_tlv_t multiple_cells_ss_pbch_in_a_carrier;//Indicates that multiple cells will be supported in a single carrier 0 = disabled 1 = enabled
|
nfapi_uint8_tlv_t multiple_cells_ss_pbch_in_a_carrier;//Indicates that multiple cells will be supported in a single carrier 0 = disabled 1 = enabled
|
||||||
|
nfapi_uint8_tlv_t case_v3;
|
||||||
} nfapi_nr_ssb_table_t;
|
} nfapi_nr_ssb_table_t;
|
||||||
|
|
||||||
//table 3-26
|
//table 3-26
|
||||||
|
|||||||
@@ -176,6 +176,9 @@ static void fill_config_request_tlv_tdd_rand(nfapi_nr_config_request_scf_t *nfap
|
|||||||
nfapi_resp->num_tlv++;
|
nfapi_resp->num_tlv++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FILL_TLV(nfapi_resp->ssb_table.case_v3, NFAPI_NR_FAPI_SSB_CASE_VENDOR_EXTENSION_TAG, rand8());
|
||||||
|
nfapi_resp->num_tlv++;
|
||||||
|
|
||||||
FILL_TLV(nfapi_resp->tdd_table.tdd_period, NFAPI_NR_CONFIG_TDD_PERIOD_TAG, 6 /* ms5 */);
|
FILL_TLV(nfapi_resp->tdd_table.tdd_period, NFAPI_NR_CONFIG_TDD_PERIOD_TAG, 6 /* ms5 */);
|
||||||
nfapi_resp->num_tlv++;
|
nfapi_resp->num_tlv++;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user