- 阶段1: 消息类型序列化 (Serialize/Deserialize, &'static str → String) - 阶段2: FFI 边界类型 + Plugin SDK (plugin_abi, showen-plugin-sdk crate) - 阶段3: PluginLoader + DynamicPlugin (libloading 动态加载 .so) - 阶段4: 版本管理 + 错误策略 (VersionManager, PluginState, 自动回退) - 阶段5: 远程仓库客户端 (HTTP 下载 + tar.gz 安装) - 阶段6: 示例插件 + HTTP 管理 API + 全目录 README 文档 54/54 测试通过,0 warnings。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
plugins/ — 内置功能插件
ShowenV2 编译时链接的 5 个内置插件。
| 插件 | 目录 | 说明 | 平台 |
|---|---|---|---|
| VideoPlugin | video/ |
视频播放引擎,基于 OpenCV,支持状态机驱动、帧变换、过渡效果 | Any |
| HttpPlugin | http/ |
Web UI + REST API + WebSocket,基于 warp,依赖 VideoPlugin | Any |
| BlePlugin | ble/ |
BLE GATT WiFi 配网,基于 D-Bus/BlueZ | Linux |
| WifiPlugin | wifi/ |
WiFi 管理(扫描/连接/热点),基于 nmcli | Linux |
| ScreenPlugin | screen/ |
屏幕唤醒锁 + 光标隐藏,基于 systemd-inhibit | Linux |
依赖关系
video ←── http
screen (独立)
ble (独立)
wifi (独立)
插件生命周期
register()→ ServiceManager 注册init(ctx)→ 获取消息通道和配置start()→ 启动工作线程handle_message(msg)→ 处理消息stop()→ 优雅关闭