UE: Add FAPI structure clean by every slot, update UL_CONFIG_REQ for PRACH, DL_CONFIG_REQ for DL-SCH and filling PHY parameter "dlsch", "dlsch_harq".:
This commit is contained in:
@@ -49,9 +49,10 @@
|
||||
/// UL_CONFIG_REQ
|
||||
#define FAPI_NR_UL_CONFIG_LIST_NUM 10
|
||||
|
||||
#define FAPI_NR_DL_CONFIG_TYPE_PRACH 0x01
|
||||
#define FAPI_NR_DL_CONFIG_TYPE_PUCCH 0x02
|
||||
#define FAPI_NR_DL_CONFIG_TYPE_PUSCH 0x03
|
||||
#define FAPI_NR_UL_CONFIG_TYPE_PRACH 0x01
|
||||
#define FAPI_NR_UL_CONFIG_TYPE_PUCCH 0x02
|
||||
#define FAPI_NR_UL_CONFIG_TYPE_PUSCH 0x03
|
||||
#define FAPI_NR_UL_CONFIG_TYPE_SRS 0x04
|
||||
|
||||
|
||||
#endif
|
||||
@@ -219,8 +219,20 @@ typedef struct {
|
||||
} fapi_nr_tx_request_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
} fapi_nr_ul_config_rach_pdu;
|
||||
uint8_t preamble_index;
|
||||
uint8_t prach_configuration_index;
|
||||
uint16_t preamble_length;
|
||||
uint8_t power_ramping_step;
|
||||
uint16_t preamble_received_target_power;
|
||||
uint8_t msg1_fdm;
|
||||
uint8_t msg1_frequency_start;
|
||||
uint8_t zero_correlation_zone_config;
|
||||
uint8_t subcarrier_spacing;
|
||||
uint8_t restrictedset_config;
|
||||
uint16_t root_sequence_index;
|
||||
uint16_t rsrp_threshold_ssb;
|
||||
uint16_t rsrp_threshold_sul;
|
||||
} fapi_nr_ul_config_prach_pdu;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -232,6 +244,8 @@ typedef struct {
|
||||
uint16_t number_symbols;
|
||||
uint16_t start_symbol;
|
||||
uint8_t mcs;
|
||||
uint8_t tpc_command;
|
||||
uint8_t rv;
|
||||
} fapi_nr_ul_config_pusch_pdu_rel15_t;
|
||||
|
||||
typedef struct {
|
||||
@@ -239,16 +253,20 @@ typedef struct {
|
||||
fapi_nr_ul_config_pusch_pdu_rel15_t ulsch_pdu_rel15;
|
||||
} fapi_nr_ul_config_pusch_pdu;
|
||||
|
||||
typedef struct {
|
||||
|
||||
} fapi_nr_ul_config_srs_pdu;
|
||||
|
||||
typedef struct {
|
||||
uint8_t pdu_type;
|
||||
union {
|
||||
fapi_nr_ul_config_rach_pdu prach_config_pdu;
|
||||
fapi_nr_ul_config_prach_pdu prach_config_pdu;
|
||||
fapi_nr_ul_config_pucch_pdu pucch_config_pdu;
|
||||
fapi_nr_ul_config_pusch_pdu ulsch_config_pdu;
|
||||
fapi_nr_ul_config_srs_pdu srs_config_pdu;
|
||||
};
|
||||
} fapi_nr_ul_config_request_pdu_t;
|
||||
|
||||
///
|
||||
typedef struct {
|
||||
uint32_t sfn_slot;
|
||||
uint8_t number_pdus;
|
||||
@@ -273,7 +291,6 @@ typedef struct {
|
||||
fapi_nr_dl_config_dci_dl_pdu_rel15_t dci_config_rel15;
|
||||
} fapi_nr_dl_config_dci_pdu;
|
||||
|
||||
//typedef fapi_nr_dci_pdu_rel15_t fapi_nr_dl_config_dlsch_pdu_rel15_t;
|
||||
typedef struct {
|
||||
uint16_t number_rbs;
|
||||
uint16_t start_rb;
|
||||
@@ -281,7 +298,9 @@ typedef struct {
|
||||
uint16_t start_symbol;
|
||||
uint8_t mcs;
|
||||
uint8_t rv;
|
||||
// to be check the fields needed to L1 with NR_DL_UE_HARQ_t and NR_UE_DLSCH_t
|
||||
uint8_t harq_pid;
|
||||
uint8_t ndi;
|
||||
// TODO: check the fields needed to L1 with NR_DL_UE_HARQ_t and NR_UE_DLSCH_t
|
||||
} fapi_nr_dl_config_dlsch_pdu_rel15_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -48,7 +48,8 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
|
||||
uint32_t i;
|
||||
|
||||
if(scheduled_response != NULL){
|
||||
NR_UE_PDCCH *pdcch_vars2 = PHY_vars_UE_g[module_id][cc_id]->pdcch_vars[0][0];
|
||||
PHY_VARS_NR_UE *ue = PHY_vars_UE_g[module_id][cc_id];
|
||||
NR_UE_PDCCH *pdcch_vars2 = ue->pdcch_vars[0][0];
|
||||
|
||||
if(scheduled_response->dl_config != NULL){
|
||||
fapi_nr_dl_config_request_t *dl_config = scheduled_response->dl_config;
|
||||
@@ -88,6 +89,22 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response){
|
||||
pdcch_vars2->coreset[i].pdcchDMRSScramblingID = dci_config->coreset.pdcch_dmrs_scrambling_id;
|
||||
}else{ //FAPI_NR_DL_CONFIG_TYPE_DLSCH
|
||||
// dlsch config pdu
|
||||
|
||||
fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_pdu = &dl_config->dl_config_list[i].dlsch_config_pdu.dlsch_config_rel15;
|
||||
NR_UE_DLSCH_t **dlsch = ue->dlsch[ue->current_thread_id[0]][0]; //nr_tti_rx
|
||||
NR_UE_DLSCH_t *dlsch0 = dlsch[0];
|
||||
NR_DL_UE_HARQ_t *dlsch0_harq = dlsch[0]->harq_processes[dlsch_pdu->harq_pid];
|
||||
|
||||
dlsch0->rnti = dl_config->dl_config_list[i].dlsch_config_pdu.rnti;
|
||||
dlsch0_harq->start_rb = dlsch_pdu->start_rb;
|
||||
dlsch0_harq->nb_rb = dlsch_pdu->number_rbs;
|
||||
dlsch0_harq->nb_symbols = dlsch_pdu->number_symbols;
|
||||
dlsch0_harq->nb_symbols = dlsch_pdu->number_symbols;
|
||||
dlsch0_harq->start_symbol = dlsch_pdu->start_symbol;
|
||||
dlsch0->current_harq_pid = dlsch_pdu->harq_pid;
|
||||
dlsch0->active = 1;
|
||||
dlsch0_harq->mcs = dlsch_pdu->mcs;
|
||||
dlsch0_harq->DCINdi = dlsch_pdu->ndi;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -91,8 +91,6 @@ typedef struct {
|
||||
fapi_nr_tx_request_t tx_request;
|
||||
fapi_nr_ul_config_request_t ul_config_request;
|
||||
fapi_nr_dl_config_request_t dl_config_request;
|
||||
fapi_nr_dci_indication_t dci_indication;
|
||||
fapi_nr_rx_indication_t rx_indication;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -475,9 +475,6 @@ NR_UE_L2_STATE_t nr_ue_scheduler(
|
||||
search_space_mask = search_space_mask | type0_pdcch;
|
||||
mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_dci_config.duration;
|
||||
}
|
||||
//if((mac->type0_pdcch_ss_sfn_c == SFN_C_EQ_SFN_SSB) && ( get_ssb_frame() )){
|
||||
// search_space_mask = search_space_mask | type0_pdcch;
|
||||
//}
|
||||
}
|
||||
if(mac->type0_pdcch_ss_mux_pattern == 2){
|
||||
// 38.213 Table 13-13, 13-14
|
||||
@@ -495,20 +492,8 @@ NR_UE_L2_STATE_t nr_ue_scheduler(
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
uint16_t rnti;
|
||||
|
||||
fapi_nr_coreset_t coreset;
|
||||
uint32_t duration;
|
||||
uint8_t aggregation_level;
|
||||
uint8_t number_of_candidates;
|
||||
uint16_t monitoring_symbols_within_slot;
|
||||
// DCI foramt-specific
|
||||
uint8_t format_2_0_number_of_candidates[5]; // aggregation level 1, 2, 4, 8, 16
|
||||
uint8_t format_2_3_monitorying_periodicity;
|
||||
uint8_t format_2_3_number_of_candidates;
|
||||
#endif
|
||||
fapi_nr_dl_config_request_t *dl_config = &mac->dl_config_request;
|
||||
// Type0 PDCCH search space
|
||||
if((search_space_mask & type0_pdcch) || ( mac->type0_pdcch_consecutive_slots != 0 )){
|
||||
mac->type0_pdcch_consecutive_slots = mac->type0_pdcch_consecutive_slots - 1;
|
||||
|
||||
@@ -582,7 +567,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fa
|
||||
}
|
||||
|
||||
// UL_CONFIG_REQ
|
||||
ul_config->ul_config_list[ul_config->number_pdus].pdu_type = FAPI_NR_DL_CONFIG_TYPE_PUSCH;
|
||||
ul_config->ul_config_list[ul_config->number_pdus].pdu_type = FAPI_NR_UL_CONFIG_TYPE_PUSCH;
|
||||
ul_config->ul_config_list[ul_config->number_pdus].ulsch_config_pdu.rnti = rnti;
|
||||
fapi_nr_ul_config_pusch_pdu_rel15_t *ulsch_config_pdu = &ul_config->ul_config_list[ul_config->number_pdus].ulsch_config_pdu.ulsch_pdu_rel15;
|
||||
ulsch_config_pdu->number_rbs = l_RB;
|
||||
@@ -590,6 +575,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fa
|
||||
ulsch_config_pdu->number_symbols = sliv_L;
|
||||
ulsch_config_pdu->start_symbol = sliv_S;
|
||||
ulsch_config_pdu->mcs = dci->mcs;
|
||||
|
||||
//ulsch0->harq_processes[dci->harq_process_number]->first_rb = start_RB;
|
||||
//ulsch0->harq_processes[dci->harq_process_number]->nb_rb = l_RB;
|
||||
//ulsch0->harq_processes[dci->harq_process_number]->mcs = dci->mcs;
|
||||
@@ -637,14 +623,8 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fa
|
||||
dlsch_config_pdu->number_symbols = sliv_L;
|
||||
dlsch_config_pdu->start_symbol = sliv_S;
|
||||
dlsch_config_pdu->mcs = dci->mcs;
|
||||
|
||||
|
||||
//pdlsch0_harq->nb_rb = l_RB;
|
||||
//pdlsch0->current_harq_pid = dci->harq_process_number;
|
||||
//pdlsch0->active = 1;
|
||||
//pdlsch0->rnti = rnti;
|
||||
//pdlsch0_harq->mcs = nr_pdci_info_extracted->mcs;
|
||||
//pdlsch0_harq->DCINdi = nr_pdci_info_extracted->ndi;
|
||||
dlsch_config_pdu->ndi = dci->ndi;
|
||||
dlsch_config_pdu->harq_pid = dci->harq_process_number;
|
||||
|
||||
dl_config->number_pdus = dl_config->number_pdus + 1;
|
||||
break;
|
||||
|
||||
@@ -72,6 +72,12 @@ int8_t nr_ue_ul_indication(nr_uplink_indication_t *ul_info){
|
||||
module_id_t module_id = ul_info->module_id;
|
||||
NR_UE_MAC_INST_t *mac = get_mac_inst(module_id);
|
||||
|
||||
// clean previous FAPI messages
|
||||
mac->tx_request.number_of_pdus = 0;
|
||||
mac->ul_config_request.number_pdus = 0;
|
||||
mac->dl_config_request.number_pdus = 0;
|
||||
// clean previous FAPI messages
|
||||
|
||||
ret = nr_ue_scheduler(
|
||||
ul_info->module_id,
|
||||
ul_info->gNB_index,
|
||||
|
||||
@@ -674,6 +674,12 @@ static void *UE_thread_rxn_txnp4(void *arg) {
|
||||
(sf_type==SF_S ? "SF_S" : "UNKNOWN_SF_TYPE"))));
|
||||
}
|
||||
#endif
|
||||
|
||||
//clean previous FAPI MESSAGE
|
||||
UE->rx_ind.number_pdus = 0;
|
||||
UE->dci_ind.number_of_dcis = 0;
|
||||
//clean previous FAPI MESSAGE
|
||||
|
||||
#ifdef UE_SLOT_PARALLELISATION
|
||||
phy_procedures_slot_parallelization_UE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL );
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user