## 编译 编译依赖:cmake 2.8(依赖的nats库仅支持cmake编译) ``` sudo apt-get install cmake ``` 编译方式:GNU Make ``` make ``` ## 打包方式 将uiot_edge_test改名为main,和依赖的动态链接库(如果有)一起打成zip的压缩包,将压缩包上传到子设备驱动 ``` cd samples cp uiot_edge_test main zip -r abc.zip main ``` ## API参考文档 /** * @brief 子设备驱动初始化 * * @param void: * * @retval : 成功则返回EDGE_OK */ edge_status edge_common_init(void) /** * @brief 初始化一个子设备 * * @param product_sn: 指定产品序列号 * @param device_sn: 指定设备序列号 * @param normal_msg_handle: 消息回调处理接口(void (*edge_normal_msg_handler)(char *topic, char *payload, int payloadLen)). * @param edge_rrpc_msg_handler: RRPC消息回调处理接口(void (*edge_rrpc_msg_handler)(char *topic, char *payload, int payloadLen)). * * @retval : 成功则返回句柄,失败返回NULL */ subdev_client * edge_subdev_construct(const char *product_sn, const char *device_sn, edge_normal_msg_handler normal_msg_handle, edge_rrpc_msg_handler rrpc_msg_handle) /** * @brief 向指定topic发送一条消息,可以发送二进制消息 * * @param topic: topic名称 * @param data: 发送消息内容 * @param dataLen: 发送消息内容长度 * * @retval : 成功则返回EDGE_OK */ edge_status edge_publish(const char *topic, const char *data, int dataLen) /** * @brief 向指定topic发送一条字符串消息 * * @param topic: topic名称 * @param str: 发送字符串内容 * * @retval : 成功则返回EDGE_OK */ edge_status edge_publishString(const char *topic, const char *str) /** * @brief 动态注册一个子设备 * * @param pst_subdev_client: 子设备句柄 * @param product_secret: 指定的产品密钥. * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ edge_status edge_subdev_dynamic_auth(subdev_client *pst_subdev_client, const char *product_secret, uint32_t time_out_ms) /** * @brief 子设备登录(同步接口,等待响应消息) * * @param pst_subdev_client: 子设备句柄 * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ edge_status edge_subdev_login_sync(subdev_client *pst_subdev_client, uint32_t time_out_ms) /** * @brief 子设备退出登录(同步接口,等待响应消息) * * @param pst_subdev_client: 子设备句柄 * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ edge_status edge_subdev_logout_sync(subdev_client *pst_subdev_client, uint32_t time_out_ms) /** * @brief 子设备登录(异步接口,不等待响应消息) * * @param pst_subdev_client: 子设备句柄 * * @retval : 成功则返回EDGE_OK */ edge_status edge_subdev_login_async(subdev_client *pst_subdev_client) /** * @brief 子设备退出登录(异步接口,不等待响应消息) * * @param pst_subdev_client: 子设备句柄 * * @retval : 成功则返回EDGE_OK */ edge_status edge_subdev_logout_async(subdev_client *pst_subdev_client) /** * @brief 获取驱动信息 * * @param void: * * @retval : 成功则返回驱动信息 */ char * edge_get_driver_info(void) /** * @brief 获取设备列表 * * @param void: * * @retval : 成功则返回设备列表 */ char * edge_get_device_list(void) /** * @brief 设置拓扑变化回调接口(控制台增加删减拓扑) * * @param topo_notify_handle: 拓扑变化回调接口(void (*edge_topo_notify_handler)(topo_operation opera, char *payload)). * * @retval : void */ void edge_set_topo_notify_handle(edge_topo_notify_handler topo_notify_handle) /** * @brief 设置子设备状态变化回调接口(控制台启动禁用设备) * * @param subdev_status_handle: 子设备状态变化回调接口(void (*edge_subdev_status_handler)(subdev_able opera,char *payload)). * * @retval : void */ void edge_set_subdev_status_handle(edge_subdev_status_handler subdev_status_handle) /** * @brief 设置nats消息回调接口 * * @param nats_msg_handle: nats 消息回调接口(void (*edge_nats_msg_handler)(char *topic, char *payload, int payloadLen)). * * @retval : void */ void edge_set_nats_msg_handle(edge_nats_msg_handler nats_msg_handle) /** * @brief 获取网关在线状态 * * @param void * * @retval : bool true:在线 flase离线 */ bool edge_get_online_status(void) /** * @brief 获取子设备拓扑 * * @param pst_subdev_client: 子设备句柄 * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ char *edge_get_topo(uint32_t time_out_ms) /** * @brief 增加子设备拓扑 * * @param pst_subdev_client: 子设备句柄 * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ edge_status edge_add_topo(subdev_client *pst_subdev_client, uint32_t time_out_ms) /** * @brief 删除子设备拓扑 * * @param pst_subdev_client: 子设备句柄 * @param time_out_ms: 超时时间,单位ms * * @retval : 成功则返回EDGE_OK */ edge_status edge_delete_topo(subdev_client *pst_subdev_client, uint32_t time_out_ms) /** * @brief 记录日志 * * @param level: 日志等级分为:DEBUG、INFO、WARNING、ERROR、CRITICAL * @param format: 日志记录格式 * * @retval : 成功则返回EDGE_OK */ void log_write(log_level level, const char *format,...) /** * @brief 向指定 nats subject,可以发送二进制消息 * * @param subject: subject名称 * @param data: 发送消息内容 * @param dataLen: 发送消息内容长度 * * @retval : 成功则返回EDGE_OK */ edge_status nats_publish(const char *subject, const char *data, int dataLen) /** * @brief 订阅nats subject * * @param subject: nats subject名称 * * @retval : 成功则返回EDGE_OK */ edge_status nats_subscribe(const char *subject)