本文介绍使用C Link SDK配置HTTP2协议的设备接入物联网平台时,需调用的API。
IOT_HTTP2_Connect
接口原型
void *IOT_HTTP2_Connect(device_conn_info_t *conn_info, http2_stream_cb_t *user_cb)
接口说明
使用conn_info中指定的参数向IoT平台建立HTTP2连接,该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
conn_info
device_conn_info_t *
输入
建连参数。
user_cb
http2_stream_cb_t *
输入
用户注册事件的回调函数。
参数附加说明
typedef struct { char *product_key; char *device_name; char *device_secret; char *url; int port; } device_conn_info_t;
参数
说明
参数
说明
product_key
设备鉴权信息,产品key值。
device_name
设备鉴权信息,设备名。
device_secret
设备鉴权信息,设备密钥。
url
云端服务器地址。
port
云端服务器端口。
typedef struct { on_stream_header_callback on_stream_header_cb; on_stream_chunk_recv_callback on_stream_chunk_recv_cb; on_stream_close_callback on_stream_close_cb; on_stream_frame_send_callback on_stream_frame_send_cb; on_stream_frame_recv_callback on_stream_frame_recv_cb; on_reconnect_callback on_reconnect_cb; on_disconnect_callback on_disconnect_cb; } http2_stream_cb_t;
参数
说明
参数
说明
on_stream_header_cb
收到下行Header回调函数。
on_stream_chunk_recv_cb
收到下行数据回调函数。
on_stream_close_cb
流关闭回调函数。
on_stream_frame_send_cb
帧发送完成回调函数。
on_stream_frame_recv_cb
帧接收完成回调函数。
on_reconnect_cb
重新连接回调函数。
on_disconnect_cb
断开连接回调函数。
返回值说明
值
说明
值
说明
非NULL
成功
NULL
失败
IOT_HTTP2_Stream_Open
接口原型
int IOT_HTTP2_Stream_Open(void *handle, stream_data_info_t *info, header_ext_info_t *header)
接口说明
基于handle指向连接及输入参数打开一个流操作通道,成功后用户可基于此通道进行流上传或下载操作。该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄。
info
stream_data_info_t *
输入/输出
流操作参数。
header
header_ext_info_t *
输入
用户额外定制的头文件,可以为NULL。
参数附加说明
typedef struct { char *stream; uint32_t stream_len; uint32_t send_len; uint32_t packet_len; const char *identify; int h2_stream_id; char *channel_id; void *user_data; } stream_data_info_t;
参数
说明
参数
说明
stream
输入参数,当前流数据指针,需要指向当前需要发送的数据段,对上行发送有效。
stream_len
输入参数,整个流数据长度,对上行发送有效。
send_len
输出参数,已发送的长度,对上行发送有效。
packet_len
输入参数,单次发送长度,对上行发送有效。
identify
输入参数,服务端流标识。
h2_stream_id
输出参数,本次发送对应的
http2 stream_id
。channel_id
输出参数,Open返回的业务端通道ID。
user_data
输入参数,带给回调函数的用户数据,可用于区分回调归属。
typedef struct { http2_header *nva; int num; } header_ext_info_t;
参数
说明
参数
说明
nva
用户Header集。
num
用户Header集的个数。
返回值说明
值
说明
值
说明
0
成功
非0
失败
IOT_HTTP2_Stream_Send
接口原型
int IOT_HTTP2_Stream_Send(void *handle, stream_data_info_t *info, header_ext_info_t *header);
接口说明
向指定Channed ID发送数据,一个完整的流数据一般为一个header帧加多个data帧。
该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄。
info
stream_data_info_t *
输入/输出
流操作参数。
header
header_ext_info_t *
输入
用户额外定制的头文件,可以为NULL。
参数附加说明
typedef struct { char *stream; uint32_t stream_len; uint32_t send_len; uint32_t packet_len; const char *identify; int h2_stream_id; char *channel_id; } stream_data_info_t;
参数
说明
参数
说明
stream
输入参数,当前流数据指针,需要指向当前需要发送的数据段,对上行发送有效。
stream_len
输入参数,整个流数据长度,对上行发送有效。
send_len
输出参数,已发送的长度,对上行发送有效。
packet_len
输入参数,单次发送长度,对上行发送有效。
identify
输入参数,服务端流标识。
h2_stream_id
输出参数,本次发送对应的
http2 stream_id
。channel_id
输出参数,Open返回的业务端通道ID。
typedef struct { http2_header *nva; int num; } header_ext_info_t;
参数
说明
参数
说明
nva
用户Header集。
num
用户Header集的个数。
返回值说明
值
说明
值
说明
0
成功
非0
失败
IOT_HTTP2_Stream_Query
接口原型
int IOT_HTTP2_Stream_Query(void *handle, stream_data_info_t *info, header_ext_info_t *header)
接口说明
向指定Channed ID请求下行数据,类似数据订阅接口,下行数据通过
on_stream_chunk_recv_cb
通知用户。该接口在SDK基础版或高级版中都需要用户显式调用。参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄。
info
stream_data_info_t *
输入/输出
流操作参数。
header
header_ext_info_t *
输入
用户额外定制的头文件,可以为NULL。
参数附加说明
typedef struct { char *stream; uint32_t stream_len; uint32_t send_len; uint32_t packet_len; const char *identify; int h2_stream_id; char *channel_id; } stream_data_info_t;
参数
说明
参数
说明
stream
输入参数,当前流数据指针,对本函数无效。
stream_len
输入参数,整个流数据长度,对本函数无效。
send_len
输出参数,已发送的长度,对本函数无效。
packet_len
输入参数,单次发送长度,对本函数无效。
identify
输入参数,服务端流标识。
h2_stream_id
输出参数,本次发送分配的
http2 stream_id
。channel_id
输入参数,业务端通道ID。
typedef struct { http2_header *nva; int num; } header_ext_info_t;
参数
说明
参数
说明
nva
用户Header集。
num
用户Header集的个数。
返回值说明
值
说明
值
说明
0
成功
非0
失败
IOT_HTTP2_Stream_Close
接口原型
int IOT_HTTP2_Stream_Close(void *handle, stream_data_info_t *info)
接口说明
关闭业务流。该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄。
info
stream_data_info_t *
输入/输出
流操作参数。
参数附加说明
typedef struct { char *stream; uint32_t stream_len; uint32_t send_len; uint32_t packet_len; const char *identify; int h2_stream_id; char *channel_id; } stream_data_info_t;
参数
说明
参数
说明
stream
输入参数,当前流数据指针,对本函数无效。
stream_len
输入参数,整个流数据长度,对本函数无效。
send_len
输出参数,已发送的长度,对本函数无效。
packet_len
输入参数,单次发送长度,对本函数无效。
identify
输入参数,服务端流标识。
h2_stream_id
输出参数,本次发送对应的
http2 stream_id
,对本函数无效。channel_id
输入参数,业务端通道ID。
typedef struct { http2_header *nva; int num; } header_ext_info_t;
参数
说明
参数
说明
nva
用户Header集。
num
用户Header集的个数。
返回值说明
值
说明
值
说明
0
成功
非0
失败
IOT_HTTP2_Stream_UploadFile
接口原型
int IOT_HTTP2_Stream_UploadFile(void *handle, const char *filename, const char *identify, upload_file_result_cb_t cb, http2_file_upload_opt_t *opt, void *user_data);
接口说明
向云端指定流通道异步发送文件,需要使能FEATURE_FS_ENABLE宏才能使用此功能。
该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄,调用
IOT_HTTP2_Connect
接口时返回。filename
const char *
输入
文件名,文件名中只能包含
[0-9][a-z][A-Z]
以及_.
这些限定字符。identify
const char *
输入
服务端流通道标识,固定使用字符串
"c/iot/sys/thing/file/upload"
。cb
upload_file_result_cb
输入
文件发送状态的回调函数。
opt
http2_file_upload_opt_t *
输入
配置选项结构体,目前只提供了文件覆盖选项
UPLOAD_FILE_OPT_BIT_OVERWRITE
。user_data
void *
输入
带给回调函数的用户数据。
参数附加说明
回调函数原型
typedef void (* upload_file_result_cb)(const char *path, int result, void *user_data);
Result取值范围
typedef enum { UPLOAD_FILE_NOT_EXIST = -9, UPLOAD_FILE_READ_FAILED = -8, UPLOAD_STREAM_OPEN_FAILED = -7, UPLOAD_STREAM_SEND_FAILED = -6, UPLOAD_MALLOC_FAILED = -5, UPLOAD_NULL_POINT = -2, UPLOAD_ERROR_COMMON = -1, UPLOAD_SUCCESS = 0, } http2_file_upload_result_t;
配置选项结构体
typedef struct { uint32_t opt_bit_map; } http2_file_upload_opt_t;
配置选项位定义
/* bit define of file override option */ #define UPLOAD_FILE_OPT_BIT_OVERWRITE (0x00000001)
返回值说明
值
说明
值
说明
0
成功
非0
失败
IOT_HTTP2_Disconnect
接口原型
int IOT_HTTP2_Disconnect(void *handle)
接口说明
断开HTTP2连接。该接口在SDK基础版或高级版中都需要用户显式调用。
参数说明
参数
数据类型
方向
说明
参数
数据类型
方向
说明
handle
void *
输入
连接句柄。
返回值说明
值
说明
值
说明
0
成功
非0
失败
- 本页导读 (1)
- IOT_HTTP2_Connect
- IOT_HTTP2_Stream_Open
- IOT_HTTP2_Stream_Send
- IOT_HTTP2_Stream_Query
- IOT_HTTP2_Stream_Close
- IOT_HTTP2_Stream_UploadFile
- IOT_HTTP2_Disconnect