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