国家码信道顺从表(含数据库和配置)

同的国家和地区规定了在本国或本地区可以使用的信道、射频信号在信道中的最大发射功率。工作在不同信道的射频信号,信号强度可能会有差别。国家码和信道顺从表、各信道的功率限制值、信道编号和频率。
开发人员需要一份国家对应得信道列表,用于限制用户的配置。原厂sdk的驱动中有对应的列表,但一般比较庞大难懂,提取出来也很麻烦。如果设备支持AC控制,AC的配置页面也需要该列表,解决方法是给一个通用接口提供页面查询。在开发过程中,也经常遇到国家代码问题,所以就花时间将国家码顺从表整理成了数据库、json、数组,开发者可以根据个人喜好来调用。
考虑到该顺从表非常庞大,将信道列表按位存储,这样可以节省很多空间,如果直接存在c代码中,通过编译,占用的空间就更小了。当然,如果是在AC端直接可以用数据库方式查询,所以数据库设计也没有考虑空间问题,一共才3000多条记录,占几十K,可以忽略。也可以生成json配置文件,这种做法跟数据库差不多,但考虑到json文件太大,就没有去生成了。
// 无线模式列表
char *CCODE_RADIO_MODE_LIST[] = {
    "11b", // 0
    "11bg", // 1
    "11g",
    "11gnonly",
    "11gn",
    "11gnonly40+",
    "11gn40+",
    "11gnonly40-",
    "11gn40-",
    "11a",
    "11anonly", // 10
    "11an",
    "11anonly40+",
    "11an40+",
    "11anonly40-",
    "11an40-",
    "11acvht", // 16
    "11acvht40+",
    "11acvht40-",
    "11acvht80"
};
// 可用信道列表
int CHANNEL_TABLE_24G[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14};
int CHANNEL_TABLE_5G[] = {36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140,149,153,157,161,165,169,173};

// 结构体
typedef struct country_node{
    u_int8_t radio_type;
    char cname[3];
    u_int8_t wl_mode;
    u_int8_t min_tx;
    u_int8_t max_tx;
    u_int32_t channel_bits;
}country_node_t;

// 信道顺从表
country_node_t country_table[] =
{
    {0,"HN",0,3,27,0x1fff},
    {0,"HN",1,3,27,0x1fff},
    {0,"HN",2,3,27,0x1fff},
    {0,"HN",3,3,27,0x1fff},
    {0,"HN",4,3,27,0x1fff},
    {0,"HN",5,3,27,0x1ff},
    {0,"HN",6,3,27,0x1ff},
    {0,"HN",7,3,27,0x1ff0},
    {0,"HN",8,3,27,0x1ff0},
    {0,"MC",0,3,27,0x1fff},
    {0,"MC",1,3,27,0x1fff},
    {0,"MC",2,3,27,0x1fff},
    {0,"MC",3,3,27,0x1fff},
    {0,"MC",4,3,27,0x1fff},
    {0,"MC",5,3,27,0x1ff},
    {0,"MC",6,3,27,0x1ff},
    {0,"MC",7,3,27,0x1ff0},
    {0,"MC",8,3,27,0x1ff0},
    {0,"PE",0,3,27,0x1fff},
    {0,"PE",1,3,27,0x1fff},
    {0,"PE",2,3,27,0x1fff},
    {0,"PE",3,3,27,0x1fff},
    {0,"PE",4,3,27,0x1fff},
    {0,"PE",5,3,27,0x1ff},
    {0,"PE",6,3,27,0x1ff},
    {0,"PE",7,3,27,0x1ff0},
    {0,"PE",8,3,27,0x1ff0},
    {0,"MU",0,3,27,0x1fff},
    {0,"MU",1,3,27,0x1fff},
    {0,"MU",2,3,27,0x1fff},
    {0,"MU",3,3,27,0x1fff},
    {0,"MU",4,3,27,0x1fff},
    {0,"MU",5,3,27,0x1ff},
    {0,"MU",6,3,27,0x1ff},
    {0,"MU",7,3,27,0x1ff0},
    {0,"MU",8,3,27,0x1ff0},
    {0,"CI",0,3,27,0x1fff},
    {0,"CI",1,3,27,0x1fff},
    {0,"CI",2,3,27,0x1fff},
    {0,"CI",3,3,27,0x1fff},
    {0,"CI",4,3,27,0x1fff},
    {0,"CI",5,3,27,0x1ff},
    {0,"CI",6,3,27,0x1ff},
    {0,"CI",7,3,27,0x1ff0},
    {0,"CI",8,3,27,0x1ff0},
    {0,"PA",0,3,27,0x7ff},
    {0,"PA",1,3,27,0x7ff},
    {0,"PA",2,3,27,0x7ff},
    {0,"PA",3,3,27,0x7ff},
    {0,"PA",4,3,27,0x7ff},
    {0,"PA",5,3,27,0x7f},
    {0,"PA",6,3,27,0x7f},
    {0,"PA",7,3,27,0x7f0},
    {0,"PA",8,3,27,0x7f0},
    {0,"PK",0,3,27,0x1fff},
    {0,"PK",1,3,27,0x1fff},
    {0,"PK",2,3,27,0x1fff},
    {0,"PK",3,3,27,0x1fff},
    {0,"PK",4,3,27,0x1fff},
    {0,"PK",5,3,27,0x1ff},
    {0,"PK",6,3,27,0x1ff},
    {0,"PK",7,3,27,0x1ff0},
    {0,"PK",8,3,27,0x1ff0},
    {0,"WS",0,3,27,0x1fff},
    {0,"WS",1,3,27,0x1fff},
    {0,"WS",2,3,27,0x1fff},
    {0,"WS",3,3,27,0x1fff},
    {0,"WS",4,3,27,0x1fff},
    {0,"WS",5,3,27,0x1ff},
    {0,"WS",6,3,27,0x1ff},
    {0,"WS",7,3,27,0x1ff0},
    {0,"WS",8,3,27,0x1ff0},
    {0,"CO",0,3,27,0x1fff},
    {0,"CO",1,3,27,0x1fff},
    {0,"CO",2,3,27,0x1fff},
    {0,"CO",3,3,27,0x1fff},
    {0,"CO",4,3,27,0x1fff},
    {0,"CO",5,3,27,0x1ff},
    {0,"CO",6,3,27,0x1ff},
    {0,"CO",7,3,27,0x1ff0},
    {0,"CO",8,3,27,0x1ff0},
    {0,"IL",0,3,27,0x1fff},
    {0,"IL",1,3,27,0x1fff},
    {0,"IL",2,3,27,0x1fff},
    {0,"IL",3,3,27,0x1fff},
    {0,"IL",4,3,27,0x1fff},
    {0,"IL",5,3,27,0x1ff},
    {0,"IL",6,3,27,0x1ff},
    {0,"IL",7,3,27,0x1ff0},
    {0,"IL",8,3,27,0x1ff0},
    {0,"LC",0,3,27,0x1fff},
    {0,"LC",1,3,27,0x1fff},
    {0,"LC",2,3,27,0x1fff},
    {0,"LC",3,3,27,0x1fff},
    {0,"LC",4,3,27,0x1fff},
    {0,"LC",5,3,27,0x1ff},
    {0,"LC",6,3,27,0x1ff},
    {0,"LC",7,3,27,0x1ff0},
    {0,"LC",8,3,27,0x1ff0},
    {0,"HK",0,3,27,0x1fff},
    {0,"HK",1,3,27,0x1fff},
    {0,"HK",2,3,27,0x1fff},
    {0,"HK",3,3,27,0x1fff},
    {0,"HK",4,3,27,0x1fff},
    {0,"HK",5,3,27,0x1ff},
    {0,"HK",6,3,27,0x1ff},
    {0,"HK",7,3,27,0x1ff0},
    {0,"HK",8,3,27,0x1ff0},
    {0,"BR",0,3,27,0x1fff},
    {0,"BR",1,3,27,0x1fff},
    {0,"BR",2,3,27,0x1fff},
    {0,"BR",3,3,27,0x1fff},
    {0,"BR",4,3,27,0x1fff},
    {0,"BR",5,3,27,0x1ff},
    {0,"BR",6,3,27,0x1ff},
    {0,"BR",7,3,27,0x1ff0},
    {0,"BR",8,3,27,0x1ff0},
    {0,"DZ",0,3,27,0x1fff},
    {0,"DZ",1,3,27,0x1fff},
    {0,"DZ",2,3,27,0x1fff},
    {0,"DZ",3,3,27,0x1fff},
    {0,"DZ",4,3,27,0x1fff},
    {0,"DZ",5,3,27,0x1ff},
    {0,"DZ",6,3,27,0x1ff},
    {0,"DZ",7,3,27,0x1ff0},
    {0,"DZ",8,3,27,0x1ff0},
    {0,"RO",0,3,27,0x1fff},
    {0,"RO",1,3,27,0x1fff},
    {0,"RO",2,3,27,0x1fff},
    {0,"RO",3,3,27,0x1fff},
    {0,"RO",4,3,27,0x1fff},
    {0,"RO",5,3,27,0x1ff},
    {0,"RO",6,3,27,0x1ff},
    {0,"RO",7,3,27,0x1ff0},
    {0,"RO",8,3,27,0x1ff0},
    {0,"GT",0,3,27,0x1fff},
    {0,"GT",1,3,27,0x1fff},
    {0,"GT",2,3,27,0x1fff},
    {0,"GT",3,3,27,0x1fff},
    {0,"GT",4,3,27,0x1fff},
    {0,"GT",5,3,27,0x1ff},
    // 由于表较大,没全部放在这里了,需要的自行下载,下载地址见下文
  • 位设计
CHANNEL_TABLE_24G表示2.4G所有支持信道
CHANNEL_TABLE_5G表示5G所有支持信道
如2.4G,如果channel_bits为0x1fff,信道列表位1,2,3,4,5,6,7,8,9,10,11,12,13

-数据库字段说明

编号 国家代码 radio_type(0表示2.4g,1表示5g)  无线模式 最小支持功率  最大支持功率 可用信道列表(含该信道支持功率)
3221|768|1|11anonly40+|5|27|36-5-20,44-5-20,52-5-20,60-5-20,100-5-27,108-5-27,116-5-27,124-5-27,132-5-27
3222|768|1|11an40+|5|27|36-5-20,44-5-20,52-5-20,60-5-20,100-5-27,108-5-27,116-5-27,124-5-27,132-5-27
3223|768|1|11anonly40-|5|27|40-5-20,48-5-20,56-5-20,64-5-20,104-5-27,112-5-27,120-5-27,128-5-27,136-5-27
3224|768|1|11an40-|5|27|40-5-20,48-5-20,56-5-20,64-5-20,104-5-27,112-5-27,120-5-27,128-5-27,136-5-27

-数据库查询范例
1. 查询国家码为156,radio为5G的列表:

这里写图片描述
2. 查询国家码为US(840),radio为5G,无线模式为11acvht40+的可用信道列表
这里写图片描述

更多wifi相关文章,微信请关注:wifi开发者,定期发布开发相关总结。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/dxt1107/article/details/54692275