Merge remote-tracking branch 'origin/fix_reverse_n_bits' into integration_2024_w21c
This commit is contained in:
@@ -38,18 +38,6 @@
|
|||||||
|
|
||||||
#define reserved 0xffff
|
#define reserved 0xffff
|
||||||
|
|
||||||
|
|
||||||
void reverse_n_bits(uint8_t *value, uint16_t bitlen) {
|
|
||||||
uint16_t j;
|
|
||||||
uint8_t i;
|
|
||||||
for(j = bitlen - 1,i = 0; j > i; j--, i++) {
|
|
||||||
if(((*value>>j)&1) != ((*value>>i)&1)) {
|
|
||||||
*value ^= (1<<j);
|
|
||||||
*value ^= (1<<i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//38.321 Table 6.1.3.1-1
|
//38.321 Table 6.1.3.1-1
|
||||||
const uint32_t NR_SHORT_BSR_TABLE[NR_SHORT_BSR_TABLE_SIZE] = {
|
const uint32_t NR_SHORT_BSR_TABLE[NR_SHORT_BSR_TABLE_SIZE] = {
|
||||||
0, 10, 14, 20, 28, 38, 53, 74,
|
0, 10, 14, 20, 28, 38, 53, 74,
|
||||||
|
|||||||
@@ -261,8 +261,6 @@ void csi_period_offset(NR_CSI_ReportConfig_t *csirep,
|
|||||||
struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
|
struct NR_CSI_ResourcePeriodicityAndOffset *periodicityAndOffset,
|
||||||
int *period, int *offset);
|
int *period, int *offset);
|
||||||
|
|
||||||
void reverse_n_bits(uint8_t *value, uint16_t bitlen);
|
|
||||||
|
|
||||||
bool set_dl_ptrs_values(NR_PTRS_DownlinkConfig_t *ptrs_config,
|
bool set_dl_ptrs_values(NR_PTRS_DownlinkConfig_t *ptrs_config,
|
||||||
uint16_t rbSize, uint8_t mcsIndex, uint8_t mcsTable,
|
uint16_t rbSize, uint8_t mcsIndex, uint8_t mcsTable,
|
||||||
uint8_t *K_ptrs, uint8_t *L_ptrs,uint8_t *portIndex,
|
uint8_t *K_ptrs, uint8_t *L_ptrs,uint8_t *portIndex,
|
||||||
|
|||||||
@@ -2450,8 +2450,7 @@ bool get_downlink_ack(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, PUCCH_sche
|
|||||||
pucch->pucch_resource = acknack_resource;
|
pucch->pucch_resource = acknack_resource;
|
||||||
LOG_D(MAC, "frame %d slot %d pucch acknack payload %d\n", frame, slot, o_ACK);
|
LOG_D(MAC, "frame %d slot %d pucch acknack payload %d\n", frame, slot, o_ACK);
|
||||||
}
|
}
|
||||||
reverse_n_bits(&o_ACK, number_harq_feedback);
|
pucch->ack_payload = reverse_bits(o_ACK, number_harq_feedback);
|
||||||
pucch->ack_payload = o_ACK;
|
|
||||||
pucch->n_harq = number_harq_feedback;
|
pucch->n_harq = number_harq_feedback;
|
||||||
|
|
||||||
return (number_harq_feedback > 0);
|
return (number_harq_feedback > 0);
|
||||||
@@ -2720,26 +2719,22 @@ uint8_t get_ssb_rsrp_payload(NR_UE_MAC_INST_t *mac,
|
|||||||
|
|
||||||
if (ssbri_bits > 0) {
|
if (ssbri_bits > 0) {
|
||||||
ssbi = ssb_rsrp[0][0];
|
ssbi = ssb_rsrp[0][0];
|
||||||
reverse_n_bits(&ssbi, ssbri_bits);
|
temp_payload = reverse_bits(ssbi, ssbri_bits);
|
||||||
temp_payload = ssbi;
|
|
||||||
bits += ssbri_bits;
|
bits += ssbri_bits;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t rsrp_idx = get_rsrp_index(ssb_rsrp[1][0]);
|
uint8_t rsrp_idx = get_rsrp_index(ssb_rsrp[1][0]);
|
||||||
reverse_n_bits(&rsrp_idx, 7);
|
temp_payload |= (reverse_bits(rsrp_idx, 7) << bits);
|
||||||
temp_payload |= (rsrp_idx<<bits);
|
|
||||||
bits += 7; // 7 bits for highest RSRP
|
bits += 7; // 7 bits for highest RSRP
|
||||||
|
|
||||||
// from the second SSB, differential report
|
// from the second SSB, differential report
|
||||||
for (int i=1; i<nb_meas; i++){
|
for (int i=1; i<nb_meas; i++){
|
||||||
ssbi = ssb_rsrp[0][i];
|
ssbi = ssb_rsrp[0][i];
|
||||||
reverse_n_bits(&ssbi, ssbri_bits);
|
temp_payload = reverse_bits(ssbi, ssbri_bits);
|
||||||
temp_payload = ssbi;
|
|
||||||
bits += ssbri_bits;
|
bits += ssbri_bits;
|
||||||
|
|
||||||
rsrp_idx = get_rsrp_diff_index(ssb_rsrp[1][0],ssb_rsrp[1][i]);
|
rsrp_idx = get_rsrp_diff_index(ssb_rsrp[1][0],ssb_rsrp[1][i]);
|
||||||
reverse_n_bits(&rsrp_idx, 4);
|
temp_payload |= (reverse_bits(rsrp_idx, 4) << bits);
|
||||||
temp_payload |= (rsrp_idx<<bits);
|
|
||||||
bits += 4; // 7 bits for highest RSRP
|
bits += 4; // 7 bits for highest RSRP
|
||||||
}
|
}
|
||||||
break; // resorce found
|
break; // resorce found
|
||||||
@@ -2756,7 +2751,7 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
|
|||||||
NR_CSI_MeasConfig_t *csi_MeasConfig) {
|
NR_CSI_MeasConfig_t *csi_MeasConfig) {
|
||||||
|
|
||||||
int n_bits = 0;
|
int n_bits = 0;
|
||||||
uint32_t temp_payload = 0;
|
uint64_t temp_payload = 0;
|
||||||
|
|
||||||
for (int csi_resourceidx = 0; csi_resourceidx < csi_MeasConfig->csi_ResourceConfigToAddModList->list.count; csi_resourceidx++) {
|
for (int csi_resourceidx = 0; csi_resourceidx < csi_MeasConfig->csi_ResourceConfigToAddModList->list.count; csi_resourceidx++) {
|
||||||
|
|
||||||
@@ -2796,17 +2791,15 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
|
|||||||
(mac->csirs_measurements.cqi<<cri_bitlen) |
|
(mac->csirs_measurements.cqi<<cri_bitlen) |
|
||||||
0;
|
0;
|
||||||
|
|
||||||
reverse_n_bits((uint8_t *)&temp_payload, n_bits);
|
temp_payload = reverse_bits(temp_payload, n_bits);
|
||||||
|
|
||||||
LOG_D(NR_MAC, "cri_bitlen = %d\n", cri_bitlen);
|
LOG_D(NR_MAC, "cri_bitlen = %d\n", cri_bitlen);
|
||||||
LOG_D(NR_MAC, "ri_bitlen = %d\n", ri_bitlen);
|
LOG_D(NR_MAC, "ri_bitlen = %d\n", ri_bitlen);
|
||||||
LOG_D(NR_MAC, "pmi_x1_bitlen = %d\n", pmi_x1_bitlen);
|
LOG_D(NR_MAC, "pmi_x1_bitlen = %d\n", pmi_x1_bitlen);
|
||||||
LOG_D(NR_MAC, "pmi_x2_bitlen = %d\n", pmi_x2_bitlen);
|
LOG_D(NR_MAC, "pmi_x2_bitlen = %d\n", pmi_x2_bitlen);
|
||||||
LOG_D(NR_MAC, "cqi_bitlen = %d\n", cqi_bitlen);
|
LOG_D(NR_MAC, "cqi_bitlen = %d\n", cqi_bitlen);
|
||||||
LOG_D(NR_MAC, "csi_part1_payload = 0x%x\n", temp_payload);
|
LOG_D(NR_MAC, "csi_part1_payload = 0x%lx\n", temp_payload);
|
||||||
|
|
||||||
LOG_D(NR_MAC, "n_bits = %d\n", n_bits);
|
LOG_D(NR_MAC, "n_bits = %d\n", n_bits);
|
||||||
LOG_D(NR_MAC, "csi_part1_payload = 0x%x\n", temp_payload);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2824,7 +2817,7 @@ uint8_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
|
|||||||
NR_CSI_MeasConfig_t *csi_MeasConfig) {
|
NR_CSI_MeasConfig_t *csi_MeasConfig) {
|
||||||
|
|
||||||
int n_bits = 0;
|
int n_bits = 0;
|
||||||
uint32_t temp_payload = 0;
|
uint64_t temp_payload = 0;
|
||||||
|
|
||||||
for (int csi_resourceidx = 0; csi_resourceidx < csi_MeasConfig->csi_ResourceConfigToAddModList->list.count; csi_resourceidx++) {
|
for (int csi_resourceidx = 0; csi_resourceidx < csi_MeasConfig->csi_ResourceConfigToAddModList->list.count; csi_resourceidx++) {
|
||||||
|
|
||||||
@@ -2858,14 +2851,14 @@ uint8_t get_csirs_RSRP_payload(NR_UE_MAC_INST_t *mac,
|
|||||||
temp_payload = mac->csirs_measurements.rsrp_dBm + 157;
|
temp_payload = mac->csirs_measurements.rsrp_dBm + 157;
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_n_bits((uint8_t *)&temp_payload, n_bits);
|
temp_payload = reverse_bits(temp_payload, n_bits);
|
||||||
|
|
||||||
LOG_D(NR_MAC, "cri_ssbri_bitlen = %d\n", cri_ssbri_bitlen);
|
LOG_D(NR_MAC, "cri_ssbri_bitlen = %d\n", cri_ssbri_bitlen);
|
||||||
LOG_D(NR_MAC, "rsrp_bitlen = %d\n", rsrp_bitlen);
|
LOG_D(NR_MAC, "rsrp_bitlen = %d\n", rsrp_bitlen);
|
||||||
LOG_D(NR_MAC, "diff_rsrp_bitlen = %d\n", diff_rsrp_bitlen);
|
LOG_D(NR_MAC, "diff_rsrp_bitlen = %d\n", diff_rsrp_bitlen);
|
||||||
|
|
||||||
LOG_D(NR_MAC, "n_bits = %d\n", n_bits);
|
LOG_D(NR_MAC, "n_bits = %d\n", n_bits);
|
||||||
LOG_D(NR_MAC, "csi_part1_payload = 0x%x\n", temp_payload);
|
LOG_D(NR_MAC, "csi_part1_payload = 0x%lx\n", temp_payload);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user