mirror of
https://github.com/espressif/esp-idf.git
synced 2026-08-18 06:35:35 +03:00
feat(regdomain): update regdomain according to wireless-regdb
This commit is contained in:
@@ -1489,7 +1489,6 @@ typedef struct {
|
||||
bool dcm; /**< Using dcm rate to send frame */
|
||||
} wifi_tx_rate_config_t;
|
||||
|
||||
#define WIFI_MAX_SUPPORT_COUNTRY_NUM 176 /**< max number of supported countries */
|
||||
#ifdef CONFIG_SOC_WIFI_SUPPORT_5G
|
||||
#define WIFI_MAX_REGULATORY_RULE_NUM 7 /**< max number of regulatory rules */
|
||||
#else
|
||||
|
||||
Submodule components/esp_wifi/lib updated: ba511a1ad5...05ac6ccb42
@@ -5,8 +5,6 @@
|
||||
|
||||
`esp_wifi_regulatory.c` is generated from `esp_wifi_regulatory.txt` by using the `reg2fw.py` script.
|
||||
|
||||
The num of all suppported countries in `esp_wifi_regulatory.txt` is `WIFI_MAX_SUPPORT_COUNTRY_NUM` that is defined in `esp_wifi_types_generic.h`
|
||||
|
||||
- Generate `esp_wifi_regulatory.c`
|
||||
- `cd ~/esp-idf/components/esp_wifi/regulatory`
|
||||
- `python reg2fw.py`
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -25,7 +25,6 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_NCC,
|
||||
ESP_WIFI_REGULATORY_TYPE_FCC,
|
||||
ESP_WIFI_REGULATORY_TYPE_AF,
|
||||
ESP_WIFI_REGULATORY_TYPE_AI,
|
||||
ESP_WIFI_REGULATORY_TYPE_AM,
|
||||
ESP_WIFI_REGULATORY_TYPE_AS,
|
||||
ESP_WIFI_REGULATORY_TYPE_AZ,
|
||||
@@ -35,6 +34,7 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_BN,
|
||||
ESP_WIFI_REGULATORY_TYPE_BO,
|
||||
ESP_WIFI_REGULATORY_TYPE_BS,
|
||||
ESP_WIFI_REGULATORY_TYPE_BW,
|
||||
ESP_WIFI_REGULATORY_TYPE_BZ,
|
||||
ESP_WIFI_REGULATORY_TYPE_CF,
|
||||
ESP_WIFI_REGULATORY_TYPE_CR,
|
||||
@@ -43,13 +43,13 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_DZ,
|
||||
ESP_WIFI_REGULATORY_TYPE_EC,
|
||||
ESP_WIFI_REGULATORY_TYPE_EG,
|
||||
ESP_WIFI_REGULATORY_TYPE_FO,
|
||||
ESP_WIFI_REGULATORY_TYPE_GB,
|
||||
ESP_WIFI_REGULATORY_TYPE_GD,
|
||||
ESP_WIFI_REGULATORY_TYPE_GT,
|
||||
ESP_WIFI_REGULATORY_TYPE_GU,
|
||||
ESP_WIFI_REGULATORY_TYPE_HR,
|
||||
ESP_WIFI_REGULATORY_TYPE_ID,
|
||||
ESP_WIFI_REGULATORY_TYPE_IL,
|
||||
ESP_WIFI_REGULATORY_TYPE_IR,
|
||||
ESP_WIFI_REGULATORY_TYPE_JO,
|
||||
ESP_WIFI_REGULATORY_TYPE_KE,
|
||||
@@ -73,11 +73,10 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_RU,
|
||||
ESP_WIFI_REGULATORY_TYPE_SG,
|
||||
ESP_WIFI_REGULATORY_TYPE_SV,
|
||||
ESP_WIFI_REGULATORY_TYPE_SX,
|
||||
ESP_WIFI_REGULATORY_TYPE_SY,
|
||||
ESP_WIFI_REGULATORY_TYPE_TC,
|
||||
ESP_WIFI_REGULATORY_TYPE_TG,
|
||||
ESP_WIFI_REGULATORY_TYPE_TR,
|
||||
ESP_WIFI_REGULATORY_TYPE_TZ,
|
||||
ESP_WIFI_REGULATORY_TYPE_UA,
|
||||
ESP_WIFI_REGULATORY_TYPE_VE,
|
||||
ESP_WIFI_REGULATORY_TYPE_VN,
|
||||
@@ -87,13 +86,17 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_MAX,
|
||||
} esp_wifi_regulatory_type_t;
|
||||
|
||||
const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
/*
|
||||
* regdomain_table: ISO alpha-2 country codes and their regulatory profile indices.
|
||||
* Last row is a sentinel (not a real country code).
|
||||
*/
|
||||
const wifi_regdomain_t regdomain_table[] = {
|
||||
{"01", ESP_WIFI_REGULATORY_TYPE_DEFAULT},
|
||||
{"EU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AF", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"AI", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"AI", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"AL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AM", ESP_WIFI_REGULATORY_TYPE_AM},
|
||||
{"AN", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
@@ -117,6 +120,7 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"BR", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"BS", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
{"BT", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"BW", ESP_WIFI_REGULATORY_TYPE_BW},
|
||||
{"BY", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"BZ", ESP_WIFI_REGULATORY_TYPE_BZ},
|
||||
{"CA", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
@@ -143,14 +147,16 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"ET", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"FI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"FM", ESP_WIFI_REGULATORY_TYPE_AS},
|
||||
{"FO", ESP_WIFI_REGULATORY_TYPE_FO},
|
||||
{"FR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GB", ESP_WIFI_REGULATORY_TYPE_GB},
|
||||
{"GD", ESP_WIFI_REGULATORY_TYPE_GD},
|
||||
{"GE", ESP_WIFI_REGULATORY_TYPE_AZ},
|
||||
{"GF", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"GF", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"GH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GL", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"GP", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"GI", ESP_WIFI_REGULATORY_TYPE_FO},
|
||||
{"GL", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"GP", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"GR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GT", ESP_WIFI_REGULATORY_TYPE_GT},
|
||||
{"GU", ESP_WIFI_REGULATORY_TYPE_GU},
|
||||
@@ -162,7 +168,8 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"HU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ID", ESP_WIFI_REGULATORY_TYPE_ID},
|
||||
{"IE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IL", ESP_WIFI_REGULATORY_TYPE_IL},
|
||||
{"IL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IM", ESP_WIFI_REGULATORY_TYPE_FO},
|
||||
{"IN", ESP_WIFI_REGULATORY_TYPE_WPC},
|
||||
{"IR", ESP_WIFI_REGULATORY_TYPE_IR},
|
||||
{"IS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
@@ -190,13 +197,13 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"MC", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ME", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MF", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"MF", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"MH", ESP_WIFI_REGULATORY_TYPE_AS},
|
||||
{"MK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MN", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
{"MO", ESP_WIFI_REGULATORY_TYPE_MO},
|
||||
{"MP", ESP_WIFI_REGULATORY_TYPE_AS},
|
||||
{"MQ", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"MQ", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"MR", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"MT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MU", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
@@ -214,18 +221,18 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"OM", ESP_WIFI_REGULATORY_TYPE_OM},
|
||||
{"PA", ESP_WIFI_REGULATORY_TYPE_PA},
|
||||
{"PE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PF", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"PF", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"PG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PH", ESP_WIFI_REGULATORY_TYPE_PH},
|
||||
{"PK", ESP_WIFI_REGULATORY_TYPE_PK},
|
||||
{"PL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PM", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"PM", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"PR", ESP_WIFI_REGULATORY_TYPE_GD},
|
||||
{"PT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PW", ESP_WIFI_REGULATORY_TYPE_AS},
|
||||
{"PY", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
{"QA", ESP_WIFI_REGULATORY_TYPE_QA},
|
||||
{"RE", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"RE", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"RO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"RS", ESP_WIFI_REGULATORY_TYPE_RS},
|
||||
{"RU", ESP_WIFI_REGULATORY_TYPE_RU},
|
||||
@@ -235,11 +242,13 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"SG", ESP_WIFI_REGULATORY_TYPE_SG},
|
||||
{"SI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SM", ESP_WIFI_REGULATORY_TYPE_FO},
|
||||
{"SN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SR", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"SV", ESP_WIFI_REGULATORY_TYPE_SV},
|
||||
{"SX", ESP_WIFI_REGULATORY_TYPE_SX},
|
||||
{"SY", ESP_WIFI_REGULATORY_TYPE_SY},
|
||||
{"TC", ESP_WIFI_REGULATORY_TYPE_TC},
|
||||
{"TC", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
{"TD", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"TG", ESP_WIFI_REGULATORY_TYPE_TG},
|
||||
{"TH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
@@ -247,23 +256,25 @@ const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
{"TR", ESP_WIFI_REGULATORY_TYPE_TR},
|
||||
{"TT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TW", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"TZ", ESP_WIFI_REGULATORY_TYPE_TZ},
|
||||
{"TZ", ESP_WIFI_REGULATORY_TYPE_BW},
|
||||
{"UA", ESP_WIFI_REGULATORY_TYPE_UA},
|
||||
{"UG", ESP_WIFI_REGULATORY_TYPE_BS},
|
||||
{"US", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"UY", ESP_WIFI_REGULATORY_TYPE_BB},
|
||||
{"UZ", ESP_WIFI_REGULATORY_TYPE_MA},
|
||||
{"VA", ESP_WIFI_REGULATORY_TYPE_FO},
|
||||
{"VC", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"VE", ESP_WIFI_REGULATORY_TYPE_VE},
|
||||
{"VI", ESP_WIFI_REGULATORY_TYPE_AS},
|
||||
{"VN", ESP_WIFI_REGULATORY_TYPE_VN},
|
||||
{"VU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"WF", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"WF", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"WS", ESP_WIFI_REGULATORY_TYPE_WS},
|
||||
{"YE", ESP_WIFI_REGULATORY_TYPE_YE},
|
||||
{"YT", ESP_WIFI_REGULATORY_TYPE_AI},
|
||||
{"YT", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"ZA", ESP_WIFI_REGULATORY_TYPE_ZA},
|
||||
{"ZW", ESP_WIFI_REGULATORY_TYPE_AF},
|
||||
{"##", ESP_WIFI_REGULATORY_TYPE_MAX}, /* Sentinel: end of table; not a real country code — do not use as wifi_country_t.cc. */
|
||||
};
|
||||
|
||||
const wifi_regulatory_t regulatory_data[] = {
|
||||
@@ -315,12 +326,12 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{
|
||||
6, /* Number of rules */
|
||||
{
|
||||
{ 1, 11, 2, 30, 0, 0 }, /* chan:1~11, max_bw:40M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 1, 13, 2, 36, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 24, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 100, 116, 3, 24, 1, 0 }, /* chan:100~116, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 132, 144, 3, 24, 1, 0 }, /* chan:132~144, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 26, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:26(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 4, 26, 1, 0 }, /* chan:100~144, max_bw:160M, max_power:26(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 36, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
{ 173, 177, 2, 27, 0, 0 }, /* chan:173~177, max_bw:40M, max_power:27(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_SRRC */
|
||||
@@ -419,7 +430,7 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 24, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 4, 24, 1, 0 }, /* chan:100~144, max_bw:160M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 149, 169, 3, 27, 0, 0 }, /* chan:149~169, max_bw:80M, max_power:27(dBm), dfs:0, reserved.*/
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 173, 177, 2, 27, 0, 0 }, /* chan:173~177, max_bw:40M, max_power:27(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
@@ -433,16 +444,6 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 100, 140, 4, 27, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:27(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_AI */
|
||||
{
|
||||
4, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 20, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 27, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:27(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_AM */
|
||||
{
|
||||
3, /* Number of rules */
|
||||
@@ -530,6 +531,17 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_BW */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 23, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:23(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 24, 1, 0 }, /* chan:149~165, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_BZ */
|
||||
{
|
||||
2, /* Number of rules */
|
||||
@@ -551,13 +563,14 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_CR */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
6, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 36, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 1, 30, 0, 0 }, /* chan:36~48, max_bw:20M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 1, 30, 1, 0 }, /* chan:52~64, max_bw:20M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 1, 30, 1, 0 }, /* chan:100~144, max_bw:20M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 1, 36, 0, 0 }, /* chan:149~165, max_bw:20M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 30, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 30, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 4, 30, 1, 0 }, /* chan:100~144, max_bw:160M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 36, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
{ 173, 177, 2, 36, 0, 0 }, /* chan:173~177, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_CU */
|
||||
@@ -610,6 +623,16 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_FO */
|
||||
{
|
||||
4, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 26, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:26(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_GB */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
@@ -673,17 +696,6 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 149, 161, 3, 23, 0, 0 }, /* chan:149~161, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_IL */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 26, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:26(dBm), dfs:1, reserved.*/
|
||||
{ 149, 173, 3, 13, 0, 0 }, /* chan:149~173, max_bw:80M, max_power:13(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_IR */
|
||||
{
|
||||
4, /* Number of rules */
|
||||
@@ -815,11 +827,11 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 26, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:26(dBm), dfs:0, reserved.*/
|
||||
{ 1, 14, 2, 26, 0, 0 }, /* chan:1~14, max_bw:40M, max_power:26(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 30, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 30, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 100, 128, 4, 30, 1, 0 }, /* chan:100~128, max_bw:160M, max_power:30(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 23, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:23(dBm), dfs:1, reserved.*/
|
||||
{ 100, 128, 4, 23, 1, 0 }, /* chan:100~128, max_bw:160M, max_power:23(dBm), dfs:1, reserved.*/
|
||||
{ 149, 173, 3, 30, 0, 0 }, /* chan:149~173, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_NA */
|
||||
@@ -903,7 +915,7 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 64, 4, 20, 0, 0 }, /* chan:36~64, max_bw:160M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 132, 165, 4, 20, 0, 0 }, /* chan:132~165, max_bw:160M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 132, 165, 4, 23, 0, 0 }, /* chan:132~165, max_bw:160M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_SG */
|
||||
@@ -927,6 +939,17 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 149, 165, 1, 30, 0, 0 }, /* chan:149~165, max_bw:20M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_SX */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 16, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:16(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 21, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:21(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 23, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:23(dBm), dfs:1, reserved.*/
|
||||
{ 149, 173, 3, 24, 1, 0 }, /* chan:149~173, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_SY */
|
||||
{
|
||||
6, /* Number of rules */
|
||||
@@ -939,17 +962,6 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 173, 173, 1, 23, 0, 0 }, /* chan:173~173, max_bw:20M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_TC */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 24, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:24(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 24, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 4, 24, 1, 0 }, /* chan:100~144, max_bw:160M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_TG */
|
||||
{
|
||||
3, /* Number of rules */
|
||||
@@ -969,17 +981,6 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 100, 140, 4, 27, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:27(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_TZ */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 23, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:23(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 24, 1, 0 }, /* chan:149~165, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_UA */
|
||||
{
|
||||
5, /* Number of rules */
|
||||
@@ -1005,10 +1006,10 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{
|
||||
5, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 17, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:17(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 24, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 100, 144, 3, 24, 1, 0 }, /* chan:100~144, max_bw:80M, max_power:24(dBm), dfs:1, reserved.*/
|
||||
{ 1, 13, 2, 23, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 36, 48, 3, 23, 0, 0 }, /* chan:36~48, max_bw:80M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
{ 52, 64, 3, 20, 1, 0 }, /* chan:52~64, max_bw:80M, max_power:20(dBm), dfs:1, reserved.*/
|
||||
{ 100, 140, 4, 26, 1, 0 }, /* chan:100~140, max_bw:160M, max_power:26(dBm), dfs:1, reserved.*/
|
||||
{ 149, 165, 3, 30, 0, 0 }, /* chan:149~165, max_bw:80M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
@@ -1056,194 +1057,204 @@ typedef enum {
|
||||
ESP_WIFI_REGULATORY_TYPE_RCM,
|
||||
ESP_WIFI_REGULATORY_TYPE_NCC,
|
||||
ESP_WIFI_REGULATORY_TYPE_FCC,
|
||||
ESP_WIFI_REGULATORY_TYPE_CU,
|
||||
ESP_WIFI_REGULATORY_TYPE_GT,
|
||||
ESP_WIFI_REGULATORY_TYPE_ID,
|
||||
ESP_WIFI_REGULATORY_TYPE_KE,
|
||||
ESP_WIFI_REGULATORY_TYPE_KP,
|
||||
ESP_WIFI_REGULATORY_TYPE_OM,
|
||||
ESP_WIFI_REGULATORY_TYPE_MY,
|
||||
ESP_WIFI_REGULATORY_TYPE_PK,
|
||||
ESP_WIFI_REGULATORY_TYPE_TG,
|
||||
ESP_WIFI_REGULATORY_TYPE_MAX,
|
||||
} esp_wifi_regulatory_type_t;
|
||||
|
||||
const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {
|
||||
/*
|
||||
* regdomain_table: ISO alpha-2 country codes and their regulatory profile indices.
|
||||
* Last row is a sentinel (not a real country code).
|
||||
*/
|
||||
const wifi_regdomain_t regdomain_table[] = {
|
||||
{"01", ESP_WIFI_REGULATORY_TYPE_DEFAULT},
|
||||
{"EU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AM", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AS", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"AT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AU", ESP_WIFI_REGULATORY_TYPE_ACMA},
|
||||
{"AW", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"AZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BA", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BB", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BG", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BM", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"BN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BR", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"BS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BY", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"BZ", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"CA", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"CF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CR", ESP_WIFI_REGULATORY_TYPE_OFCA},
|
||||
{"CU", ESP_WIFI_REGULATORY_TYPE_CU},
|
||||
{"CX", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CY", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"CZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"DE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"DK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"DM", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"DO", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"DZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"EC", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"EE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"EG", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ES", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ET", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"FI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"FM", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"FR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GB", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GD", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"GE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GP", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"EU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AD", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AS", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"AT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AU", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"AW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"AZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BB", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BD", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BM", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"BN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BR", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"BS", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BY", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"BZ", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"CA", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"CF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CR", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"CU", ESP_WIFI_REGULATORY_TYPE_KCC},
|
||||
{"CX", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CY", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"CZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"DE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"DK", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"DM", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"DO", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"DZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"EC", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"EE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"EG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ES", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ET", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"FI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"FM", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"FO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"FR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GB", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GD", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"GE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GP", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"GT", ESP_WIFI_REGULATORY_TYPE_GT},
|
||||
{"GU", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"GY", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"HK", ESP_WIFI_REGULATORY_TYPE_OFCA},
|
||||
{"HN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"HR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"HT", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"HU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ID", ESP_WIFI_REGULATORY_TYPE_ID},
|
||||
{"IE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IN", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"IR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"IT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"JM", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"JO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"GU", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"GY", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"HK", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"HN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"HR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"HT", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"HU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ID", ESP_WIFI_REGULATORY_TYPE_GT},
|
||||
{"IE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"IL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"IM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"IN", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"IR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"IS", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"IT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"JM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"JO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"JP", ESP_WIFI_REGULATORY_TYPE_MIC},
|
||||
{"KE", ESP_WIFI_REGULATORY_TYPE_KE},
|
||||
{"KH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"KN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"KH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"KN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"KP", ESP_WIFI_REGULATORY_TYPE_KP},
|
||||
{"KR", ESP_WIFI_REGULATORY_TYPE_KCC},
|
||||
{"KW", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"KY", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"KZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LB", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LC", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"LV", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MA", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MC", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ME", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MH", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"MK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MO", ESP_WIFI_REGULATORY_TYPE_CU},
|
||||
{"MP", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"MQ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MV", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MW", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MX", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"MY", ESP_WIFI_REGULATORY_TYPE_GT},
|
||||
{"NA", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"NG", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"NI", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"NL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"NO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"NP", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"NZ", ESP_WIFI_REGULATORY_TYPE_OFCA},
|
||||
{"OM", ESP_WIFI_REGULATORY_TYPE_OM},
|
||||
{"PA", ESP_WIFI_REGULATORY_TYPE_OFCA},
|
||||
{"PE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PG", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"KW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"KY", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"KZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LB", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LC", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LK", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LS", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"LV", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MC", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MD", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ME", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MH", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"MK", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MO", ESP_WIFI_REGULATORY_TYPE_KCC},
|
||||
{"MP", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"MQ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MV", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MX", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"MY", ESP_WIFI_REGULATORY_TYPE_MY},
|
||||
{"NA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"NG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"NI", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"NL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"NO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"NP", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"NZ", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"OM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PA", ESP_WIFI_REGULATORY_TYPE_RCM},
|
||||
{"PE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PK", ESP_WIFI_REGULATORY_TYPE_PK},
|
||||
{"PL", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PM", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PR", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"PT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PW", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"PY", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"QA", ESP_WIFI_REGULATORY_TYPE_OM},
|
||||
{"RE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"RO", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"RS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"RU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"RW", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SA", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SG", ESP_WIFI_REGULATORY_TYPE_CU},
|
||||
{"SI", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SK", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SV", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"SY", ESP_WIFI_REGULATORY_TYPE_OM},
|
||||
{"TC", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TD", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"PL", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PR", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"PT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"PW", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"PY", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"QA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"RE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"RO", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"RS", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"RU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"RW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SG", ESP_WIFI_REGULATORY_TYPE_KCC},
|
||||
{"SI", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SK", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SM", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SV", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SX", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"SY", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TC", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TD", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TG", ESP_WIFI_REGULATORY_TYPE_TG},
|
||||
{"TH", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TR", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TW", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"TZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"UA", ESP_WIFI_REGULATORY_TYPE_OM},
|
||||
{"UG", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"US", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"UY", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"UZ", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"VC", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"VE", ESP_WIFI_REGULATORY_TYPE_ANATEL},
|
||||
{"VI", ESP_WIFI_REGULATORY_TYPE_ISED},
|
||||
{"VN", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"VU", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"WF", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"WS", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"YE", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"YT", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ZA", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"ZW", ESP_WIFI_REGULATORY_TYPE_CE},
|
||||
{"TH", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TN", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TR", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"TW", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"TZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"UA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"UG", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"US", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"UY", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"UZ", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"VA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"VC", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"VE", ESP_WIFI_REGULATORY_TYPE_NCC},
|
||||
{"VI", ESP_WIFI_REGULATORY_TYPE_FCC},
|
||||
{"VN", ESP_WIFI_REGULATORY_TYPE_KCC},
|
||||
{"VU", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"WF", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"WS", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"YE", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"YT", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ZA", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"ZW", ESP_WIFI_REGULATORY_TYPE_IFETEL},
|
||||
{"##", ESP_WIFI_REGULATORY_TYPE_MAX}, /* Sentinel: end of table; not a real country code — do not use as wifi_country_t.cc. */
|
||||
};
|
||||
|
||||
const wifi_regulatory_t regulatory_data[] = {
|
||||
@@ -1279,10 +1290,10 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 11, 2, 30, 0, 0 }, /* chan:1~11, max_bw:40M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
{ 1, 13, 2, 36, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_CE */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_SRRC */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
@@ -1296,7 +1307,7 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 1, 13, 2, 36, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_ANATEL */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_WPC */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
@@ -1318,41 +1329,34 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 1, 13, 2, 23, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_CE */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_IFETEL */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_OFCA */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_RCM */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 36, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:36(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_ANATEL */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_NCC */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 30, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_ISED */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_FCC */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 11, 2, 30, 0, 0 }, /* chan:1~11, max_bw:40M, max_power:30(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_CU */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 23, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:23(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_GT */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
@@ -1360,13 +1364,6 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 1, 13, 2, 26, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:26(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_ID */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 26, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:26(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_KE */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
@@ -1381,11 +1378,11 @@ const wifi_regulatory_t regulatory_data[] = {
|
||||
{ 1, 13, 1, 20, 0, 0 }, /* chan:1~13, max_bw:20M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_OM */
|
||||
/* ESP_WIFI_REGULATORY_TYPE_MY */
|
||||
{
|
||||
1, /* Number of rules */
|
||||
{
|
||||
{ 1, 13, 2, 20, 0, 0 }, /* chan:1~13, max_bw:40M, max_power:20(dBm), dfs:0, reserved.*/
|
||||
{ 1, 14, 2, 26, 0, 0 }, /* chan:1~14, max_bw:40M, max_power:26(dBm), dfs:0, reserved.*/
|
||||
}
|
||||
},
|
||||
/* ESP_WIFI_REGULATORY_TYPE_PK */
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# SPDX-FileCopyrightText: 2008 Johannes Berg <johannes@sipsolutions.net>
|
||||
# SPDX-FileCopyrightText: 2008 Michael Green <Michael.Green@Atheros.com>
|
||||
#
|
||||
# SPDX-FileContributor: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileContributor: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2008, Luis R. Rodriguez <mcgrof@gmail.com>
|
||||
@@ -60,6 +60,9 @@ country EU: DFS-ETSI
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries: https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country AD: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -67,6 +70,7 @@ country AD: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
@@ -99,6 +103,9 @@ country AI: DFS-ETSI
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country AL: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -106,6 +113,7 @@ country AL: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# 2.4 GHz https://www.psrc.am/contents/document/4749
|
||||
@@ -146,6 +154,9 @@ country AS: DFS-FCC
|
||||
# Harmonized CEPT countries (February 2021): https://docdb.cept.org/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# AT: https://www.rtr.at/TKP/was_wir_tun/telekommunikation/spectrum/bands/1997_bmvit-info-052010en.pdf
|
||||
# AT: acceptance https://www.ris.bka.gv.at/Dokumente/BgblAuth/BGBLA_2014_II_63/BGBLA_2014_II_63.pdfsig
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country AT: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -160,43 +171,43 @@ country AT: DFS-ETSI
|
||||
|
||||
# Source:
|
||||
# 'Item' in the comments below refers to each numbered rule found at:
|
||||
# https://www.legislation.gov.au/Details/F2023C00524
|
||||
# https://www.legislation.gov.au/Details/F2025L01047 within Table 8
|
||||
# except for 5850-5875 which is found in Table 1.
|
||||
# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
|
||||
# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
|
||||
# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
|
||||
# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
|
||||
country AU: DFS-ETSI
|
||||
# Item 58
|
||||
(915 - 920 @ 4), (1000 mW)
|
||||
(920 - 928 @ 8), (1000 mW)
|
||||
# Item 1
|
||||
(915 - 928 @ 8), (1000 mW)
|
||||
|
||||
# Item 59
|
||||
# Item 3 and 7
|
||||
(2400 - 2483.5 @ 40), (4000 mW)
|
||||
|
||||
# Item 61
|
||||
# Item 10
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
|
||||
# Item 62 (200 mW allowed if TPC is used)
|
||||
# Item 11 (200 mW allowed if TPC is used)
|
||||
(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, AUTO-BW, DFS
|
||||
|
||||
# Item 63(a) (1000 mW with TPC)
|
||||
# Item 12(a) (1000 mW with TPC)
|
||||
(5470 - 5600 @ 80), (500 mW), DFS
|
||||
|
||||
# Item 63(b) (1000 mW with TPC)
|
||||
# Item 12(b) (1000 mW with TPC)
|
||||
# The end is 5725 but we borrow 5 MHz from the following less restrictive band
|
||||
# so we can get an 80 MHz channel.
|
||||
(5650 - 5730 @ 80), (500 mW), DFS
|
||||
|
||||
# Item 60
|
||||
# Item 9
|
||||
(5730 - 5850 @ 80), (4000 mW), AUTO-BW
|
||||
|
||||
# Item 22
|
||||
# Item 22 of Table 1
|
||||
(5850 - 5875 @ 20), (25 mW), AUTO-BW
|
||||
|
||||
# Item 63AA (25 mW if outdoors)
|
||||
(5925 - 6425 @ 160), (250 mW), NO-OUTDOOR
|
||||
# Item 13 (25 mW if outdoors)
|
||||
(5925 - 6585 @ 320), (250 mW), NO-OUTDOOR
|
||||
|
||||
# Item 65
|
||||
# Item 18
|
||||
(57000 - 71000 @ 2160), (20000 mW), NO-OUTDOOR
|
||||
|
||||
country AW: DFS-ETSI
|
||||
@@ -216,6 +227,9 @@ country AZ: DFS-ETSI
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country BA: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -223,6 +237,7 @@ country BA: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
@@ -246,6 +261,9 @@ country BD: DFS-JP
|
||||
# BE: https://www.ibpt.be/public/files/en/21761/B03-02_2.1_EN.pdf
|
||||
# BE: https://www.ibpt.be/public/files/en/21762/B03-03_2.1_EN.pdf
|
||||
# BE: https://www.ibpt.be/public/files/en/22165/B01-28_3.1_EN.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country BE: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -348,7 +366,7 @@ country BO: DFS-JP
|
||||
# Source:
|
||||
# https://www.gov.br/anatel/pt-br/regulado/radiofrequencia/radiacao-restrita
|
||||
# https://informacoes.anatel.gov.br/legislacao/resolucoes/2017/936-resolucao-680
|
||||
# https://informacoes.anatel.gov.br/legislacao/atos-de-certificacao-de-produtos/2017/1139-ato-14448
|
||||
# https://informacoes.anatel.gov.br/legislacao/atos-de-certificacao-de-produtos/2021/1510-ato-1306
|
||||
country BR: DFS-FCC
|
||||
(2400 - 2483.5 @ 40), (30)
|
||||
# The next three ranges have been reduced by 3dB, could be increased
|
||||
@@ -357,7 +375,7 @@ country BR: DFS-FCC
|
||||
(5250 - 5350 @ 80), (27), NO-OUTDOOR, DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (27), DFS, AUTO-BW
|
||||
(5725 - 5850 @ 80), (30), AUTO-BW
|
||||
(5925 - 7125 @ 320), (12), NO-OUTDOOR, NO-IR
|
||||
(5925 - 7125 @ 320), (12), NO-OUTDOOR
|
||||
# EIRP=40dBm (43dBm peak)
|
||||
(57000 - 71000 @ 2160), (40)
|
||||
|
||||
@@ -376,6 +394,15 @@ country BT: DFS-ETSI
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (27), DFS
|
||||
|
||||
# Source:
|
||||
# https://www.bocra.org.bw/sites/default/files/documents/Annexure_3.3.2A_SRDs_Guidelines_Feb_2022.pdf
|
||||
country BW: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), AUTO-BW
|
||||
(5250 - 5350 @ 80), (20), DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (250 mW), DFS
|
||||
(5725 - 5850 @ 80), (24), DFS
|
||||
|
||||
country BY: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW
|
||||
@@ -387,15 +414,20 @@ country BZ: DFS-JP
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
# Sources:
|
||||
# https://www.ic.gc.ca/eic/site/smt-gst.nsf/vwapj/rss-247-i2-e.pdf/$file/rss-247-i2-e.pdf
|
||||
# RSS-247 Issue 4
|
||||
# https://ised-isde.canada.ca/site/spectrum-management-telecommunications/en/devices-and-equipment/radio-equipment-standards/radio-standards-specifications-rss/rss-247-digital-transmission-systems-dtss-frequency-hopping-systems-fhss-and-licence-exempt-local
|
||||
# https://www.ic.gc.ca/eic/site/smt-gst.nsf/eng/sf11750.html (6 GHz operation)
|
||||
country CA: DFS-FCC
|
||||
(2402 - 2472 @ 40), (30)
|
||||
(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (24), DFS, AUTO-BW
|
||||
(5470 - 5600 @ 80), (24), DFS
|
||||
(5650 - 5730 @ 80), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
(2400 - 2483.5 @ 40), (4000 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (500 mW), DFS, AUTO-BW
|
||||
# This range ends at 5725 MHz, but channel 144 extends to 5730 MHz.
|
||||
# Since 5725 ~ 5730 MHz belongs to the next range which has looser
|
||||
# requirements, we can extend the range by 5 MHz to make the kernel
|
||||
# happy and be able to use channel 144.
|
||||
(5470 - 5730 @ 160), (500 mW), DFS
|
||||
(5730 - 5850 @ 80), (4000 mW), AUTO-BW
|
||||
(5850 - 5895 @ 40), (27), AUTO-BW
|
||||
(5925 - 7125 @ 320), (12), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
@@ -417,6 +449,9 @@ country CF: DFS-FCC
|
||||
# CH: https://www.ofcomnet.ch/api/rir/1010/04
|
||||
# CH: https://www.ofcomnet.ch/api/rir/1008/12
|
||||
# CH: https://www.ofcomnet.ch/#/fatTable
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country CH: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -473,14 +508,17 @@ country CO: DFS-FCC
|
||||
|
||||
# Source:
|
||||
# https://storage.googleapis.com/eleoscompliance1.appspot.com/public/PNAF%20modificaci%C3%B3n%20ALCA87_30_04_2021.pdf
|
||||
# https://pgrweb.go.cr/scij/Busqueda/Normativa/Normas/nrm_texto_completo.aspx?param1=NRTC&nValor1=1&nValor2=99551&nValor3=144158&strTipM=TC
|
||||
country CR: DFS-FCC
|
||||
(2402 - 2482 @ 40), (36)
|
||||
(5170 - 5250 @ 20), (30)
|
||||
(5250 - 5330 @ 20), (30), DFS
|
||||
(5490 - 5730 @ 20), (30), DFS
|
||||
(5735 - 5835 @ 20), (36)
|
||||
(5875 - 5925 @ 20), (30)
|
||||
(5150 - 5250 @ 80), (30), AUTO-BW
|
||||
(5250 - 5350 @ 80), (30), DFS, AUTO-BW
|
||||
(5470 - 5730 @ 160), (30), DFS
|
||||
(5730 - 5850 @ 80), (36), AUTO-BW
|
||||
(5850 - 5895 @ 40), (36), AUTO-BW
|
||||
(5895 - 5925 @ 20), (30), AUTO-BW
|
||||
(5925 - 7125 @ 320), (30), NO-OUTDOOR
|
||||
(57000 - 71000 @ 2160), (43)
|
||||
|
||||
# Source:
|
||||
# https://www.mincom.gob.cu/es/marco-legal
|
||||
@@ -643,26 +681,31 @@ country EC: DFS-FCC
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# EU decision 2021/1067/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32021D1067&from=EN
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# EE: https://www.ttja.ee/et/ettevottele-organisatsioonile/sideteenused/raadioseadmed/wifi-seade
|
||||
# EE: https://ttja.ee/eraklient/side-ja-meediateenused/raadioside/wifi-seadmete-kasutus
|
||||
# EE: https://www.riigiteataja.ee/akt/117052024018?leiaKehtiv (Lisa 6)
|
||||
# EE: https://www.itu.int/ITU-D/study_groups/SGP_1998-2002/JGRES09/pdf/estonia.pdf
|
||||
country EE: DFS-ETSI
|
||||
(863 - 868 @ 1), (25 mW)
|
||||
(915.8 - 919.4 @ 1), (25 mW)
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW, wmmrule=ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, AUTO-BW, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5725 - 5875 @ 80), (25 mW), AUTO-BW
|
||||
# 6 GHz band
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR, wmmrule=ETSI
|
||||
(5945 - 6425 @ 320), (200 mW), NO-OUTDOOR, wmmrule=ETSI
|
||||
# 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
(57000 - 71000 @ 8640), (40)
|
||||
|
||||
# https://www.tra.gov.eg/wp-content/uploads/2022/03/EGY-NTRA-March-2022-SRD_English_Final.pdf
|
||||
# https://www.tra.gov.eg/wp-content/uploads/2024/11/EGY-NTRA-November-2024-SRD_English-1.pdf
|
||||
country EG: DFS-ETSI
|
||||
(2402 - 2483.5 @ 40), (20)
|
||||
(5150 - 5250 @ 80), (23), AUTO-BW, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (20), DFS, AUTO-BW, wmmrule=ETSI
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
(2402 - 2483.5 @ 40), (100 mW), NO-OUTDOOR
|
||||
(5150 - 5250 @ 80), (200 mW), AUTO-BW, NO-OUTDOOR, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW, NO-OUTDOOR, wmmrule=ETSI
|
||||
(5925 - 6425 @ 320), (250 mW), NO-OUTDOOR
|
||||
(57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
|
||||
# ES as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
@@ -714,6 +757,13 @@ country FM: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
country FO: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# FR as part of EU/CEPT accepted decisions 2005/513/EC (5GHz RLAN, EN 301 893)
|
||||
# and 2006/771/EC (amended by 2008/432/EC, Short-Range Devices, EN 300 440)
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
@@ -748,7 +798,7 @@ country GB: DFS-ETSI
|
||||
(5470 - 5730 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5850 @ 80), (200 mW), NO-OUTDOOR
|
||||
(5925 - 6425 @ 160), (250 mW), NO-OUTDOOR, wmmrule=ETSI
|
||||
(5925 - 6425 @ 320), (250 mW), NO-OUTDOOR, wmmrule=ETSI
|
||||
# 60 GHz band channels 1-6
|
||||
(57000 - 71000 @ 2160), (40)
|
||||
|
||||
@@ -759,10 +809,15 @@ country GD: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
# Source:
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country GE: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (18), AUTO-BW
|
||||
(5250 - 5330 @ 80), (18), DFS, AUTO-BW
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
@@ -779,6 +834,13 @@ country GH: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
country GI: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
country GL: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW, wmmrule=ETSI
|
||||
@@ -847,7 +909,7 @@ country HK: DFS-ETSI
|
||||
(5250 - 5350 @ 80), (23), DFS, AUTO-BW, NO-OUTDOOR
|
||||
(5470 - 5730 @ 160), (27), DFS
|
||||
(5730 - 5850 @ 80), (36)
|
||||
(5925 - 6425 @ 160), (14)
|
||||
(5945 - 6425 @ 160), (24), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://www.conatel.gob.hn/doc/Regulacion/resoluciones/2023/NR05-23.pdf
|
||||
@@ -954,6 +1016,13 @@ country IL: DFS-ETSI
|
||||
(5725 - 5875 @ 80), (25 mW), AUTO-BW
|
||||
(5945 - 6425 @ 320), (200 mW), NO-OUTDOOR
|
||||
|
||||
country IM: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://dot.gov.in/spectrummanagement/delicensing-24-24835-ghz-band-gsr-45-e-5150-5350-ghz-gsr-46-e-and-5725-5875-ghz
|
||||
# https://dot.gov.in/spectrummanagement/license-exemption-5-ghz-gsr-1048e-dated-22102018
|
||||
@@ -963,6 +1032,7 @@ country IN:
|
||||
(5250 - 5350 @ 80), (24), DFS
|
||||
(5470 - 5725 @ 160), (24), DFS
|
||||
(5725 - 5875 @ 80), (30)
|
||||
(5925 - 6425 @ 320), (24), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://asnad.cra.ir/fa/Public/Documents/Details/73af8590-f065-eb11-968f-0050569b0899
|
||||
@@ -978,7 +1048,9 @@ country IR: DFS-ETSI
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# IS: https://www.pfs.is/library/Skrar/Tidnir-og-taekni/MHZ_21022019.pdf
|
||||
# CEPT ECC Decision (20)01 for 6GHz: https://docdb.cept.org/download/1448
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country IS: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1089,8 +1161,9 @@ country KR: DFS-JP
|
||||
(5250 - 5350 @ 80), (20), DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (20), DFS
|
||||
(5725 - 5850 @ 80), (23)
|
||||
# 6 GHz band
|
||||
(5925 - 7125 @ 160), (15), NO-OUTDOOR
|
||||
# 6 GHz band - per MSIT Notice 2026-10
|
||||
(5925 - 6425 @ 320), (18), NO-OUTDOOR, AUTO-BW
|
||||
(6425 - 7125 @ 320), (15), NO-OUTDOOR, AUTO-BW
|
||||
# 60 GHz band channels 1-4
|
||||
(57000 - 66000 @ 2160), (43)
|
||||
|
||||
@@ -1117,11 +1190,12 @@ country KY: DFS-FCC
|
||||
# http://adilet.zan.kz/rus/docs/V1500010730
|
||||
# http://adilet.zan.kz/rus/docs/V1500010375
|
||||
country KZ: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (20)
|
||||
(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (20), NO-OUTDOOR, DFS
|
||||
(5725 - 5850 @ 80), (20), NO-OUTDOOR
|
||||
(5470 - 5725 @ 160), (100 mW), NO-OUTDOOR, DFS
|
||||
(5725 - 5850 @ 80), (100 mW), NO-OUTDOOR
|
||||
(5925 - 6425 @ 320), (200 mW), NO-OUTDOOR
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country LB: DFS-FCC
|
||||
@@ -1149,8 +1223,10 @@ country LC: DFS-ETSI
|
||||
# LI: https://www.ofcomnet.ch/api/rir/1010/04
|
||||
# LI: https://www.ofcomnet.ch/api/rir/1008/12
|
||||
# LI: https://www.ofcomnet.ch/#/fatTable
|
||||
# CEPT ECC Decision (20)01 for 6GHz: https://docdb.cept.org/download/1448
|
||||
# LI: https://www.ofcomnet.ch/api/rir/1010/11
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country LI: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1248,6 +1324,9 @@ country MA: DFS-ETSI
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country MC: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1255,6 +1334,7 @@ country MC: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# http://www.cnfr.md/index.php?pag=sec&id=117&l=en
|
||||
@@ -1264,6 +1344,9 @@ country MC: DFS-ETSI
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# https://www.legis.md/cautare/downloadpdf/134846
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country MD: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1280,6 +1363,9 @@ country MD: DFS-ETSI
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country ME: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1287,6 +1373,7 @@ country ME: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
country MF: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
@@ -1306,6 +1393,9 @@ country MH: DFS-FCC
|
||||
# EU decision 2005/513/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02005D0513-20070213
|
||||
# EU decision 2006/771/EC: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:02008D0432-20080611
|
||||
# Harmonized CEPT countries (July 2019): https://www.ecodocdb.dk/download/25c41779-cd6e/Rec7003e.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country MK: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1313,6 +1403,7 @@ country MK: DFS-ETSI
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, wmmrule=ETSI
|
||||
# short range devices (ETSI EN 300 440-1)
|
||||
(5725 - 5875 @ 80), (25 mW)
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
@@ -1413,14 +1504,16 @@ country MX: DFS-FCC
|
||||
(5925 - 6425 @ 320), (12), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://www.mcmc.gov.my/skmmgovmy/media/General/CA-No-1-of-2022_-signed_19012022.pdf
|
||||
# https://www.mcmc.gov.my/skmmgovmy/media/General/pdf2/Class-Assignment-No-2-of-2025.pdf
|
||||
country MY: DFS-FCC
|
||||
(2402 - 2482 @ 40), (500 mW)
|
||||
(5170 - 5250 @ 80), (1000 mW), AUTO-BW
|
||||
(5250 - 5330 @ 80), (1000 mW), DFS, AUTO-BW
|
||||
(5490 - 5650 @ 160), (1000 mW), DFS
|
||||
(5735 - 5835 @ 80), (1000 mW)
|
||||
(5925 - 6425 @ 320), (200 mW), NO-OUTDOOR
|
||||
(2400 - 2500 @ 40), (500 mW)
|
||||
(5150 - 5250 @ 80), (1000 mW), AUTO-BW, NO-OUTDOOR
|
||||
# 5250 - 5350 MHz regulatory limit is 1000 mW, but 200 mW reaches the PSD limit of 10 mW / MHz at 20 MHz channel width
|
||||
(5250 - 5350 @ 80), (200 mW), DFS, AUTO-BW, NO-OUTDOOR
|
||||
# 5470 - 5650 MHz regulatory limit is 1000 mW, but 200 mW reaches the PSD limit of 10 mW / MHz at 20 MHz channel width
|
||||
(5470 - 5650 @ 160), (200 mW), DFS
|
||||
(5725 - 5875 @ 80), (1000 mW)
|
||||
(5925 - 6425 @ 320), (250 mW), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://www.cran.na/yglilidy/2023/04/GG-8060-dated-3-April-2023.pdf
|
||||
@@ -1476,6 +1569,9 @@ country NL: DFS-ETSI
|
||||
# NO: https://eng.nkom.no/technical/temporary-licenses/mobile-videolink/wireless-cameras-mobile-video-links/_attachment/9947
|
||||
# NO: http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77
|
||||
# In addition to EU NO can use 5725–5795 MHz and 5815–5850 bands with limit of 4 W EIRP (with DFS and TPC)
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country NO: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1633,12 +1729,15 @@ country PW: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
# Source:
|
||||
# https://www.conatel.gov.py/conatel/wp-content/uploads/2025/05/2025-rd-1035-sistema-acceso-inalambrico-baja-potencia-6ghz-norma-tecnica.pdf
|
||||
country PY: DFS-FCC
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (24), AUTO-BW
|
||||
(5250 - 5330 @ 80), (24), DFS, AUTO-BW
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
(5925 - 6425 @ 320), (12), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://www.cra.gov.qa/-/media/System/D/2/5/8/D258CF18B83A5613B0D590193CB799CB/Class-License-WIFI-6E-Final-English-032022--V3.ashx
|
||||
@@ -1699,8 +1798,8 @@ country RS: DFS-ETSI
|
||||
country RU:
|
||||
(2400 - 2483.5 @ 40), (100mW)
|
||||
(5150 - 5350 @ 160), (100 mW), NO-OUTDOOR
|
||||
(5650 - 5850 @ 160), (100 mW), NO-OUTDOOR
|
||||
(5925 - 6425 @ 160), (100 mW), NO-OUTDOOR
|
||||
(5650 - 5850 @ 160), (200 mW), NO-OUTDOOR
|
||||
(5925 - 6425 @ 320), (200 mW), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Changes to NLA 124_Order №129_22042015.pdf
|
||||
(57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
|
||||
@@ -1804,6 +1903,13 @@ country SK: DFS-ETSI
|
||||
# 60 GHz band channels 1-4 (ETSI EN 302 567)
|
||||
(57000 - 66000 @ 2160), (40)
|
||||
|
||||
country SM: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# Regulation N° 2004-005 ART/DG/DRC/D.Rég
|
||||
country SN: DFS-FCC
|
||||
@@ -1828,6 +1934,15 @@ country SV: DFS-FCC
|
||||
(5735 - 5835 @ 20), (30)
|
||||
(5925 - 7125 @ 320), (12), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://btp.sx/dash/files/Telecommunications/Technical-Requirements/10t98466434723___TGVnYWwgYW5kIGlsbGVnYWwgd2lyZWxlc3MgY29tbXVuaWNhdGlvbiBkZXZpY2Vzb_64.pdf
|
||||
country SX: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (50 mW), AUTO-BW
|
||||
(5250 - 5350 @ 80), (21), DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (250 mW), DFS
|
||||
(5725 - 5875 @ 80), (24), DFS
|
||||
|
||||
# Source:
|
||||
# https://sytpra.gov.sy/public/uploads/files/%D8%A7%D9%84%D8%A7%D8%B7%D8%A7%D8%B1%20%D8%A7%D9%84%D9%82%D8%A7%D9%86%D9%88%D9%86%D9%8A/%D9%84%D9%88%D8%A7%D8%A6%D8%AD%20%D8%AA%D9%86%D8%B8%D9%8A%D9%85%D9%8A%D8%A9/%D9%84%D9%88%D8%A7%D8%A6%D8%AD%20%D8%A7%D9%84%D8%B7%D9%8A%D9%81%20%D8%A7%D9%84%D8%AA%D8%B1%D8%AF%D8%AF%D9%8A%20%D8%A7%D9%84%D8%B1%D8%A7%D8%AF%D9%8A%D9%88%D9%8A/L1.pdf
|
||||
country SY: DFS-ETSI
|
||||
@@ -1875,14 +1990,20 @@ country TH: DFS-FCC
|
||||
(5735 - 5835 @ 80), (30)
|
||||
(5925 - 6425 @ 320), (250 mW), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# https://www.anf.tn/sites/default/files/2025-01/Arr%C3%AAt%C3%A92024_4611.pdf
|
||||
country TN: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5925 - 6425 @ 320), (200 mW), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# Technical Criteria for Radio Devices and Systems Excluded from Frequency Allocation, Sept 9, 2022
|
||||
# https://www.btk.gov.tr/uploads/pages/ftm-teknik-olcutler-ek-5.pdf
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country TR: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (20)
|
||||
(5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
@@ -1939,14 +2060,18 @@ country TZ: DFS-ETSI
|
||||
# 2.4 GHz band channels can be used outdoors when some requirements are met.
|
||||
# 5 GHz band channels must be used only indoors in some cases. They are neither
|
||||
# permitted nor denied outdoors in others.
|
||||
# Harmonized CEPT countries for 6 GHz (ECC Decision (20)01)
|
||||
# https://docdb.cept.org/implementation/16737
|
||||
# https://docdb.cept.org/download/4685
|
||||
country UA: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW), NO-OUTDOOR
|
||||
(5150 - 5250 @ 80), (100 mW), NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW, wmmrule=ETSI
|
||||
(5470 - 5725 @ 160), (100 mW), DFS, NO-OUTDOOR, wmmrule=ETSI
|
||||
(5725 - 5850 @ 80), (100 mW), NO-OUTDOOR
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
# 60 GHz band channels 1-4, ref: Etsi En 302 567
|
||||
(57000 - 66000 @ 2160), (40 mW), NO-OUTDOOR
|
||||
(57000 - 66000 @ 2160), (40), NO-OUTDOOR
|
||||
|
||||
country UG: DFS-FCC
|
||||
(2402 - 2482 @ 40), (20)
|
||||
@@ -1977,14 +2102,10 @@ country US: DFS-FCC
|
||||
# requirements, we can extend the range by 5 MHz to make the kernel
|
||||
# happy and be able to use channel 144.
|
||||
(5470 - 5730 @ 160), (24), DFS
|
||||
# This range ends at 5850 MHz, but channel 169 extends to 5855 MHz.
|
||||
# Since 5850 ~ 5855 MHz belongs to the next range which has looser
|
||||
# requirements, we extend the range by 5 MHz to make the driver
|
||||
# happy and be able to use channel 169.
|
||||
(5730 - 5855 @ 80), (27), AUTO-BW
|
||||
(5730 - 5850 @ 80), (30), AUTO-BW
|
||||
# https://www.federalregister.gov/documents/2021/05/03/2021-08802/use-of-the-5850-5925-ghz-band
|
||||
# max. 33 dBm AP @ 20MHz, 36 dBm AP @ 40Mhz+, 6 dB less for clients
|
||||
(5855 - 5895 @ 40), (27), NO-OUTDOOR, AUTO-BW, NO-IR
|
||||
(5850 - 5895 @ 40), (27), NO-OUTDOOR, AUTO-BW, NO-IR
|
||||
# 6g band
|
||||
# https://www.federalregister.gov/documents/2020/05/26/2020-11236/unlicensed-use-of-the-6ghz-band
|
||||
(5925 - 7125 @ 320), (12), NO-OUTDOOR, NO-IR
|
||||
@@ -2006,6 +2127,13 @@ country UZ: DFS-ETSI
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
|
||||
country VA: DFS-ETSI
|
||||
(2400 - 2483.5 @ 40), (100 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, NO-OUTDOOR, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS
|
||||
(5945 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# http://www.ntrc.vc/regulations/Jun_2006_Spectrum_Managment_Regulations.pdf
|
||||
country VC: DFS-ETSI
|
||||
@@ -2031,12 +2159,17 @@ country VI: DFS-FCC
|
||||
(5490 - 5730 @ 160), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
|
||||
# Source:
|
||||
# https://datafiles.chinhphu.vn/cpp/files/vbpq/2021/10/08-btttt.signed.pdf
|
||||
# https://mic.gov.vn/van-ban-phap-luat/25099.htm
|
||||
country VN: DFS-FCC
|
||||
(2402 - 2482 @ 40), (20)
|
||||
(5170 - 5250 @ 80), (17)
|
||||
(5250 - 5330 @ 80), (24), DFS
|
||||
(5490 - 5730 @ 80), (24), DFS
|
||||
(5735 - 5835 @ 80), (30)
|
||||
(2400 - 2483.5 @ 40), (200 mW)
|
||||
(5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW
|
||||
(5470 - 5725 @ 160), (500 mW), DFS, AUTO-BW
|
||||
(5725 - 5850 @ 80), (1000 mW), AUTO-BW
|
||||
(5925 - 6425 @ 320), (200 mW), NO-OUTDOOR, AUTO-BW
|
||||
(57000 - 66000 @ 2160), (10000 mW), NO-OUTDOOR
|
||||
|
||||
# Source:
|
||||
# http://www.trr.vu/attachments/category/130/GURL_for_Short-range_Radiocommunication_Devices2.pdf
|
||||
@@ -2074,7 +2207,7 @@ country ZA: DFS-ETSI
|
||||
(5170 - 5250 @ 80), (20), AUTO-BW
|
||||
(5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
||||
(5490 - 5710 @ 160), (30)
|
||||
(5925 - 6425 @ 320), (14)
|
||||
(5925 - 6425 @ 320), (23), NO-OUTDOOR
|
||||
|
||||
country ZW: DFS-ETSI
|
||||
(2402 - 2482 @ 40), (20)
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
#!/usr/bin/env python
|
||||
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
import os
|
||||
from typing import List
|
||||
from datetime import datetime
|
||||
from typing import TextIO
|
||||
|
||||
from reg_parse import DBParser
|
||||
from reg_parse import Regdomain
|
||||
|
||||
# Not a valid ISO 3166-1 alpha-2 code; marks end of regdomain_table for linear scans (matches wifi_regdomain_t.cn[2]).
|
||||
REGDOMAIN_TABLE_SENTINEL_CC = '##'
|
||||
|
||||
def write_regulatory_rules(cfile: TextIO, perms: List, filter_5g: bool = False) -> None:
|
||||
|
||||
def write_regulatory_rules(cfile: TextIO, perms: list, filter_5g: bool = False) -> None:
|
||||
"""Helper function to write regulatory rules to the C file."""
|
||||
filtered_perms = [perm for perm in perms if not filter_5g or (perm.freqband.start >= 1 and perm.freqband.end <= 14)]
|
||||
rule_count = len(filtered_perms)
|
||||
@@ -39,7 +42,7 @@ def write_regulatory_rules(cfile: TextIO, perms: List, filter_5g: bool = False)
|
||||
|
||||
|
||||
def write_regulatory_data(
|
||||
cfile: TextIO, reg: Regdomain, type_list: List[str], perm_list: List[List], filter_5g: bool
|
||||
cfile: TextIO, reg: Regdomain, type_list: list[str], perm_list: list[list], filter_5g: bool
|
||||
) -> None:
|
||||
"""Helper function to write regulatory data."""
|
||||
cfile.write('typedef enum {\n')
|
||||
@@ -48,18 +51,29 @@ def write_regulatory_data(
|
||||
cfile.write(' ESP_WIFI_REGULATORY_TYPE_MAX,\n')
|
||||
cfile.write('} esp_wifi_regulatory_type_t;\n\n')
|
||||
|
||||
cfile.write('const wifi_regdomain_t regdomain_table[WIFI_MAX_SUPPORT_COUNTRY_NUM] = {\n')
|
||||
|
||||
country_map = reg.regdomain_countries if filter_5g else reg.regdomain_countries_2g
|
||||
|
||||
cfile.write(
|
||||
'/*\n'
|
||||
' * regdomain_table: ISO alpha-2 country codes and their regulatory profile indices.\n'
|
||||
' * Last row is a sentinel (not a real country code).\n'
|
||||
' */\n'
|
||||
)
|
||||
cfile.write('const wifi_regdomain_t regdomain_table[] = {\n')
|
||||
|
||||
for cc, reg_type_index in country_map.items():
|
||||
reg_type = f'ESP_WIFI_REGULATORY_TYPE_{type_list[reg_type_index]}'
|
||||
cfile.write(f' {{"{cc.decode("utf-8")}", {reg_type}}},\n')
|
||||
|
||||
cfile.write(
|
||||
' {"' + REGDOMAIN_TABLE_SENTINEL_CC + '", ESP_WIFI_REGULATORY_TYPE_MAX}, '
|
||||
'/* Sentinel: end of table; not a real country code — '
|
||||
'do not use as wifi_country_t.cc. */\n'
|
||||
)
|
||||
cfile.write('};\n\n')
|
||||
cfile.write('const wifi_regulatory_t regulatory_data[] = {\n')
|
||||
|
||||
for perms in perm_list:
|
||||
index = perm_list.index(perms)
|
||||
for index, perms in enumerate(perm_list):
|
||||
regulatory_type = f'ESP_WIFI_REGULATORY_TYPE_{type_list[index]}'
|
||||
cfile.write(f' /* {regulatory_type} */\n')
|
||||
write_regulatory_rules(cfile, perms, not filter_5g)
|
||||
@@ -75,14 +89,34 @@ def main() -> None:
|
||||
directory = os.path.dirname(os.path.abspath(__file__))
|
||||
file_path = os.path.join(directory, filename)
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as file:
|
||||
with open(file_path, encoding='utf-8') as file:
|
||||
regdomains = p.parse(file)
|
||||
# Get the modification time of the source file to determine copyright year
|
||||
mtime = os.path.getmtime(file_path)
|
||||
copyright_year = datetime.fromtimestamp(mtime).year
|
||||
except FileNotFoundError:
|
||||
raise Exception(f'File {file_path} not found')
|
||||
|
||||
reg.simplify_countries(regdomains)
|
||||
reg.simplify_countries_2g(regdomains)
|
||||
|
||||
total_countries = len(regdomains)
|
||||
country_rules_count = {}
|
||||
for country_code, country in regdomains.items():
|
||||
country_str = country_code.decode('utf-8')
|
||||
rules_count = len(country.permissions)
|
||||
country_rules_count[country_str] = rules_count
|
||||
|
||||
max_rules_country = max(country_rules_count.items(), key=lambda x: x[1])
|
||||
max_rules_count = max_rules_country[1]
|
||||
max_rules_countries = [cc for cc, count in country_rules_count.items() if count == max_rules_count]
|
||||
|
||||
print('\n=== Regulatory Statistics ===')
|
||||
print(f'Total supported countries: {total_countries}')
|
||||
print(f'Country(ies) with most rules: {", ".join(max_rules_countries)}')
|
||||
print(f'Maximum number of rules: {max_rules_count}')
|
||||
print('=' * 30 + '\n')
|
||||
|
||||
type_list = list(reg.typical_regulatory.keys())
|
||||
perm_list = list(reg.typical_regulatory.values())
|
||||
|
||||
@@ -93,7 +127,7 @@ def main() -> None:
|
||||
|
||||
with open(output_file, 'w') as cfile:
|
||||
cfile.write('/*\n')
|
||||
cfile.write(' * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD\n')
|
||||
cfile.write(f' * SPDX-FileCopyrightText: 2025-{copyright_year} Espressif Systems (Shanghai) CO LTD\n')
|
||||
cfile.write(' *\n')
|
||||
cfile.write(' * SPDX-License-Identifier: Apache-2.0\n')
|
||||
cfile.write(' */\n\n')
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# SPDX-FileCopyrightText: 2008 Johannes Berg <johannes@sipsolutions.net>
|
||||
# SPDX-FileCopyrightText: 2008 Michael Green <Michael.Green@Atheros.com>
|
||||
#
|
||||
# SPDX-FileContributor: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-FileContributor: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
# Copyright (c) 2008, Luis R. Rodriguez <mcgrof@gmail.com>
|
||||
@@ -707,9 +707,25 @@ class DBParser:
|
||||
class Regdomain:
|
||||
def __init__(self) -> None:
|
||||
self.regdomain_countries: dict[bytes, int] = {}
|
||||
self.typical_regulatory: dict[str, list] = {}
|
||||
self.typical_regulatory: dict[str, tuple[Permission, ...]] = {}
|
||||
self.regdomain_countries_2g: dict[bytes, int] = {}
|
||||
self.typical_regulatory_2g: dict[str, list] = {}
|
||||
self.typical_regulatory_2g: dict[str, tuple[Permission, ...]] = {}
|
||||
|
||||
@staticmethod
|
||||
def _permission_cmp_key(permission: Permission) -> tuple[int, int, int, int, int]:
|
||||
"""Return reduced fields aligned with generated C rule granularity."""
|
||||
max_eirp = int(permission.power.max_eirp) if permission.power else 0
|
||||
return (
|
||||
int(permission.freqband.start),
|
||||
int(permission.freqband.end),
|
||||
int(permission.freqband.maxbw),
|
||||
max_eirp,
|
||||
permission.dfs,
|
||||
)
|
||||
|
||||
def _permissions_cmp_key(self, permissions: tuple[Permission, ...]) -> tuple[tuple[int, int, int, int, int], ...]:
|
||||
"""Build a reduced comparison key from a country's permission set."""
|
||||
return tuple(self._permission_cmp_key(permission) for permission in permissions)
|
||||
|
||||
def build_typical_regdomains(self, countries: dict[bytes, Country]) -> None:
|
||||
"""Populate typical regulatory domains based on country permissions."""
|
||||
@@ -731,26 +747,32 @@ class Regdomain:
|
||||
"""Simplify country permissions by building typical regdomains."""
|
||||
self.build_typical_regdomains(countries)
|
||||
perm_list = list(self.typical_regulatory.values())
|
||||
perm_key_to_index = {self._permissions_cmp_key(permissions): idx for idx, permissions in enumerate(perm_list)}
|
||||
|
||||
for cn, country in countries.items():
|
||||
cn_str = cn.decode('utf-8')
|
||||
permissions = country.permissions
|
||||
if permissions not in perm_list:
|
||||
permissions_key = self._permissions_cmp_key(permissions)
|
||||
if permissions_key not in perm_key_to_index:
|
||||
self.typical_regulatory[cn_str] = permissions
|
||||
perm_list.append(permissions)
|
||||
self.regdomain_countries[cn] = perm_list.index(permissions)
|
||||
perm_key_to_index[permissions_key] = len(perm_list) - 1
|
||||
self.regdomain_countries[cn] = perm_key_to_index[permissions_key]
|
||||
|
||||
def simplify_countries_2g(self, countries: dict[bytes, Country]) -> None:
|
||||
"""Simplify country permissions by building typical regdomains."""
|
||||
self.build_typical_regdomains_2g(countries)
|
||||
|
||||
perm_list = list(self.typical_regulatory_2g.values())
|
||||
perm_key_to_index = {self._permissions_cmp_key(permissions): idx for idx, permissions in enumerate(perm_list)}
|
||||
|
||||
for cn, country in countries.items():
|
||||
cn_str = cn.decode('utf-8')
|
||||
permissions = country.permissions_2g
|
||||
permissions_key = self._permissions_cmp_key(permissions)
|
||||
|
||||
if permissions not in perm_list:
|
||||
if permissions_key not in perm_key_to_index:
|
||||
self.typical_regulatory_2g[cn_str] = permissions
|
||||
perm_list.append(permissions)
|
||||
self.regdomain_countries_2g[cn] = perm_list.index(permissions)
|
||||
perm_key_to_index[permissions_key] = len(perm_list) - 1
|
||||
self.regdomain_countries_2g[cn] = perm_key_to_index[permissions_key]
|
||||
|
||||
@@ -1489,7 +1489,6 @@ typedef struct {
|
||||
bool dcm; /**< Using dcm rate to send frame */
|
||||
} wifi_tx_rate_config_t;
|
||||
|
||||
#define WIFI_MAX_SUPPORT_COUNTRY_NUM 176 /**< max number of supported countries */
|
||||
#ifdef CONFIG_SLAVE_SOC_WIFI_SUPPORT_5G
|
||||
#define WIFI_MAX_REGULATORY_RULE_NUM 7 /**< max number of regulatory rules */
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user