Implementation of get_nr_srs_offset function to remove the hardcoded offset sl40
This commit is contained in:
@@ -2495,6 +2495,59 @@ uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB) {
|
||||
return 4;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
*
|
||||
* NAME : get_nr_srs_offset
|
||||
*
|
||||
* PARAMETERS : periodicityAndOffset for SRS
|
||||
*
|
||||
* RETURN : the offset parameter for SRS
|
||||
*
|
||||
*********************************************************************/
|
||||
|
||||
uint16_t get_nr_srs_offset(NR_SRS_PeriodicityAndOffset_t periodicityAndOffset) {
|
||||
|
||||
switch(periodicityAndOffset.present) {
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl1:
|
||||
return periodicityAndOffset.choice.sl1;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl2:
|
||||
return periodicityAndOffset.choice.sl2;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl4:
|
||||
return periodicityAndOffset.choice.sl4;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl5:
|
||||
return periodicityAndOffset.choice.sl5;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl8:
|
||||
return periodicityAndOffset.choice.sl8;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl10:
|
||||
return periodicityAndOffset.choice.sl10;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl16:
|
||||
return periodicityAndOffset.choice.sl16;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl20:
|
||||
return periodicityAndOffset.choice.sl20;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl32:
|
||||
return periodicityAndOffset.choice.sl32;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl40:
|
||||
return periodicityAndOffset.choice.sl40;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl64:
|
||||
return periodicityAndOffset.choice.sl64;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl80:
|
||||
return periodicityAndOffset.choice.sl80;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl160:
|
||||
return periodicityAndOffset.choice.sl160;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl320:
|
||||
return periodicityAndOffset.choice.sl320;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl640:
|
||||
return periodicityAndOffset.choice.sl640;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl1280:
|
||||
return periodicityAndOffset.choice.sl1280;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_sl2560:
|
||||
return periodicityAndOffset.choice.sl2560;
|
||||
case NR_SRS_PeriodicityAndOffset_PR_NOTHING:
|
||||
LOG_W(NR_MAC,"NR_SRS_PeriodicityAndOffset_PR_NOTHING\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Set the transform precoding status according to 6.1.3 of 3GPP TS 38.214 version 16.3.0 Release 16:
|
||||
// - "UE procedure for applying transform precoding on PUSCH"
|
||||
uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP,
|
||||
|
||||
@@ -119,6 +119,8 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr
|
||||
uint8_t get_L_ptrs(uint8_t mcs1, uint8_t mcs2, uint8_t mcs3, uint8_t I_mcs, uint8_t mcs_table);
|
||||
uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB);
|
||||
|
||||
uint16_t get_nr_srs_offset(NR_SRS_PeriodicityAndOffset_t periodicityAndOffset);
|
||||
|
||||
void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config,
|
||||
frame_t frameP,
|
||||
NR_MIB_t *mib,
|
||||
|
||||
@@ -927,7 +927,7 @@ bool nr_ue_periodic_srs_scheduling(module_id_t mod_id, frame_t frame, slot_t slo
|
||||
mac->scc_SIB->uplinkConfigCommon->initialUplinkBWP.genericParameters;
|
||||
|
||||
uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
|
||||
uint16_t offset = srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.choice.sl40;
|
||||
uint16_t offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p);
|
||||
|
||||
int n_slots_frame = nr_slots_per_frame[ubwp.subcarrierSpacing];
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ void nr_configure_srs(nfapi_nr_srs_pdu_t *srs_pdu, int module_id, int CC_id, int
|
||||
srs_pdu->group_or_sequence_hopping = srs_resource->groupOrSequenceHopping;
|
||||
srs_pdu->resource_type = srs_resource->resourceType.present - 1;
|
||||
srs_pdu->t_srs = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
|
||||
srs_pdu->t_offset = srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.choice.sl40;
|
||||
srs_pdu->t_offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p);
|
||||
}
|
||||
|
||||
void nr_fill_nfapi_srs(int module_id, int CC_id, int UE_id, sub_frame_t slot, NR_SRS_Resource_t *srs_resource) {
|
||||
@@ -166,7 +166,7 @@ void nr_schedule_srs(int module_id, frame_t frame, sub_frame_t slot) {
|
||||
scc->uplinkConfigCommon->initialUplinkBWP->genericParameters;
|
||||
|
||||
uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
|
||||
uint16_t offset = srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.choice.sl40;
|
||||
uint16_t offset = get_nr_srs_offset(srs_resource->resourceType.choice.periodic->periodicityAndOffset_p);
|
||||
|
||||
int n_slots_frame = nr_slots_per_frame[ubwp.subcarrierSpacing];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user