wmhd_api.h 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. /*
  2. * Copyright (c) 2024 Ampak
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef INCLUDED_WMHD_API_H
  8. #define INCLUDED_WMHD_API_H
  9. #include <stdint.h>
  10. #define WMHD_MK_CNTRY(a, b) (((unsigned char)(a)) + (((unsigned char)(b)) << 8))
  11. //About GPIO Define
  12. typedef enum {
  13. WL_REG_ON = 0,
  14. WL_HW_OOB = 1
  15. } wmhd_gpio_type_t;
  16. typedef enum {
  17. WMHD_802_11_BAND_2_4GHZ = 0, /**< Denotes 2.4GHz radio band */
  18. WMHD_802_11_BAND_5GHZ, /**< Denotes 5GHz radio band */
  19. WMHD_802_11_BAND_6GHZ, /**< Denotes 6GHz radio band */
  20. WMHD_802_11_BAND_UNKNOWN, /**< Denotes unknown radio band */
  21. } wmhd_802_11_band_t;
  22. typedef enum {
  23. WMHD_SECURE_OPEN = 0, // OPEN
  24. WMHD_WPA_PSK_AES, // WPA-PSK AES
  25. WMHD_WPA2_PSK_AES, // WPA2-PSK AES
  26. WMHD_WEP_OPEN, // WEP+OPEN
  27. WMHD_WEP_SHARED, // WEP+SHARE
  28. WMHD_WPA_PSK_TKIP, // WPA-PSK TKIP
  29. WMHD_WPA_PSK_MIXED, // WPA-PSK AES & TKIP MIXED
  30. WMHD_WPA2_PSK_TKIP, // WPA2-PSK TKIP
  31. WMHD_WPA2_PSK_MIXED, // WPA2-PSK AES & TKIP MIXED
  32. WMHD_WPA2_WPA_PSK, // WPA2/WPA-PSK AES & TKIP MIXED
  33. WMHD_WPA2_PSK_SHA256, // WPA2-PSK-SHA256
  34. WMHD_WPA3_PSK_SAE, // WPA3-PSK SAE
  35. WMHD_WPA3_WPA2_PSK, // WPA3 SAE & WPA2-PSK AES
  36. WMHD_WPS_OPEN, // WPS OPEN, NOT supported
  37. WMHD_WPS_AES, // WPS AES, NOT supported
  38. WMHD_IBSS_OPEN, // ADHOC, NOT supported
  39. WMHD_WPA_ENT_AES, // WPA-ENT AES, NOT supported
  40. WMHD_WPA_ENT_TKIP, // WPA-ENT TKIP, NOT supported
  41. WMHD_WPA_ENT_MIXED, // WPA-ENT AES & TKIP MIXED, NOT supported
  42. WMHD_WPA2_ENT_AES, // WPA2-ENT AES, NOT supported
  43. WMHD_WPA2_ENT_TKIP, // WPA2-ENT TKIP, NOT supported
  44. WMHD_WPA2_ENT_MIXED, // WPA2-ENT AES & TKIP MIXED, NOT supported
  45. WMHD_STA_SECURITY_AUTO = 99, // MHD auto select security
  46. WMHD_SECURITY_MAX = 0x7f, // force host_security_t type to 8bits
  47. WMHD_SECURITY_UNKNOWN = -1 // Unknown security type
  48. } wmhd_sta_security_t;
  49. typedef enum {
  50. WMHD_AP_OPEN, // 0 OPEN
  51. WMHD_AP_WPA_AES_PSK, // 1 WPA-PSK AES
  52. WMHD_AP_WPA2_AES_PSK, // 2 WPA2-PSK AES
  53. WMHD_AP_WEP_OPEN, // 3 WEP+OPEN
  54. WMHD_AP_WEP_SHARED, // 4 WEP+SHARE
  55. WMHD_AP_WPA_TKIP_PSK, // 5 WPA-PSK TKIP
  56. WMHD_AP_WPA_MIXED_PSK, // 6 WPA-PSK AES & TKIP MIXED
  57. WMHD_AP_WPA2_TKIP_PSK, // 7 WPA2-PSK TKIP
  58. WMHD_AP_WPA2_MIXED_PSK, // 8 WPA2-PSK AES & TKIP MIXED
  59. WMHD_AP_WPA3_WPA2_PSK, // 9 WPA3 & WPA2 AES
  60. WMHD_AP_WPA3_SAE, //10 WPA3 SAE
  61. WMHD_AP_WPS_OPEN, //11 WPS OPEN, NOT supported
  62. WMHD_AP_WPS_AES, //12 WPS AES, NOT supported
  63. WMHD_AP_WPA2_WPA_AES_PSK, //13 WPA2/WPA-PSK AES
  64. WMHD_AP_WPA2_WPA_TKIP_PSK, //14 WPA2/WPA-PSK TKIP
  65. WMHD_AP_WPA2_WPA_MIXED_PSK, //15 WPA2/WPA-PSK AES & TKIP MIXED
  66. } wmhd_ap_security_t;
  67. typedef struct {
  68. uint8_t octet[6]; /* Unique 6-byte MAC address */
  69. } wmhd_mac_t;
  70. typedef struct {
  71. char ssid[32];
  72. char bssid[6];
  73. uint32_t channel;
  74. uint32_t security;
  75. uint32_t rssi;
  76. uint32_t data_rate;
  77. char ccode[4];
  78. uint8_t band;
  79. uint8_t mfp;
  80. } wmhd_ap_info_t;
  81. #ifdef __cplusplus
  82. extern "C" {
  83. #endif
  84. extern void wmhd_gpio_config(uint8_t type, uint32_t port, uint32_t pin);
  85. extern void wmhd_sdio_config(void *sdio_base[], uint8_t num);
  86. extern void wmhd_sdio_set_slot_and_maxclk(uint8_t index, uint32_t clock);
  87. extern void wmhd_thread_config(uint8_t type, uint32_t priority, uint32_t stack_size);
  88. extern void wmhd_host_oob_isr(void);
  89. extern void wmhd_host_sdio_isr(void);
  90. extern void wmhd_set_country_code(uint32_t country);
  91. extern void wmhd_get_country_code(uint32_t *country);
  92. extern int wmhd_module_init(void);
  93. extern int wmhd_module_exit(void);
  94. extern int wmhd_get_mac_address(wmhd_mac_t *mac);
  95. //extern int wmhd_set_mac_address( wmhd_mac_t *mac );
  96. typedef void (*wmhd_scan_report_cb_t)(wmhd_ap_info_t *result);
  97. extern int wmhd_scan_ap(wmhd_scan_report_cb_t scan_report_cb, wmhd_ap_info_t *scan_report_param);
  98. extern int wmhd_scan_ap_ext(char *ssid_str,
  99. char *mac_val,
  100. uint16_t *channel_list,
  101. wmhd_scan_report_cb_t scan_report_cb,
  102. wmhd_ap_info_t *scan_report_param);
  103. extern int wmhd_scan_aplist(wmhd_ap_info_t *results, int *num);
  104. // station connects to ap. 0:success, others:failed
  105. // security: 0-open, 1-wpa_psk_aes, 2-wpa2_psk_aes
  106. extern int wmhd_sta_connect(char *ssid, char *bssid, uint8_t security, char *password, uint8_t channel);
  107. extern int wmhd_sta_disconnect(void);
  108. extern int wmhd_sta_get_connection(void);
  109. extern int wmhd_join_ap(char *ssid, char *password);
  110. extern int wmhd_leave_ap(void);
  111. extern int wmhd_sta_network_up(uint32_t ip, uint32_t gateway, uint32_t netmask);
  112. extern int wmhd_sta_network_down(void);
  113. typedef void (*wmhd_link_cb_t)(void);
  114. extern int wmhd_sta_register_link_callback(wmhd_link_cb_t link_up_cb, wmhd_link_cb_t link_down_cb);
  115. extern int wmhd_sta_deregister_link_callback(wmhd_link_cb_t link_up_cb, wmhd_link_cb_t link_down_cb);
  116. extern int wmhd_sta_get_rssi(void);
  117. extern int wmhd_sta_get_rate(void);
  118. extern int wmhd_sta_get_noise(void);
  119. extern int wmhd_sta_get_bssid(char mac_addr[]);
  120. extern int wmhd_sta_get_ssid(char ssid_data[]);
  121. extern uint32_t wmhd_sta_ipv4_ipaddr(void);
  122. extern uint32_t wmhd_sta_ipv4_gateway(void);
  123. extern uint32_t wmhd_sta_ipv4_netmask(void);
  124. extern int wmhd_sta_set_powersave(uint8_t mode, uint8_t time_ms);
  125. extern int wmhd_sta_get_powersave(uint8_t *mode, uint8_t *time_ms);
  126. extern int wmhd_sta_set_bcn_li_dtim(uint8_t dtim);
  127. extern int wmhd_sta_get_bcn_li_dtim(void);
  128. extern int wmhd_sta_set_dtim_interval(int dtim_interval_ms);
  129. extern int wmhd_host_get_mac_address(wmhd_mac_t *mac);
  130. extern void wmhd_host_set_mac_address(wmhd_mac_t mac);
  131. extern void wmhd_sta_tput_patch(uint8_t enable);
  132. // ssid: less than 32 bytes
  133. // password: less than 32 bytes
  134. // security: 0-open, 1-wpa_psk_aes, 2-wpa2_psk_aes
  135. // channel: 1~13
  136. extern int wmhd_softap_start(char *ssid, char *password, uint8_t security, uint8_t channel);
  137. extern int wmhd_softap_stop(void);
  138. extern int wmhd_softap_set_hidden(uint8_t enable);
  139. extern int wmhd_softap_get_hidden(void);
  140. extern int wmhd_softap_start_dhcpd(uint32_t ip_address);
  141. extern int wmhd_softap_stop_dhcpd(void);
  142. extern int wmhd_softap_get_mac_list(wmhd_mac_t *mac_list, uint32_t *count);
  143. extern int wmhd_softap_get_rssi(wmhd_mac_t *mac);
  144. extern int wmhd_softap_deauth_assoc_sta(wmhd_mac_t *mac);
  145. typedef void (*wmhd_client_cb_t)(wmhd_mac_t *);
  146. extern int wmhd_softap_register_client_callback(wmhd_client_cb_t client_assoc_cb, wmhd_client_cb_t client_disassoc_cb);
  147. extern int wmhd_wifi_get_channel(int interface, uint32_t *channel);
  148. extern int wmhd_wifi_set_channel(int interface, uint32_t channel);
  149. extern int wmhd_wifi_get_max_associations(uint32_t *max_assoc);
  150. extern int wmhd_wifi_set_max_associations(uint32_t max_assoc);
  151. extern int wmhd_enable_monitor_mode(void);
  152. extern int wmhd_disable_monitor_mode(void);
  153. typedef void (*wmhd_packet_cb_t)(void *buffer, int interface);
  154. extern void wmhd_set_netif_rx_callback(wmhd_packet_cb_t function);
  155. extern int wmhd_wifi_set_raw_packet_processor(wmhd_packet_cb_t function);
  156. extern int wmhd_config_fwlog(uint8_t enable, uint32_t interval);
  157. //WIFI Test Using
  158. extern int wmhd_wifi_commands(uint32_t argc, char **argv);
  159. extern int wmhd_wl_cmds(uint32_t argc, char **argv);
  160. extern int wmhd_log_msg_level(uint32_t level);
  161. extern int wmhd_lookup_hpm_sdio_index(void *sdio_base);
  162. extern void wmhd_config_hpm_sdio_instances(void);
  163. #ifdef __cplusplus
  164. }
  165. #endif
  166. #endif /* ifndef INCLUDED_MHD_API_H */