Files
mobile_comm/luatos/air780epm
wangfq 2f75f5abff fix(vd960Air): 修复 initialize 组装崩溃(mobile.msisdn 不存在) + link 采集兜底
现象(第一批修复后): 模块成功注网(IP_READY 10.38.28.79)并连上 MQTT(conack nil nil /
suback true 0), 随即在组装 initialize 报文时崩溃:

  E/user.coroutine.resume link_info.lua:29: attempt to call a nil value (field 'msisdn')
    link_info.lua:29 in 'link_info.get'
    app_iot.lua:34   in upvalue 'build_initialize'
    app_iot.lua:65   in function 'app_iot.on_connected'
  E/main Lua VM exit!! reboot in 15000ms

根因: mobile.msisdn() 在 Air780EPM 上不存在。LuatOS 各固件 API 面不一致, 且字段不存在时
      "直接调用 = 抛异常崩 VM"(不是返回 nil) —— 与 mstick() 同性质。手机号官方 API 是
      mobile.number(simid)(见 demo/mobile/mobile_test.lua), 物联卡普遍也无机号。

修复(防御性, 两层):
1. link_info.lua: 新增 safe(fn, ...) 助手(type(fn)=="function" 判断 + pcall), 所有 mobile.*
   调用统一走它 → 字段缺失/调用异常一律返回 nil、不再抛出; msisdn 改用 safe(mobile.number, 0);
   csq 兼容 table 返回
2. app_iot.lua: 新增 get_link() 兜底(内部 pcall + 失败时返回全空 link 表), inject_link 与
   build_initialize 均改用它 → link 采集失败绝不影响上行, 更不允许崩 VM

自检增强 + 反向验证:
- tools/sim_load_test.lua 的 mobile 桩改为"只含官方 demo 证实存在的 API"(移除 msisdn):
  桩面必须与真实固件一致 —— "想当然"多写的桩会掩盖真实 bug
- 反向验证: 把 mobile.msisdn() 注射回代码 → 自检精确报
  "✗ link_info.get() [link_info.lua:53: attempt to call a nil value (field 'msisdn')]"(exit 1);
  还原后 exit 0 → 该自检可拦住整类"API 面假设错误"

验证: luac5.3 -p 全绿; Lua 离线自检通过; Python 帧协议验证通过; readme 表格列数 0 异常
文档: readme §8 补第二批修复记录, 修正 link.msisdn 字段来源说明
2026-09-10 15:44:47 +08:00
..

star fork license

LuatOS,基于强大的Lua引擎架构设计,Lua脚本开发,快速实现业务逻辑;

LuatOS,在合宙历史上经历了两个阶段,一个是LuatOS-Air,一个是LuatOS-SoC,也就是现在的LuatOS

LuatOS-Air,典型硬件为Air724UG,为合宙上一代的产品;

LuatOS,也就是曾经命名过的LuatOS-SoC,是合宙现在主推的开发方式,所支持的硬件如下:

Air8000系列,包括Air8000/Air8000W/Air8000G/Air8000T/Air8000A/Air8000D等;

Air8101系列,包括Air8101/Air8101A等;

Air780Exx系列,包括Air780EPM/Air780EHM/Air780EHV/Air780EGH等;

LuatOS,现已支持74个核心库,55个扩展库,1000余个API,100多个基于场景的demo,让你开发智能设备像做PPT一样轻松。

本仓库包含如下文件夹:

  1. .github文件夹Github Action 配置文件, 用于自动化构建和测试
  2. components 组件库,,LuatOS在Lua基础上扩展的一系列库的源码
  3. lua文件夹,Lua虚拟机5.3系列的源码, 经过合宙优化和测试
  4. luat文件夹LuatOS核心框架代码
  5. module文件夹,合宙模组和工业引擎主流型号的固件、demo、project参考代码等
  6. script文件夹LuatOS扩展库
  7. tools文件夹,辅助工具
  8. .gitignore Git的文件忽略配置文件

快速入门

  1. 使用或购买支持的开发板
  2. 掌握刷机
  3. 尝试学习LuatOS, 浏览API, 30分钟入门lua语法(视频)
  4. 愉快地写业务代码

资料大全

授权协议

MIT License

print("感谢您使用LuatOS ^_^")
print("Thank you for using LuatOS ^_^")