wl_nl80211/
channel.rs

1// SPDX-License-Identifier: MIT
2
3const NL80211_CHAN_WIDTH_20_NOHT: u32 = 0;
4const NL80211_CHAN_WIDTH_20: u32 = 1;
5const NL80211_CHAN_WIDTH_40: u32 = 2;
6const NL80211_CHAN_WIDTH_80: u32 = 3;
7const NL80211_CHAN_WIDTH_80P80: u32 = 4;
8const NL80211_CHAN_WIDTH_160: u32 = 5;
9const NL80211_CHAN_WIDTH_5: u32 = 6;
10const NL80211_CHAN_WIDTH_10: u32 = 7;
11const NL80211_CHAN_WIDTH_1: u32 = 8;
12const NL80211_CHAN_WIDTH_2: u32 = 9;
13const NL80211_CHAN_WIDTH_4: u32 = 10;
14const NL80211_CHAN_WIDTH_8: u32 = 11;
15const NL80211_CHAN_WIDTH_16: u32 = 12;
16const NL80211_CHAN_WIDTH_320: u32 = 13;
17
18#[derive(Debug, PartialEq, Eq, Clone, Copy)]
19pub enum Nl80211ChannelWidth {
20    NoHt20,
21    Mhz80Plus80,
22    Mhz(u32),
23    Other(u32),
24}
25
26impl From<u32> for Nl80211ChannelWidth {
27    fn from(d: u32) -> Self {
28        match d {
29            NL80211_CHAN_WIDTH_20_NOHT => Self::NoHt20,
30            NL80211_CHAN_WIDTH_20 => Self::Mhz(20),
31            NL80211_CHAN_WIDTH_40 => Self::Mhz(40),
32            NL80211_CHAN_WIDTH_80 => Self::Mhz(80),
33            NL80211_CHAN_WIDTH_80P80 => Self::Mhz80Plus80,
34            NL80211_CHAN_WIDTH_160 => Self::Mhz(160),
35            NL80211_CHAN_WIDTH_5 => Self::Mhz(5),
36            NL80211_CHAN_WIDTH_10 => Self::Mhz(10),
37            NL80211_CHAN_WIDTH_1 => Self::Mhz(1),
38            NL80211_CHAN_WIDTH_2 => Self::Mhz(2),
39            NL80211_CHAN_WIDTH_4 => Self::Mhz(4),
40            NL80211_CHAN_WIDTH_8 => Self::Mhz(8),
41            NL80211_CHAN_WIDTH_16 => Self::Mhz(16),
42            NL80211_CHAN_WIDTH_320 => Self::Mhz(320),
43            _ => Self::Other(d),
44        }
45    }
46}
47
48impl From<Nl80211ChannelWidth> for u32 {
49    fn from(v: Nl80211ChannelWidth) -> u32 {
50        match v {
51            Nl80211ChannelWidth::NoHt20 => NL80211_CHAN_WIDTH_20_NOHT,
52            Nl80211ChannelWidth::Mhz(20) => NL80211_CHAN_WIDTH_20,
53            Nl80211ChannelWidth::Mhz(40) => NL80211_CHAN_WIDTH_40,
54            Nl80211ChannelWidth::Mhz(80) => NL80211_CHAN_WIDTH_80,
55            Nl80211ChannelWidth::Mhz80Plus80 => NL80211_CHAN_WIDTH_80P80,
56            Nl80211ChannelWidth::Mhz(160) => NL80211_CHAN_WIDTH_160,
57            Nl80211ChannelWidth::Mhz(5) => NL80211_CHAN_WIDTH_5,
58            Nl80211ChannelWidth::Mhz(10) => NL80211_CHAN_WIDTH_10,
59            Nl80211ChannelWidth::Mhz(1) => NL80211_CHAN_WIDTH_1,
60            Nl80211ChannelWidth::Mhz(2) => NL80211_CHAN_WIDTH_2,
61            Nl80211ChannelWidth::Mhz(4) => NL80211_CHAN_WIDTH_4,
62            Nl80211ChannelWidth::Mhz(8) => NL80211_CHAN_WIDTH_8,
63            Nl80211ChannelWidth::Mhz(16) => NL80211_CHAN_WIDTH_16,
64            Nl80211ChannelWidth::Mhz(320) => NL80211_CHAN_WIDTH_320,
65            Nl80211ChannelWidth::Mhz(_) => {
66                log::warn!("Invalid Nl80211ChannelWidth {v:?}");
67                u32::MAX
68            }
69            Nl80211ChannelWidth::Other(d) => d,
70        }
71    }
72}