5.Agent Tiny

    以彩灯应用举例,Agent Tiny工作原理如下:

    使用场景

    开发者只需实现平台抽象层接口,即可对接OceanConncet平台。

    功能

    Agent Tiny互联互通中间件为用户提供以下几类接口:

    开发流程

    Agent Tiny典型场景的开发流程:

    1. 根据Agent Tiny提供的头文件说明,实现atiny_cmd_ioctl接口。该接口有三个参数,参数cmd为命令类型,参数arg的内存空间由Agent Tiny分配,其内容填充视cmd而异,如读数据相关命令,由device侧填充,Agent Tiny使用,如写数据命令,则由agent Tiny填充,device侧使用。参数len指arg所指向的内存空间长度,device侧填充或读取时,务必防止溢出。

    2. 根据Agent Tiny提供的头文件说明,实现atiny_event_notify接口。该接口有三个参数,参数stat为事件类型,参数arg是 Agent Tiny根据事件类型,传递给device侧的具体的事件信息,len为arg长度,device侧使用时务分防止溢出。

    3. 调用atiny_init初始化Agent Tiny,获取对应的Agent Tiny句柄,开发者应处理该接口返回值,返回错误时,句柄无效。

    4. 创建一个新任务,栈大小建议不小于4K,调用atiny_bind,启动Agent Tiny。atiny_bind调用成功后不再返回,atiny_bind内部实现了Agent Tiny的主体任务。

    互斥锁错误码

    Agent Tiny对外接口和依赖接口,可能存在的错误,统一用以下错误码。

    序号 定义 实际数值 描述 参考解决方案
    1 ATINY_OK 0 正常返回码
    2 ATINY_ARG_INVALID -1 非法参数 确保入参合法
    3 ATINY_BUF_OVERFLOW -2 缓冲区溢出 确保缓冲区充足
    4 ATINY_MSG_CONGEST -3 消息拥塞 暂缓数据上报
    5 ATINY_MALLOC_FAILED -4 内存申请失败 检查内存是否有泄漏
    6 ATINY_RESOURCE_NOT_FOUND -5 数据上报类型非法 检查数据类型是否正确
    7 ATINY_RESOURCE_NOT_ENOUGH -6 系统资源不足 检查系统资源,比如信号量,套接字个数等,是否配置过少,或是否有泄漏
    8 ATINY_CLIENT_UNREGISTERED -7 AgentTiny注册失败 检查psk,服务器信息等是否正确
    9 ATINY_SOCKET_CREATE_FAILED -8 网络套接字创建失败 检查网络配置和参数是否正确

    平台差异性

    无。

    • atiny_cmd_ioctl和atiny_event_notify禁止调用atiny_deinit,atiny_data_report,atiny_init,atiny_bind四个Agent Tiny对外接口,否则可能产生死锁,或其他异常。

    • 调用atiny_deinit之前务必确认已调用atiny_bin,否则atiny_deinit将一直阻塞,调用完atiny_deinit后,对应的Agent Tiny句柄将失效,禁止再使用。

    • 承载atiny_bind的任务栈大小建议不小于4K,任务优先级视系统情况而定,太低可能会导致接收丢包,发送延迟等现象。

    实例描述

    本实例实现如下流程:

    1. 实现atiny_cmd_ioctl和atiny_event_notify。

    2. 调用atiny_init初始化AgentTiny。

    3. 调用atiny_bind启动AgentTiny。

    编程示例

    前提条件:

    在工程配置中,WITH_DTLS编译选项打开。

    代码实现如下:

    结果验证

    1. 登录OceanConncet测试平台:

    请在OceanConnect平台上提前注册账号。