Skip to content

feat(device): 完善 pokeldn 串口控制并支持 ESP32-S3 服务连接 - #84

Merged
ca1e merged 1 commit into
EasyConNS:devfrom
yciu:feat/pokeldn-pad-upstream
Nov 1, 2026
Merged

ca1e merged 1 commit into
EasyConNS:devfrom
yciu:feat/pokeldn-pad-upstream

Conversation

@yciu

@yciu yciu commented Oct 30, 2026

Copy link
Copy Markdown

变更说明

完善 dev 已有的 pokeldn 串口适配,并加入 ESP32-S3 的官方本地手柄服务连接。普通 ESP32 使用 921600 串口直连;S3 通过 pokeldn.pad.service 桥接 BLE,板子原生 USB 接 NS。

  • 将串口探测的 900 ms 预算改为允许开机重试的独立连接预算,解析固件版本和主机接管状态。
  • 串口与服务共用逐条 ACK、状态轮询、限长队列和 STOP/中立报告释放。断开时先收完正在进行的响应,避免把半条 JSON ACK 当成下一条响应。
  • 保留 PokeldnSerialClient 的公开接口、CreatePokeldnConnection 接缝、原有协议回退顺序及专用设备写线程。BytesSent 继续返回原始 7-bit HID,兼容 Maa 对中立报告写出的确认。
  • 设备列表加入服务入口,并支持 pokeldn:COM3、pokeldn:/dev/ttyUSB0、pokeldn://service。端点别名共享来源占用锁。
  • 向宿主暴露固件能力,明确拒绝 pokeldn 不支持的离线烧录、远程离线脚本、Amiibo、颜色和解除配对等命令。
  • 增加 51 项设备测试、4 项 Maa 集成测试及接线、协议和限制说明。不增加第三方运行依赖。

实现基于上游 dev 的 8787f0bda441f85848ad0f978f780d6ebd82c93e,固件协议依据 Decryptu/pokeldn@30cbb0a47541a4293ca92152838b03cd7c8b9615 的 pad 1.3.0。

关联 Issue

暂无关联 Issue。本 PR 扩展已有的实验性串口适配,S3 服务桥接属于新增能力,先作为草稿供维护者确认方案;尚未取得贡献指南所要求的 Issue 讨论共识。

变更类型

  • Bug 修复
  • 功能扩展:ESP32-S3 服务桥接(方案待维护者确认)
  • 文档 / 其他

人工审核声明

实现和自动化验证由 Codex 辅助完成。用户确认了两种板子的需求,并反馈早期适配构建在 ESP32E 上可连接和控制 NS;以下人工代码审核声明尚未确认。

  • 我已逐行审核本 PR 的全部代码(包括 AI 生成的部分),理解并认可每一处改动
  • 我对本 PR 内容负责,它不是全由 Agent 决策产出

自查清单

  • dotnet build EasyCon2.slnx -c Release --no-restore 通过
  • dotnet test EasyCon2.slnx -c Release --no-build --no-restore 通过
  • dotnet format EasyCon2.slnx --verify-no-changes --no-restore 无差异
  • 新功能 / 修复附带 NUnit 测试
  • 更新协议、使用方法、能力边界及实机验证状态文档

验证方式

Windows / .NET SDK 10.0.403:全量测试 1,883 通过、182 跳过、0 失败,另有 29 项显式测试未选择运行。跳过项主要依赖本机未安装的 C99 编译器、OCR 模型/资料或其他平台环境;构建仍有现存警告。

设备测试覆盖独立构造的 UART 帧、所有按钮/HAT/摇杆边界、分片和噪声恢复、启动重试、拒绝/缺失 ACK、断开释放,以及真实本机 TCP 上的官方服务协议。另验证延迟 ACK 时释放不能提前报告成功、Maa 固件能力透传和端点别名独占;上游既有串口回退测试继续通过。

实机状态:用户反馈早期适配构建的 ESP32E 控制可用;本次对齐最新 dev 后尚未复测实机,ESP32-S3 和 Switch 2 仍待实测。短按吞吐及严格帧计时需要实际蓝牙环境验证。

唤醒限制:普通 ESP32 的 HOME 输入只更新普通 HID 报告,当前固件在蓝牙断开后不会因该输入发起重连/唤醒。请先用 NS 电源键或原装手柄唤醒。依据固件蓝牙连接与发送实现;本 PR 不更改板上固件。

@ca1e

ca1e commented Oct 30, 2026

Copy link
Copy Markdown
Contributor

建议分别提供通用的串口支持协议和蓝牙桥接方案

@ca1e
ca1e marked this pull request as ready for review November 1, 2026 00:57
@ca1e
ca1e merged commit 2653860 into EasyConNS:dev Nov 1, 2026
7 checks passed
@ca1e ca1e mentioned this pull request Nov 4, 2026
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants