1. 程式人生 > >國家碼通道順從表(含資料庫和配置)

國家碼通道順從表(含資料庫和配置)

同的國家和地區規定了在本國或本地區可以使用的通道、射頻訊號在通道中的最大發射功率。工作在不同通道的射頻訊號,訊號強度可能會有差別。國家碼和通道順從表、各通道的功率限制值、通道編號和頻率。
開發人員需要一份國家對應得通道列表,用於限制使用者的配置。原廠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開發者,定期釋出開發相關總結。
這裡寫圖片描述