From 85d89164769507dd7a46fa90fe4ea1a9cc356260 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 17 Jul 2023 16:49:40 +0200 Subject: [PATCH] Refactor F1 Setup Req: Move radio info into cell --- openair2/COMMON/f1ap_messages_types.h | 76 ++++++-------- openair2/F1AP/f1ap_cu_interface_management.c | 68 ++++++------- openair2/F1AP/f1ap_du_interface_management.c | 102 ++++++------------- openair2/GNB_APP/gnb_config.c | 42 +++----- 4 files changed, 108 insertions(+), 180 deletions(-) diff --git a/openair2/COMMON/f1ap_messages_types.h b/openair2/COMMON/f1ap_messages_types.h index 7cc5b6ca01..b003b46b3d 100644 --- a/openair2/COMMON/f1ap_messages_types.h +++ b/openair2/COMMON/f1ap_messages_types.h @@ -90,6 +90,30 @@ typedef struct f1ap_plmn_t { uint8_t mnc_digit_length; } f1ap_plmn_t; +typedef enum f1ap_mode_t { F1AP_MODE_TDD = 0, F1AP_MODE_FDD = 1 } f1ap_mode_t; + +typedef struct f1ap_nr_frequency_info_t { + uint32_t arfcn; + int band; +} f1ap_nr_frequency_info_t; + +typedef struct f1ap_transmission_bandwidth_t { + uint8_t scs; + uint16_t nrb; +} f1ap_transmission_bandwidth_t; + +typedef struct f1ap_fdd_info_t { + f1ap_nr_frequency_info_t ul_freqinfo; + f1ap_nr_frequency_info_t dl_freqinfo; + f1ap_transmission_bandwidth_t ul_tbw; + f1ap_transmission_bandwidth_t dl_tbw; +} f1ap_fdd_info_t; + +typedef struct f1ap_tdd_info_t { + f1ap_nr_frequency_info_t freqinfo; + f1ap_transmission_bandwidth_t tbw; +} f1ap_tdd_info_t; + typedef struct f1ap_served_cell_info_t { // NR CGI f1ap_plmn_t plmn; @@ -105,6 +129,12 @@ typedef struct f1ap_served_cell_info_t { uint16_t num_ssi; uint8_t sst; uint8_t sd; + + f1ap_mode_t mode; + union { + f1ap_fdd_info_t fdd; + f1ap_tdd_info_t tdd; + }; } f1ap_served_cell_info_t; typedef struct f1ap_setup_req_s { @@ -119,52 +149,6 @@ typedef struct f1ap_setup_req_s { f1ap_served_cell_info_t info; } cell[F1AP_MAX_NB_CELLS]; - // fdd_flag = 1 means FDD, 0 means TDD - int fdd_flag; - - union { - struct fdd_s { - uint32_t ul_nr_arfcn; - uint8_t ul_scs; - uint16_t ul_nrb; - - uint32_t dl_nr_arfcn; - uint8_t dl_scs; - uint16_t dl_nrb; - - uint32_t sul_active; - uint32_t sul_nr_arfcn; - uint8_t sul_scs; - uint16_t sul_nrb; - - uint8_t ul_num_frequency_bands; - uint16_t ul_nr_band[32]; - uint8_t ul_num_sul_frequency_bands; - uint16_t ul_nr_sul_band[32]; - - uint8_t dl_num_frequency_bands; - uint16_t dl_nr_band[32]; - uint8_t dl_num_sul_frequency_bands; - uint16_t dl_nr_sul_band[32]; - } fdd; - struct tdd_s { - - uint32_t nr_arfcn; - uint8_t scs; - uint16_t nrb; - - uint32_t sul_active; - uint32_t sul_nr_arfcn; - uint8_t sul_scs; - uint16_t sul_nrb; - - uint8_t num_frequency_bands; - uint16_t nr_band[32]; - uint8_t num_sul_frequency_bands; - uint16_t nr_sul_band[32]; - - } tdd; - } nr_mode_info[F1AP_MAX_NB_CELLS]; char *measurement_timing_information[F1AP_MAX_NB_CELLS]; uint8_t ranac[F1AP_MAX_NB_CELLS]; diff --git a/openair2/F1AP/f1ap_cu_interface_management.c b/openair2/F1AP/f1ap_cu_interface_management.c index e0e4c90f45..5ac722f629 100644 --- a/openair2/F1AP/f1ap_cu_interface_management.c +++ b/openair2/F1AP/f1ap_cu_interface_management.c @@ -146,53 +146,45 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance, // FDD Cells if (servedCellInformation->nR_Mode_Info.present==F1AP_NR_Mode_Info_PR_fDD) { - struct fdd_s *FDDs=&req->nr_mode_info[i].fdd; + req->cell[i].info.mode = F1AP_MODE_FDD; + f1ap_fdd_info_t *FDDs = &req->cell[i].info.fdd; F1AP_FDD_Info_t * fDD_Info=servedCellInformation->nR_Mode_Info.choice.fDD; - FDDs->ul_nr_arfcn=fDD_Info->uL_NRFreqInfo.nRARFCN; - FDDs->ul_num_frequency_bands=fDD_Info->uL_NRFreqInfo.freqBandListNr.list.count; + FDDs->ul_freqinfo.arfcn = fDD_Info->uL_NRFreqInfo.nRARFCN; + AssertFatal(fDD_Info->uL_NRFreqInfo.freqBandListNr.list.count == 1, "cannot handle more than one frequency band\n"); for (int f=0; f < fDD_Info->uL_NRFreqInfo.freqBandListNr.list.count; f++) { - F1AP_FreqBandNrItem_t * FreqItem=fDD_Info->uL_NRFreqInfo.freqBandListNr.list.array[f]; - FDDs->ul_nr_band[f]=FreqItem->freqBandIndicatorNr; - int num_available_supported_SULBands=FreqItem->supportedSULBandList.list.count; - for (int sul=0; sul < num_available_supported_SULBands; sul ++ ) { - F1AP_SupportedSULFreqBandItem_t * SulItem= FreqItem->supportedSULBandList.list.array[sul]; - FDDs->ul_nr_sul_band[sul]=SulItem->freqBandIndicatorNr; - } + F1AP_FreqBandNrItem_t * FreqItem=fDD_Info->uL_NRFreqInfo.freqBandListNr.list.array[f]; + FDDs->ul_freqinfo.band = FreqItem->freqBandIndicatorNr; + AssertFatal(FreqItem->supportedSULBandList.list.count == 0, "cannot handle SUL bands!\n"); } - FDDs->dl_nr_arfcn=fDD_Info->dL_NRFreqInfo.nRARFCN; + FDDs->dl_freqinfo.arfcn = fDD_Info->dL_NRFreqInfo.nRARFCN; int dlBands=fDD_Info->dL_NRFreqInfo.freqBandListNr.list.count; + AssertFatal(dlBands == 0, "cannot handled more than one frequency band\n"); for (int dlB=0; dlB < dlBands; dlB++) { F1AP_FreqBandNrItem_t * FreqItem=fDD_Info->dL_NRFreqInfo.freqBandListNr.list.array[dlB]; - FDDs->dl_nr_band[dlB]=FreqItem->freqBandIndicatorNr; - int num_available_supported_SULBands = FreqItem->supportedSULBandList.list.count; - for (int sul=0; sul < num_available_supported_SULBands; sul ++ ) { - F1AP_SupportedSULFreqBandItem_t * SulItem= FreqItem->supportedSULBandList.list.array[sul]; - FDDs->ul_nr_sul_band[sul]=SulItem->freqBandIndicatorNr; - } + FDDs->dl_freqinfo.band = FreqItem->freqBandIndicatorNr; + int num_available_supported_SULBands = FreqItem->supportedSULBandList.list.count; + AssertFatal(num_available_supported_SULBands == 0, "cannot handle SUL bands!\n"); } - FDDs->ul_scs=fDD_Info->uL_Transmission_Bandwidth.nRSCS; - FDDs->ul_nrb=nrb_lut[fDD_Info->uL_Transmission_Bandwidth.nRNRB]; - FDDs->dl_scs=fDD_Info->dL_Transmission_Bandwidth.nRSCS; - FDDs->dl_nrb=nrb_lut[fDD_Info->dL_Transmission_Bandwidth.nRNRB]; - } - - // TDD - if (servedCellInformation->nR_Mode_Info.present==F1AP_NR_Mode_Info_PR_tDD) { - struct tdd_s *TDDs=&req->nr_mode_info[i].tdd; - F1AP_TDD_Info_t * tDD_Info=servedCellInformation->nR_Mode_Info.choice.tDD; - TDDs->nr_arfcn=tDD_Info->nRFreqInfo.nRARFCN; - TDDs->num_frequency_bands=tDD_Info->nRFreqInfo.freqBandListNr.list.count; + FDDs->ul_tbw.scs = fDD_Info->uL_Transmission_Bandwidth.nRSCS; + FDDs->ul_tbw.nrb = nrb_lut[fDD_Info->uL_Transmission_Bandwidth.nRNRB]; + FDDs->dl_tbw.scs = fDD_Info->dL_Transmission_Bandwidth.nRSCS; + FDDs->dl_tbw.nrb = nrb_lut[fDD_Info->dL_Transmission_Bandwidth.nRNRB]; + } else if (servedCellInformation->nR_Mode_Info.present==F1AP_NR_Mode_Info_PR_tDD) { + req->cell[i].info.mode = F1AP_MODE_TDD; + f1ap_tdd_info_t *TDDs = &req->cell[i].info.tdd; + F1AP_TDD_Info_t *tDD_Info = servedCellInformation->nR_Mode_Info.choice.tDD; + TDDs->freqinfo.arfcn = tDD_Info->nRFreqInfo.nRARFCN; + AssertFatal(tDD_Info->nRFreqInfo.freqBandListNr.list.count == 1, "cannot handle more than one frequency band\n"); for (int f=0; f < tDD_Info->nRFreqInfo.freqBandListNr.list.count; f++) { - struct F1AP_FreqBandNrItem * FreqItem=tDD_Info->nRFreqInfo.freqBandListNr.list.array[f]; - TDDs->nr_band[f]=FreqItem->freqBandIndicatorNr; - int num_available_supported_SULBands=FreqItem->supportedSULBandList.list.count; - for (int sul=0; sul < num_available_supported_SULBands; sul ++ ) { - struct F1AP_SupportedSULFreqBandItem * SulItem= FreqItem->supportedSULBandList.list.array[sul]; - TDDs->nr_sul_band[sul]=SulItem->freqBandIndicatorNr; - } + struct F1AP_FreqBandNrItem * FreqItem=tDD_Info->nRFreqInfo.freqBandListNr.list.array[f]; + TDDs->freqinfo.band = FreqItem->freqBandIndicatorNr; + int num_available_supported_SULBands = FreqItem->supportedSULBandList.list.count; + AssertFatal(num_available_supported_SULBands == 0, "cannot hanlde SUL bands!\n"); } - TDDs->scs=tDD_Info->transmission_Bandwidth.nRSCS; - TDDs->nrb=nrb_lut[tDD_Info->transmission_Bandwidth.nRNRB]; + TDDs->tbw.scs = tDD_Info->transmission_Bandwidth.nRSCS; + TDDs->tbw.nrb = nrb_lut[tDD_Info->transmission_Bandwidth.nRNRB]; + } else { + AssertFatal(false, "unknown NR Mode info %d\n", servedCellInformation->nR_Mode_Info.present); } struct F1AP_GNB_DU_System_Information * DUsi=served_cells_item->gNB_DU_System_Information; diff --git a/openair2/F1AP/f1ap_du_interface_management.c b/openair2/F1AP/f1ap_du_interface_management.c index 9b1276285d..91629762ee 100644 --- a/openair2/F1AP/f1ap_du_interface_management.c +++ b/openair2/F1AP/f1ap_du_interface_management.c @@ -206,115 +206,73 @@ int DU_send_F1_SETUP_REQUEST(instance_t instance, f1ap_setup_req_t *setup_req) } } - if (setup_req->fdd_flag) { // FDD + if (setup_req->cell[i].info.mode == F1AP_MODE_FDD) { // FDD + const f1ap_fdd_info_t *fdd = &setup_req->cell[i].info.fdd; nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_fDD; asn1cCalloc(nR_Mode_Info->choice.fDD, fDD_Info); /* FDD.1 UL NRFreqInfo */ /* FDD.1.1 UL NRFreqInfo ARFCN */ - fDD_Info->uL_NRFreqInfo.nRARFCN = setup_req->nr_mode_info[i].fdd.ul_nr_arfcn; // Integer + fDD_Info->uL_NRFreqInfo.nRARFCN = fdd->ul_freqinfo.arfcn; // Integer /* FDD.1.2 F1AP_SUL_Information */ - if(0) { // Optional - asn1cCalloc(fDD_Info->uL_NRFreqInfo.sul_Information, fdd_sul_info); - fdd_sul_info->sUL_NRARFCN = 0; - fdd_sul_info->sUL_transmission_Bandwidth.nRSCS = 0; - fdd_sul_info->sUL_transmission_Bandwidth.nRNRB = 0; - } /* FDD.1.3 freqBandListNr */ - int fdd_ul_num_available_freq_Bands = setup_req->nr_mode_info[i].fdd.ul_num_frequency_bands; - LOG_D(F1AP, "fdd_ul_num_available_freq_Bands = %d \n", fdd_ul_num_available_freq_Bands); - + int fdd_ul_num_available_freq_Bands = 1; for (int fdd_ul_j=0; fdd_ul_juL_NRFreqInfo.freqBandListNr.list, F1AP_FreqBandNrItem_t, nr_freqBandNrItem); /* FDD.1.3.1 freqBandIndicatorNr*/ - nr_freqBandNrItem->freqBandIndicatorNr = setup_req->nr_mode_info[i].fdd.ul_nr_band[fdd_ul_j]; // - /* FDD.1.3.2 supportedSULBandList*/ - int num_available_supported_SULBands = setup_req->nr_mode_info[i].fdd.ul_num_sul_frequency_bands; - LOG_D(F1AP, "num_available_supported_SULBands = %d \n", num_available_supported_SULBands); + nr_freqBandNrItem->freqBandIndicatorNr = fdd->ul_freqinfo.band; - for (int fdd_ul_k=0; fdd_ul_ksupportedSULBandList.list, F1AP_SupportedSULFreqBandItem_t, nr_supportedSULFreqBandItem); - /* FDD.1.3.2.1 freqBandIndicatorNr */ - nr_supportedSULFreqBandItem->freqBandIndicatorNr = setup_req->nr_mode_info[i].fdd.ul_nr_sul_band[fdd_ul_k]; // - } // for FDD : UL supported_SULBands + /* FDD.1.3.2 supportedSULBandList*/ } // for FDD : UL freq_Bands /* FDD.2 DL NRFreqInfo */ /* FDD.2.1 DL NRFreqInfo ARFCN */ - fDD_Info->dL_NRFreqInfo.nRARFCN = setup_req->nr_mode_info[i].fdd.dl_nr_arfcn; // Integer + fDD_Info->dL_NRFreqInfo.nRARFCN = fdd->dl_freqinfo.arfcn; // Integer /* FDD.2.2 F1AP_SUL_Information */ - if(0) { // Optional - F1AP_SUL_Information_t *fdd_sul_info=fDD_Info->dL_NRFreqInfo.sul_Information; - fdd_sul_info->sUL_NRARFCN = 0; - fdd_sul_info->sUL_transmission_Bandwidth.nRSCS = 0; - fdd_sul_info->sUL_transmission_Bandwidth.nRNRB = 0; - } /* FDD.2.3 freqBandListNr */ - int fdd_dl_num_available_freq_Bands = setup_req->nr_mode_info[i].fdd.dl_num_frequency_bands; - LOG_D(F1AP, "fdd_dl_num_available_freq_Bands = %d \n", fdd_dl_num_available_freq_Bands); - + int fdd_dl_num_available_freq_Bands = 1; for (int fdd_dl_j=0; fdd_dl_jdL_NRFreqInfo.freqBandListNr.list, F1AP_FreqBandNrItem_t, nr_freqBandNrItem); /* FDD.2.3.1 freqBandIndicatorNr*/ - nr_freqBandNrItem->freqBandIndicatorNr = setup_req->nr_mode_info[i].fdd.dl_nr_band[fdd_dl_j]; // - /* FDD.2.3.2 supportedSULBandList*/ - int num_available_supported_SULBands = setup_req->nr_mode_info[i].fdd.dl_num_sul_frequency_bands; - LOG_D(F1AP, "num_available_supported_SULBands = %d \n", num_available_supported_SULBands); + nr_freqBandNrItem->freqBandIndicatorNr = fdd->dl_freqinfo.band; - for (int fdd_dl_k=0; fdd_dl_ksupportedSULBandList.list, F1AP_SupportedSULFreqBandItem_t, nr_supportedSULFreqBandItem); - /* FDD.2.3.2.1 freqBandIndicatorNr */ - nr_supportedSULFreqBandItem->freqBandIndicatorNr = setup_req->nr_mode_info[i].fdd.dl_nr_sul_band[fdd_dl_k]; // - } // for FDD : DL supported_SULBands + /* FDD.2.3.2 supportedSULBandList*/ } // for FDD : DL freq_Bands /* FDD.3 UL Transmission Bandwidth */ - fDD_Info->uL_Transmission_Bandwidth.nRSCS = setup_req->nr_mode_info[i].fdd.ul_scs; - fDD_Info->uL_Transmission_Bandwidth.nRNRB = to_NRNRB(setup_req->nr_mode_info[i].fdd.ul_nrb); + fDD_Info->uL_Transmission_Bandwidth.nRSCS = fdd->ul_tbw.scs; + fDD_Info->uL_Transmission_Bandwidth.nRNRB = to_NRNRB(fdd->ul_tbw.nrb); /* FDD.4 DL Transmission Bandwidth */ - fDD_Info->dL_Transmission_Bandwidth.nRSCS = setup_req->nr_mode_info[i].fdd.dl_scs; - fDD_Info->dL_Transmission_Bandwidth.nRNRB = to_NRNRB(setup_req->nr_mode_info[i].fdd.dl_nrb); - } else { // TDD + fDD_Info->dL_Transmission_Bandwidth.nRSCS = fdd->dl_tbw.scs; + fDD_Info->dL_Transmission_Bandwidth.nRNRB = to_NRNRB(fdd->dl_tbw.nrb); + } else if (setup_req->cell[i].info.mode == F1AP_MODE_TDD) { // TDD + const f1ap_tdd_info_t *tdd = &setup_req->cell[i].info.tdd; nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_tDD; asn1cCalloc(nR_Mode_Info->choice.tDD, tDD_Info); /* TDD.1 nRFreqInfo */ /* TDD.1.1 nRFreqInfo ARFCN */ - tDD_Info->nRFreqInfo.nRARFCN = setup_req->nr_mode_info[i].tdd.nr_arfcn; // Integer + tDD_Info->nRFreqInfo.nRARFCN = tdd->freqinfo.arfcn; // Integer /* TDD.1.2 F1AP_SUL_Information */ - if(0) { // Optional - F1AP_SUL_Information_t *tdd_sul_info= tDD_Info->nRFreqInfo.sul_Information; - tdd_sul_info->sUL_NRARFCN = 0; - tdd_sul_info->sUL_transmission_Bandwidth.nRSCS = 0; - tdd_sul_info->sUL_transmission_Bandwidth.nRNRB = 0; - } /* TDD.1.3 freqBandListNr */ - int tdd_num_available_freq_Bands = setup_req->nr_mode_info[i].tdd.num_frequency_bands; - LOG_D(F1AP, "tdd_num_available_freq_Bands = %d \n", tdd_num_available_freq_Bands); - + int tdd_num_available_freq_Bands = 1; for (int j=0; jnRFreqInfo.freqBandListNr.list, F1AP_FreqBandNrItem_t, nr_freqBandNrItem); /* TDD.1.3.1 freqBandIndicatorNr*/ - nr_freqBandNrItem->freqBandIndicatorNr = *setup_req->nr_mode_info[i].tdd.nr_band; // + nr_freqBandNrItem->freqBandIndicatorNr = tdd->freqinfo.band; /* TDD.1.3.2 supportedSULBandList*/ - int num_available_supported_SULBands = setup_req->nr_mode_info[i].tdd.num_sul_frequency_bands; - LOG_D(F1AP, "num_available_supported_SULBands = %d \n", num_available_supported_SULBands); - - for (int k=0; ksupportedSULBandList.list,F1AP_SupportedSULFreqBandItem_t, nr_supportedSULFreqBandItem); - /* TDD.1.3.2.1 freqBandIndicatorNr */ - nr_supportedSULFreqBandItem->freqBandIndicatorNr = *setup_req->nr_mode_info[i].tdd.nr_sul_band; // - } // for TDD : supported_SULBands } // for TDD : freq_Bands /* TDD.2 transmission_Bandwidth */ - tDD_Info->transmission_Bandwidth.nRSCS = setup_req->nr_mode_info[i].tdd.scs; - tDD_Info->transmission_Bandwidth.nRNRB = to_NRNRB(setup_req->nr_mode_info[i].tdd.nrb); - } // if nR_Mode_Info + tDD_Info->transmission_Bandwidth.nRSCS = tdd->tbw.scs; + tDD_Info->transmission_Bandwidth.nRNRB = to_NRNRB(tdd->tbw.nrb); + } else { + AssertFatal(false, "unknown mode %d\n", setup_req->cell[i].info.mode); + } /* - measurementTimingConfiguration */ char *measurementTimingConfiguration = setup_req->measurement_timing_information[i]; // sept. 2018 @@ -617,7 +575,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, F1AP_NR_Mode_Info_t *nR_Mode_Info=&served_cell_information->nR_Mode_Info; LOG_E(F1AP,"Here hardcoded values instead of values from configuration file\n"); - if (f1ap_setup_req->fdd_flag) { + if (cell->mode == F1AP_MODE_FDD) { nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_fDD; /* > FDD >> FDD Info */ asn1cCalloc(nR_Mode_Info->choice.fDD, fDD_Info); @@ -639,7 +597,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, /* >>> DL Transmission Bandwidth */ fDD_Info->dL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15; fDD_Info->dL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11; - } else { // TDD + } else if (cell->mode == F1AP_MODE_TDD) { // TDD nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_tDD; /* > TDD >> TDD Info */ asn1cCalloc(nR_Mode_Info->choice.tDD, tDD_Info); @@ -651,6 +609,8 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, nr_supportedSULFreqBandItem->freqBandIndicatorNr = 444L; tDD_Info->transmission_Bandwidth.nRSCS= F1AP_NRSCS_scs15; tDD_Info->transmission_Bandwidth.nRNRB= F1AP_NRNRB_nrb11; + } else { + AssertFatal(false, "illegal mode %d\n", cell->mode); } /* - measurementTimingConfiguration */ @@ -710,7 +670,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, // // /* - CHOICE NR-MODE-Info */ F1AP_NR_Mode_Info_t *nR_Mode_Info= &served_cell_information->nR_Mode_Info; - if (f1ap_setup_req->fdd_flag) { + if (cell->mode == F1AP_MODE_FDD) { nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_fDD; /* > FDD >> FDD Info */ asn1cCalloc(nR_Mode_Info->choice.fDD, fDD_Info); @@ -733,7 +693,7 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, /* >>> DL Transmission Bandwidth */ fDD_Info->dL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15; fDD_Info->dL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11; - } else { // TDD + } else if (cell->mode == F1AP_MODE_TDD) { // TDD nR_Mode_Info->present = F1AP_NR_Mode_Info_PR_tDD; /* > TDD >> TDD Info */ asn1cCalloc(nR_Mode_Info->choice.tDD, tDD_Info); @@ -745,6 +705,8 @@ int DU_send_gNB_DU_CONFIGURATION_UPDATE(instance_t instance, nr_supportedSULFreqBandItem->freqBandIndicatorNr = 444L; tDD_Info->transmission_Bandwidth.nRSCS= F1AP_NRSCS_scs15; tDD_Info->transmission_Bandwidth.nRNRB= F1AP_NRNRB_nrb11; + } else { + AssertFatal(false, "unknown mode %d\n", cell->mode); } /* - measurementTimingConfiguration */ diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c index 2e84b56bc3..44da60010c 100644 --- a/openair2/GNB_APP/gnb_config.c +++ b/openair2/GNB_APP/gnb_config.c @@ -1987,35 +1987,25 @@ int RCconfig_NR_DU_F1(MessageDef *msg_p, uint32_t i) { if (rrc->configuration.scc->tdd_UL_DL_ConfigurationCommon) { LOG_I(GNB_APP,"ngran_DU: Configuring Cell %d for TDD\n",k); - f1Setup->fdd_flag = 0; - f1Setup->nr_mode_info[k].tdd.nr_arfcn = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA; - f1Setup->nr_mode_info[k].tdd.scs = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; - f1Setup->nr_mode_info[k].tdd.nrb = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth; - f1Setup->nr_mode_info[k].tdd.num_frequency_bands = 1; - f1Setup->nr_mode_info[k].tdd.nr_band[0] = *rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; - f1Setup->nr_mode_info[k].tdd.sul_active = 0; + f1Setup->cell[k].info.mode = F1AP_MODE_TDD; + f1ap_tdd_info_t *tdd = &f1Setup->cell[k].info.tdd; + tdd->freqinfo.arfcn = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA; + tdd->tbw.scs = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing; + tdd->tbw.nrb = rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth; + tdd->freqinfo.band = *rrc->configuration.scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; } else { /***************** for test *****************/ LOG_I(GNB_APP,"ngran_DU: Configuring Cell %d for FDD\n",k); - f1Setup->fdd_flag = 1; - f1Setup->nr_mode_info[k].fdd.dl_nr_arfcn = 26200UL; - f1Setup->nr_mode_info[k].fdd.ul_nr_arfcn = 26200UL; - // For LTE use scs field to carry prefix type and number of antennas - f1Setup->nr_mode_info[k].fdd.dl_scs = 0; - f1Setup->nr_mode_info[k].fdd.ul_scs = 0; - // use nrb field to hold LTE N_RB_DL (0...5) - f1Setup->nr_mode_info[k].fdd.ul_nrb = 3; - f1Setup->nr_mode_info[k].fdd.ul_nrb = 3; - // RK: we need to check there value for FDD's frequency_bands DL/UL - f1Setup->nr_mode_info[k].fdd.ul_num_frequency_bands = 1; - f1Setup->nr_mode_info[k].fdd.ul_nr_band[0] = 7; - f1Setup->nr_mode_info[k].fdd.dl_num_frequency_bands = 1; - f1Setup->nr_mode_info[k].fdd.dl_nr_band[0] = 7; - f1Setup->nr_mode_info[k].fdd.ul_num_sul_frequency_bands = 0; - f1Setup->nr_mode_info[k].fdd.ul_nr_sul_band[0] = 7; - f1Setup->nr_mode_info[k].fdd.dl_num_sul_frequency_bands = 0; - f1Setup->nr_mode_info[k].fdd.dl_nr_sul_band[0] = 7; - f1Setup->nr_mode_info[k].fdd.sul_active = 0; + f1Setup->cell[k].info.mode = F1AP_MODE_FDD; + f1ap_fdd_info_t *fdd = &f1Setup->cell[k].info.fdd; + fdd->dl_freqinfo.arfcn = 26200UL; + fdd->ul_freqinfo.arfcn = 26200UL; + fdd->dl_tbw.scs = 0; + fdd->ul_tbw.scs = 0; + fdd->dl_tbw.nrb = 3; + fdd->ul_tbw.nrb = 3; + fdd->dl_freqinfo.band = 7; + fdd->ul_freqinfo.band = 7; /***************** for test *****************/ }