1const 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}