Update on Wi-Fi channels

Signed-off-by: Jeroen Oudshoorn <oudshoorn.jeroen@gmail.com>
This commit is contained in:
Jeroen Oudshoorn
2024-12-18 00:20:59 +01:00
parent 5c8e57fd83
commit 4f07fce44b

View File

@ -1,14 +1,27 @@
NumChannels: int = 233 NumChannels: int = 233
def freq_to_channel(freq: int) -> int: def freq_to_channel(freq: float) -> int:
if 2412 <= freq <= 2472: # 2.4ghz wifi """
Convert a Wi-Fi frequency (in MHz) to its corresponding channel number.
Supports 2.4 GHz, 5 GHz, and 6 GHz Wi-Fi bands.
Args:
freq: The frequency in MHz.
Returns:
The Wi-Fi channel as an integer, or ValueError if the frequency is invalid.
"""
# 2.4 GHz Wi-Fi channels
if 2412 <= freq <= 2472: # 2.4 GHz Wi-Fi
return int(((freq - 2412) / 5) + 1) return int(((freq - 2412) / 5) + 1)
elif freq == 2484: # channel 14 special elif freq == 2484: # Channel 14 special
return int(14) return 14
elif 5150 <= freq <= 5895: # 5ghz wifi # 5 GHz Wi-Fi channels
return int(((freq - 5180) / 5) + 36) elif 5150 <= freq <= 5850: # 5 GHz Wi-Fi
elif 5925 <= freq <= 7115: # 6ghz wifi if freq < 5270: # Channels 36-48
return int(((freq - 5950) / 5) + 11) return int(((freq - 5180) / 20) + 36)
else: else: # Channels 149-165
return 0 return int(((freq - 5745) / 20) + 149)
# 6 GHz Wi-Fi channels
elif 5925 <= freq <= 7125: # 6 GHz Wi-Fi
return int(((freq - 5950) / 20) + 11)
# If the frequency does not match any valid channel
raise ValueError(f"The frequency {freq} MHz is not a valid Wi-Fi frequency.")