Contents Menu Expand Light mode Dark mode Auto light/dark mode
LuatOS 文档
(NEW) Go to English site
前往中文站点
Discord
Light Logo Dark Logo

💁 LuatOS 介绍

  • 🏠️ 首页
  • 🕹️ 在线体验LuatOS
  • 🛠 LuatOS工具大全
  • 💬 技术支持

🌠 快速上手

  • 🌙 Lua教程
    • 基础语法
    • LuaTask框架
  • 固件下载

📖 参考手册

  • 🍴 LuatOS-SOC接口文档
    • 适配状态
    • adc - 模数转换
    • airlink - AirLink(设备间通讯协议)
    • airtalk - 设备之间,设备与PC、手机,对讲处理
    • airui - AIRUI图像库 (LVGL 9.4) - 重构版本
    • antbot - 蚂蚁链
    • audio - 多媒体-音频
    • bit64 - 32位系统上对64位数据的基本算术运算和逻辑运算
    • ble - 低功耗蓝牙
    • bluetooth - 蓝牙(总库)
    • camera - 摄像头
    • can - can操作库
    • cc - VoLTE通话功能
    • codec - 多媒体-编解码
    • coremark - 跑分
    • crypto - 加解密和hash函数
    • dac - 数模转换
    • disp - disp库(已废弃)
    • eink - 墨水屏操作库
    • ercoap - 新的Coap协议解析库
    • errDump - 错误上报
    • fastlz - FastLZ压缩
    • fatfs - 读写fatfs格式
    • fdb - kv数据库,掉电不丢数据
    • fft - 快速傅里叶变换(FFT/IFFT),支持 float32 与 q15 定点内核
    • fonts - 字体库
    • fota - 底层固件升级
    • fskv - kv数据库,掉电不丢数据
    • ftp - ftp 客户端 (服务器推荐使用vsftpd,其他暂不做支持)
    • gmssl - 国密算法(SM2/SM3/SM4)
    • gpio - GPIO操作
    • gtfont - 高通字库芯片
    • hmeta - 硬件元数据
    • ht1621 - 液晶屏驱动(HT1621/HT1621B)
    • http - http 客户端
    • httpsrv - http服务端
    • hzfont - HzFont字体库
    • i2c - I2C操作
    • i2s - 数字音频
    • icmp - ICMP协议(PING)
    • iconv - iconv操作
    • io - io操作(扩展)
    • ioqueue - io序列操作
    • iotauth - IoT鉴权库, 用于生成各种云平台的参数
    • iperf - 吞吐量测试
    • ir - 红外遥控
    • json - json生成和解析库
    • keyboard - 键盘矩阵
    • lcd - lcd驱动模块
    • lcdseg - 段式lcd
    • libcoap - coap数据处理
    • libgnss - NMEA数据处理
    • little_flash - flash驱动 软件包(同时支持驱动nor flash和nand flash设备)
    • log - 日志库
    • lora - lora驱动模块
    • lora2 - lora2驱动模块(支持多挂)
    • lvgl - LVGL图像库
    • max30102 - 心率模块(MAX30102)
    • mcu - 封装mcu一些特殊操作
    • miniz - 简易zlib压缩
    • misc - 杂项驱动,各种非常规驱动,芯片独有驱动都放在这里
    • mlx90640 - 红外测温(MLX90640)
    • mobile - 蜂窝网络
    • modbus - modbus主从协议栈协议
    • mqtt - mqtt客户端
    • natp - 网络地址端口转换(开发中)
    • ndk - 在沙盒化的RV32环境中运行MiniRV32IMA镜像
    • nes - nes模拟器
    • netdrv - 网络设备管理
    • nimble - 蓝牙BLE库(nimble版)
    • onewire - 单总线协议驱动
    • os - os操作
    • otp - OTP操作库
    • pack - 打包和解包格式串
    • pin - 管脚命名映射
    • pins - 管脚外设复用
    • pinyin - 拼音输入法核心库
    • pm - 电源管理
    • protobuf - ProtoBuffs编解码
    • pwm - PWM模块
    • repl - “读取-求值-输出” 循环
    • rsa - RSA加密解密
    • rtc - 实时时钟
    • rtmp - RTMP 直播推流
    • rtos - RTOS底层操作库
    • rtsp - RTSP 直播推流
    • sdio - sdio
    • sensor - 传感器操作库
    • sfd - SPI FLASH操作库
    • sfud - flash驱动 软件包(支持驱动nor flash设备)
    • sms - 短信
    • socket - 网络接口
    • softkb - 软件键盘矩阵
    • spi - spi操作库
    • sqlite3 - sqlite3数据库操作
    • statem - SM状态机
    • string - 字符串操作函数
    • sys - sys库
    • timer - 操作底层定时器
    • touchkey - 触摸按键
    • tp - 触摸库
    • u8g2 - u8g2图形处理库
    • uart - 串口操作库
    • ulwip - 用户空间的lwip集成(开发中)
    • usb - usb操作库
    • usbapp - USB功能操作
    • videoplayer - 视频播放库
    • voip - voip语音通话
    • w5500 - w5500以太网驱动
    • wdt - watchdog操作库
    • websocket - websocket客户端
    • wlan - wifi操作
    • wlanraw - WLAN数据RAW传输
    • ws2812 - 幻彩灯带RGB控制器(WS2812系列)
    • xxtea - xxtea加密解密
    • yhm27xx - yhm27xx充电芯片
    • ymodem - ymodem协议
    • zbuff - c内存数据操作库
  • 🌕 原生API手册
  • 🥢 扩展库接口文档
    • air153C_wtd - 添加软件看门狗功能,防止死机
    • airlbs - airlbs 定位服务(收费服务,需自行联系销售申请)
    • dhcam - 大华摄像头功能模块,为exremotecam主模块提供大华摄像头的具体实现
    • dhcpsrv - DHCP服务器端
    • dnsproxy - DNS代理转发
    • exgnss - exgnss扩展库
    • exlcd - LCD显示拓展库
    • exmodbus - exmodbus 控制Modbus RTU/ASCII/TCP主站/从站通信
    • exmtn - 运维日志扩展库,负责日志的持久化存储
    • exnetif - exnetif 控制网络优先级(以太网->WIFI->4G)根据优先级选择上网的网卡。简化开启多网融合的操作,4G作为数据出口给WIFI,以太网设备上网,以太网作为数据出口给WIFI,Air8000上网,WIFI作为数据出口给Air8000,以太网上网。
    • exremotecam - exremotecam 远程摄像头控制扩展库,提供统一的摄像头OSD文字显示设置和拍照功能API。
    • exremotefile - exremotefile 远程文件管理系统扩展库,提供AP热点创建、SD卡挂载、SERVER文件管理服务器等功能,支持文件浏览、上传、下载和删除操作。
    • exsip - SIP/VoIP 电话扩展库,简化 SIP 客户端使用
    • exsipclient - SIP 信令客户端,支持 REGISTER、呼叫信令、MESSAGE、UDP/TCP 以及 401/407 Digest 认证。
    • exsipproto - SIP 协议辅助库,提供报文解析、Digest 鉴权、SIP 请求/响应构造、SDP 与媒体协商工具。
    • extp - 触摸系统拓展库
    • exvib - exvib 三轴加速度传感器扩展库
    • httpdns - 使用Http进行域名解析
    • httpplus - http库的补充
    • lbsLoc - lbsLoc 发送基站定位请求
    • lbsLoc2 - 基站定位v2
    • libfota - libfota fota升级
    • libfota2 - fota升级v2
    • libnet - libnet 在socket库基础上的同步阻塞api,socket库本身是异步非阻塞api
    • netLed - netLed 网络状态指示灯
    • udpsrv - UDP服务器
    • xmodem - xmodem 协议
Back to top

airlink - AirLink(设备间通讯协议)#

示例

-- 本库仅部分BSP支持, 通信形式以设备内SPI/设备间UART/设备间UART通信为主要载体
-- 主要是 Air8000 和 Air780E 系列
-- 详细用法请参考demo

常量#

常量

类型

解释

airlink.bindTransport

function

绑定 adapter 到指定 transport

airlink.rpc

function

同步调用对端 RPC

airlink.testNanopbGpio

function

nanopb GPIO RPC loopback 自测

airlink.testNanopbUart

function

nanopb UART RPC loopback 自测

airlink.testNanopbWlan

function

nanopb WLAN RPC loopback 自测

airlink.testNanopbPm

function

nanopb PM RPC loopback 自测

airlink.MODE_LOOPBACK

number

airlink.start参数, loopback自测模式

airlink.MODE_SPI_SLAVE

number

airlink.start参数, SPI从机模式

airlink.MODE_SPI_MASTER

number

airlink.start参数, SPI主机模式

airlink.MODE_UART

number

airlink.start参数, UART模式

airlink.CONF_SPI_ID

number

SPI配置参数, 设置SPI的ID

airlink.CONF_SPI_CS

number

SPI配置参数, 设置SPI的CS脚的GPIO

airlink.CONF_SPI_RDY

number

SPI/UART配置参数, 设置RDY脚的GPIO

airlink.CONF_SPI_IRQ

number

SPI/UART配置参数, 设置IRQ脚的GPIO

airlink.CONF_SPI_SPEED

number

SPI配置参数, 设置SPI的波特率

airlink.CONF_IRQ_TIMEOUT

number

SPIUART配置参数, 设置IRQ模式的等待超时时间

airlink.CONF_UART_ID

number

UART配置参数, 设置UART的ID

airlink.init()#

初始化AirLink

参数

无

返回值

返回值类型

解释

nil

无返回值

例子

-- 对于Air8000, 本函数已自动执行, 无需手动调用
-- 对于Air780EPM+Air8101的组合, 需要执行一次
airlink.init()

airlink.start(mode)#

启动AirLink

参数

传入值类型

解释

int

mode 0: SPI从机模式 1: SPI主机模式 2: UART模式

返回值

返回值类型

解释

nil

无返回值

例子

-- 对于Air8000, 本函数已自动执行, 无需手动调用
-- 对于Air780EPM+Air8101的组合, 需要执行一次
-- Air780EPM作为SPI主机
airlink.start(airlink.MODE_SPI_MASTER)
-- Air8101作为SPI从机
airlink.start(airlink.MODE_SPI_SLAVE)

airlink.stop(mode)#

关闭AirLink

参数

传入值类型

解释

int

mode 0: SPI从机模式 1: SPI主机模式 2: UART模式

返回值

返回值类型

解释

nil

无返回值

例子

-- 本函数当前无任何功能, 只做预留

airlink.test(count)#

发送测试指令(nop空指令)

参数

传入值类型

解释

int

count 发送次数

返回值

返回值类型

解释

nil

无返回值

例子

-- 本函数仅供内部测试使用
airlink.test(10)

airlink.statistics()#

打印统计信息

参数

无

返回值

返回值类型

解释

nil

无返回值

例子

-- 调试用途, 可周期性调用
airlink.statistics()

airlink.slave_reboot()#

重启从机

参数

无

返回值

返回值类型

解释

nil

无返回值

例子

-- 调试用途, 可重启从机
airlink.slave_reboot()

airlink.sdata(data)#

发送自定义数据

参数

传入值类型

解释

string/zbuff

待传输的自定义数据,可以是字符串, 可以是zbuff

返回值

返回值类型

解释

nil

无返回值

例子

-- 本函数用于传递自定义数据到对端设备, 通常用于Air8101+Air780EPM的场景
airlink.sdata("hello world")

airlink.ready()#

判断是否就绪

参数

无

返回值

返回值类型

解释

bool

是否就绪

例子

-- 判断AirLink是否就绪, 指底层通信是否通畅, 最近一次通信是否超时(默认2s)
-- 本函数仅用于判断AirLink是否就绪, 不能用于判断是否收到数据
if airlink.ready() then
    log.info("airlink", "已经就绪")
else
    log.info("airlink", "尚未就绪")
end

airlink.config(key, value)#

配置AirLink的参数

参数

传入值类型

解释

int

key 配置项, 参考airlink的常数项

int

value 配置值

返回值

返回值类型

解释

bool

成功返回true, 失败返回nil

例子

--配置AirLink的SPI ID为1, CS引脚为10, RDY引脚为11, IRQ引脚为12
airlink.config(airlink.CONF_SPI_ID, 1)
airlink.config(airlink.CONF_SPI_CS, 10)
airlink.config(airlink.CONF_SPI_RDY, 11)
airlink.config(airlink.CONF_SPI_IRQ, 12)

airlink.sfota(path)#

升级从机固件

参数

传入值类型

解释

string

升级文件的路径

返回值

返回值类型

解释

bool

成功返回true, 失败返回nil

例子

-- 注意, 升级过程是异步的, 耗时1~2分钟, 注意观察日志
airlink.sfota("/luadb/air8000s_v5.bin")
-- 注意, 升级过程中, 其他任何指令和数据都不再传输和执行!!!

airlink.debug(mode)#

调试开关

参数

传入值类型

解释

int

mode 0: 关闭调试 1: 打开调试

返回值

返回值类型

解释

nil

无返回值

例子

-- 打开调试(默认是关闭状态)
airlink.debug(1)

airlink.pause(mode)#

暂停或回复airlink通信

参数

传入值类型

解释

int

mode 0: 恢复 1: 暂停

返回值

返回值类型

解释

nil

无返回值

例子

-- 仅当airlink运行在轮询模式, 需要暂停时使用, 通常是为了休眠
airlink.pause(1)

airlink.irqmode(mode, master_gpio, slave_gpio)#

开启中断模式

参数

传入值类型

解释

int

mode false: 禁用 true: 启用

int

master_gpio 主机引脚, 建议使用GPIO20

int

slave_gpio 从机引脚, Air8000使用GPIO140, Air8101使用GPIO28

返回值

返回值类型

解释

nil

无返回值

例子

-- 默认情况下, airlink工作在轮询模式, 周期性查询数据
-- 开启中断模式后, 从机有新数据时, 会在slave_gpio上产生一个下升沿+上升沿中断
airlink.irqmode(true, 20, 140)
-- 注意, 开启本模式, 外部接线必须稳固, 否则各种airlink相关操作都会异常

airlink.wakeupIrqmode(mode, master_gpio, slave_gpio, irq_mode)#

开启wakeup唤醒中断模式

参数

传入值类型

解释

int

mode false: 禁用 true: 启用

int

master_gpio 主机引脚, 建议使用GPIO20

int

slave_gpio 从机引脚, Air8000使用GPIO140, Air8101使用GPIO28

int

irq_mode 中断模式, 例如gpio.RISING (上升沿), gpio.FALLING (下降沿)

返回值

返回值类型

解释

nil

无返回值

例子

-- 用于设置唤醒wifi 开启此功能后, 会在Air8000主机休眠唤醒时,允许在master_gpio上产生一个脉冲,从而通过绑定的slave_gpio触发中断唤醒wifi
airlink.wakeupIrqmode(true, 20, 140, gpio.RISING)
-- 注意, 开启本模式, 外部接线必须稳固, 否则可能会导致触发的中断脉冲不完整或接收不到,从而无法唤醒wifi

airlink.power(enable)#

关闭airlink相关供电

参数

传入值类型

解释

boolean

enable true: 使能 false: 禁用

返回值

返回值类型

解释

nil

无返回值

例子

-- 关闭airlink相关供电, 通常用于省电
-- 当前仅对Air8000带wifi功能的模组有效
-- 关闭之后, 如需使用wifi功能, 需要重新执行wifi.init等操作
-- 注意, wifi供电关掉后, >=128的GPIO也会变成输入高阻态
airlink.power(false)
-- 开启wifi芯片,恢复airlink通信
airlink.power(true)

airlink.sver()#

获取从机版本号

参数

无

返回值

返回值类型

解释

int

从机固件版本号

例子

-- 注意, 获取之前, 需要确定airlink.ready()已经返回true
log.info("airlink", "从机固件版本号", airlink.sver())

airlink.testNanopbGpio()#

nanopb GPIO RPC loopback 自测

参数

无

返回值

返回值类型

解释

int

0=全部通过, 负值=失败步骤号

例子

-- 在 loopback 模式启动后调用
local rc = airlink.testNanopbGpio()
assert(rc == 0, "nanopb GPIO RPC 测试失败: " .. tostring(rc))

airlink.testNanopbUart()#

nanopb UART RPC loopback 自测

参数

无

返回值

返回值类型

解释

int

0=全部通过, 负值=失败步骤号

例子

无


airlink.testNanopbWlan()#

nanopb WLAN RPC loopback 自测

参数

无

返回值

返回值类型

解释

int

0=全部通过, 负值=失败步骤号

例子

无


airlink.testNanopbPm()#

nanopb PM RPC loopback 自测

参数

无

返回值

返回值类型

解释

int

0=全部通过, 负值=失败步骤号

例子

无


airlink.ping(data, timeout_ms)#

发起异步 ping, 结果通过 sys.subscribe(“AIRLINK_PING_RESULT”, …) 接收

参数

传入值类型

解释

string/zbuff

data 要回显的payload, 可为空字符串

int

timeout_ms 超时毫秒数, 默认3000

返回值

返回值类型

解释

int

request_id, 成功发起时返回pkgid; 失败返回nil

例子

local reqid = airlink.ping("hello", 3000)
sys.subscribe("AIRLINK_PING_RESULT", function(id, ok, v1, v2)
    if id ~= reqid then return end
    if ok then
        log.info("ping", "rtt=" .. v1 .. "ms echo=" .. v2)
    else
        log.info("ping", "failed: " .. tostring(v1))
    end
end)

Next
airtalk - 设备之间,设备与PC、手机,对讲处理
Previous
adc - 模数转换
Copyright © LuatOS团队

目录
  • airlink - AirLink(设备间通讯协议)
    • 常量
    • airlink.init()
    • airlink.start(mode)
    • airlink.stop(mode)
    • airlink.test(count)
    • airlink.statistics()
    • airlink.slave_reboot()
    • airlink.sdata(data)
    • airlink.ready()
    • airlink.config(key, value)
    • airlink.sfota(path)
    • airlink.debug(mode)
    • airlink.pause(mode)
    • airlink.irqmode(mode, master_gpio, slave_gpio)
    • airlink.wakeupIrqmode(mode, master_gpio, slave_gpio, irq_mode)
    • airlink.power(enable)
    • airlink.sver()
    • airlink.testNanopbGpio()
    • airlink.testNanopbUart()
    • airlink.testNanopbWlan()
    • airlink.testNanopbPm()
    • airlink.ping(data, timeout_ms)