Airlink:高可靠性设备间通信协议实现

针对复杂网络环境下的通信稳定性挑战,Airlink 采用重传机制、断线重连与数据完整性校验等技术,确保关键数据在设备间的可靠传输。其经过大规模实测验证,在高丢包率与高干扰场景下仍能保持通信连续性,适用于关键任务系统。

一、概述

Airlink 是 luatOS 提供的一种设备间通讯协议,主要用于设备内部或设备间的数据通信,支持 SPI 和 UART 两种通信方式。主要应用于 Air8000 内部以及 Air6101/Air8101 和 Air780EXX 之间的通信;

通过 airlink 交互数据:通过 spi 或 uart 方式连接两台设备;

image

通过 airlink 实现多网融合功能:通过 spi 或 uart 方式连接两台设备;
image

二、核心示例

1、核心示例是指:使用本库文件提供的核心 API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;
image

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;

如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;

3.1 airlink.MODE_SPI_SLAVE

image

3.2 airlink.MODE_SPI_MASTER

image

3.3 airlink.MODE_UART

image

3.4 airlink.CONF_SPI_ID

image

3.5 airlink.CONF_SPI_CS

image

3.6 airlink.CONF_SPI_RDY

image

3.7 airlink.CONF_SPI_IRQ

image

3.8 airlink.CONF_SPI_SPEED

image

3.9 airlink.CONF_IRQ_TIMEOUT

image

3.10 airlink.CONF_UART_ID

image

四、函数详解

4.1 airlink.init()

功能

初始化 Airlink;

参数

无参数

返回值

无返回值

示例
image

4.2 airlink.start(mode)

功能

启动 Airlink;

参数

mode
image

返回值

无返回值

示例
image

4.3 airlink.config(key, value)

功能

配置 Airlink 参数;

参数

key
image

value
image

返回值

local res = airlink.config(key, value)

log.info("airlink.config",res)

res
image

示例
image

4.4 airlink.ready()

功能

判断 AirLink 是否就绪, 指底层通信是否通畅, 最近一次通信是否超时(默认 2s);

本函数仅用于判断 AirLink 是否就绪, 不能用于判断是否收到对端设备通过 sdata 接口发送的数据;

参数

无参数

返回值

local res = airlink.ready()

log.info("airlink.ready",res)

res
image

示例
image

4.5 airlink.sdata(data)

功能

发送自定义数据;

通过订阅 airlink 的 SDATA 事件,打印接收到的信息。

示例代码如下:

local function airlink_sdata(data)
image

end

sys.subscribe("AIRLINK_SDATA", airlink_sdata)

参数

data
image

返回值

local res = airlink.sdata(data)

log.info("airlink.sdata",res)

res
image

示例
image

4.6 airlink.statistics()

功能

打印统计信息;
image


image

参数

无参数

返回值

无返回值

示例
image

4.7 airlink.slave_reboot()

功能

重启从机;

参数

无参数

返回值

无返回值

示例
image

4.8 airlink.debug(mode)

功能

调试开关;

打开后会增加相关日志的打印,如:"RDY 引脚中断模式已启用";

参数

mode
image

返回值

无返回值

示例
image

4.9 airlink.pause(mode)

功能

暂停或恢复 airlink 通信;

暂停后主机和从机停止通信,如:Air8000 无法在获取 gpio>100 的引脚的状态。

恢复后通讯正常;

参数

mode
image

返回值

无返回值

示例
image

4.10 airlink.power(enable)

功能

关闭 Air8000 内部的 WiFi 芯片供电, 通常用于省电;

当前仅对 Air8000 带 wifi 功能的模组有效

关闭之后, 如需使用 wifi 功能, 需要重新执行 wifi.init 等操作

注意, wifi 供电关掉后, >=128 的 GPIO 也会变成输入高阻态

airlink.power(false)

开启 wifi 芯片,恢复 airlink 通信

airlink.power(true)

参数

enable
image

返回值

无返回值

示例
image

4.11 airlink.sver()

功能

获取从机版本号,只有 Air780EXX 和 Air8000 主机模式可以获取从机版本号;

参数

无参数

返回值

local num = airlink.sver()

log.info( "从机固件版本号",num)

res
image

示例
image

五、模组支持说明

支持 LuatOS 开发的以下几种模组或者模组组合:

1、Air8000;

2、Air6101+Air780EXX;

3、Air8101+Air780EXX;

今天的内容就分享到这里了~

posted @ 2026-02-04 19:32  合宙LuatOS  阅读(2)  评论(0)    收藏  举报