Link Kit C-SDK
4.0.0
|
MQTT UPLOAD模块头文件, 提供通过mqtt进行文件上传的能力 更多...
类 | |
struct | aiot_mqtt_upload_desc_t |
接收到的服务端应答消息的报文信息 更多... | |
struct | aiot_mqtt_upload_recv_t |
MQTT UPLOAD模块收到服务端应答的报文信息, 通知用户的报文内容 更多... | |
struct | aiot_mqtt_upload_result_t |
aiot_mqtt_upload_process 循环处理,返回对应文件的上传状态给到用户 更多... | |
宏定义 | |
#define | STATE_MQTT_UPLOAD_BASE (-0x2100) |
-0x2100~-0x21FF表达SDK在mqtt_upload模块内的状态码 更多... | |
#define | STATE_MQTT_UPLOAD_MQTT_HANDLE_IS_NULL (-0x2101) |
MQTT UPLOAD Handle 为空 更多... | |
#define | STATE_MQTT_UPLOAD_FILENAME_IS_NULL (-0x2102) |
MQTT UPLOAD 请求上传文件时,文件名是空的 更多... | |
#define | STATE_MQTT_UPLOAD_PARAMS_IS_NULL (-0x2103) |
MQTT UPLOAD PUB到服务端的时候参数为空 更多... | |
#define | STATE_MQTT_UPLOAD_FILE_DATA_IS_NULL (-0x2104) |
MQTT UPLOAD上传文件数据为空 更多... | |
#define | STATE_MQTT_UPLOAD_MQTT_SYSDEP_IS_NULL (-0x2105) |
MQTT portfile是空的 更多... | |
#define | STATE_MQTT_UPLOAD_PARSE_INIT_FAILED (-0x2106) |
MQTT UPLOAD 解析服务端初始化应答的Json数据失败 更多... | |
#define | STATE_MQTT_UPLOAD_PARSE_UPLOAD_REPLY_FAILED (-0x2107) |
MQTT UPLOAD 解析服务端文件数据上传应答的Json数据失败 更多... | |
#define | STATE_MQTT_UPLOAD_PARSE_CANCEL_FAILED (-0x2108) |
MQTT UPLOAD 解析服务端取消应答的Json数据失败 更多... | |
#define | STATE_MQTT_UPLOAD_PARSE_JSON_FAILED (-0x2109) |
MQTT UPLOAD 解析服务端应答的Json数据失败 更多... | |
#define | STATE_MQTT_UPLOAD_RECV_FILE_INFO_ERROR (-0x210A) |
MQTT UPLOAD 接收到的服务端应答文件信息不对 更多... | |
#define | STATE_MQTT_UPLOAD_RECV_UPLOADID_ERROR (-0x210B) |
MQTT UPLOAD uploadId不匹配或者设备端为初始化请求 更多... | |
#define | STATE_MQTT_UPLOAD_MALLOC_FAILED (-0x210C) |
MQTT UPLOAD malloc失败 更多... | |
#define | STATE_MQTT_UPLOAD_UPTASK_IS_NULL (-0x210D) |
MQTT UPLOAD 初始化文件upload的句柄时失败 更多... | |
#define | STATE_MQTT_UPLOAD_UPLOAD_REPLY_ERROR (-0x210E) |
MQTT UPLOAD 收到服务端应答的文件上传的偏移量和分包大小错误,与上次上传的不相同 更多... | |
#define | STATE_MQTT_UPLOAD_HANDLE_DEINIT (-0x210F) |
MQTT UPLOAD 反初始化 更多... | |
#define | STATE_MQTT_UPLOAD_FILE_RESTART_FAILED (-0x2110) |
重新启动文件上传失败 更多... | |
#define | STATE_MQTT_UPLOAD_BLOCK_SIZE_ERROR (-0x2111) |
MQTT UPLOAD 配置分包上传的大小错误,不在256~128K范围内,继续保持默认的2K. 更多... | |
#define | STATE_MQTT_UPLOAD_READ_DATA_HANDLER_IS_NULL (-0x2112) |
MQTT UPLOAD 请求文件上传,回调函数为空 更多... | |
#define | STATE_MQTT_UPLOAD_HANDLE_INIT (-0x2113) |
MQTT UPLOAD 初始化 更多... | |
#define | STATE_MQTT_UPLOAD_PROCESS_REPLY_ERROR (-0x2114) |
MQTT UPLOAD 处理服务端应答的回调时失败 更多... | |
#define | STATE_MQTT_UPLOAD_NONE (-0x2115) |
无任何状态,未开始进行文件上传的处理 更多... | |
#define | STATE_MQTT_UPLOAD_REQUEST_INIT (-0x2116) |
请求服务端进行文件上传,等待服务端返回结果 更多... | |
#define | STATE_MQTT_UPLOAD_IS_UPLOADING (-0x2117) |
正在执行文件上传任务 更多... | |
#define | STATE_MQTT_UPLOAD_REQUEST_CANCEL (-0x2118) |
通知服务端取消文件上传。 更多... | |
#define | STATE_MQTT_UPLOAD_CANCEL_SUCCESS (-0x2119) |
文件上传,取消上传任务成功,取消成功后会销毁对应的upload task释放内存资源 更多... | |
#define | STATE_MQTT_UPLOAD_CANCEL_FAILED (-0x2120) |
文件上传,取消上传任务失败 更多... | |
#define | STATE_MQTT_UPLOAD_FAILED (-0x2121) |
文件上传失败 更多... | |
#define | STATE_MQTT_UPLOAD_FAILED_TIMEOUT (-0x2122) |
文件上传超时失败 更多... | |
#define | STATE_MQTT_UPLOAD_FAILED_MESSAGE_LIGMIT (-0x2123) |
文件上传过程中,消息限流可以重新调用aiot_mqtt_upload_open_stream 使用AIOT_MQTT_UPLOAD_FILE_MODE_APPEND 更多... | |
#define | STATE_MQTT_UPLOAD_FAILED_WHOLE_CHECK (-0x2124) |
文件完整性校验失败 更多... | |
#define | STATE_MQTT_UPLOAD_FINISHED (-0x2125) |
已经完成文件上传的任务,完成文件上传后会销毁对应的upload task释放内存资源 更多... | |
#define | STATE_MQTT_UPLOAD_NO_UPLOAD_TASK (-0x2126) |
没有文件上传任务,无法执行取消操作 更多... | |
#define | STATE_MQTT_UPLOAD_OPEN_INIT_FAILED (-0x2127) |
请求初始化失败,请求参数错误或重复请求 更多... | |
#define | AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE "overwrite" |
同名的文件的处理策略 overwrite: 覆盖模式,服务端删除之前的同名文件,原有文件无法找回 更多... | |
#define | AIOT_MQTT_UPLOAD_FILE_MODE_APPEND "append" |
同名的文件的处理策略 append:文件追加模式 有同名文件未完成上传:在服务端文件未完成上传的情况下,云端返回当前已上传文件的信息,以便设备端继续上传后续的文件内 容,未完成的文件云端保留24H,超过24小时后删除未完成的文件,下次请求时重新建立 有同名已完成上传:返回错误码 UPLOAD_FILE_FAILED_SAME_FILE ,请求上传失败 无同名文件:服务端新建文件信息 更多... | |
#define | AIOT_MQTT_UPLOAD_FILE_MODE_FAIL "reject" |
同名的文件的处理策略 reject: 拒绝模式,服务端返回文件已经存在不能再次上传的错误码 UPLOAD_FILE_FAILED_SAME_FILE 更多... | |
#define | MQTT_UPLOAD_DEFAULT_FILENAME_LEN (128) |
MQTT上传文件名的最大长度 更多... | |
类型定义 | |
typedef int32_t(* | aiot_mqtt_upload_read_handler_t) (const aiot_mqtt_upload_recv_t *packet, uint8_t *data, uint32_t size, void *userdata) |
回调函数读取用户的本地文件或内存数据不能在回调函数中执行 aiot_mqtt_upload_open_stream 和 aiot_mqtt_upload_cancel_stream 多个文件同时请求上传时,可以使用不同的回调函数,也可以使用同一个回调函数用户根据file_name区分对应的文件或内存区 更多... | |
函数 | |
void * | aiot_mqtt_upload_init (void) |
创建MQTT UPLOAD会话实例, 并以默认值配置会话参数 更多... | |
int32_t | aiot_mqtt_upload_setopt (void *handle, aiot_mqtt_upload_option_t option, void *data) |
配置MQTT UPLOAD会话 更多... | |
int32_t | aiot_mqtt_upload_deinit (void **handle) |
结束MQTT UPLOAD会话, 销毁实例并回收资源 更多... | |
int32_t | aiot_mqtt_upload_open_stream (void *handle, char *file_name, uint32_t file_size, const char *mode, void *digest, aiot_mqtt_upload_read_handler_t read_data_handler, void *userdata) |
向MQTT UPLOAD 服务请求发送文件 更多... | |
int32_t | aiot_mqtt_upload_cancel_stream (void *handle, char *file_name) |
向mqtt_upload服务器请求关闭MQTT通道数据上传命令 更多... | |
aiot_mqtt_upload_result_t | aiot_mqtt_upload_process (void *handle) |
MQTT Upload 处理函数,处理超时和重发逻辑,返回对应文件的执行的状态 更多... | |
MQTT UPLOAD模块头文件, 提供通过mqtt进行文件上传的能力
#define STATE_MQTT_UPLOAD_BASE (-0x2100) |
-0x2100~-0x21FF表达SDK在mqtt_upload模块内的状态码
#define STATE_MQTT_UPLOAD_MQTT_HANDLE_IS_NULL (-0x2101) |
MQTT UPLOAD Handle 为空
#define STATE_MQTT_UPLOAD_FILENAME_IS_NULL (-0x2102) |
MQTT UPLOAD 请求上传文件时,文件名是空的
#define STATE_MQTT_UPLOAD_PARAMS_IS_NULL (-0x2103) |
MQTT UPLOAD PUB到服务端的时候参数为空
#define STATE_MQTT_UPLOAD_FILE_DATA_IS_NULL (-0x2104) |
MQTT UPLOAD上传文件数据为空
#define STATE_MQTT_UPLOAD_MQTT_SYSDEP_IS_NULL (-0x2105) |
MQTT portfile是空的
#define STATE_MQTT_UPLOAD_PARSE_INIT_FAILED (-0x2106) |
MQTT UPLOAD 解析服务端初始化应答的Json数据失败
#define STATE_MQTT_UPLOAD_PARSE_UPLOAD_REPLY_FAILED (-0x2107) |
MQTT UPLOAD 解析服务端文件数据上传应答的Json数据失败
#define STATE_MQTT_UPLOAD_PARSE_CANCEL_FAILED (-0x2108) |
MQTT UPLOAD 解析服务端取消应答的Json数据失败
#define STATE_MQTT_UPLOAD_PARSE_JSON_FAILED (-0x2109) |
MQTT UPLOAD 解析服务端应答的Json数据失败
#define STATE_MQTT_UPLOAD_RECV_FILE_INFO_ERROR (-0x210A) |
MQTT UPLOAD 接收到的服务端应答文件信息不对
#define STATE_MQTT_UPLOAD_RECV_UPLOADID_ERROR (-0x210B) |
MQTT UPLOAD uploadId不匹配或者设备端为初始化请求
#define STATE_MQTT_UPLOAD_MALLOC_FAILED (-0x210C) |
MQTT UPLOAD malloc失败
#define STATE_MQTT_UPLOAD_UPTASK_IS_NULL (-0x210D) |
MQTT UPLOAD 初始化文件upload的句柄时失败
#define STATE_MQTT_UPLOAD_UPLOAD_REPLY_ERROR (-0x210E) |
MQTT UPLOAD 收到服务端应答的文件上传的偏移量和分包大小错误,与上次上传的不相同
#define STATE_MQTT_UPLOAD_HANDLE_DEINIT (-0x210F) |
MQTT UPLOAD 反初始化
#define STATE_MQTT_UPLOAD_FILE_RESTART_FAILED (-0x2110) |
重新启动文件上传失败
#define STATE_MQTT_UPLOAD_BLOCK_SIZE_ERROR (-0x2111) |
MQTT UPLOAD 配置分包上传的大小错误,不在256~128K范围内,继续保持默认的2K.
#define STATE_MQTT_UPLOAD_READ_DATA_HANDLER_IS_NULL (-0x2112) |
MQTT UPLOAD 请求文件上传,回调函数为空
#define STATE_MQTT_UPLOAD_HANDLE_INIT (-0x2113) |
MQTT UPLOAD 初始化
#define STATE_MQTT_UPLOAD_PROCESS_REPLY_ERROR (-0x2114) |
MQTT UPLOAD 处理服务端应答的回调时失败
#define STATE_MQTT_UPLOAD_NONE (-0x2115) |
无任何状态,未开始进行文件上传的处理
#define STATE_MQTT_UPLOAD_REQUEST_INIT (-0x2116) |
请求服务端进行文件上传,等待服务端返回结果
#define STATE_MQTT_UPLOAD_IS_UPLOADING (-0x2117) |
正在执行文件上传任务
#define STATE_MQTT_UPLOAD_REQUEST_CANCEL (-0x2118) |
通知服务端取消文件上传。
#define STATE_MQTT_UPLOAD_CANCEL_SUCCESS (-0x2119) |
文件上传,取消上传任务成功,取消成功后会销毁对应的upload task释放内存资源
#define STATE_MQTT_UPLOAD_CANCEL_FAILED (-0x2120) |
文件上传,取消上传任务失败
#define STATE_MQTT_UPLOAD_FAILED (-0x2121) |
文件上传失败
#define STATE_MQTT_UPLOAD_FAILED_TIMEOUT (-0x2122) |
文件上传超时失败
#define STATE_MQTT_UPLOAD_FAILED_MESSAGE_LIGMIT (-0x2123) |
文件上传过程中,消息限流可以重新调用aiot_mqtt_upload_open_stream 使用AIOT_MQTT_UPLOAD_FILE_MODE_APPEND
#define STATE_MQTT_UPLOAD_FAILED_WHOLE_CHECK (-0x2124) |
文件完整性校验失败
#define STATE_MQTT_UPLOAD_FINISHED (-0x2125) |
已经完成文件上传的任务,完成文件上传后会销毁对应的upload task释放内存资源
#define STATE_MQTT_UPLOAD_NO_UPLOAD_TASK (-0x2126) |
没有文件上传任务,无法执行取消操作
#define STATE_MQTT_UPLOAD_OPEN_INIT_FAILED (-0x2127) |
请求初始化失败,请求参数错误或重复请求
#define AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE "overwrite" |
同名的文件的处理策略 overwrite: 覆盖模式,服务端删除之前的同名文件,原有文件无法找回
#define AIOT_MQTT_UPLOAD_FILE_MODE_APPEND "append" |
同名的文件的处理策略 append:文件追加模式 有同名文件未完成上传:在服务端文件未完成上传的情况下,云端返回当前已上传文件的信息,以便设备端继续上传后续的文件内 容,未完成的文件云端保留24H,超过24小时后删除未完成的文件,下次请求时重新建立 有同名已完成上传:返回错误码 UPLOAD_FILE_FAILED_SAME_FILE ,请求上传失败 无同名文件:服务端新建文件信息
#define AIOT_MQTT_UPLOAD_FILE_MODE_FAIL "reject" |
同名的文件的处理策略 reject: 拒绝模式,服务端返回文件已经存在不能再次上传的错误码 UPLOAD_FILE_FAILED_SAME_FILE
#define MQTT_UPLOAD_DEFAULT_FILENAME_LEN (128) |
MQTT上传文件名的最大长度
typedef int32_t(* aiot_mqtt_upload_read_handler_t) (const aiot_mqtt_upload_recv_t *packet, uint8_t *data, uint32_t size, void *userdata) |
回调函数读取用户的本地文件或内存数据不能在回调函数中执行 aiot_mqtt_upload_open_stream 和 aiot_mqtt_upload_cancel_stream 多个文件同时请求上传时,可以使用不同的回调函数,也可以使用同一个回调函数用户根据file_name区分对应的文件或内存区
[in] | packet | 服务端的应答报文,包含应答的状态和错误信息,更多信息参考 aiot_mqtt_upload_recv_t |
[in] | data | 指向用于接收用户数据的缓冲块的指针 |
[in] | size | 数据缓冲区大小, 此大小在发送过程中会变化 |
[in] | userdata | 指向用户上下文的指针 |
用户实际拷贝到buf中的数据长度 |
请求文件上传和文件传输过程中的服务端返回的文件信息
aiot_mqtt_upload_setopt 接口的option参数可选值.
下文每个选项中的数据类型, 指的是aiot_mqtt_upload_setopt 中, data参数的数据类型
void* aiot_mqtt_upload_init | ( | void | ) |
创建MQTT UPLOAD会话实例, 并以默认值配置会话参数
非NULL,返回mqtt_upload_handle_t实例的句柄 | |
NULL | 初始化失败, 一般是内存分配失败导致 |
int32_t aiot_mqtt_upload_setopt | ( | void * | handle, |
aiot_mqtt_upload_option_t | option, | ||
void * | data | ||
) |
配置MQTT UPLOAD会话
[in] | handle | MQTT UPLOAD会话句柄 |
[in] | option | 配置选项, 更多信息请参考 aiot_mqtt_upload_option_t |
[in] | data | 配置选项数据, 更多信息请参考 aiot_mqtt_upload_option_t |
STATE_SUCCESS | 参数配置成功 |
STATE_USER_INPUT_NULL_POINTER | 入参handle或data为NULL |
STATE_USER_INPUT_OUT_RANGE | 入参optioin的枚举值>=AIOT_DMOPT_MAX |
others | 参考 aiot_state_api.h |
int32_t aiot_mqtt_upload_deinit | ( | void ** | handle | ) |
结束MQTT UPLOAD会话, 销毁实例并回收资源
[in] | handle | 指向MQTT UPLOAD会话句柄的指针 |
<STATE_SUCCESS | 执行失败 |
>=STATE_SUCCESS | 执行成功 |
int32_t aiot_mqtt_upload_open_stream | ( | void * | handle, |
char * | file_name, | ||
uint32_t | file_size, | ||
const char * | mode, | ||
void * | digest, | ||
aiot_mqtt_upload_read_handler_t | read_data_handler, | ||
void * | userdata | ||
) |
向MQTT UPLOAD 服务请求发送文件
[in] | handle | MQTT UPLOAD会话句柄 |
[in] | file_name | 需要在服务端创建的文件名 |
[in] | file_size | 需要上传的文件大小 |
[in] | mode | 同名的文件的处理策略, 更多信息请参考 AIOT_MQTT_UPLOAD_FILE_MODE_OVERWRITE AIOT_MQTT_UPLOAD_FILE_MODE_APPEND AIOT_MQTT_UPLOAD_FILE_MODE_FAIL |
[in] | digest | 文件完整的CRC64,不需要完整性校验则为NULL |
[in] | read_data_handler | 读取用户文件数据的回调函数, 更多信息请参考 aiot_mqtt_upload_read_handler_t |
[in] | userdata | 用户上下文 |
<STATE_SUCCESS | 请求发送失败 |
>=STATE_SUCCESS | 请求发送成功 |
others | 参考aiot_state_api.h 或STATE_MQTT_UPLOAD_BASE 中对应的错误码说明 |
int32_t aiot_mqtt_upload_cancel_stream | ( | void * | handle, |
char * | file_name | ||
) |
向mqtt_upload服务器请求关闭MQTT通道数据上传命令
[in] | handle | MQTT UPLOAD会话句柄 |
[in] | file_name | 需要取消继续上传的文件名 |
<STATE_SUCCESS | 请求发送失败 |
>=STATE_SUCCESS | 请求发送成功 |
others | 参考aiot_state_api.h 或STATE_MQTT_UPLOAD_BASE 中对应的错误码说明 |
aiot_mqtt_upload_result_t aiot_mqtt_upload_process | ( | void * | handle | ) |
MQTT Upload 处理函数,处理超时和重发逻辑,返回对应文件的执行的状态
[in] | handle | MQTT UPLOAD 会话句柄 |
STATE_MQTT_UPLOAD_NONE | 无任何状态,未开始进行文件上传的处理 |
STATE_MQTT_UPLOAD_REQUEST_INIT | 请求服务端进行文件上传,等待服务端返回结果 |
STATE_MQTT_UPLOAD_IS_UPLOADING | 正在执行文件上传任务 |
STATE_MQTT_UPLOAD_REQUEST_CANCEL | 通知服务端取消文件上传 |
STATE_MQTT_UPLOAD_CANCEL_SUCCESS | 文件上传,取消上传任务成功,取消成功后会销毁对应的upload task释放内存资源 |
STATE_MQTT_UPLOAD_CANCEL_FAILED | 文件上传,取消上传任务失败 |
STATE_MQTT_UPLOAD_FAILED | 文件上传失败 |
STATE_MQTT_UPLOAD_FAILED_TIMEOUT | 文件上传超时失败 |
STATE_MQTT_UPLOAD_FAILED_WHOLE_CHECK | 文件完整性校验失败 |
STATE_MQTT_UPLOAD_FINISHED | 已经完成文件上传的任务,完成文件上传后会销毁对应的upload task释放内存资源 |