wlan_dev.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-08-03 tyx the first version
  9. */
  10. #ifndef __WLAN_DEVICE_H__
  11. #define __WLAN_DEVICE_H__
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. typedef enum
  16. {
  17. RT_WLAN_NONE,
  18. RT_WLAN_STATION,
  19. RT_WLAN_AP,
  20. RT_WLAN_MODE_MAX
  21. } rt_wlan_mode_t;
  22. typedef enum
  23. {
  24. RT_WLAN_CMD_MODE = 0x10,
  25. RT_WLAN_CMD_SCAN, /* trigger scanning (list cells) */
  26. RT_WLAN_CMD_JOIN,
  27. RT_WLAN_CMD_SOFTAP, /* start soft-AP */
  28. RT_WLAN_CMD_DISCONNECT,
  29. RT_WLAN_CMD_AP_STOP, /* stop soft-AP */
  30. RT_WLAN_CMD_AP_DEAUTH,
  31. RT_WLAN_CMD_SCAN_STOP,
  32. RT_WLAN_CMD_GET_RSSI, /* get sensitivity (dBm) */
  33. RT_WLAN_CMD_SET_POWERSAVE,
  34. RT_WLAN_CMD_GET_POWERSAVE,
  35. RT_WLAN_CMD_CFG_PROMISC, /* start/stop minitor */
  36. RT_WLAN_CMD_CFG_FILTER,
  37. RT_WLAN_CMD_SET_CHANNEL,
  38. RT_WLAN_CMD_GET_CHANNEL,
  39. RT_WLAN_CMD_SET_COUNTRY,
  40. RT_WLAN_CMD_GET_COUNTRY,
  41. RT_WLAN_CMD_SET_MAC,
  42. RT_WLAN_CMD_GET_MAC
  43. } rt_wlan_cmd_t;
  44. typedef enum
  45. {
  46. RT_WLAN_DEV_EVT_INIT_DONE = 0,
  47. RT_WLAN_DEV_EVT_CONNECT,
  48. RT_WLAN_DEV_EVT_CONNECT_FAIL,
  49. RT_WLAN_DEV_EVT_DISCONNECT,
  50. RT_WLAN_DEV_EVT_AP_START,
  51. RT_WLAN_DEV_EVT_AP_STOP,
  52. RT_WLAN_DEV_EVT_AP_ASSOCIATED,
  53. RT_WLAN_DEV_EVT_AP_DISASSOCIATED,
  54. RT_WLAN_DEV_EVT_AP_ASSOCIATE_FAILED,
  55. RT_WLAN_DEV_EVT_SCAN_REPORT,
  56. RT_WLAN_DEV_EVT_SCAN_DONE,
  57. RT_WLAN_DEV_EVT_MAX,
  58. } rt_wlan_dev_event_t;
  59. #define SHARED_ENABLED 0x00008000
  60. #define WPA_SECURITY 0x00200000
  61. #define WPA2_SECURITY 0x00400000
  62. #define WPS_ENABLED 0x10000000
  63. #define WEP_ENABLED 0x0001
  64. #define TKIP_ENABLED 0x0002
  65. #define AES_ENABLED 0x0004
  66. #define WSEC_SWFLAG 0x0008
  67. #define RT_WLAN_FLAG_STA_ONLY (0x1 << 0)
  68. #define RT_WLAN_FLAG_AP_ONLY (0x1 << 1)
  69. #ifndef RT_WLAN_SSID_MAX_LENGTH
  70. #define RT_WLAN_SSID_MAX_LENGTH (32) /* SSID MAX LEN */
  71. #endif
  72. #ifndef RT_WLAN_BSSID_MAX_LENGTH
  73. #define RT_WLAN_BSSID_MAX_LENGTH (6) /* BSSID MAX LEN (default is 6) */
  74. #endif
  75. #ifndef RT_WLAN_PASSWORD_MAX_LENGTH
  76. #define RT_WLAN_PASSWORD_MAX_LENGTH (32) /* PASSWORD MAX LEN*/
  77. #endif
  78. #ifndef RT_WLAN_DEV_EVENT_NUM
  79. #define RT_WLAN_DEV_EVENT_NUM (2) /* EVENT GROUP MAX NUM */
  80. #endif
  81. /**
  82. * Enumeration of Wi-Fi security modes
  83. */
  84. typedef enum
  85. {
  86. SECURITY_OPEN = 0, /* Open security */
  87. SECURITY_WEP_PSK = WEP_ENABLED, /* WEP Security with open authentication */
  88. SECURITY_WEP_SHARED = (WEP_ENABLED | SHARED_ENABLED), /* WEP Security with shared authentication */
  89. SECURITY_WPA_TKIP_PSK = (WPA_SECURITY | TKIP_ENABLED), /* WPA Security with TKIP */
  90. SECURITY_WPA_AES_PSK = (WPA_SECURITY | AES_ENABLED), /* WPA Security with AES */
  91. SECURITY_WPA2_AES_PSK = (WPA2_SECURITY | AES_ENABLED), /* WPA2 Security with AES */
  92. SECURITY_WPA2_TKIP_PSK = (WPA2_SECURITY | TKIP_ENABLED), /* WPA2 Security with TKIP */
  93. SECURITY_WPA2_MIXED_PSK = (WPA2_SECURITY | AES_ENABLED | TKIP_ENABLED), /* WPA2 Security with AES & TKIP */
  94. SECURITY_WPS_OPEN = WPS_ENABLED, /* WPS with open security */
  95. SECURITY_WPS_SECURE = (WPS_ENABLED | AES_ENABLED), /* WPS with AES security */
  96. SECURITY_UNKNOWN = -1, /* May be returned by scan function if security is unknown.
  97. Do not pass this to the join function! */
  98. } rt_wlan_security_t;
  99. typedef enum
  100. {
  101. RT_802_11_BAND_5GHZ = 0, /* Denotes 5GHz radio band */
  102. RT_802_11_BAND_2_4GHZ = 1, /* Denotes 2.4GHz radio band */
  103. RT_802_11_BAND_UNKNOWN = 0x7fffffff, /* unknown */
  104. } rt_802_11_band_t;
  105. typedef enum
  106. {
  107. RT_COUNTRY_AFGHANISTAN,
  108. RT_COUNTRY_ALBANIA,
  109. RT_COUNTRY_ALGERIA,
  110. RT_COUNTRY_AMERICAN_SAMOA,
  111. RT_COUNTRY_ANGOLA,
  112. RT_COUNTRY_ANGUILLA,
  113. RT_COUNTRY_ANTIGUA_AND_BARBUDA,
  114. RT_COUNTRY_ARGENTINA,
  115. RT_COUNTRY_ARMENIA,
  116. RT_COUNTRY_ARUBA,
  117. RT_COUNTRY_AUSTRALIA,
  118. RT_COUNTRY_AUSTRIA,
  119. RT_COUNTRY_AZERBAIJAN,
  120. RT_COUNTRY_BAHAMAS,
  121. RT_COUNTRY_BAHRAIN,
  122. RT_COUNTRY_BAKER_ISLAND,
  123. RT_COUNTRY_BANGLADESH,
  124. RT_COUNTRY_BARBADOS,
  125. RT_COUNTRY_BELARUS,
  126. RT_COUNTRY_BELGIUM,
  127. RT_COUNTRY_BELIZE,
  128. RT_COUNTRY_BENIN,
  129. RT_COUNTRY_BERMUDA,
  130. RT_COUNTRY_BHUTAN,
  131. RT_COUNTRY_BOLIVIA,
  132. RT_COUNTRY_BOSNIA_AND_HERZEGOVINA,
  133. RT_COUNTRY_BOTSWANA,
  134. RT_COUNTRY_BRAZIL,
  135. RT_COUNTRY_BRITISH_INDIAN_OCEAN_TERRITORY,
  136. RT_COUNTRY_BRUNEI_DARUSSALAM,
  137. RT_COUNTRY_BULGARIA,
  138. RT_COUNTRY_BURKINA_FASO,
  139. RT_COUNTRY_BURUNDI,
  140. RT_COUNTRY_CAMBODIA,
  141. RT_COUNTRY_CAMEROON,
  142. RT_COUNTRY_CANADA,
  143. RT_COUNTRY_CAPE_VERDE,
  144. RT_COUNTRY_CAYMAN_ISLANDS,
  145. RT_COUNTRY_CENTRAL_AFRICAN_REPUBLIC,
  146. RT_COUNTRY_CHAD,
  147. RT_COUNTRY_CHILE,
  148. RT_COUNTRY_CHINA,
  149. RT_COUNTRY_CHRISTMAS_ISLAND,
  150. RT_COUNTRY_COLOMBIA,
  151. RT_COUNTRY_COMOROS,
  152. RT_COUNTRY_CONGO,
  153. RT_COUNTRY_CONGO_THE_DEMOCRATIC_REPUBLIC_OF_THE,
  154. RT_COUNTRY_COSTA_RICA,
  155. RT_COUNTRY_COTE_DIVOIRE,
  156. RT_COUNTRY_CROATIA,
  157. RT_COUNTRY_CUBA,
  158. RT_COUNTRY_CYPRUS,
  159. RT_COUNTRY_CZECH_REPUBLIC,
  160. RT_COUNTRY_DENMARK,
  161. RT_COUNTRY_DJIBOUTI,
  162. RT_COUNTRY_DOMINICA,
  163. RT_COUNTRY_DOMINICAN_REPUBLIC,
  164. RT_COUNTRY_DOWN_UNDER,
  165. RT_COUNTRY_ECUADOR,
  166. RT_COUNTRY_EGYPT,
  167. RT_COUNTRY_EL_SALVADOR,
  168. RT_COUNTRY_EQUATORIAL_GUINEA,
  169. RT_COUNTRY_ERITREA,
  170. RT_COUNTRY_ESTONIA,
  171. RT_COUNTRY_ETHIOPIA,
  172. RT_COUNTRY_FALKLAND_ISLANDS_MALVINAS,
  173. RT_COUNTRY_FAROE_ISLANDS,
  174. RT_COUNTRY_FIJI,
  175. RT_COUNTRY_FINLAND,
  176. RT_COUNTRY_FRANCE,
  177. RT_COUNTRY_FRENCH_GUINA,
  178. RT_COUNTRY_FRENCH_POLYNESIA,
  179. RT_COUNTRY_FRENCH_SOUTHERN_TERRITORIES,
  180. RT_COUNTRY_GABON,
  181. RT_COUNTRY_GAMBIA,
  182. RT_COUNTRY_GEORGIA,
  183. RT_COUNTRY_GERMANY,
  184. RT_COUNTRY_GHANA,
  185. RT_COUNTRY_GIBRALTAR,
  186. RT_COUNTRY_GREECE,
  187. RT_COUNTRY_GRENADA,
  188. RT_COUNTRY_GUADELOUPE,
  189. RT_COUNTRY_GUAM,
  190. RT_COUNTRY_GUATEMALA,
  191. RT_COUNTRY_GUERNSEY,
  192. RT_COUNTRY_GUINEA,
  193. RT_COUNTRY_GUINEA_BISSAU,
  194. RT_COUNTRY_GUYANA,
  195. RT_COUNTRY_HAITI,
  196. RT_COUNTRY_HOLY_SEE_VATICAN_CITY_STATE,
  197. RT_COUNTRY_HONDURAS,
  198. RT_COUNTRY_HONG_KONG,
  199. RT_COUNTRY_HUNGARY,
  200. RT_COUNTRY_ICELAND,
  201. RT_COUNTRY_INDIA,
  202. RT_COUNTRY_INDONESIA,
  203. RT_COUNTRY_IRAN_ISLAMIC_REPUBLIC_OF,
  204. RT_COUNTRY_IRAQ,
  205. RT_COUNTRY_IRELAND,
  206. RT_COUNTRY_ISRAEL,
  207. RT_COUNTRY_ITALY,
  208. RT_COUNTRY_JAMAICA,
  209. RT_COUNTRY_JAPAN,
  210. RT_COUNTRY_JERSEY,
  211. RT_COUNTRY_JORDAN,
  212. RT_COUNTRY_KAZAKHSTAN,
  213. RT_COUNTRY_KENYA,
  214. RT_COUNTRY_KIRIBATI,
  215. RT_COUNTRY_KOREA_REPUBLIC_OF,
  216. RT_COUNTRY_KOSOVO,
  217. RT_COUNTRY_KUWAIT,
  218. RT_COUNTRY_KYRGYZSTAN,
  219. RT_COUNTRY_LAO_PEOPLES_DEMOCRATIC_REPUBIC,
  220. RT_COUNTRY_LATVIA,
  221. RT_COUNTRY_LEBANON,
  222. RT_COUNTRY_LESOTHO,
  223. RT_COUNTRY_LIBERIA,
  224. RT_COUNTRY_LIBYAN_ARAB_JAMAHIRIYA,
  225. RT_COUNTRY_LIECHTENSTEIN,
  226. RT_COUNTRY_LITHUANIA,
  227. RT_COUNTRY_LUXEMBOURG,
  228. RT_COUNTRY_MACAO,
  229. RT_COUNTRY_MACEDONIA_FORMER_YUGOSLAV_REPUBLIC_OF,
  230. RT_COUNTRY_MADAGASCAR,
  231. RT_COUNTRY_MALAWI,
  232. RT_COUNTRY_MALAYSIA,
  233. RT_COUNTRY_MALDIVES,
  234. RT_COUNTRY_MALI,
  235. RT_COUNTRY_MALTA,
  236. RT_COUNTRY_MAN_ISLE_OF,
  237. RT_COUNTRY_MARTINIQUE,
  238. RT_COUNTRY_MAURITANIA,
  239. RT_COUNTRY_MAURITIUS,
  240. RT_COUNTRY_MAYOTTE,
  241. RT_COUNTRY_MEXICO,
  242. RT_COUNTRY_MICRONESIA_FEDERATED_STATES_OF,
  243. RT_COUNTRY_MOLDOVA_REPUBLIC_OF,
  244. RT_COUNTRY_MONACO,
  245. RT_COUNTRY_MONGOLIA,
  246. RT_COUNTRY_MONTENEGRO,
  247. RT_COUNTRY_MONTSERRAT,
  248. RT_COUNTRY_MOROCCO,
  249. RT_COUNTRY_MOZAMBIQUE,
  250. RT_COUNTRY_MYANMAR,
  251. RT_COUNTRY_NAMIBIA,
  252. RT_COUNTRY_NAURU,
  253. RT_COUNTRY_NEPAL,
  254. RT_COUNTRY_NETHERLANDS,
  255. RT_COUNTRY_NETHERLANDS_ANTILLES,
  256. RT_COUNTRY_NEW_CALEDONIA,
  257. RT_COUNTRY_NEW_ZEALAND,
  258. RT_COUNTRY_NICARAGUA,
  259. RT_COUNTRY_NIGER,
  260. RT_COUNTRY_NIGERIA,
  261. RT_COUNTRY_NORFOLK_ISLAND,
  262. RT_COUNTRY_NORTHERN_MARIANA_ISLANDS,
  263. RT_COUNTRY_NORWAY,
  264. RT_COUNTRY_OMAN,
  265. RT_COUNTRY_PAKISTAN,
  266. RT_COUNTRY_PALAU,
  267. RT_COUNTRY_PANAMA,
  268. RT_COUNTRY_PAPUA_NEW_GUINEA,
  269. RT_COUNTRY_PARAGUAY,
  270. RT_COUNTRY_PERU,
  271. RT_COUNTRY_PHILIPPINES,
  272. RT_COUNTRY_POLAND,
  273. RT_COUNTRY_PORTUGAL,
  274. RT_COUNTRY_PUETO_RICO,
  275. RT_COUNTRY_QATAR,
  276. RT_COUNTRY_REUNION,
  277. RT_COUNTRY_ROMANIA,
  278. RT_COUNTRY_RUSSIAN_FEDERATION,
  279. RT_COUNTRY_RWANDA,
  280. RT_COUNTRY_SAINT_KITTS_AND_NEVIS,
  281. RT_COUNTRY_SAINT_LUCIA,
  282. RT_COUNTRY_SAINT_PIERRE_AND_MIQUELON,
  283. RT_COUNTRY_SAINT_VINCENT_AND_THE_GRENADINES,
  284. RT_COUNTRY_SAMOA,
  285. RT_COUNTRY_SANIT_MARTIN_SINT_MARTEEN,
  286. RT_COUNTRY_SAO_TOME_AND_PRINCIPE,
  287. RT_COUNTRY_SAUDI_ARABIA,
  288. RT_COUNTRY_SENEGAL,
  289. RT_COUNTRY_SERBIA,
  290. RT_COUNTRY_SEYCHELLES,
  291. RT_COUNTRY_SIERRA_LEONE,
  292. RT_COUNTRY_SINGAPORE,
  293. RT_COUNTRY_SLOVAKIA,
  294. RT_COUNTRY_SLOVENIA,
  295. RT_COUNTRY_SOLOMON_ISLANDS,
  296. RT_COUNTRY_SOMALIA,
  297. RT_COUNTRY_SOUTH_AFRICA,
  298. RT_COUNTRY_SPAIN,
  299. RT_COUNTRY_SRI_LANKA,
  300. RT_COUNTRY_SURINAME,
  301. RT_COUNTRY_SWAZILAND,
  302. RT_COUNTRY_SWEDEN,
  303. RT_COUNTRY_SWITZERLAND,
  304. RT_COUNTRY_SYRIAN_ARAB_REPUBLIC,
  305. RT_COUNTRY_TAIWAN_PROVINCE_OF_CHINA,
  306. RT_COUNTRY_TAJIKISTAN,
  307. RT_COUNTRY_TANZANIA_UNITED_REPUBLIC_OF,
  308. RT_COUNTRY_THAILAND,
  309. RT_COUNTRY_TOGO,
  310. RT_COUNTRY_TONGA,
  311. RT_COUNTRY_TRINIDAD_AND_TOBAGO,
  312. RT_COUNTRY_TUNISIA,
  313. RT_COUNTRY_TURKEY,
  314. RT_COUNTRY_TURKMENISTAN,
  315. RT_COUNTRY_TURKS_AND_CAICOS_ISLANDS,
  316. RT_COUNTRY_TUVALU,
  317. RT_COUNTRY_UGANDA,
  318. RT_COUNTRY_UKRAINE,
  319. RT_COUNTRY_UNITED_ARAB_EMIRATES,
  320. RT_COUNTRY_UNITED_KINGDOM,
  321. RT_COUNTRY_UNITED_STATES,
  322. RT_COUNTRY_UNITED_STATES_REV4,
  323. RT_COUNTRY_UNITED_STATES_NO_DFS,
  324. RT_COUNTRY_UNITED_STATES_MINOR_OUTLYING_ISLANDS,
  325. RT_COUNTRY_URUGUAY,
  326. RT_COUNTRY_UZBEKISTAN,
  327. RT_COUNTRY_VANUATU,
  328. RT_COUNTRY_VENEZUELA,
  329. RT_COUNTRY_VIET_NAM,
  330. RT_COUNTRY_VIRGIN_ISLANDS_BRITISH,
  331. RT_COUNTRY_VIRGIN_ISLANDS_US,
  332. RT_COUNTRY_WALLIS_AND_FUTUNA,
  333. RT_COUNTRY_WEST_BANK,
  334. RT_COUNTRY_WESTERN_SAHARA,
  335. RT_COUNTRY_WORLD_WIDE_XX,
  336. RT_COUNTRY_YEMEN,
  337. RT_COUNTRY_ZAMBIA,
  338. RT_COUNTRY_ZIMBABWE,
  339. RT_COUNTRY_UNKNOWN
  340. } rt_country_code_t;
  341. struct rt_wlan_device;
  342. struct rt_wlan_buff;
  343. typedef void (*rt_wlan_dev_event_handler)(struct rt_wlan_device *device, rt_wlan_dev_event_t event, struct rt_wlan_buff *buff, void *parameter);
  344. typedef void (*rt_wlan_pormisc_callback_t)(struct rt_wlan_device *device, void *data, int len);
  345. struct rt_wlan_ssid
  346. {
  347. rt_uint8_t len;
  348. rt_uint8_t val[RT_WLAN_SSID_MAX_LENGTH + 1];
  349. };
  350. typedef struct rt_wlan_ssid rt_wlan_ssid_t;
  351. struct rt_wlan_key
  352. {
  353. rt_uint8_t len;
  354. rt_uint8_t val[RT_WLAN_PASSWORD_MAX_LENGTH + 1];
  355. };
  356. typedef struct rt_wlan_key rt_wlan_key_t;
  357. #define INVALID_INFO(_info) do { \
  358. rt_memset((_info), 0, sizeof(struct rt_wlan_info)); \
  359. (_info)->band = RT_802_11_BAND_UNKNOWN; \
  360. (_info)->security = SECURITY_UNKNOWN; \
  361. (_info)->channel = -1; \
  362. } while(0)
  363. struct rt_wlan_info
  364. {
  365. /* security type */
  366. rt_wlan_security_t security;
  367. /* 2.4G/5G */
  368. rt_802_11_band_t band;
  369. /* maximal data rate */
  370. rt_uint32_t datarate;
  371. /* radio channel */
  372. rt_int16_t channel;
  373. /* signal strength */
  374. rt_int16_t rssi;
  375. /* ssid */
  376. rt_wlan_ssid_t ssid;
  377. /* hwaddr */
  378. rt_uint8_t bssid[RT_WLAN_BSSID_MAX_LENGTH];
  379. rt_uint8_t hidden;
  380. };
  381. struct rt_wlan_buff
  382. {
  383. void *data;
  384. rt_int32_t len;
  385. };
  386. struct rt_filter_pattern
  387. {
  388. rt_uint16_t offset; /* Offset in bytes to start filtering (referenced to the start of the ethernet packet) */
  389. rt_uint16_t mask_size; /* Size of the mask in bytes */
  390. rt_uint8_t *mask; /* Pattern mask bytes to be ANDed with the pattern eg. "\xff00" (must be in network byte order) */
  391. rt_uint8_t *pattern; /* Pattern bytes used to filter eg. "\x0800" (must be in network byte order) */
  392. };
  393. typedef enum
  394. {
  395. RT_POSITIVE_MATCHING = 0, /* Receive the data matching with this pattern and discard the other data */
  396. RT_NEGATIVE_MATCHING = 1 /* Discard the data matching with this pattern and receive the other data */
  397. } rt_filter_rule_t;
  398. struct rt_wlan_filter
  399. {
  400. struct rt_filter_pattern patt;
  401. rt_filter_rule_t rule;
  402. rt_uint8_t enable;
  403. };
  404. struct rt_wlan_dev_event_desc
  405. {
  406. rt_wlan_dev_event_handler handler;
  407. void *parameter;
  408. };
  409. struct rt_wlan_device
  410. {
  411. struct rt_device device;
  412. rt_wlan_mode_t mode;
  413. struct rt_mutex lock;
  414. struct rt_wlan_dev_event_desc handler_table[RT_WLAN_DEV_EVT_MAX][RT_WLAN_DEV_EVENT_NUM];
  415. rt_wlan_pormisc_callback_t pormisc_callback;
  416. const struct rt_wlan_dev_ops *ops;
  417. rt_uint32_t flags;
  418. void *prot;
  419. void *user_data;
  420. };
  421. struct rt_sta_info
  422. {
  423. rt_wlan_ssid_t ssid;
  424. rt_wlan_key_t key;
  425. rt_uint8_t bssid[6];
  426. rt_uint16_t channel;
  427. rt_wlan_security_t security;
  428. };
  429. struct rt_ap_info
  430. {
  431. rt_wlan_ssid_t ssid;
  432. rt_wlan_key_t key;
  433. rt_bool_t hidden;
  434. rt_uint16_t channel;
  435. rt_wlan_security_t security;
  436. };
  437. struct rt_scan_info
  438. {
  439. rt_wlan_ssid_t ssid;
  440. rt_uint8_t bssid[6];
  441. rt_int16_t channel_min;
  442. rt_int16_t channel_max;
  443. };
  444. struct rt_wlan_dev_ops
  445. {
  446. rt_err_t (*wlan_init)(struct rt_wlan_device *wlan);
  447. rt_err_t (*wlan_mode)(struct rt_wlan_device *wlan, rt_wlan_mode_t mode);
  448. rt_err_t (*wlan_scan)(struct rt_wlan_device *wlan, struct rt_scan_info *scan_info);
  449. rt_err_t (*wlan_join)(struct rt_wlan_device *wlan, struct rt_sta_info *sta_info);
  450. rt_err_t (*wlan_softap)(struct rt_wlan_device *wlan, struct rt_ap_info *ap_info);
  451. rt_err_t (*wlan_disconnect)(struct rt_wlan_device *wlan);
  452. rt_err_t (*wlan_ap_stop)(struct rt_wlan_device *wlan);
  453. rt_err_t (*wlan_ap_deauth)(struct rt_wlan_device *wlan, rt_uint8_t mac[]);
  454. rt_err_t (*wlan_scan_stop)(struct rt_wlan_device *wlan);
  455. int (*wlan_get_rssi)(struct rt_wlan_device *wlan);
  456. rt_err_t (*wlan_set_powersave)(struct rt_wlan_device *wlan, int level);
  457. int (*wlan_get_powersave)(struct rt_wlan_device *wlan);
  458. rt_err_t (*wlan_cfg_promisc)(struct rt_wlan_device *wlan, rt_bool_t start);
  459. rt_err_t (*wlan_cfg_filter)(struct rt_wlan_device *wlan, struct rt_wlan_filter *filter);
  460. rt_err_t (*wlan_set_channel)(struct rt_wlan_device *wlan, int channel);
  461. int (*wlan_get_channel)(struct rt_wlan_device *wlan);
  462. rt_err_t (*wlan_set_country)(struct rt_wlan_device *wlan, rt_country_code_t country_code);
  463. rt_country_code_t (*wlan_get_country)(struct rt_wlan_device *wlan);
  464. rt_err_t (*wlan_set_mac)(struct rt_wlan_device *wlan, rt_uint8_t mac[]);
  465. rt_err_t (*wlan_get_mac)(struct rt_wlan_device *wlan, rt_uint8_t mac[]);
  466. int (*wlan_recv)(struct rt_wlan_device *wlan, void *buff, int len);
  467. int (*wlan_send)(struct rt_wlan_device *wlan, void *buff, int len);
  468. };
  469. /*
  470. * wlan device init
  471. */
  472. rt_err_t rt_wlan_dev_init(struct rt_wlan_device *device, rt_wlan_mode_t mode);
  473. /*
  474. * wlan device station interface
  475. */
  476. rt_err_t rt_wlan_dev_connect(struct rt_wlan_device *device, struct rt_wlan_info *info, const char *password, int password_len);
  477. rt_err_t rt_wlan_dev_disconnect(struct rt_wlan_device *device);
  478. int rt_wlan_dev_get_rssi(struct rt_wlan_device *device);
  479. /*
  480. * wlan device ap interface
  481. */
  482. rt_err_t rt_wlan_dev_ap_start(struct rt_wlan_device *device, struct rt_wlan_info *info, const char *password, int password_len);
  483. rt_err_t rt_wlan_dev_ap_stop(struct rt_wlan_device *device);
  484. rt_err_t rt_wlan_dev_ap_deauth(struct rt_wlan_device *device, rt_uint8_t mac[6]);
  485. /*
  486. * wlan device scan interface
  487. */
  488. rt_err_t rt_wlan_dev_scan(struct rt_wlan_device *device, struct rt_wlan_info *info);
  489. rt_err_t rt_wlan_dev_scan_stop(struct rt_wlan_device *device);
  490. /*
  491. * wlan device mac interface
  492. */
  493. rt_err_t rt_wlan_dev_get_mac(struct rt_wlan_device *device, rt_uint8_t mac[6]);
  494. rt_err_t rt_wlan_dev_set_mac(struct rt_wlan_device *device, rt_uint8_t mac[6]);
  495. /*
  496. * wlan device powersave interface
  497. */
  498. rt_err_t rt_wlan_dev_set_powersave(struct rt_wlan_device *device, int level);
  499. int rt_wlan_dev_get_powersave(struct rt_wlan_device *device);
  500. /*
  501. * wlan device event interface
  502. */
  503. rt_err_t rt_wlan_dev_register_event_handler(struct rt_wlan_device *device, rt_wlan_dev_event_t event, rt_wlan_dev_event_handler handler, void *parameter);
  504. rt_err_t rt_wlan_dev_unregister_event_handler(struct rt_wlan_device *device, rt_wlan_dev_event_t event, rt_wlan_dev_event_handler handler);
  505. void rt_wlan_dev_indicate_event_handle(struct rt_wlan_device *device, rt_wlan_dev_event_t event, struct rt_wlan_buff *buff);
  506. /*
  507. * wlan device promisc interface
  508. */
  509. rt_err_t rt_wlan_dev_enter_promisc(struct rt_wlan_device *device);
  510. rt_err_t rt_wlan_dev_exit_promisc(struct rt_wlan_device *device);
  511. rt_err_t rt_wlan_dev_set_promisc_callback(struct rt_wlan_device *device, rt_wlan_pormisc_callback_t callback);
  512. void rt_wlan_dev_promisc_handler(struct rt_wlan_device *device, void *data, int len);
  513. /*
  514. * wlan device filter interface
  515. */
  516. rt_err_t rt_wlan_dev_cfg_filter(struct rt_wlan_device *device, struct rt_wlan_filter *filter);
  517. /*
  518. * wlan device channel interface
  519. */
  520. rt_err_t rt_wlan_dev_set_channel(struct rt_wlan_device *device, int channel);
  521. rt_err_t rt_wlan_dev_get_channel(struct rt_wlan_device *device);
  522. /*
  523. * wlan device country interface
  524. */
  525. rt_err_t rt_wlan_dev_set_country(struct rt_wlan_device *device, rt_country_code_t country_code);
  526. rt_country_code_t rt_wlan_dev_get_country(struct rt_wlan_device *device);
  527. /*
  528. * wlan device datat transfer interface
  529. */
  530. rt_err_t rt_wlan_dev_report_data(struct rt_wlan_device *device, void *buff, int len);
  531. // void rt_wlan_dev_data_ready(struct rt_wlan_device *device, int len);
  532. /*
  533. * wlan device register interface
  534. */
  535. struct rt_wlan_device *rt_wlan_dev_register(const char *name, const struct rt_wlan_dev_ops *ops, rt_uint32_t flag, void *user_data);
  536. #ifdef __cplusplus
  537. }
  538. #endif
  539. #endif