项目的核心C源码全部位于 obj/ 目录下,其内部结构清晰,遵循模块化的设计原则。
1 | obj/ |
目录说明
AI/: 实现了与大语言模型(如OpenAI兼容接口)的交互逻辑,将 OpenAI C 项目魔改,使用内核链表管理会话数据,实现多次对话的功能,内核链表使用方法。data/: 负责将设备的关键状态(灯光、安防等)保存到本地文件系统,详见 数据持久化模块hardware/: 封装了对/dev/Led,/dev/beep等底层硬件设备文件的ioctl操作,详见 硬件控制与外设驱动http/: 手动实现的HTTP客户端,用于调用天气等第三方API,详见 第三方API集成Include/: 头文件中心。存放了所有模块对外暴露的函数声明(API)和数据结构。其他模块包含这些头文件来使用其功能。config.h也在此处,用于配置密钥和服务器地址。JoyPixels emojis/: 将PNG格式的Emoji图标转换为了LVGL可以直接使用的C数组 (lv_img_dsc_t),避免了在运行时从文件系统读取图片的开销。
具体方法可以查看:LVGL图像与字体使用笔记MQTT/: 负责与MQTT Broker的全部通信,包括一个用于文件传输的扩展实现 (MQTT_File.c),详见 MQTT 通信协议与实现screen/: UI层。每个.c文件对应一个独立的屏幕或复杂的UI组件(如主页、灯光控制页),负责该页面的所有LVGL对象创建、布局和事件绑定