use FAPI field to set SSB case from upper layers

This commit is contained in:
francescomani
2026-02-25 12:43:10 +01:00
parent f66a7b2108
commit 5ed309166b
6 changed files with 55 additions and 113 deletions
+26
View File
@@ -152,6 +152,32 @@ int get_smallest_supported_bandwidth_index(int scs, frequency_range_t frequency_
return -1; // not found
}
// Table 5.4.3.3-1 38-101
uint8_t set_ssb_case(int scs, int nr_band)
{
uint8_t ssb_case = 0;
switch (scs) {
case 0:
ssb_case = 0; // case A
break;
case 1:
if (nr_band == 5 || nr_band == 24 || nr_band == 66 || nr_band == 255)
ssb_case = 1; // case B
else
ssb_case = 2; // case C
break;
case 3:
ssb_case = 3; // case D
break;
case 4:
ssb_case = 4; // case E
break;
default:
AssertFatal(false, "Invalid sub-carrier spacing for SSB\n");
}
return ssb_case;
}
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) (Rel.17)
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101)
// Notes:
+1 -1
View File
@@ -288,7 +288,7 @@ static inline void warn_higher_threequarter_fs(const int n_rb, const int mu)
uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn);
uint32_t to_nrarfcn(uint64_t dl_CarrierFreq);
uint8_t set_ssb_case(int scs, int nr_band);
int cce_to_reg_interleaving(const int R, int k, int n_shift, const int C, int L, const int N_regs);
int get_SLIV(uint8_t S, uint8_t L);
void get_coreset_rballoc(const uint8_t *FreqDomainResource, int *n_rb, int *rb_offset);