EC600U_esp32_iap_uart/LinkSDK/components/bootstrap/aiot_bootstrap_api.h

373 lines
10 KiB
C
Raw Normal View History

2024-02-05 17:39:56 +08:00
/**
* @file aiot_bootstrap_api.h
* @brief Bootstrap模块头文件,
*
* @copyright Copyright (C) 2015-2018 Alibaba Group Holding Limited
*
*/
#ifndef _AIOT_BOOTSTRAP_API_H_
#define _AIOT_BOOTSTRAP_API_H_
#if defined(__cplusplus)
extern "C" {
#endif
#include <stdint.h>
/**
* @brief -0x0700~-0x07FFSDK在 bootstrap
*/
#define STATE_BOOTSTRAP_BASE (-0x0700)
/**
* @brief @ref aiot_bootstrap_deinit , API执行结束的超过设定的超时时间, MQTT实例销毁失败
*/
#define STATE_BOOTSTRAP_DEINIT_TIMEOUT (-0x0701)
/**
* @brief @ref aiot_bootstrap_send_request bootstrap请求
*/
#define STATE_BOOTSTRAP_NEED_SEND_REQUEST (-0x0702)
/**
* @brief bootstrap http status code
*/
#define STATE_BOOTSTRAP_INVALID_STATUS_CODE (-0x0703)
/**
* @brief bootstrap连接信息
*/
#define STATE_BOOTSTRAP_INVALID_CONNECTION_INFO (-0x0704)
/**
* @brief bootstrap报文类型
*
* @details
*
* @ref aiot_bootstrap_recv_handler_t MQTT报文类型
*/
typedef enum {
/**
* @brief bootstrap http status code
*/
AIOT_BOOTSTRAPRECV_STATUS_CODE,
/**
* @brief ,
*/
AIOT_BOOTSTRAPRECV_CONNECTION_INFO,
/**
* @brief bootstrap通知信息
*/
AIOT_BOOTSTRAPRECV_NOTIFY
} aiot_bootstrap_recv_type_t;
/**
* @brief bootstrap接收到的数据
*/
typedef struct {
/**
* @brief bootstrap报文类型, @ref aiot_bootstrap_recv_type_t
*/
aiot_bootstrap_recv_type_t type;
/**
* @brief bootstrap报文联合体, type进行选择
*/
union {
/**
* @brief bootstrap http status code
*/
struct {
uint32_t code;
} status_code;
/**
* @brief
*/
struct {
char *host;
uint16_t port;
} connection_info;
struct {
uint32_t cmd;
} notify;
} data;
} aiot_bootstrap_recv_t;
/**
* @brief bootstrap数据接收回调函数原型
*
* @param[in] handle bootstrap实例句柄
* @param[in] packet bootstrap数据结构体, bootstrap信息
* @param[in] userdata
*
* @return void
*/
typedef void (*aiot_bootstrap_recv_handler_t)(void *handle, const aiot_bootstrap_recv_t *packet, void *userdata);
/**
* @brief bootstrap内部事件类型
*/
typedef enum {
/**
* @brief bootstrap应答中字段不合法
*/
AIOT_BOOTSTRAPEVT_INVALID_RESPONSE,
/**
* @brief bootstrap应答中cmd字段格式错误
*/
AIOT_BOOTSTRAPEVT_INVALID_CMD,
} aiot_bootstrap_event_type_t;
/**
* @brief bootstrap内部事件
*/
typedef struct {
/**
* @brief bootstrap内部事件类型. @ref aiot_bootstrap_event_type_t
*
*/
aiot_bootstrap_event_type_t type;
} aiot_bootstrap_event_t;
/**
* @brief bootstrap事件回调函数
*
* @details
*
* NTP内部事件被触发时,
*
*/
typedef void (*aiot_bootstrap_event_handler_t)(void *handle, const aiot_bootstrap_event_t *event, void *userdata);
typedef enum {
/**
* @brief bootstrap会话需要的MQTT句柄, MQTT连接, MQTT句柄
*
* @details
*
* : (void *)
*/
AIOT_BOOTSTRAPOPT_MQTT_HANDLE,
/*quectel profile index*/
AIOT_BOOTSTRAPOPT_PROFILE_IDX,
/**
* @brief bootstrap , 使
*
* @details
*
* @ref aiot_sysdep_network_cred_t
*
* @ref aiot_sysdep_network_cred_t option配置为@ref AIOT_SYSDEP_NETWORK_CRED_SVRCERT_CA , tls方式建联
*
* : (aiot_sysdep_network_cred_t *)
*/
AIOT_BOOTSTRAPOPT_NETWORK_CRED,
/**
* @brief bootstrap ip地址
*
* @details
*
* bootstrap :
*
* | | |
* |-------------------------------------------------|---------|---------
* | iot-auth-global.aliyuncs.com | | 443
*
* : (char *) : iot-auth-global.aliyuncs.com
*/
AIOT_BOOTSTRAPOPT_HOST,
/**
* @brief bootstrap
*
* @details
*
* bootstrap :
*
* 使tls方式建联, 443
*
* : (uint16_t *) : 443
*/
AIOT_BOOTSTRAPOPT_PORT,
/**
* @brief product key, <a href="http://iot.console.aliyun.com/"></a>
*
* @details
*
* : (char *)
*/
AIOT_BOOTSTRAPOPT_PRODUCT_KEY,
/**
* @brief device name, <a href="http://iot.console.aliyun.com/"></a>
*
* @details
*
* : (char *)
*/
AIOT_BOOTSTRAPOPT_DEVICE_NAME,
/**
* @brief regionId
*
* @details
*
* | | RegionId | | RegionId |
* |-------------------------|-----------|----------------------|----------|
* | 2- | 0 | 1- | 1 |
* | 1- | 2 | 1- | 3 |
* | 1- | 4 | 西 1- | 5 |
* | 1- | 6 | 1- | 7 |
* | 2- | 8 | 1- | 9 |
* | 3- | 10 | 5- | 11 |
* | 2- | 12 | 西 1- | 13 |
* | | 14 | 2- | 15 |
* | 3-西 | 16 | 5- | 17 |
* | 1- | 18 | - | 19 |
* | 1- | 20 | | |
*
* : (char *)
*/
AIOT_BOOTSTRAPOPT_REGIONID,
/**
* @brief bootstrap会话发送消息时可消费的最长时间间隔
*
* @details
*
* : (uint32_t *) : (5 * 1000) ms
*/
AIOT_BOOTSTRAPOPT_SEND_TIMEOUT_MS,
/**
* @brief bootstrap会话接收消息时可消费的最长时间间隔
*
* @details
*
* : (uint32_t *) : (5 * 1000) ms
*/
AIOT_BOOTSTRAPOPT_RECV_TIMEOUT_MS,
/**
* @brief bootstrap
*
* @details
*
*
* : (aiot_bootstrap_recv_handler_t)
*/
AIOT_BOOTSTRAPOPT_RECV_HANDLER,
/**
* @brief bootstrap内部发生的事件会从此回调函数进行通知
*
* @details
*
* : ( @ref aiot_bootstrap_event_handler_t )
*/
AIOT_BOOTSTRAPOPT_EVENT_HANDLER,
/**
* @brief SDK暂存的上下文
*
* @details
*
* @ref AIOT_BOOTSTRAPOPT_RECV_HANDLER
*
* : (void *)
*/
AIOT_BOOTSTRAPOPT_USERDATA,
/**
* @brief bootstrap应答的超时时间
*
* @details
*
* : (uint32_t *) : (5 * 1000) ms
*/
AIOT_BOOTSTRAPOPT_TIMEOUT_MS,
/**
* @brief Bootstrap实例时, api执行完毕的时间
*
* @details
*
* @ref aiot_bootstrap_deinit MQTT实例时, aiot_bootstrap_xxx API, API会返回@ref STATE_USER_INPUT_EXEC_DISABLED
*
* , aiot_bootstrap_xxx API
*
* : (uint32_t *) : (2 * 1000) ms
*/
AIOT_BOOTSTRAPOPT_DEINIT_TIMEOUT_MS,
AIOT_BOOTSTRAPOPT_MAX
} aiot_bootstrap_option_t;
/**
* @brief bootstrap实例并设置默认参数
*
* @return void*
* @retval NULL bootstrap实例句柄
* @retval NULL ,
*
*/
void *aiot_bootstrap_init(void);
/**
* @brief bootstrap参数
*
* @param[in] handle bootstrap句柄
* @param[in] option , @ref aiot_bootstrap_option_t
* @param[in] data , @ref aiot_bootstrap_option_t
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*
*/
int32_t aiot_bootstrap_setopt(void *handle, aiot_bootstrap_option_t option, void *data);
/**
* @brief bootstrap实例句柄的资源
*
* @param[in] handle bootstrap实例句柄的指针
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*
*/
int32_t aiot_bootstrap_deinit(void **handle);
/**
* @brief bootstrap服务器发送请求
*
* @param handle bootstrap句柄
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*/
int32_t aiot_bootstrap_send_request(void *handle);
/**
* @brief bootstrap服务器接收应答
*
* @param handle bootstrap句柄
*
* @return int32_t
* @retval <STATE_SUCCESS
* @retval >=STATE_SUCCESS
*/
int32_t aiot_bootstrap_recv(void *handle);
#if defined(__cplusplus)
}
#endif
#endif