feat: DevicePlugin Task3 — Linux ARM64 Backend(Display/SleepInhibit/Backlight)
This commit is contained in:
@@ -2219,3 +2219,51 @@ Task 1 已完成,可以进入 Task 2(DevicePlugin 骨架与 Backend trait)
|
||||
|
||||
**下一步**: Task 3 由赵雨薇负责,实现 LinuxArm64Backend。
|
||||
|
||||
|
||||
---
|
||||
|
||||
**时间**: 2026-03-13
|
||||
**汇报人**: 赵雨薇(屏幕工程师)
|
||||
**任务**: DevicePlugin 阶段一 Task 3 - Linux ARM64 Backend 实现
|
||||
|
||||
## 完成情况
|
||||
|
||||
已完成 Linux ARM64 设备后端实现,支持以下功能:
|
||||
|
||||
1. **显示信息获取**:
|
||||
- 从 `/sys/class/graphics/fb0/virtual_size` 读取 framebuffer 分辨率
|
||||
- 读取失败时使用默认值 1920x1080,保证初始化不失败
|
||||
- 返回 RGB888 像素格式
|
||||
|
||||
2. **防息屏控制**:
|
||||
- 复用 ScreenPlugin 的 systemd-inhibit 实现
|
||||
- `SetSleepInhibit(true)` 启动 `systemd-inhibit --what=idle:sleep`
|
||||
- `SetSleepInhibit(false)` 停止子进程并清理资源
|
||||
|
||||
3. **背光控制**:
|
||||
- 遍历 `/sys/class/backlight/*/` 查找背光设备
|
||||
- 读取 `max_brightness` 并写入 `brightness`(开启=最大值,关闭=0)
|
||||
- 设备不存在时静默返回成功(兼容无背光设备)
|
||||
|
||||
4. **模块集成**:
|
||||
- 添加 `#[cfg(target_os = "linux")]` 条件编译
|
||||
- 实现 `DevicePlugin::new_default()` 便捷构造函数
|
||||
- 正确导出 `LinuxArm64Backend`
|
||||
|
||||
## 验收结果
|
||||
|
||||
- ✅ `cargo check --workspace --all-targets` 零 warning
|
||||
- ✅ `cargo test --workspace` 全部通过(66 个测试)
|
||||
- ✅ LinuxArm64Backend 实现 DeviceBackend trait 所有方法
|
||||
- ✅ 支持 Display、Backlight、Framebuffer 三个能力
|
||||
- ✅ 子进程生命周期管理正确(kill + wait)
|
||||
- ✅ 条件编译正确,非 Linux 平台不报错
|
||||
|
||||
## 技术要点
|
||||
|
||||
- sysfs 路径探测:framebuffer 和 backlight 路径可能因设备而异,实现了容错逻辑
|
||||
- 资源清理:shutdown() 正确清理 systemd-inhibit 子进程
|
||||
- 错误处理:硬件不可用时返回友好错误,不阻塞插件启动
|
||||
|
||||
Task 3 已完成,可以进入 Task 4(集成测试与文档)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user