Commit a0b3edd4 authored by Thomas Schlichter's avatar Thomas Schlichter

add support for band 255 and 256 according to TS 38.108

parent 7155c4b3
...@@ -57,8 +57,8 @@ int get_supported_band_index(int scs, int band, int n_rbs) ...@@ -57,8 +57,8 @@ int get_supported_band_index(int scs, int band, int n_rbs)
} }
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) // Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101 and TS 38.108)
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101) // Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101 and TS 38.108)
// Notes: // Notes:
// - N_OFFs for bands from 80 to 89 and band 95 is referred to UL // - N_OFFs for bands from 80 to 89 and band 95 is referred to UL
// - Frequencies are expressed in KHz // - Frequencies are expressed in KHz
...@@ -120,6 +120,8 @@ const nr_bandentry_t nr_bandtable[] = { ...@@ -120,6 +120,8 @@ const nr_bandentry_t nr_bandtable[] = {
{94, 880000, 915000, 1432000, 1517000, 20, 286400, 100}, {94, 880000, 915000, 1432000, 1517000, 20, 286400, 100},
{95, 2010000, 2025000, 000, 000, 20, 402000, 100}, {95, 2010000, 2025000, 000, 000, 20, 402000, 100},
{96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15}, {96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15},
{255, 1626500, 1660500, 1525000, 1559000, 20, 305000, 100},
{256, 1980000, 2010000, 2170000, 2200000, 20, 434000, 100},
{257,26500020,29500000,26500020,29500000, 1,2054166, 60}, {257,26500020,29500000,26500020,29500000, 1,2054166, 60},
{257,26500080,29500000,26500080,29500000, 2,2054167, 120}, {257,26500080,29500000,26500080,29500000, 2,2054167, 120},
{258,24250080,27500000,24250080,27500000, 1,2016667, 60}, {258,24250080,27500000,24250080,27500000, 1,2016667, 60},
......
...@@ -29,7 +29,7 @@ static const uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, ...@@ -29,7 +29,7 @@ static const uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3,
static const uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16}; static const uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16};
// Table 5.4.3.3-1 38-101 // Table 5.4.3.3-1 38-101
static const int nr_ssb_table[48][3] = { static const int nr_ssb_table[51][3] = {
{1, 15, nr_ssb_type_A}, {2, 15, nr_ssb_type_A}, {3, 15, nr_ssb_type_A}, {5, 15, nr_ssb_type_A}, {5, 30, nr_ssb_type_B}, {1, 15, nr_ssb_type_A}, {2, 15, nr_ssb_type_A}, {3, 15, nr_ssb_type_A}, {5, 15, nr_ssb_type_A}, {5, 30, nr_ssb_type_B},
{7, 15, nr_ssb_type_A}, {8, 15, nr_ssb_type_A}, {12, 15, nr_ssb_type_A}, {14, 15, nr_ssb_type_A}, {18, 15, nr_ssb_type_A}, {7, 15, nr_ssb_type_A}, {8, 15, nr_ssb_type_A}, {12, 15, nr_ssb_type_A}, {14, 15, nr_ssb_type_A}, {18, 15, nr_ssb_type_A},
{20, 15, nr_ssb_type_A}, {25, 15, nr_ssb_type_A}, {26, 15, nr_ssb_type_A}, {28, 15, nr_ssb_type_A}, {29, 15, nr_ssb_type_A}, {20, 15, nr_ssb_type_A}, {25, 15, nr_ssb_type_A}, {26, 15, nr_ssb_type_A}, {28, 15, nr_ssb_type_A}, {29, 15, nr_ssb_type_A},
...@@ -39,7 +39,8 @@ static const int nr_ssb_table[48][3] = { ...@@ -39,7 +39,8 @@ static const int nr_ssb_table[48][3] = {
{65, 15, nr_ssb_type_A}, {66, 15, nr_ssb_type_A}, {66, 30, nr_ssb_type_B}, {70, 15, nr_ssb_type_A}, {71, 15, nr_ssb_type_A}, {65, 15, nr_ssb_type_A}, {66, 15, nr_ssb_type_A}, {66, 30, nr_ssb_type_B}, {70, 15, nr_ssb_type_A}, {71, 15, nr_ssb_type_A},
{74, 15, nr_ssb_type_A}, {75, 15, nr_ssb_type_A}, {76, 15, nr_ssb_type_A}, {77, 30, nr_ssb_type_C}, {78, 30, nr_ssb_type_C}, {74, 15, nr_ssb_type_A}, {75, 15, nr_ssb_type_A}, {76, 15, nr_ssb_type_A}, {77, 30, nr_ssb_type_C}, {78, 30, nr_ssb_type_C},
{79, 30, nr_ssb_type_C}, {90, 15, nr_ssb_type_A}, {90, 30, nr_ssb_type_C}, {91, 15, nr_ssb_type_A}, {92, 15, nr_ssb_type_A}, {79, 30, nr_ssb_type_C}, {90, 15, nr_ssb_type_A}, {90, 30, nr_ssb_type_C}, {91, 15, nr_ssb_type_A}, {92, 15, nr_ssb_type_A},
{93, 15, nr_ssb_type_A}, {94, 15, nr_ssb_type_A}, {96, 30, nr_ssb_type_C}}; {93, 15, nr_ssb_type_A}, {94, 15, nr_ssb_type_A}, {96, 30, nr_ssb_type_C}, {255, 15, nr_ssb_type_A}, {255, 30, nr_ssb_type_B},
{256, 15, nr_ssb_type_A}};
void set_Lmax(NR_DL_FRAME_PARMS *fp) { void set_Lmax(NR_DL_FRAME_PARMS *fp) {
if (get_softmodem_params()->sl_mode == 2) { if (get_softmodem_params()->sl_mode == 2) {
......
...@@ -128,6 +128,9 @@ const sync_raster_t sync_raster[] = { ...@@ -128,6 +128,9 @@ const sync_raster_t sync_raster[] = {
{77, 1, 7711, 1, 8329}, {77, 1, 7711, 1, 8329},
{78, 1, 7711, 1, 8051}, {78, 1, 7711, 1, 8051},
{79, 1, 8480, 16, 8880}, {79, 1, 8480, 16, 8880},
{255, 0, 3818, 1, 3892},
{255, 1, 3824, 1, 3886},
{256, 0, 5429, 1, 5494},
{257, 3, 22388, 1, 22558}, {257, 3, 22388, 1, 22558},
{257, 4, 22390, 2, 22556}, {257, 4, 22390, 2, 22556},
{258, 3, 22257, 1, 22443}, {258, 3, 22257, 1, 22443},
......
...@@ -346,7 +346,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac, ...@@ -346,7 +346,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
} }
uint32_t band = *frequencyInfoDL->frequencyBandList.list.array[0]; uint32_t band = *frequencyInfoDL->frequencyBandList.list.array[0];
mac->frequency_range = band<100?FR1:FR2; mac->frequency_range = band<257?FR1:FR2;
frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
......
...@@ -190,7 +190,7 @@ static void config_common(gNB_MAC_INST *nrmac, int pdsch_AntennaPorts, int pusch ...@@ -190,7 +190,7 @@ static void config_common(gNB_MAC_INST *nrmac, int pdsch_AntennaPorts, int pusch
} }
uint32_t band = *frequencyInfoDL->frequencyBandList.list.array[0]; uint32_t band = *frequencyInfoDL->frequencyBandList.list.array[0];
frequency_range_t frequency_range = band<100?FR1:FR2; frequency_range_t frequency_range = band<257?FR1:FR2;
frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
nrmac->common_channels[0].frame_type = frame_type; nrmac->common_channels[0].frame_type = frame_type;
......
...@@ -1843,7 +1843,7 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const gNB_RrcConfigurationReq *configurati ...@@ -1843,7 +1843,7 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const gNB_RrcConfigurationReq *configurati
} }
const NR_FreqBandIndicatorNR_t band = *configuration->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; const NR_FreqBandIndicatorNR_t band = *configuration->scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
frequency_range_t frequency_range = band < 100 ? FR1 : FR2; frequency_range_t frequency_range = band < 257 ? FR1 : FR2;
sib1->servingCellConfigCommon->downlinkConfigCommon.frequencyInfoDL.offsetToPointA = get_ssb_offset_to_pointA(*configuration->scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB, sib1->servingCellConfigCommon->downlinkConfigCommon.frequencyInfoDL.offsetToPointA = get_ssb_offset_to_pointA(*configuration->scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB,
configuration->scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA, configuration->scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA,
configuration->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing, configuration->scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment