iot_import_awss.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * Copyright (C) 2015-2018 Alibaba Group Holding Limited
  3. */
  4. #ifndef __IOT_IMPORT_AWSS_H__
  5. #define __IOT_IMPORT_AWSS_H__
  6. #include "infra_types.h"
  7. #include "infra_defs.h"
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #ifndef _IN_
  12. #define _IN_
  13. #endif
  14. #ifndef _OU_
  15. #define _OU_
  16. #endif
  17. #ifndef _IN_OPT_
  18. #define _IN_OPT_
  19. #endif
  20. /* link type */
  21. enum AWSS_LINK_TYPE {
  22. /* rtos HAL choose this type */
  23. AWSS_LINK_TYPE_NONE,
  24. /* linux HAL may choose the following type */
  25. AWSS_LINK_TYPE_PRISM,
  26. AWSS_LINK_TYPE_80211_RADIO,
  27. AWSS_LINK_TYPE_80211_RADIO_AVS,
  28. AWSS_LINK_TYPE_HT40_CTRL /* for espressif HAL, see struct ht40_ctrl */
  29. };
  30. struct HAL_Ht40_Ctrl {
  31. uint16_t length;
  32. uint8_t filter;
  33. signed char rssi;
  34. };
  35. typedef int (*awss_recv_80211_frame_cb_t)(char *buf, int length,
  36. enum AWSS_LINK_TYPE link_type, int with_fcs, signed char rssi);
  37. /* auth type */
  38. enum AWSS_AUTH_TYPE {
  39. AWSS_AUTH_TYPE_OPEN,
  40. AWSS_AUTH_TYPE_SHARED,
  41. AWSS_AUTH_TYPE_WPAPSK,
  42. AWSS_AUTH_TYPE_WPA8021X,
  43. AWSS_AUTH_TYPE_WPA2PSK,
  44. AWSS_AUTH_TYPE_WPA28021X,
  45. AWSS_AUTH_TYPE_WPAPSKWPA2PSK,
  46. AWSS_AUTH_TYPE_MAX = AWSS_AUTH_TYPE_WPAPSKWPA2PSK,
  47. AWSS_AUTH_TYPE_INVALID = 0xff,
  48. };
  49. /* encryt type */
  50. enum AWSS_ENC_TYPE {
  51. AWSS_ENC_TYPE_NONE,
  52. AWSS_ENC_TYPE_WEP,
  53. AWSS_ENC_TYPE_TKIP,
  54. AWSS_ENC_TYPE_AES,
  55. AWSS_ENC_TYPE_TKIPAES,
  56. AWSS_ENC_TYPE_MAX = AWSS_ENC_TYPE_TKIPAES,
  57. AWSS_ENC_TYPE_INVALID = 0xff,
  58. };
  59. typedef int (*awss_wifi_scan_result_cb_t)(
  60. const char ssid[HAL_MAX_SSID_LEN],
  61. const uint8_t bssid[ETH_ALEN],
  62. enum AWSS_AUTH_TYPE auth,
  63. enum AWSS_ENC_TYPE encry,
  64. uint8_t channel, signed char rssi,
  65. int is_last_ap);
  66. /* 80211 frame type */
  67. typedef enum HAL_Awss_Frame_Type {
  68. FRAME_ACTION,
  69. FRAME_BEACON,
  70. FRAME_PROBE_REQ,
  71. FRAME_PROBE_RESPONSE,
  72. FRAME_DATA
  73. } HAL_Awss_Frame_Type_t;
  74. #define FRAME_ACTION_MASK (1 << FRAME_ACTION)
  75. #define FRAME_BEACON_MASK (1 << FRAME_BEACON)
  76. #define FRAME_PROBE_REQ_MASK (1 << FRAME_PROBE_REQ)
  77. #define FRAME_PROBE_RESP_MASK (1 << FRAME_PROBE_RESPONSE)
  78. #define FRAME_DATA_MASK (1 << FRAME_DATA)
  79. typedef void (*awss_wifi_mgmt_frame_cb_t)(_IN_ uint8_t *buffer, _IN_ int len,
  80. _IN_ signed char rssi_dbm, _IN_ int buffer_type);
  81. typedef struct {
  82. enum AWSS_AUTH_TYPE auth;
  83. enum AWSS_ENC_TYPE encry;
  84. uint8_t channel;
  85. signed char rssi_dbm;
  86. char ssid[HAL_MAX_SSID_LEN];
  87. uint8_t mac[ETH_ALEN];
  88. } awss_ap_info_t;
  89. #ifdef __cplusplus
  90. }
  91. #endif
  92. #endif /* __IOT_IMPORT_AWSS_H__ */