RSRP tables in mac common
This commit is contained in:
@@ -36,6 +36,53 @@
|
|||||||
|
|
||||||
#define reserved 0xffff
|
#define reserved 0xffff
|
||||||
|
|
||||||
|
#define MIN_RSRP_VALUE -141
|
||||||
|
|
||||||
|
//Measured RSRP Values Table 10.1.16.1-1 from 36.133
|
||||||
|
//Stored all the upper limits[Max RSRP Value of corresponding index]
|
||||||
|
//stored -1 for invalid values
|
||||||
|
int L1_SSB_CSI_RSRP_measReport_mapping_38133_10_1_6_1_1[128] = {
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //0 - 9
|
||||||
|
-1, -1, -1, -1, -1, -1, -140, -139, -138, -137, //10 - 19
|
||||||
|
-136, -135, -134, -133, -132, -131, -130, -129, -128, -127, //20 - 29
|
||||||
|
-126, -125, -124, -123, -122, -121, -120, -119, -118, -117, //30 - 39
|
||||||
|
-116, -115, -114, -113, -112, -111, -110, -109, -108, -107, //40 - 49
|
||||||
|
-106, -105, -104, -103, -102, -101, -100, -99, -98, -97, //50 - 59
|
||||||
|
-96, -95, -94, -93, -92, -91, -90, -89, -88, -87, //60 - 69
|
||||||
|
-86, -85, -84, -83, -82, -81, -80, -79, -78, -77, //70 - 79
|
||||||
|
-76, -75, -74, -73, -72, -71, -70, -69, -68, -67, //80 - 89
|
||||||
|
-66, -65, -64, -63, -62, -61, -60, -59, -58, -57, //90 - 99
|
||||||
|
-56, -55, -54, -53, -52, -51, -50, -49, -48, -47, //100 - 109
|
||||||
|
-46, -45, -44, -44, -1, -1, -1, -1, -1, -1, //110 - 119
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1//120 - 127
|
||||||
|
};
|
||||||
|
|
||||||
|
//Differential RSRP values Table 10.1.6.1-2 from 36.133
|
||||||
|
//Stored the upper limits[MAX RSRP Value]
|
||||||
|
int diff_rsrp_ssb_csi_meas_10_1_6_1_2[16] = {
|
||||||
|
0, -2, -4, -6, -8, -10, -12, -14, -16, -18, //0 - 9
|
||||||
|
-20, -22, -24, -26, -28, -30 //10 - 15
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//returns the measured RSRP value (upper limit)
|
||||||
|
int get_measured_rsrp(uint8_t index) {
|
||||||
|
//if index is invalid returning minimum rsrp -140
|
||||||
|
if(index <= 15 || index >= 114)
|
||||||
|
return MIN_RSRP_VALUE;
|
||||||
|
|
||||||
|
return L1_SSB_CSI_RSRP_measReport_mapping_38133_10_1_6_1_1[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
//returns the differential RSRP value (upper limit)
|
||||||
|
int get_diff_rsrp(uint8_t index, int strongest_rsrp) {
|
||||||
|
if(strongest_rsrp != -1) {
|
||||||
|
return strongest_rsrp + diff_rsrp_ssb_csi_meas_10_1_6_1_2[index];
|
||||||
|
} else
|
||||||
|
return MIN_RSRP_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// start symbols for SSB types A,B,C,D,E
|
// start symbols for SSB types A,B,C,D,E
|
||||||
uint16_t symbol_ssb_AC[8]={2,8,16,22,30,36,44,50};
|
uint16_t symbol_ssb_AC[8]={2,8,16,22,30,36,44,50};
|
||||||
uint16_t symbol_ssb_BD[64]={4,8,16,20,32,36,44,48,60,64,72,76,88,92,100,104,144,148,156,160,172,176,184,188,200,204,212,216,228,232,240,244,284,288,
|
uint16_t symbol_ssb_BD[64]={4,8,16,20,32,36,44,48,60,64,72,76,88,92,100,104,144,148,156,160,172,176,184,188,200,204,212,216,228,232,240,244,284,288,
|
||||||
|
|||||||
@@ -148,6 +148,9 @@ uint16_t compute_pucch_prb_size(uint8_t format,
|
|||||||
uint8_t n_symb,
|
uint8_t n_symb,
|
||||||
uint8_t n_re_ctrl);
|
uint8_t n_re_ctrl);
|
||||||
|
|
||||||
|
int get_measured_rsrp(uint8_t index);
|
||||||
|
int get_diff_rsrp(uint8_t index, int strongest_rsrp);
|
||||||
|
|
||||||
int16_t get_N_RA_RB (int delta_f_RA_PRACH,int delta_f_PUSCH);
|
int16_t get_N_RA_RB (int delta_f_RA_PRACH,int delta_f_PUSCH);
|
||||||
|
|
||||||
void find_period_offest_SR (NR_SchedulingRequestResourceConfig_t *SchedulingReqRec, int *period, int *offset);
|
void find_period_offest_SR (NR_SchedulingRequestResourceConfig_t *SchedulingReqRec, int *period, int *offset);
|
||||||
|
|||||||
@@ -83,7 +83,6 @@ void nr_fill_nfapi_pucch(module_id_t mod_id,
|
|||||||
pucch->r_pucch);
|
pucch->r_pucch);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MIN_RSRP_VALUE -141
|
|
||||||
#define MAX_NUM_SSB 128
|
#define MAX_NUM_SSB 128
|
||||||
#define MAX_SSB_SCHED 8
|
#define MAX_SSB_SCHED 8
|
||||||
#define L1_RSRP_HYSTERIS 10 //considering 10 dBm as hysterisis for avoiding frequent SSB Beam Switching. !Fixme provide exact value if any
|
#define L1_RSRP_HYSTERIS 10 //considering 10 dBm as hysterisis for avoiding frequent SSB Beam Switching. !Fixme provide exact value if any
|
||||||
@@ -92,32 +91,6 @@ void nr_fill_nfapi_pucch(module_id_t mod_id,
|
|||||||
int ssb_index_sorted[MAX_NUM_SSB] = {0};
|
int ssb_index_sorted[MAX_NUM_SSB] = {0};
|
||||||
int ssb_rsrp_sorted[MAX_NUM_SSB] = {0};
|
int ssb_rsrp_sorted[MAX_NUM_SSB] = {0};
|
||||||
|
|
||||||
//Measured RSRP Values Table 10.1.16.1-1 from 36.133
|
|
||||||
//Stored all the upper limits[Max RSRP Value of corresponding index]
|
|
||||||
//stored -1 for invalid values
|
|
||||||
int L1_SSB_CSI_RSRP_measReport_mapping_38133_10_1_6_1_1[128] = {
|
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //0 - 9
|
|
||||||
-1, -1, -1, -1, -1, -1, -140, -139, -138, -137, //10 - 19
|
|
||||||
-136, -135, -134, -133, -132, -131, -130, -129, -128, -127, //20 - 29
|
|
||||||
-126, -125, -124, -123, -122, -121, -120, -119, -118, -117, //30 - 39
|
|
||||||
-116, -115, -114, -113, -112, -111, -110, -109, -108, -107, //40 - 49
|
|
||||||
-106, -105, -104, -103, -102, -101, -100, -99, -98, -97, //50 - 59
|
|
||||||
-96, -95, -94, -93, -92, -91, -90, -89, -88, -87, //60 - 69
|
|
||||||
-86, -85, -84, -83, -82, -81, -80, -79, -78, -77, //70 - 79
|
|
||||||
-76, -75, -74, -73, -72, -71, -70, -69, -68, -67, //80 - 89
|
|
||||||
-66, -65, -64, -63, -62, -61, -60, -59, -58, -57, //90 - 99
|
|
||||||
-56, -55, -54, -53, -52, -51, -50, -49, -48, -47, //100 - 109
|
|
||||||
-46, -45, -44, -44, -1, -1, -1, -1, -1, -1, //110 - 119
|
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1//120 - 127
|
|
||||||
};
|
|
||||||
|
|
||||||
//Differential RSRP values Table 10.1.6.1-2 from 36.133
|
|
||||||
//Stored the upper limits[MAX RSRP Value]
|
|
||||||
int diff_rsrp_ssb_csi_meas_10_1_6_1_2[16] = {
|
|
||||||
0, -2, -4, -6, -8, -10, -12, -14, -16, -18, //0 - 9
|
|
||||||
-20, -22, -24, -26, -28, -30 //10 - 15
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void nr_schedule_pucch(int Mod_idP,
|
void nr_schedule_pucch(int Mod_idP,
|
||||||
frame_t frameP,
|
frame_t frameP,
|
||||||
@@ -178,7 +151,7 @@ void compute_csi_bitlen(NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_info_t *UE_in
|
|||||||
|
|
||||||
for (csi_report_id=0; csi_report_id < csi_MeasConfig->csi_ReportConfigToAddModList->list.count; csi_report_id++){
|
for (csi_report_id=0; csi_report_id < csi_MeasConfig->csi_ReportConfigToAddModList->list.count; csi_report_id++){
|
||||||
struct NR_CSI_ReportConfig *csi_reportconfig = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
|
struct NR_CSI_ReportConfig *csi_reportconfig = csi_MeasConfig->csi_ReportConfigToAddModList->list.array[csi_report_id];
|
||||||
nr_csi_report_t *csi_report = &UE_info->csi_report_template[UE_id][csi_report_id];
|
nr_csi_report_t *csi_report = &UE_info->csi_report_template[UE_id][csi_report_id];
|
||||||
csi_ResourceConfigId=csi_reportconfig->resourcesForChannelMeasurement;
|
csi_ResourceConfigId=csi_reportconfig->resourcesForChannelMeasurement;
|
||||||
reportQuantity_type = csi_reportconfig->reportQuantity.present;
|
reportQuantity_type = csi_reportconfig->reportQuantity.present;
|
||||||
csi_report->reportQuantity_type = reportQuantity_type;
|
csi_report->reportQuantity_type = reportQuantity_type;
|
||||||
@@ -188,7 +161,7 @@ void compute_csi_bitlen(NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_info_t *UE_in
|
|||||||
if ( csi_resourceconfig->csi_ResourceConfigId != csi_ResourceConfigId)
|
if ( csi_resourceconfig->csi_ResourceConfigId != csi_ResourceConfigId)
|
||||||
continue;
|
continue;
|
||||||
else {
|
else {
|
||||||
uint8_t nb_ssb_resources =0;
|
uint8_t nb_ssb_resources = 0;
|
||||||
//Finding the CSI_RS or SSB Resources
|
//Finding the CSI_RS or SSB Resources
|
||||||
if (NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP == reportQuantity_type ||
|
if (NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP == reportQuantity_type ||
|
||||||
NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP == reportQuantity_type) {
|
NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP == reportQuantity_type) {
|
||||||
@@ -213,10 +186,10 @@ void compute_csi_bitlen(NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_info_t *UE_in
|
|||||||
*(csi_resourceconfig->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->csi_SSB_ResourceSetList->list.array[0])){
|
*(csi_resourceconfig->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->csi_SSB_ResourceSetList->list.array[0])){
|
||||||
|
|
||||||
///We can configure only one SSB resource set from spec 38.331 IE CSI-ResourceConfig
|
///We can configure only one SSB resource set from spec 38.331 IE CSI-ResourceConfig
|
||||||
nb_ssb_resources= csi_MeasConfig->csi_SSB_ResourceSetToAddModList->list.array[csi_ssb_idx]->csi_SSB_ResourceList.list.count;
|
nb_ssb_resources = csi_MeasConfig->csi_SSB_ResourceSetToAddModList->list.array[csi_ssb_idx]->csi_SSB_ResourceList.list.count;
|
||||||
csi_report->SSB_Index_list = csi_MeasConfig->csi_SSB_ResourceSetToAddModList->list.array[csi_ssb_idx]->csi_SSB_ResourceList.list.array;
|
csi_report->SSB_Index_list = csi_MeasConfig->csi_SSB_ResourceSetToAddModList->list.array[csi_ssb_idx]->csi_SSB_ResourceList.list.array;
|
||||||
csi_report->CSI_Index_list = NULL;
|
csi_report->CSI_Index_list = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else /*if (NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP == UE_info->csi_report_template[UE_id][csi_report_id].reportQuantity_type)*/{
|
} else /*if (NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP == UE_info->csi_report_template[UE_id][csi_report_id].reportQuantity_type)*/{
|
||||||
@@ -225,7 +198,7 @@ void compute_csi_bitlen(NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_info_t *UE_in
|
|||||||
*(csi_resourceconfig->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list.array[0])) {
|
*(csi_resourceconfig->csi_RS_ResourceSetList.choice.nzp_CSI_RS_SSB->nzp_CSI_RS_ResourceSetList->list.array[0])) {
|
||||||
|
|
||||||
///For periodic and semi-persistent CSI Resource Settings, the number of CSI-RS Resource Sets configured is limited to S=1 for spec 38.212
|
///For periodic and semi-persistent CSI Resource Settings, the number of CSI-RS Resource Sets configured is limited to S=1 for spec 38.212
|
||||||
nb_ssb_resources= csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList->list.array[csi_ssb_idx]->nzp_CSI_RS_Resources.list.count;
|
nb_ssb_resources = csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList->list.array[csi_ssb_idx]->nzp_CSI_RS_Resources.list.count;
|
||||||
csi_report->CSI_Index_list = csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList->list.array[csi_ssb_idx]->nzp_CSI_RS_Resources.list.array;
|
csi_report->CSI_Index_list = csi_MeasConfig->nzp_CSI_RS_ResourceSetToAddModList->list.array[csi_ssb_idx]->nzp_CSI_RS_Resources.list.array;
|
||||||
csi_report->SSB_Index_list = NULL;
|
csi_report->SSB_Index_list = NULL;
|
||||||
break;
|
break;
|
||||||
@@ -659,22 +632,6 @@ int checkTargetSSBInTCIStates_pdcchConfig(int ssb_index_t, int Mod_idP, int UE_i
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//returns the measured RSRP value (upper limit)
|
|
||||||
int get_measured_rsrp(uint8_t index) {
|
|
||||||
//if index is invalid returning minimum rsrp -140
|
|
||||||
if(index <= 15 || index >= 114)
|
|
||||||
return MIN_RSRP_VALUE;
|
|
||||||
|
|
||||||
return L1_SSB_CSI_RSRP_measReport_mapping_38133_10_1_6_1_1[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
//returns the differential RSRP value (upper limit)
|
|
||||||
int get_diff_rsrp(uint8_t index, int strongest_rsrp) {
|
|
||||||
if(strongest_rsrp != -1) {
|
|
||||||
return strongest_rsrp + diff_rsrp_ssb_csi_meas_10_1_6_1_2[index];
|
|
||||||
} else
|
|
||||||
return MIN_RSRP_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//identifies the target SSB Beam index
|
//identifies the target SSB Beam index
|
||||||
//keeps the required date for PDCCH and PDSCH TCI state activation/deactivation CE consutruction globally
|
//keeps the required date for PDCCH and PDSCH TCI state activation/deactivation CE consutruction globally
|
||||||
|
|||||||
Reference in New Issue
Block a user