support aliyun sdk on TencentOS tiny
sample: examples\aliyun_iotkit_csdk_mqtt project: board\TencentOS_tiny_EVB_MX_Plus\KEIL\aliyun_iotkit_csdk_mqtt
This commit is contained in:
183
components/connectivity/iotkit-embedded-3.0.1/3rdparty/src/wifi_provision/router_ap/awss_adha.c
vendored
Normal file
183
components/connectivity/iotkit-embedded-3.0.1/3rdparty/src/wifi_provision/router_ap/awss_adha.c
vendored
Normal file
@@ -0,0 +1,183 @@
|
||||
/*
|
||||
* Copyright (C) 2015-2018 Alibaba Group Holding Limited
|
||||
*/
|
||||
#include "wifi_provision_internal.h"
|
||||
|
||||
#if defined(AWSS_SUPPORT_ADHA) || defined(AWSS_SUPPORT_AHA)
|
||||
|
||||
#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
struct adha_info *adha_aplist = NULL;
|
||||
|
||||
const char *zc_adha_ssid = "adha";
|
||||
const char *zc_adha_passwd = "08d9f22c60157fd01f57645d791a0b610fe0a558c104d6a1f9d9c0a9913c";
|
||||
|
||||
#ifdef AWSS_SUPPORT_ADHA
|
||||
|
||||
#define ADHA_WORK_CYCLE (5 * 1000)
|
||||
#define ADHA_PROBE_PKT_LEN (50)
|
||||
#define ADHA_SA_OFFSET (10)
|
||||
|
||||
static const uint8_t adha_probe_req_frame[ADHA_PROBE_PKT_LEN] = {
|
||||
0x40, 0x00, /* mgnt type, frame control */
|
||||
0x00, 0x00, /* duration */
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* DA */
|
||||
0x28, 0xC2, 0xDD, 0x61, 0x68, 0x83, /* SA, to be replaced with wifi mac */
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* BSSID */
|
||||
0xC0, 0x79, /* seq */
|
||||
0x00, 0x04, 0x61, 0x64, 0x68, 0x61, /* ssid, adha */
|
||||
0x01, 0x08, 0x82, 0x84, 0x8B, 0x96, 0x8C, 0x92, 0x98, 0xA4, /*supported rates */
|
||||
0x32, 0x04, 0xB0, 0x48, 0x60, 0x6C, /* extended supported rates */
|
||||
0x3F, 0x84, 0x10, 0x9E /* FCS */
|
||||
};
|
||||
|
||||
static void *adha_timer = NULL;
|
||||
static volatile char adha_switch = 0;
|
||||
|
||||
static void adha_monitor(void);
|
||||
|
||||
static void adha_monitor(void)
|
||||
{
|
||||
adha_switch = 1;
|
||||
}
|
||||
|
||||
int awss_is_ready_switch_next_adha(void)
|
||||
{
|
||||
return adha_switch > 0;
|
||||
}
|
||||
|
||||
int awss_open_adha_monitor(void)
|
||||
{
|
||||
adha_switch = 0;
|
||||
if (adha_timer == NULL)
|
||||
adha_timer = (void *)HAL_Timer_Create("adha", (void (*)(void *))adha_monitor, NULL);
|
||||
if (adha_timer == NULL)
|
||||
return -1;
|
||||
|
||||
HAL_Timer_Stop(adha_timer);
|
||||
HAL_Timer_Start(adha_timer, ADHA_WORK_CYCLE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int awss_close_adha_monitor(void)
|
||||
{
|
||||
awss_stop_timer(adha_timer);
|
||||
adha_timer = NULL;
|
||||
adha_switch = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int awss_recv_callback_adha_ssid(struct parser_res *res)
|
||||
{
|
||||
uint8_t tods = res->tods;
|
||||
uint8_t channel = res->channel;
|
||||
|
||||
AWSS_UPDATE_STATIS(AWSS_STATIS_ROUTE_IDX, AWSS_STATIS_TYPE_TIME_START);
|
||||
awss_debug("found adha ssid: %s\r\n", zc_adha_ssid);
|
||||
|
||||
strncpy((char *)zc_ssid, zc_adha_ssid, ZC_MAX_SSID_LEN - 1);
|
||||
strncpy((char *)zc_passwd, zc_adha_passwd, ZC_MAX_PASSWD_LEN - 1);
|
||||
|
||||
zconfig_set_state(STATE_RCV_DONE, tods, channel);
|
||||
return PKG_END;
|
||||
}
|
||||
|
||||
int aws_send_adha_probe_req(void)
|
||||
{
|
||||
uint8_t probe[ADHA_PROBE_PKT_LEN];
|
||||
memcpy(probe, adha_probe_req_frame, sizeof(probe));
|
||||
os_wifi_get_mac(&probe[ADHA_SA_OFFSET]);
|
||||
HAL_Wifi_Send_80211_Raw_Frame(FRAME_PROBE_REQ, probe, sizeof(probe));
|
||||
return 0;
|
||||
}
|
||||
|
||||
int awss_ieee80211_adha_process(uint8_t *mgmt_header, int len, int link_type, struct parser_res *res, signed char rssi)
|
||||
{
|
||||
uint8_t ssid[ZC_MAX_SSID_LEN] = {0}, bssid[ETH_ALEN] = {0};
|
||||
uint8_t auth, pairwise_cipher, group_cipher;
|
||||
struct ieee80211_hdr *hdr;
|
||||
int fc, ret, channel;
|
||||
|
||||
/*
|
||||
* when device try to connect current router (include adha and aha)
|
||||
* skip the new aha and process the new aha in the next scope.
|
||||
*/
|
||||
if (mgmt_header == NULL || zconfig_finished)
|
||||
return ALINK_INVALID;
|
||||
|
||||
/*
|
||||
* if user press configure button, drop all adha
|
||||
*/
|
||||
if (awss_get_config_press())
|
||||
return ALINK_INVALID;
|
||||
|
||||
hdr = (struct ieee80211_hdr *)mgmt_header;
|
||||
fc = hdr->frame_control;
|
||||
|
||||
if (!ieee80211_is_beacon(fc) && !ieee80211_is_probe_resp(fc))
|
||||
return ALINK_INVALID;
|
||||
ret = ieee80211_get_bssid(mgmt_header, bssid);
|
||||
if (ret < 0)
|
||||
return ALINK_INVALID;
|
||||
|
||||
ret = ieee80211_get_ssid(mgmt_header, len, ssid);
|
||||
if (ret < 0)
|
||||
return ALINK_INVALID;
|
||||
/*
|
||||
* skip ap which is not adha
|
||||
*/
|
||||
if (strcmp((const char *)ssid, zc_adha_ssid))
|
||||
return ALINK_INVALID;
|
||||
|
||||
channel = cfg80211_get_bss_channel(mgmt_header, len);
|
||||
rssi = rssi > 0 ? rssi - 256 : rssi;
|
||||
|
||||
cfg80211_get_cipher_info(mgmt_header, len, &auth,
|
||||
&pairwise_cipher, &group_cipher);
|
||||
#ifdef AWSS_SUPPORT_APLIST
|
||||
awss_save_apinfo(ssid, bssid, channel, auth,
|
||||
pairwise_cipher, group_cipher, rssi);
|
||||
#endif
|
||||
/*
|
||||
* If user press the configure button,
|
||||
* skip all the adha.
|
||||
*/
|
||||
if (adha_aplist->cnt > adha_aplist->try_idx) {
|
||||
uint8_t ap_idx = adha_aplist->aplist[adha_aplist->try_idx ++];
|
||||
#ifdef AWSS_SUPPORT_APLIST
|
||||
memcpy(zc_bssid, zconfig_aplist[ap_idx].mac, ETH_ALEN);
|
||||
#endif
|
||||
return ALINK_ADHA_SSID;
|
||||
}
|
||||
return ALINK_INVALID;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
int awss_init_adha_aplist(void)
|
||||
{
|
||||
if (adha_aplist)
|
||||
return 0;
|
||||
adha_aplist = (struct adha_info *)os_zalloc(sizeof(struct adha_info));
|
||||
if (adha_aplist == NULL)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int awss_deinit_adha_aplist(void)
|
||||
{
|
||||
if (adha_aplist == NULL)
|
||||
return 0;
|
||||
|
||||
HAL_Free(adha_aplist);
|
||||
adha_aplist = NULL;
|
||||
return 0;
|
||||
}
|
||||
#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
45
components/connectivity/iotkit-embedded-3.0.1/3rdparty/src/wifi_provision/router_ap/awss_adha.h
vendored
Normal file
45
components/connectivity/iotkit-embedded-3.0.1/3rdparty/src/wifi_provision/router_ap/awss_adha.h
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2015-2018 Alibaba Group Holding Limited
|
||||
*/
|
||||
|
||||
#ifndef __AWSS_ADHA_H__
|
||||
#define __AWSS_ADHA_H__
|
||||
|
||||
#if defined(AWSS_SUPPORT_ADHA) || defined(AWSS_SUPPORT_AHA)
|
||||
|
||||
#include "zconfig_lib.h"
|
||||
#include "zconfig_protocol.h"
|
||||
|
||||
#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
struct adha_info {
|
||||
uint8_t try_idx;
|
||||
uint8_t cnt;
|
||||
uint8_t aplist[MAX_APLIST_NUM];
|
||||
};
|
||||
|
||||
int awss_init_adha_aplist(void);
|
||||
int awss_deinit_adha_aplist(void);
|
||||
extern struct adha_info *adha_aplist;
|
||||
extern const char *zc_adha_passwd;
|
||||
extern const char *zc_adha_ssid;
|
||||
|
||||
#ifdef AWSS_SUPPORT_ADHA
|
||||
int awss_open_adha_monitor(void);
|
||||
int awss_close_adha_monitor(void);
|
||||
int aws_send_adha_probe_req(void);
|
||||
|
||||
int awss_is_ready_switch_next_adha(void);
|
||||
int awss_recv_callback_adha_ssid(struct parser_res *res);
|
||||
int awss_ieee80211_adha_process(uint8_t *mgmt_header, int len, int link_type,
|
||||
struct parser_res *res, signed char rssi);
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus) /* If this is a C++ compiler, use C linkage */
|
||||
}
|
||||
#endif
|
||||
#endif /* end AWSS_SUPPORT_ADHA || AWSS_SUPPORT_AHA */
|
||||
#endif
|
Reference in New Issue
Block a user