293 lines
12 KiB
C
293 lines
12 KiB
C
#ifndef _INFRA_COMPAT_H_
|
|
#define _INFRA_COMPAT_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "infra_defs.h"
|
|
#include "infra_list.h"
|
|
|
|
#undef being_deprecated
|
|
#define being_deprecated
|
|
|
|
typedef enum _IOT_LogLevel {
|
|
IOT_LOG_NONE = 0,
|
|
IOT_LOG_CRIT,
|
|
IOT_LOG_ERROR,
|
|
IOT_LOG_WARNING,
|
|
IOT_LOG_INFO,
|
|
IOT_LOG_DEBUG,
|
|
} IOT_LogLevel;
|
|
|
|
void IOT_SetLogLevel(IOT_LogLevel level);
|
|
void IOT_DumpMemoryStats(IOT_LogLevel level);
|
|
|
|
/**
|
|
* @brief event list used for iotx_regist_event_monitor_cb
|
|
*/
|
|
enum iotx_event_t {
|
|
IOTX_AWSS_START = 0x1000, /* AWSS start without enbale, just supports device discover */
|
|
IOTX_AWSS_ENABLE, /* AWSS enable */
|
|
IOTX_AWSS_LOCK_CHAN, /* AWSS lock channel(Got AWSS sync packet) */
|
|
IOTX_AWSS_CS_ERR, /* AWSS AWSS checksum is error */
|
|
IOTX_AWSS_PASSWD_ERR, /* AWSS decrypt passwd error */
|
|
IOTX_AWSS_GOT_SSID_PASSWD, /* AWSS parse ssid and passwd successfully */
|
|
IOTX_AWSS_CONNECT_ADHA, /* AWSS try to connnect adha (device discover, router solution) */
|
|
IOTX_AWSS_CONNECT_ADHA_FAIL, /* AWSS fails to connect adha */
|
|
IOTX_AWSS_CONNECT_AHA, /* AWSS try to connect aha (AP solution) */
|
|
IOTX_AWSS_CONNECT_AHA_FAIL, /* AWSS fails to connect aha */
|
|
IOTX_AWSS_SETUP_NOTIFY, /* AWSS sends out device setup information (AP and router solution) */
|
|
IOTX_AWSS_CONNECT_ROUTER, /* AWSS try to connect destination router */
|
|
IOTX_AWSS_CONNECT_ROUTER_FAIL, /* AWSS fails to connect destination router. */
|
|
IOTX_AWSS_GOT_IP, /* AWSS connects destination successfully and got ip address */
|
|
IOTX_AWSS_SUC_NOTIFY, /* AWSS sends out success notify (AWSS sucess) */
|
|
IOTX_AWSS_BIND_NOTIFY, /* AWSS sends out bind notify information to support bind between user and device */
|
|
IOTX_AWSS_ENABLE_TIMEOUT, /* AWSS enable timeout(user needs to call awss_config_press again to enable awss) */
|
|
IOTX_CONN_CLOUD = 0x2000, /* Device try to connect cloud */
|
|
IOTX_CONN_CLOUD_FAIL, /* Device fails to connect cloud, refer to net_sockets.h for error code */
|
|
IOTX_CONN_CLOUD_SUC, /* Device connects cloud successfully */
|
|
IOTX_RESET = 0x3000, /* Linkkit reset success (just got reset response from cloud without any other operation) */
|
|
};
|
|
|
|
/**
|
|
* @brief register callback to monitor all event from system.
|
|
*
|
|
* @param callback, when some event occurs, the system will trigger callback to user.
|
|
* refer to enum iotx_event_t for event list supported.
|
|
*
|
|
* @return 0 when success, -1 when fail.
|
|
* @note: user should make sure that callback is not block and runs to complete fast.
|
|
*/
|
|
int iotx_event_regist_cb(void (*monitor_cb)(int event));
|
|
|
|
/**
|
|
* @brief post event to trigger callback resitered by iotx_event_regist_cb
|
|
*
|
|
* @param event, event id, refer to iotx_event_t
|
|
*
|
|
* @return 0 when success, -1 when fail.
|
|
*/
|
|
int iotx_event_post(int event);
|
|
|
|
#ifndef BUILD_AOS
|
|
|
|
#ifndef VERSION_NUM_SIZE
|
|
#define VERSION_NUM_SIZE 4
|
|
#endif
|
|
|
|
#ifndef RANDOM_NUM_SIZE
|
|
#define RANDOM_NUM_SIZE 4
|
|
#endif
|
|
|
|
#ifndef MAC_ADDRESS_SIZE
|
|
#define MAC_ADDRESS_SIZE 8
|
|
#endif
|
|
|
|
#ifndef CHIP_CODE_SIZE
|
|
#define CHIP_CODE_SIZE 4
|
|
#endif
|
|
|
|
#define AOS_ACTIVE_INFO_LEN (81)
|
|
unsigned int aos_get_version_info(unsigned char version_num[VERSION_NUM_SIZE],
|
|
unsigned char random_num[RANDOM_NUM_SIZE],
|
|
unsigned char mac_address[MAC_ADDRESS_SIZE],
|
|
unsigned char chip_code[CHIP_CODE_SIZE],
|
|
unsigned char *output_buffer,
|
|
unsigned int output_buffer_size);
|
|
#endif
|
|
|
|
typedef enum {
|
|
ITE_AWSS_STATUS,
|
|
ITE_CONNECT_SUCC,
|
|
ITE_CONNECT_FAIL,
|
|
ITE_DISCONNECTED,
|
|
ITE_RAWDATA_ARRIVED,
|
|
ITE_SERVICE_REQUEST,
|
|
ITE_PROPERTY_SET,
|
|
ITE_PROPERTY_GET,
|
|
#ifdef DEVICE_MODEL_SHADOW
|
|
ITE_PROPERTY_DESIRED_GET_REPLY,
|
|
#endif
|
|
ITE_REPORT_REPLY,
|
|
ITE_TRIGGER_EVENT_REPLY,
|
|
ITE_TIMESTAMP_REPLY,
|
|
ITE_TOPOLIST_REPLY,
|
|
ITE_PERMIT_JOIN,
|
|
ITE_INITIALIZE_COMPLETED,
|
|
ITE_FOTA,
|
|
ITE_COTA,
|
|
ITE_MQTT_CONNECT_SUCC
|
|
} iotx_ioctl_event_t;
|
|
|
|
#define IOT_RegisterCallback(evt, cb) iotx_register_for_##evt(cb);
|
|
#define DECLARE_EVENT_CALLBACK(evt, cb) int iotx_register_for_##evt(cb);
|
|
#define DEFINE_EVENT_CALLBACK(evt, cb) int iotx_register_for_##evt(cb) { \
|
|
if (evt < 0 || evt >= sizeof(g_impl_event_map)/sizeof(impl_event_map_t)) {return -1;} \
|
|
g_impl_event_map[evt].callback = (void *)callback;return 0;}
|
|
|
|
DECLARE_EVENT_CALLBACK(ITE_AWSS_STATUS, int (*cb)(int))
|
|
DECLARE_EVENT_CALLBACK(ITE_CONNECT_SUCC, int (*cb)(void))
|
|
DECLARE_EVENT_CALLBACK(ITE_CONNECT_FAIL, int (*cb)(void))
|
|
DECLARE_EVENT_CALLBACK(ITE_DISCONNECTED, int (*cb)(void))
|
|
DECLARE_EVENT_CALLBACK(ITE_RAWDATA_ARRIVED, int (*cb)(const int, const unsigned char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_SERVICE_REQUEST, int (*cb)(const int, const char *, const int, const char *, const int,
|
|
char **, int *))
|
|
DECLARE_EVENT_CALLBACK(ITE_PROPERTY_SET, int (*cb)(const int, const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_PROPERTY_DESIRED_GET_REPLY, int (*cb)(const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_PROPERTY_GET, int (*cb)(const int, const char *, const int, char **, int *))
|
|
DECLARE_EVENT_CALLBACK(ITE_REPORT_REPLY, int (*cb)(const int, const int, const int, const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_TRIGGER_EVENT_REPLY, int (*cb)(const int, const int, const int, const char *, const int,
|
|
const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_TIMESTAMP_REPLY, int (*cb)(const char *))
|
|
DECLARE_EVENT_CALLBACK(ITE_TOPOLIST_REPLY, int (*cb)(const int, const int, const int, const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_PERMIT_JOIN, int (*cb)(const char *, const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_INITIALIZE_COMPLETED, int (*cb)(const int))
|
|
DECLARE_EVENT_CALLBACK(ITE_FOTA, int (*cb)(const int, const char *))
|
|
DECLARE_EVENT_CALLBACK(ITE_COTA, int (*cb)(const int, const char *, int, const char *, const char *,
|
|
const char *, const char *))
|
|
DECLARE_EVENT_CALLBACK(ITE_MQTT_CONNECT_SUCC, int (*cb)(void))
|
|
|
|
void *iotx_event_callback(int evt);
|
|
|
|
#ifndef offset_of
|
|
#define offset_of aos_offsetof
|
|
#endif
|
|
#ifndef container_of
|
|
#define container_of aos_container_of
|
|
#endif
|
|
|
|
#define LIST_HEAD AOS_DLIST_HEAD
|
|
#define LIST_HEAD_INIT AOS_DLIST_INIT
|
|
#define INIT_LIST_HEAD INIT_AOS_DLIST_HEAD
|
|
#define LIST_INIT AOS_DLIST_INIT
|
|
|
|
#define list_head dlist_s
|
|
#define list_head_t dlist_t
|
|
|
|
#define list_add dlist_add
|
|
#define list_add_tail dlist_add_tail
|
|
#define list_del dlist_del
|
|
#define list_empty dlist_empty
|
|
#define list_entry_number dlist_entry_number
|
|
#define list_first_entry dlist_first_entry
|
|
#define list_for_each dlist_for_each
|
|
#define list_for_each_entry_reverse dlist_for_each_entry_reverse
|
|
#define list_for_each_safe dlist_for_each_safe
|
|
#define list_init dlist_init
|
|
|
|
#define list_for_each_entry(pos, head, member, type) \
|
|
dlist_for_each_entry(head, pos, type, member)
|
|
|
|
#define list_for_each_entry_safe(pos, n, head, member, type) \
|
|
for (pos = list_entry((head)->next, type, member), \
|
|
n = list_entry(pos->member.next, type, member); \
|
|
&pos->member != (head); \
|
|
pos = n, n = list_entry(n->member.next, type, member))
|
|
|
|
#define list_next_entry(pos, member, type) \
|
|
list_entry((pos)->member.next, type, member)
|
|
|
|
static inline void list_del_init(struct list_head *entry)
|
|
{
|
|
list_del(entry);
|
|
INIT_LIST_HEAD(entry);
|
|
}
|
|
|
|
static inline int list_is_last(const struct list_head *list,
|
|
const struct list_head *head)
|
|
{
|
|
return list->next == head;
|
|
}
|
|
|
|
typedef struct {
|
|
uint16_t port;
|
|
uint8_t init;
|
|
char *host_name;
|
|
char *client_id;
|
|
char *username;
|
|
char *password;
|
|
const char *pub_key;
|
|
} iotx_conn_info_t, *iotx_conn_info_pt;
|
|
|
|
int IOT_SetupConnInfo(const char *product_key,
|
|
const char *device_name,
|
|
const char *device_secret,
|
|
void **info_ptr);
|
|
|
|
|
|
typedef enum {
|
|
IOTX_IOCTL_SET_REGION, /* value(int*): iotx_cloud_region_types_t */
|
|
IOTX_IOCTL_GET_REGION, /* value(int*) */
|
|
IOTX_IOCTL_SET_MQTT_DOMAIN, /* value(const char*): point to mqtt domain string */
|
|
IOTX_IOCTL_SET_HTTP_DOMAIN, /* value(const char*): point to http domain string */
|
|
IOTX_IOCTL_SET_DYNAMIC_REGISTER, /* value(int*): 0 - Disable Dynamic Register, 1 - Enable Dynamic Register */
|
|
IOTX_IOCTL_GET_DYNAMIC_REGISTER, /* value(int*) */
|
|
IOTX_IOCTL_RECV_PROP_REPLY, /* value(int*): 0 - Disable property post reply by cloud; 1 - Enable property post reply by cloud */
|
|
IOTX_IOCTL_RECV_EVENT_REPLY, /* value(int*): 0 - Disable event post reply by cloud; 1 - Enable event post reply by cloud */
|
|
IOTX_IOCTL_SEND_PROP_SET_REPLY, /* value(int*): 0 - Disable send post set reply by devid; 1 - Enable property set reply by devid */
|
|
IOTX_IOCTL_SET_SUBDEV_SIGN, /* value(const char*): only for slave device, set signature of subdevice */
|
|
IOTX_IOCTL_GET_SUBDEV_LOGIN, /* value(int*): 0 - SubDev is logout; 1 - SubDev is login */
|
|
IOTX_IOCTL_SET_OTA_DEV_ID, /* value(int*): select the device to do OTA according to devid */
|
|
IOTX_IOCTL_QUERY_DEVID, /* value(iotx_dev_meta_info_t*): device meta info, only productKey and deviceName is required, ret value is subdev_id or -1 */
|
|
IOTX_IOCTL_SET_CUSTOMIZE_INFO, /* value(char*): set mqtt clientID customize information */
|
|
} iotx_ioctl_option_t;
|
|
|
|
typedef enum {
|
|
IMPL_LINKKIT_IOCTL_SWITCH_PROPERTY_POST_REPLY, /* only for master device, choose whether you need receive property post reply message */
|
|
IMPL_LINKKIT_IOCTL_SWITCH_EVENT_POST_REPLY, /* only for master device, choose whether you need receive event post reply message */
|
|
IMPL_LINKKIT_IOCTL_SWITCH_PROPERTY_SET_REPLY, /* only for master device, choose whether you need send property set reply message */
|
|
IMPL_LINKKIT_IOCTL_MAX
|
|
} impl_linkkit_ioctl_cmd_t;
|
|
|
|
/**
|
|
* @brief Setup Demain type, should be called before MQTT connection.
|
|
*
|
|
* @param [in] option: see iotx_ioctl_option_t.
|
|
*
|
|
* @return None.
|
|
* @see None.
|
|
*/
|
|
int IOT_Ioctl(int option, void *data);
|
|
|
|
#ifdef INFRA_MEM_STATS
|
|
#include "infra_mem_stats.h"
|
|
#endif
|
|
|
|
/* compatible for V2.3.0 */
|
|
#define IOTX_CLOUD_DOMAIN_SH IOTX_CLOUD_REGION_SHANGHAI
|
|
#define IOTX_CLOUD_DOMAIN_SG IOTX_CLOUD_REGION_SINGAPORE
|
|
#define IOTX_CLOUD_DOMAIN_JP IOTX_CLOUD_REGION_JAPAN
|
|
#define IOTX_CLOUD_DOMAIN_US IOTX_CLOUD_REGION_USA_WEST
|
|
#define IOTX_CLOUD_DOMAIN_GER IOTX_CLOUD_REGION_GERMANY
|
|
#define IOTX_IOCTL_SET_DOMAIN IOTX_IOCTL_SET_REGION
|
|
#define IOTX_IOCTL_GET_DOMAIN IOTX_IOCTL_GET_REGION
|
|
|
|
#define IOT_OpenLog(arg)
|
|
#define IOT_CloseLog() IOT_SetLogLevel(IOT_LOG_NONE)
|
|
#define IOT_LOG_EMERG IOT_LOG_NONE
|
|
|
|
#define IOT_Linkkit_Post IOT_Linkkit_Report
|
|
/* compatible for V2.3.0 end */
|
|
|
|
typedef enum {
|
|
HAL_AES_ENCRYPTION = 0,
|
|
HAL_AES_DECRYPTION = 1,
|
|
} AES_DIR_t;
|
|
|
|
typedef void *p_HAL_Aes128_t;
|
|
|
|
#define NETWORK_ADDR_LEN (16)
|
|
|
|
typedef struct _network_addr_t {
|
|
unsigned char
|
|
addr[NETWORK_ADDR_LEN];
|
|
unsigned short port;
|
|
} NetworkAddr;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _INFRA_COMPAT_H_ */
|