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;
|
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:
|
// 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"
|
// - "UE procedure for applying transform precoding on PUSCH"
|
||||||
uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP,
|
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_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);
|
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,
|
void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config,
|
||||||
frame_t frameP,
|
frame_t frameP,
|
||||||
NR_MIB_t *mib,
|
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;
|
mac->scc_SIB->uplinkConfigCommon->initialUplinkBWP.genericParameters;
|
||||||
|
|
||||||
uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
|
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];
|
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->group_or_sequence_hopping = srs_resource->groupOrSequenceHopping;
|
||||||
srs_pdu->resource_type = srs_resource->resourceType.present - 1;
|
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_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) {
|
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;
|
scc->uplinkConfigCommon->initialUplinkBWP->genericParameters;
|
||||||
|
|
||||||
uint16_t period = srs_period[srs_resource->resourceType.choice.periodic->periodicityAndOffset_p.present];
|
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];
|
int n_slots_frame = nr_slots_per_frame[ubwp.subcarrierSpacing];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user