blob: 432607c35d65c04d721595ba7f07d774c08ba631 [file] [log] [blame]
from dataclasses import dataclass
Channel = int
Bandwidth = int
# TODO(http://b/281728764): Add device requirements to each frequency e.g.
# "MUST be used indoors only" or "MUST be used with DFS".
ChannelBandwidthMap = dict[Channel, list[Bandwidth]]
@dataclass
class CountryChannels:
country_code: str
allowed_channels: ChannelBandwidthMap
# All antlion-supported channels and frequencies for use in regulatory testing.
TEST_CHANNELS: ChannelBandwidthMap = {
1: [20],
2: [20],
3: [20],
4: [20],
5: [20],
6: [20],
7: [20],
8: [20],
9: [20],
10: [20],
11: [20],
12: [20],
13: [20],
14: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
}
# All universally accepted 2.4GHz channels and frequencies.
WORLD_WIDE_2G_CHANNELS: ChannelBandwidthMap = {
1: [20],
2: [20],
3: [20],
4: [20],
5: [20],
6: [20],
7: [20],
8: [20],
9: [20],
10: [20],
11: [20],
}
# List of supported channels and frequencies by country.
#
# Please keep this alphabetically ordered. Thanks!
#
# TODO: Add missing countries: Russia, Israel, Korea, Turkey, South Africa,
# Brazil, Bahrain, Vietnam
COUNTRY_CHANNELS = {
"Australia": CountryChannels(
country_code="AU",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"Austria": CountryChannels(
country_code="AT",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Belgium": CountryChannels(
country_code="BE",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Canada": CountryChannels(
country_code="CA",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"China": CountryChannels(
country_code="CH",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Denmark": CountryChannels(
country_code="DK",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"France": CountryChannels(
country_code="FR",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Germany": CountryChannels(
country_code="DE",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"India": CountryChannels(
country_code="IN",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"Ireland": CountryChannels(
country_code="IE",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Italy": CountryChannels(
country_code="IT",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Japan": CountryChannels(
country_code="JP",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
},
),
"Mexico": CountryChannels(
country_code="MX",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"Netherlands": CountryChannels(
country_code="NL",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"New Zealand": CountryChannels(
country_code="NZ",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"Norway": CountryChannels(
country_code="NO",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Singapore": CountryChannels(
country_code="SG",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"Spain": CountryChannels(
country_code="ES",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Sweden": CountryChannels(
country_code="SE",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"Taiwan": CountryChannels(
country_code="TW",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
"United Kingdom of Great Britain": CountryChannels(
country_code="GB",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
11: [20],
12: [20],
13: [20],
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
},
),
"United States of America": CountryChannels(
country_code="US",
allowed_channels=WORLD_WIDE_2G_CHANNELS
| {
36: [20, 40, 80],
40: [20, 40, 80],
44: [20, 40, 80],
48: [20, 40, 80],
52: [20, 40, 80],
56: [20, 40, 80],
60: [20, 40, 80],
64: [20, 40, 80],
100: [20, 40, 80],
104: [20, 40, 80],
108: [20, 40, 80],
112: [20, 40, 80],
116: [20, 40, 80],
120: [20, 40, 80],
124: [20, 40, 80],
128: [20, 40, 80],
132: [20, 40, 80],
136: [20, 40, 80],
140: [20, 40, 80],
144: [20, 40, 80],
149: [20, 40, 80],
153: [20, 40, 80],
157: [20, 40, 80],
161: [20, 40, 80],
165: [20],
},
),
}