Link Kit C-SDK
5.0.0
|
设备的网关模块头文件,网关设备使用该模块接口。提供:代理子设备连接,代理子设备消息收发、topo关系管理,子设备管理、批量消息发送等功能 更多...
#include <stdint.h>
结构体 | |
struct | aiot_subdev_meta_info_t |
子设备的元信息 更多... | |
struct | aiot_batch_pub_policy_t |
消息批量发布的规则结构体,定义好规则可通过 aiot_gateway_set_batch_pub_policy 配置 更多... | |
struct | subdev_recv_t |
接收消息中表示设备信息的数据结构 更多... | |
struct | aiot_gateway_msg_reply_t |
回复消息的关键字段 更多... | |
struct | aiot_gateway_msg_topo_change_t |
topo变更的状态 更多... | |
struct | aiot_gateway_msg_t |
网关接收到的消息的完整数据结构 更多... | |
宏定义 | |
#define | STATE_GATEWAY_SUBDEV_REPEATED_CONNECT (-0x1301) |
错误码:网关批量代理子设备建连,子设备重复建连报 更多... | |
#define | STATE_GATEWAY_SYNC_RECV_TIMEOUT (-0x1302) |
错误码:网关批量代理子设备建连/断连,添加/删除topo等同步操作时,接收云端返回消息超时 更多... | |
#define | STATE_GATEWAY_SYNC_RECV_ERROR (-0x1303) |
错误码:网关批量代理子设备建连/断连,添加/删除topo等同步操作时,接收云端返回错误消息 更多... | |
#define | AIOT_PRODUCT_KEY_MAX_LENTH 64 |
产品key的字符串最长长度 更多... | |
#define | AIOT_DEVICE_NAME_MAX_LENTH 64 |
设备名称的字符串最长长度 更多... | |
#define | AIOT_PRODUCT_SECRET_MAX_LENTH 64 |
产品密钥的最长字符串长度 更多... | |
#define | AIOT_DEVICE_SECRET_MAX_LENTH 64 |
设备密钥的字符串最长长度 更多... | |
类型定义 | |
typedef void(* | gateway_msg_callback_t) (void *gateway_device, const aiot_gateway_msg_t *msg, void *userdata) |
设备物模型消息回调函数原型,用户定义回调函数后,可通过 aiot_gateway_set_msg_callback 配置 更多... | |
函数 | |
int32_t | aiot_gateway_set_msg_callback (void *gateway_device, gateway_msg_callback_t msg_callback, void *userdata) |
设置网关消息的回调 更多... | |
int32_t | aiot_gateway_set_auto_topo (void *gateway_device, int32_t auto_topo) |
设置是否在建连的时候自动添加topo 更多... | |
int32_t | aiot_gateway_set_sync_msg_timeout (void *gateway_device, uint32_t timeout_ms) |
设置批量同步接口调用的超时时间 更多... | |
int32_t | aiot_gateway_set_batch_pub_policy (void *gateway_device, aiot_batch_pub_policy_t *policy) |
设置网关批量发布消息规则, 打开/关闭批量发布功能 更多... | |
int32_t | aiot_gateway_flush_msg (void *gateway_device) |
清空网关缓存消息,将缓存消息发送 更多... | |
int32_t | aiot_gateway_batch_connect_subdev (void *gateway_device, void *subdev_table[], int32_t subdev_num) |
网关批量代理子设备建连(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_batch_disconnect_subdev (void *gateway_device, void *subdev_table[], int32_t subdev_num) |
网关批量代理子设备断连(同步接口会阻塞),超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_batch_add_topo (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量增加子设备topo(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_batch_delete_topo (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量删除子设备topo(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_dynamic_secret (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量代理子设备动态注册(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_dynamic_register (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量代理子设备抢注(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout 更多... | |
int32_t | aiot_gateway_batch_connect_subdev_async (void *gateway_device, void *subdev_table[], int32_t subdev_num) |
网关批量代理子设备建连(异步接口不阻塞) 更多... | |
int32_t | aiot_gateway_batch_disconnect_subdev_async (void *gateway_device, void *subdev_table[], int32_t subdev_num) |
网关批量代理子设备断连(异步接口不阻塞) 更多... | |
int32_t | aiot_gateway_batch_add_topo_async (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量增加子设备topo(异步接口不阻塞) 更多... | |
int32_t | aiot_gateway_batch_delete_topo_async (void *gateway_device, aiot_subdev_meta_info_t subdev_table[], int32_t subdev_num) |
网关批量删除子设备topo(异步接口不阻塞) 更多... | |
设备的网关模块头文件,网关设备使用该模块接口。提供:代理子设备连接,代理子设备消息收发、topo关系管理,子设备管理、批量消息发送等功能
#define STATE_GATEWAY_SUBDEV_REPEATED_CONNECT (-0x1301) |
错误码:网关批量代理子设备建连,子设备重复建连报
#define STATE_GATEWAY_SYNC_RECV_TIMEOUT (-0x1302) |
错误码:网关批量代理子设备建连/断连,添加/删除topo等同步操作时,接收云端返回消息超时
#define STATE_GATEWAY_SYNC_RECV_ERROR (-0x1303) |
错误码:网关批量代理子设备建连/断连,添加/删除topo等同步操作时,接收云端返回错误消息
#define AIOT_PRODUCT_KEY_MAX_LENTH 64 |
产品key的字符串最长长度
#define AIOT_DEVICE_NAME_MAX_LENTH 64 |
设备名称的字符串最长长度
#define AIOT_PRODUCT_SECRET_MAX_LENTH 64 |
产品密钥的最长字符串长度
#define AIOT_DEVICE_SECRET_MAX_LENTH 64 |
设备密钥的字符串最长长度
typedef void(* gateway_msg_callback_t) (void *gateway_device, const aiot_gateway_msg_t *msg, void *userdata) |
设备物模型消息回调函数原型,用户定义回调函数后,可通过 aiot_gateway_set_msg_callback 配置
[in] | device | 设备句柄 |
[in] | msg | 接收到的物模型消息, 消息的数据结构 aiot_gateway_msg_t |
[in] | userdata | 用户设置的上下文,可通过 aiot_gateway_set_msg_callback 配置 |
int32_t aiot_gateway_set_msg_callback | ( | void * | gateway_device, |
gateway_msg_callback_t | msg_callback, | ||
void * | userdata | ||
) |
设置网关消息的回调
[in] | gateway_device | 网关设备设备句柄 |
[in] | msg_callback | 回调函数 |
[in] | userdata | 执行回调函数返回的上下文指针 |
STATE_SUCCESS | 参数配置成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_set_auto_topo | ( | void * | gateway_device, |
int32_t | auto_topo | ||
) |
设置是否在建连的时候自动添加topo
[in] | gateway_device | 设备句柄 |
[in] | auto_topo | 1: 自动添加topo 0: 不自动添加topo |
STATE_SUCCESS | 参数配置成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_set_sync_msg_timeout | ( | void * | gateway_device, |
uint32_t | timeout_ms | ||
) |
设置批量同步接口调用的超时时间
批量操作接口列表:
aiot_gateway_batch_connect_subdev
aiot_gateway_batch_disconnect_subdev
aiot_gateway_batch_add_topo
aiot_gateway_batch_delete_topo
aiot_gateway_dynamic_secret
aiot_gateway_dynamic_register
[in] | gateway_device | 设备句柄 |
[in] | timeout_ms | 从调用到失败的超时时间,单位ms, 默认值:10000ms |
STATE_SUCCESS | 参数配置成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_set_batch_pub_policy | ( | void * | gateway_device, |
aiot_batch_pub_policy_t * | policy | ||
) |
设置网关批量发布消息规则, 打开/关闭批量发布功能
网关支持批量发送消息,网关设备/子设备正常发消息,到网关后会缓存。
再通过自动或者手动的方式批量发送到物联网平台。
通过该接口设置完规则后,才能开启批量发布。
手动触发批量发送,手动操作接口 aiot_gateway_flush_msg
[in] | gateway_device | 设备句柄 |
[in] | policy | 非NULL, 打开批量发布功能,批量发布规则 参考aiot_batch_pub_policy_t NULL, 表示关闭批量发布功能 |
STATE_SUCCESS | 参数配置成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_flush_msg | ( | void * | gateway_device | ) |
清空网关缓存消息,将缓存消息发送
网关模块具有批量发送消息的功能,消息缓存在模块中,调用该接口可以立即将消息批量发布
[in] | gateway_device | 设备句柄 |
STATE_SUCCESS | 成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_connect_subdev | ( | void * | gateway_device, |
void * | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备建连(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 代理子设备建连成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_disconnect_subdev | ( | void * | gateway_device, |
void * | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备断连(同步接口会阻塞),超时时间设置 aiot_gateway_set_sync_msg_timeout
子设备在删除前,必须从网关断连,不然会引起内存问题
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 代理子设备断连成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_add_topo | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量增加子设备topo(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备元数据表 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 添加topo成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_delete_topo | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量删除子设备topo(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备元数据表 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 删除子设备topo关系成功 |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_dynamic_secret | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备动态注册(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout
通过该接口获取子设备的密钥,需要先添加子设备与网关的topo关系
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备元数据表(product_key, device_name不能为空) 成功后密钥会保存在subdev_table[].device_secret中 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 获取密钥成功,密钥存储在subdev_table.device_secret |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_dynamic_register | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备抢注(同步接口会阻塞), 超时时间设置 aiot_gateway_set_sync_msg_timeout
当子设备使用多个网关时,更换网关后可通过该接口强制绑定该网关
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备元数据表中(product_key, device_name, product_secret不能为空) 成功后密钥会保存在subdev_table.device_secret中 |
[in] | subdev_num | 子设备个数 |
STATE_SUCCESS | 获取密钥成功,密钥存储在subdev_table.device_secret |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_connect_subdev_async | ( | void * | gateway_device, |
void * | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备建连(异步接口不阻塞)
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
>= | STATE_SUCCESS 大于0时,表示消息发送成功,返回值为消息ID,回复消息类型 AIOT_GWRECV_CONNECT_REPLY |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_disconnect_subdev_async | ( | void * | gateway_device, |
void * | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量代理子设备断连(异步接口不阻塞)
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
>= | STATE_SUCCESS 大于0时,表示消息发送成功,返回值为消息ID,回复消息类型 AIOT_GWRECV_DISCONNECT_REPLY |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_add_topo_async | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量增加子设备topo(异步接口不阻塞)
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
>= | STATE_SUCCESS 大于0时,表示消息发送成功,返回值为消息ID,回复消息类型 AIOT_GWRECV_ADD_TOPO_REPLY |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |
int32_t aiot_gateway_batch_delete_topo_async | ( | void * | gateway_device, |
aiot_subdev_meta_info_t | subdev_table[], | ||
int32_t | subdev_num | ||
) |
网关批量删除子设备topo(异步接口不阻塞)
[in] | gateway_device | 网关设备句柄 |
[in] | subdev_table | 子设备句柄表 |
[in] | subdev_num | 子设备个数 |
>= | STATE_SUCCESS 大于0时,表示消息发送成功,返回值为消息ID,回复消息类型 AIOT_GWRECV_DELETE_TOPO_REPLY |
STATE_USER_INPUT_NULL_POINTER | 入参为空 |
others | 参考aiot_state_api.h |