1 /*
2  * Copyright (C) 2015-2018 Alibaba Group Holding Limited
3  */
4 
5 #ifndef __AWS_LIB_H__
6 #define __AWS_LIB_H__
7 
8 #include <stdint.h>
9 
10 #if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
11 extern "C" {
12 #endif
13 
14 /* auth type */
15 enum AWS_AUTH_TYPE {
16     AWS_AUTH_TYPE_OPEN,
17     AWS_AUTH_TYPE_SHARED,
18     AWS_AUTH_TYPE_WPAPSK,
19     AWS_AUTH_TYPE_WPA8021X,
20     AWS_AUTH_TYPE_WPA2PSK,
21     AWS_AUTH_TYPE_WPA28021X,
22     AWS_AUTH_TYPE_WPAPSKWPA2PSK,
23     AWS_AUTH_TYPE_MAX = AWS_AUTH_TYPE_WPAPSKWPA2PSK,
24     AWS_AUTH_TYPE_INVALID = 0xff,
25 };
26 
27 /* encry type */
28 enum AWS_ENC_TYPE {
29     AWS_ENC_TYPE_NONE,
30     AWS_ENC_TYPE_WEP,
31     AWS_ENC_TYPE_TKIP,
32     AWS_ENC_TYPE_AES,
33     AWS_ENC_TYPE_TKIPAES,
34     AWS_ENC_TYPE_MAX = AWS_ENC_TYPE_TKIPAES,
35     AWS_ENC_TYPE_INVALID = 0xff,
36 };
37 
38 /* link type */
39 enum AWS_LINK_TYPE {
40     AWS_LINK_TYPE_NONE,
41     AWS_LINK_TYPE_PRISM,
42     AWS_LINK_TYPE_80211_RADIO,
43     AWS_LINK_TYPE_80211_RADIO_AVS
44 };
45 
46 /* 启动一键配网服务, 该函数会block,直到配网成功或者超时退出,
47  *     超时时间由aws_timeout_period_ms设置
48  * 参数:
49  *     pk: product key
50  *     dn: device name
51  *     ds: device security
52  *     ps: product security
53  */
54 void aws_start(char *pk, char *dn, char *ds, char *ps);
55 /* {该函数大致流程如下:
56  *     init();
57  *     platform_monitor_open();
58  *     aws_main_thread_func();
59  *     platform_monitor_close();
60  *     destroy();
61  * }
62 
63  * aws_start返回后,调用该函数,获取ssid和passwd等信息
64  * aws成功时,ssid & passwd一定会返回非NULL字符串, 但bssid和auth, encry, channel
65  *     有可能会返回NULL或者INVALID值(取决于是否能在wifi列表里搜索命中)
66  * aws失败超时后,该函数会返回0, 且所有参数为NULL或INVALID VALUE
67  *
68  * auth defined by enum AWS_AUTH_TYPE
69  * encry defined by enum AWS_ENC_TYPE
70  *
71  * 返回值:1--成功,0--失败
72  */
73 int aws_get_ssid_passwd(char *ssid, char *passwd, uint8_t *bssid,
74                         uint8_t *token, char *auth, char *encry,
75                         uint8_t *channel);
76 
77 /* 配网结束(成功或失败)后,调用该函数,释放配网库占用的资源 */
78 void aws_destroy(void);
79 
80 #if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
81 }
82 #endif
83 
84 #endif
85