fix for SSB larger than 7 at UE

This commit is contained in:
francescomani
2026-01-21 03:48:17 +01:00
parent 64091c9a51
commit 5e6d9dbbc6
2 changed files with 9 additions and 7 deletions
+1 -4
View File
@@ -195,10 +195,7 @@ void nr_ue_decode_mib(NR_UE_MAC_INST_t *mac, int cc_id)
frame = frame << 4; frame = frame << 4;
mac->mib_frame = frame | frame_number_4lsb; mac->mib_frame = frame | frame_number_4lsb;
if (mac->frequency_range == FR2) { if (mac->frequency_range == FR1) {
for (int i = 0; i < 3; i++)
mac->mib_ssb += (((extra_bits >> (7 - i)) & 0x01) << (3 + i));
} else{
if(ssb_subcarrier_offset_msb) if(ssb_subcarrier_offset_msb)
ssb_subcarrier_offset = ssb_subcarrier_offset | 0x10; ssb_subcarrier_offset = ssb_subcarrier_offset | 0x10;
} }
+8 -3
View File
@@ -108,18 +108,23 @@ static int handle_bcch_bch(NR_UE_MAC_INST_t *mac,
void *phy_data, void *phy_data,
uint8_t *pduP, uint8_t *pduP,
unsigned int additional_bits, unsigned int additional_bits,
uint32_t ssb_index, uint32_t ssb_index_mod8,
uint32_t ssb_length, uint32_t ssb_length,
uint16_t ssb_start_subcarrier, uint16_t ssb_start_subcarrier,
long ssb_arfcn, long ssb_arfcn,
uint16_t cell_id) uint16_t cell_id)
{ {
mac->mib_ssb = ssb_index; mac->mib_ssb = ssb_index_mod8;
mac->physCellId = cell_id; mac->physCellId = cell_id;
mac->mib_additional_bits = additional_bits; mac->mib_additional_bits = additional_bits;
mac->ssb_start_subcarrier = ssb_start_subcarrier; mac->ssb_start_subcarrier = ssb_start_subcarrier;
if(ssb_length == 64) if(ssb_length == 64) {
mac->frequency_range = FR2; mac->frequency_range = FR2;
uint8_t ab = additional_bits & 0xff;
uint8_t out;
reverse_bits_u8(&ab, 1, &out);
mac->mib_ssb += (out & 0x7) << 3;
}
else else
mac->frequency_range = FR1; mac->frequency_range = FR1;
// fixed 3 bytes MIB PDU // fixed 3 bytes MIB PDU