Link Kit C-SDK  5.0.0
结构体 | 宏定义 | 类型定义 | 枚举 | 函数
aiot_gateway_api.h 文件参考

设备的网关模块头文件,网关设备使用该模块接口。提供:代理子设备连接,代理子设备消息收发、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 配置 更多...
 

枚举

enum  aiot_gateway_msg_type_t {
  AIOT_GWRECV_CONNECT_REPLY, AIOT_GWRECV_DISCONNECT_REPLY, AIOT_GWRECV_ADD_TOPO_REPLY, AIOT_GWRECV_DELETE_TOPO_REPLY,
  AIOT_GWRECV_TOPO_CHANGE_NOTICE
}
 网关设备接收的到消息类型 更多...
 

函数

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关系管理,子设备管理、批量消息发送等功能

日期
2022-01-20

宏定义说明

#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 配置

枚举类型说明

网关设备接收的到消息类型

枚举值
AIOT_GWRECV_CONNECT_REPLY 

批量建连消息的回复报文

AIOT_GWRECV_DISCONNECT_REPLY 

批量断连消息的回复报文

AIOT_GWRECV_ADD_TOPO_REPLY 

批量添加topo消息的回复报文

AIOT_GWRECV_DELETE_TOPO_REPLY 

批量删除topo消息的回复报文

AIOT_GWRECV_TOPO_CHANGE_NOTICE 

topo变更云端的通知消息

函数说明

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执行回调函数返回的上下文指针
返回
int32_t
返回值
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_topo1: 自动添加topo
0: 不自动添加topo
返回
int32_t
返回值
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
返回
int32_t
返回值
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, 表示关闭批量发布功能
返回
int32_t
返回值
STATE_SUCCESS参数配置成功
STATE_USER_INPUT_NULL_POINTER入参为空
others参考aiot_state_api.h
int32_t aiot_gateway_flush_msg ( void *  gateway_device)

清空网关缓存消息,将缓存消息发送

网关模块具有批量发送消息的功能,消息缓存在模块中,调用该接口可以立即将消息批量发布

参数
[in]gateway_device设备句柄
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
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子设备个数
返回
int32_t
返回值
>=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子设备个数
返回
int32_t
返回值
>=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子设备个数
返回
int32_t
返回值
>=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子设备个数
返回
int32_t
返回值
>=STATE_SUCCESS 大于0时,表示消息发送成功,返回值为消息ID,回复消息类型 AIOT_GWRECV_DELETE_TOPO_REPLY
STATE_USER_INPUT_NULL_POINTER入参为空
others参考aiot_state_api.h