Link Kit C-SDK  4.1.0
| 宏定义 | 类型定义 | 枚举 | 函数
aiot_mqtt_download_api.h 文件参考

mqtt_download模块头文件, 提供mqtt文件传输的能力 更多...

#include <stdint.h>
aiot_mqtt_download_api.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  aiot_mqtt_download_recv_t
 mqtt_download模块收到从网络上来的报文时, 通知用户的报文内容 更多...
 

宏定义

#define STATE_MQTT_DOWNLOAD_BASE   (-0x1D00)
 -0x1D00~-0x1DFF表达SDK在mqtt_download模块内的状态码 更多...
 
#define STATE_MQTT_DOWNLOAD_MQTT_HANDLE_NULL   (-0x1D01)
 mqtt_download_handle为空 更多...
 
#define STATE_MQTT_DOWNLOAD_TASK_DEINIT   (-0x1D02)
 任务未初始化 更多...
 
#define STATE_MQTT_DOWNLOAD_INIT   (-0x1D03)
 初始化完,第一次执行请求 更多...
 
#define STATE_MQTT_DOWNLOAD_ING   (-0x1D04)
 正在下载文件 更多...
 
#define STATE_MQTT_DOWNLOAD_FINISHED   (-0x1D05)
 文件已经下载完,但未校验 更多...
 
#define STATE_MQTT_DOWNLOAD_SUCCESS   (-0x1D06)
 文件下载完成,并且校验通过 更多...
 
#define STATE_MQTT_DOWNLOAD_FAILED_TIMEOUT   (-0x1D07)
 文件下载接收失败,重试几个后还是失败,认定为超时 更多...
 
#define STATE_MQTT_DOWNLOAD_FAILED_MISMATCH   (-0x1D08)
 完整文件下载时,MD5校验失败 更多...
 
#define STATE_MQTT_DOWNLOAD_FAILED_RECVERROR   (-0x1D09)
 接收长度校验错误 更多...
 
#define STATE_MQTT_DOWNLOAD_ABORT   (-0x1D0A)
 用户主动取消下载任务 更多...
 
#define STATE_MQTT_DOWNLOAD_FILESIZE_ERROR   (-0x1D0B)
 设置的下载长度为空 更多...
 

类型定义

typedef void(* aiot_mqtt_download_recv_handler_t) (void *handle, const aiot_mqtt_download_recv_t *packet, void *userdata)
 mqtt_download模块收到从网络上来的报文时, 通知用户所调用的数据回调函数 更多...
 

枚举

enum  aiot_mqtt_download_recv_type_t { AIOT_MDRECV_DATA_RESP }
 mqtt_download模块收到从网络上来的报文时, 通知用户的报文类型 更多...
 
enum  aiot_mqtt_download_option_t {
  AIOT_MDOPT_RECV_HANDLE, AIOT_MDOPT_MQTT_HANDLE, AIOT_MDOPT_USERDATA, AIOT_MDOPT_TASK_DESC,
  AIOT_MDOPT_RANGE_START, AIOT_MDOPT_RANGE_END, AIOT_MDOPT_DATA_REQUEST_SIZE, AIOT_MDOPT_MAX
}
 aiot_mqtt_download_setopt 接口的option参数可选值. 更多...
 

函数

void * aiot_mqtt_download_init (void)
 创建mqtt_download会话实例, 并以默认值配置会话参数 更多...
 
int32_t aiot_mqtt_download_setopt (void *handle, aiot_mqtt_download_option_t option, void *data)
 配置mqtt_download会话 更多...
 
int32_t aiot_mqtt_download_deinit (void **handle)
 结束mqtt_download会话, 销毁实例并回收资源 更多...
 
int32_t aiot_mqtt_download_process (void *handle)
 处理下载逻辑 更多...
 

详细描述

mqtt_download模块头文件, 提供mqtt文件传输的能力

宏定义说明

#define STATE_MQTT_DOWNLOAD_BASE   (-0x1D00)

-0x1D00~-0x1DFF表达SDK在mqtt_download模块内的状态码

#define STATE_MQTT_DOWNLOAD_MQTT_HANDLE_NULL   (-0x1D01)

mqtt_download_handle为空

#define STATE_MQTT_DOWNLOAD_TASK_DEINIT   (-0x1D02)

任务未初始化

#define STATE_MQTT_DOWNLOAD_INIT   (-0x1D03)

初始化完,第一次执行请求

#define STATE_MQTT_DOWNLOAD_ING   (-0x1D04)

正在下载文件

#define STATE_MQTT_DOWNLOAD_FINISHED   (-0x1D05)

文件已经下载完,但未校验

#define STATE_MQTT_DOWNLOAD_SUCCESS   (-0x1D06)

文件下载完成,并且校验通过

#define STATE_MQTT_DOWNLOAD_FAILED_TIMEOUT   (-0x1D07)

文件下载接收失败,重试几个后还是失败,认定为超时

#define STATE_MQTT_DOWNLOAD_FAILED_MISMATCH   (-0x1D08)

完整文件下载时,MD5校验失败

#define STATE_MQTT_DOWNLOAD_FAILED_RECVERROR   (-0x1D09)

接收长度校验错误

#define STATE_MQTT_DOWNLOAD_ABORT   (-0x1D0A)

用户主动取消下载任务

#define STATE_MQTT_DOWNLOAD_FILESIZE_ERROR   (-0x1D0B)

设置的下载长度为空

类型定义说明

typedef void(* aiot_mqtt_download_recv_handler_t) (void *handle, const aiot_mqtt_download_recv_t *packet, void *userdata)

mqtt_download模块收到从网络上来的报文时, 通知用户所调用的数据回调函数

参数
[in]handlemqtt_download会话句柄
[in]packetmqtt_download消息结构体, 存放收到的mqtt_download报文内容
[in]userdata用户上下文
返回
void

枚举类型说明

mqtt_download模块收到从网络上来的报文时, 通知用户的报文类型

枚举值
AIOT_MDRECV_DATA_RESP 

文件分片下载请求的返回报文

aiot_mqtt_download_setopt 接口的option参数可选值.

下文每个选项中的数据类型, 指的是aiot_mqtt_download_setopt 中, data参数的数据类型

枚举值
AIOT_MDOPT_RECV_HANDLE 

设置处理OTA消息的用户回调函数

数据类型: (aiot_mqtt_download_recv_handler_t)

AIOT_MDOPT_MQTT_HANDLE 

设置MQTT的handle

文件下载过程中使用MQTT的通道能力, 用以请求数据及接收数据

数据类型: (void *)

AIOT_MDOPT_USERDATA 

用户需要SDK暂存的上下文

该上下文会在AIOT_OTAOPT_RECV_HANDLER 中传回给用户

数据类型: (void *)

AIOT_MDOPT_TASK_DESC 

设置download实例句柄所包含下载任务的具体内容

用户在收到OTA的mqtt消息后, 如果决定升级, 则需要通过该选项, 在download实例句柄中开辟内存, 将OTA消息中携带的url, version, digest method, sign等信息复制过来, 有了这些信息后才能开始下载任务

数据类型: (aiot_download_task_desc_t *)

AIOT_MDOPT_RANGE_START 

设置按照range下载的起始地址

MQTT 范围请求(range requests)特性中, 表示从第该byte开始下载 如果指定从头开始下载, 则start的值为0

数据类型: (uint32_t *)

AIOT_MDOPT_RANGE_END 

设置按照range下载的结束地址

MQTT 范围请求(range requests)特性中, 表示下载到该byte后结束. 如果指定从头开始下载到10个byte后结束, 则需要指定start = 0, end = 9, 这样总共10个byte

数据类型: (uint32_t *)

AIOT_MDOPT_DATA_REQUEST_SIZE 

单次请求数据的最大长度

数据类型: (uint32_t *) 默认值: (2 *1024) Bytes

AIOT_MDOPT_MAX 

函数说明

void* aiot_mqtt_download_init ( void  )

创建mqtt_download会话实例, 并以默认值配置会话参数

返回
void *
返回值
非NULLmqtt_download实例的句柄
NULL初始化失败, 一般是内存分配失败导致

函数调用图:

int32_t aiot_mqtt_download_setopt ( void *  handle,
aiot_mqtt_download_option_t  option,
void *  data 
)

配置mqtt_download会话

参数
[in]handlemqtt_download会话句柄
[in]option配置选项, 更多信息请参考aiot_mqtt_download_option_t
[in]data配置选项数据, 更多信息请参考aiot_mqtt_download_option_t
返回
int32_t
返回值
<STATE_SUCCESS参数配置失败
>=STATE_SUCCESS参数配置成功

函数调用图:

int32_t aiot_mqtt_download_deinit ( void **  handle)

结束mqtt_download会话, 销毁实例并回收资源

参数
[in]handle指向mqtt_download会话句柄的指针
返回
int32_t
返回值
<STATE_SUCCESS执行失败
>=STATE_SUCCESS执行成功

函数调用图:

int32_t aiot_mqtt_download_process ( void *  handle)

处理下载逻辑

参数
handlemqtt_download会话句柄
返回
int32_t
返回值
STATE_MQTT_DOWNLOAD_INIT初始化完成
STATE_MQTT_DOWNLOAD_ING正在下载
STATE_MQTT_DOWNLOAD_SUCCESS下载完成
STATE_MQTT_DOWNLOAD_FAILED_RECVERROR数据接收错误
STATE_MQTT_DOWNLOAD_FAILED_TIMEOUT接收超时
STATE_MQTT_DOWNLOAD_FAILED_MISMATCH校验错误
STATE_MQTT_DOWNLOAD_MQTT_HANDLE_NULLhandle没有初始化
STATE_MQTT_DOWNLOAD_TASK_DEINIT没有设置task

函数调用图: