/*
 * Copyright (C) 2015-2018 Alibaba Group Holding Limited
 */

#ifndef __AWS_LIB_H__
#define __AWS_LIB_H__

#include <stdint.h>

#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
extern "C" {
#endif

/* auth type */
enum AWS_AUTH_TYPE {
    AWS_AUTH_TYPE_OPEN,
    AWS_AUTH_TYPE_SHARED,
    AWS_AUTH_TYPE_WPAPSK,
    AWS_AUTH_TYPE_WPA8021X,
    AWS_AUTH_TYPE_WPA2PSK,
    AWS_AUTH_TYPE_WPA28021X,
    AWS_AUTH_TYPE_WPAPSKWPA2PSK,
    AWS_AUTH_TYPE_MAX = AWS_AUTH_TYPE_WPAPSKWPA2PSK,
    AWS_AUTH_TYPE_INVALID = 0xff,
};

/* encry type */
enum AWS_ENC_TYPE {
    AWS_ENC_TYPE_NONE,
    AWS_ENC_TYPE_WEP,
    AWS_ENC_TYPE_TKIP,
    AWS_ENC_TYPE_AES,
    AWS_ENC_TYPE_TKIPAES,
    AWS_ENC_TYPE_MAX = AWS_ENC_TYPE_TKIPAES,
    AWS_ENC_TYPE_INVALID = 0xff,
};

/* link type */
enum AWS_LINK_TYPE {
    AWS_LINK_TYPE_NONE,
    AWS_LINK_TYPE_PRISM,
    AWS_LINK_TYPE_80211_RADIO,
    AWS_LINK_TYPE_80211_RADIO_AVS
};

/* 鍚姩涓€閿厤缃戞湇鍔�, 璇ュ嚱鏁颁細block锛岀洿鍒伴厤缃戞垚鍔熸垨鑰呰秴鏃堕€€鍑�,
 *     瓒呮椂鏃堕棿鐢盿ws_timeout_period_ms璁剧疆
 * 鍙傛暟锛�
 *     pk: product key
 *     dn: device name
 *     ds: device security
 *     ps: product security
 */
void aws_start(char *pk, char *dn, char *ds, char *ps);
/* {璇ュ嚱鏁板ぇ鑷存祦绋嬪涓�:
 *     init();
 *     platform_monitor_open();
 *     aws_main_thread_func();
 *     platform_monitor_close();
 *     destroy();
 * }

 * aws_start杩斿洖鍚庯紝璋冪敤璇ュ嚱鏁帮紝鑾峰彇ssid鍜宲asswd绛変俊鎭�
 * aws鎴愬姛鏃讹紝ssid & passwd涓€瀹氫細杩斿洖闈濶ULL瀛楃涓�, 浣哹ssid鍜宎uth, encry, channel
 *     鏈夊彲鑳戒細杩斿洖NULL鎴栬€匢NVALID鍊�(鍙栧喅浜庢槸鍚﹁兘鍦╳ifi鍒楄〃閲屾悳绱㈠懡涓�)
 * aws澶辫触瓒呮椂鍚庯紝璇ュ嚱鏁颁細杩斿洖0, 涓旀墍鏈夊弬鏁颁负NULL鎴朓NVALID VALUE
 *
 * auth defined by enum AWS_AUTH_TYPE
 * encry defined by enum AWS_ENC_TYPE
 *
 * 杩斿洖鍊硷細1--鎴愬姛锛�0--澶辫触
 */
int aws_get_ssid_passwd(char *ssid, char *passwd, uint8_t *bssid,
                        uint8_t *token, char *auth, char *encry,
                        uint8_t *channel);

/* 閰嶇綉缁撴潫锛堟垚鍔熸垨澶辫触锛夊悗锛岃皟鐢ㄨ鍑芥暟锛岄噴鏀鹃厤缃戝簱鍗犵敤鐨勮祫婧� */
void aws_destroy(void);

#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
}
#endif

#endif