--[[ @module main @summary vd960Air — Air8781P(Air780EPM) 4G 模块 LuatOS 应用入口(方案 C MVP) @version 0.3.1 @date 2026.09.10 @usage vd960DBN 车检器在有线网络失效时的 4G 兜底通道(方案 C: Air780 协议转换): 1、UART1 对接 vd960DBN(CH32V208 串口1 PB6/PB7),0x7F 帧字节流透传; 2、0x7F 帧解析 → 0xC0 传感 → loop_data JSON(标准,注入 link)→ MQTT dld960/{sn}/dev; 3、car_state/loop_state 沿检测 → event_report(ACK + 5s×3 重发,对齐 DBN 语义); 4、下行: report_config 时钟校准 + event_report ACK;业务命令转换 P1; 5、initialize(extra_info imei/iccid + link)/ heartbeat 周期上报; 6、网络看门狗 + 4G 网卡(官方组件)。 ]] PROJECT = "vd960Air" VERSION = "001.999.000" -- 在日志中打印项目名和项目版本号 log.info("main", PROJECT, VERSION) -- ==================== 加载配置 ==================== require "config" -- ============ 统一毫秒时基(全局 mstick(), 必须早于业务模块) ============ -- 修复 2026-09-10: 工程原调用 mstick() 但 LuatOS 无此 API, 上板必报 nil require "mstick" -- ==================== 网络环境检测看门狗 ==================== require "network_watchdog" -- ==================== 网卡驱动(仅 4G) ==================== require "netdrv_device" -- ==================== 串口应用(UART1 <-> vd960DBN,0x7F 帧) ==================== require "uart_app" -- ==================== 设备业务(initialize/heartbeat/poll) ==================== local app_iot = require "app_iot" app_iot.init() -- ==================== MQTT 客户端(单路, 主题 dld960/{sn}/srv + dev) ==================== require "mqtt_main" -- 用户代码已结束--------------------------------------------- -- 结尾总是这一句 sys.run() -- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行