wm_wifi_oneshot.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. /**
  2. * @file wm_wifi_oneshot.h
  3. *
  4. * @brief Wi-Fi OneShot
  5. *
  6. * @author winnermicro
  7. *
  8. * Copyright (c) 2015 Winner Microelectronics Co., Ltd.
  9. */
  10. #ifndef WM_WIFI_ONESHOT_H
  11. #define WM_WIFI_ONESHOT_H
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <wm_type_def.h>
  16. #if (GCC_COMPILE==1)
  17. #include "wm_ieee80211_gcc.h"
  18. #else
  19. #include <wm_ieee80211.h>
  20. #endif
  21. #include "wm_config.h"
  22. #include "wm_bt_config.h"
  23. /** DEBUG USE MAC FILTER START */
  24. #define CONFIG_ONESHOT_MAC_FILTER 0
  25. extern int tls_filter_module_srcmac(u8 *mac);
  26. #define ONESHOT_ON 1
  27. #define ONESHOT_OFF 0
  28. /* ONE SHOT */
  29. /** UDP MULTICAST ONE SHOT */
  30. #define TLS_CONFIG_UDP_ONE_SHOT ONESHOT_ON
  31. /** WinnerMicro ONSHOT */
  32. #define TLS_CONFIG_UDP_LSD_SPECIAL (ONESHOT_ON&& TLS_CONFIG_UDP_ONE_SHOT)
  33. /** AP ONESHOT */
  34. #define TLS_CONFIG_AP_MODE_ONESHOT (ONESHOT_ON && TLS_CONFIG_AP)
  35. #define TLS_CONFIG_WEB_SERVER_MODE (ONESHOT_ON && TLS_CONFIG_AP_MODE_ONESHOT)
  36. #define TLS_CONFIG_SOCKET_MODE (ONESHOT_ON && TLS_CONFIG_AP_MODE_ONESHOT)
  37. /** AIRKISS ONESHOT */
  38. #define TLS_CONFIG_AIRKISS_MODE_ONESHOT (ONESHOT_OFF && TLS_CONFIG_UDP_ONE_SHOT)
  39. #define AIRKISS_USE_SELF_WRITE 1
  40. /** BLE ONESHOT */
  41. #define TLS_CONFIG_BLE_WIFI_ONESHOT (ONESHOT_ON && (WM_BLE_INCLUDED == CFG_ON || WM_NIMBLE_INCLUDED == CFG_ON))
  42. typedef enum{
  43. ONESHOT_SCAN_START,
  44. ONESHOT_SCAN_FINISHED,
  45. ONESHOT_SWITCH_CHANNEL,
  46. ONESHOT_STOP_TMP_CHAN_SWITCH,
  47. ONESHOT_STOP_CHAN_SWITCH,
  48. ONESHOT_HANDSHAKE_TIMEOUT,
  49. ONESHOT_RECV_TIMEOUT,
  50. ONESHOT_RECV_ERR,
  51. ONESHOT_STOP_DATA_CLEAR,
  52. ONESHOT_NET_UP,
  53. AP_SOCK_S_MSG_SOCKET_RECEIVE_DATA,
  54. AP_WEB_S_MSG_RECEIVE_DATA,
  55. AP_SOCK_S_MSG_SOCKET_CREATE,
  56. AP_SOCK_S_MSG_WJOIN_FAILD,
  57. }ONESHOT_MSG_ENUM;
  58. /**
  59. * @defgroup APP_APIs APP APIs
  60. * @brief APP APIs
  61. */
  62. /**
  63. * @addtogroup APP_APIs
  64. * @{
  65. */
  66. /**
  67. * @defgroup Oneshot_APIs Oneshot APIs
  68. * @brief Wi-Fi oneshot APIs
  69. */
  70. /**
  71. * @addtogroup Oneshot_APIs
  72. * @{
  73. */
  74. /**
  75. * @brief This function is used to set oneshot flag.
  76. *
  77. * @param[in] flag, 0: one shot closed
  78. * 1: one shot open
  79. * 2: AP+socket
  80. * 3: AP+WEBSERVER
  81. * 4: bt
  82. *
  83. * @param[out] None
  84. *
  85. * @retval 0: success
  86. * -1: failed
  87. *
  88. * @note None
  89. */
  90. int tls_wifi_set_oneshot_flag(u8 flag);
  91. /**
  92. * @brief This function is used to get oneshot flag.
  93. *
  94. * @param[in] None
  95. *
  96. * @param[out] None
  97. *
  98. * @retval 0: one shot closed
  99. * 1: one shot open
  100. * 2: AP+socket
  101. * 3: AP+WEBSERVER
  102. * 4: bt
  103. *
  104. * @note None
  105. */
  106. int tls_wifi_get_oneshot_flag(void);
  107. /**
  108. * @}
  109. */
  110. /**
  111. * @}
  112. */
  113. /**
  114. * @brief Handle wild packets coming from the air.
  115. *
  116. * @param[in] *hdr point to ieee80211 data header
  117. * @param[in] data_len data len of ieee80211 data
  118. *
  119. * @retval no mean
  120. *
  121. * @note None
  122. */
  123. u8 tls_wifi_dataframe_recv(struct ieee80211_hdr *hdr, u32 data_len);
  124. #if TLS_CONFIG_AIRKISS_MODE_ONESHOT
  125. /**
  126. * @brief This function is used to acknowledge app when airkiss process is done.
  127. *
  128. * @param[in] None
  129. *
  130. * @return None
  131. *
  132. * @note None
  133. */
  134. void oneshot_airkiss_send_reply(void);
  135. /**
  136. * @brief This function is used to deal with airkiss's
  137. wild packet
  138. *
  139. * @param[in] *data ieee80211 packet
  140. * @param[in] data_len packet length
  141. *
  142. * @return None
  143. *
  144. * @note None
  145. */
  146. void tls_airkiss_recv(u8 *data, u16 data_len);
  147. /**
  148. * @brief This function is used to start airkiss
  149. *
  150. * @param[in] None
  151. *
  152. * @return None
  153. *
  154. * @note None
  155. */
  156. void tls_airkiss_start(void);
  157. /**
  158. * @brief This function is used to stop airkiss
  159. *
  160. * @param[in] None
  161. *
  162. * @return None
  163. *
  164. * @note None
  165. */
  166. void tls_airkiss_stop(void);
  167. /**
  168. * @brief This function is used to change channel for airkiss
  169. *
  170. * @param[in] None
  171. *
  172. * @return None
  173. *
  174. * @note None
  175. */
  176. void tls_oneshot_airkiss_change_channel(void);
  177. #endif /*TLS_CONFIG_AIRKISS_MODE_ONESHOT*/
  178. /**
  179. * @brief This function is used to init oneshot task
  180. *
  181. * @param[in] None
  182. *
  183. * @return None
  184. *
  185. * @note Not in use now
  186. */
  187. int wm_oneshot_task_init(void);
  188. /**
  189. * @brief This function is used to stop oneshot timer
  190. *
  191. * @param[in] None
  192. *
  193. * @return None
  194. *
  195. * @note None
  196. */
  197. void tls_oneshot_switch_channel_tim_stop(struct ieee80211_hdr *hdr);
  198. /**
  199. * @brief This function is used to stop oneshot temp timer
  200. *
  201. * @param[in] None
  202. *
  203. * @return None
  204. *
  205. * @note None
  206. */
  207. void tls_oneshot_switch_channel_tim_temp_stop(void);
  208. /**
  209. * @brief handle if use bssid to connect wifi.
  210. *
  211. * @param[in] *ssid : ap name to connect
  212. * @param[in] *ssid_len: ap name's length to connect
  213. * @param[in] *bssid : ap bssid
  214. *
  215. * @retval no mean
  216. *
  217. * @note None
  218. */
  219. int tls_oneshot_if_use_bssid(u8 *ssid, u8 *ssid_len, u8 *bssid);
  220. /**
  221. * @brief Find channel according to ssid
  222. *
  223. * @param[in] *ssid ssid to be compared
  224. * @param[in] ssid_len ssid length
  225. * @param[out] chlist chlist to be add according to ssid info
  226. *
  227. * @retval None
  228. *
  229. * @note None
  230. */
  231. void tls_oneshot_find_chlist(u8 *ssid, u8 ssid_len, u16 *chlist);
  232. /**
  233. * @brief This function is to deal with oneshot event according netif status.
  234. *
  235. * @param[in] status:net status
  236. *
  237. * @param[out] None
  238. *
  239. * @retval None
  240. *
  241. * @note None
  242. */
  243. void wm_oneshot_netif_status_event(u8 status );
  244. #if TLS_CONFIG_WEB_SERVER_MODE
  245. /**
  246. * @brief This function is used to send web config msg to oneshot task.
  247. *
  248. * @param[in] None
  249. *
  250. * @param[out] None
  251. *
  252. * @retval None
  253. *
  254. * @note None
  255. */
  256. void tls_oneshot_send_web_connect_msg(void);
  257. #endif
  258. #endif /*WM_WIFI_ONESHOT_H*/