docs/design/current-hardware-support-and-serial.zh.md
当前项目已有的硬件相关能力主要分为两条线:
设备事件监控
pkg/devices 已实现设备事件服务。pkg/devices/sources/usb_linux.go。硬件控制 Tool
pkg/tools/hardware/i2c*.go:I2C Tool,支持 detect、scan、read、write。pkg/tools/hardware/spi*.go:SPI Tool,支持 list、transfer、read。/dev/i2c-* 与 /dev/spidev*。因此,项目在“硬件支持能力”上已经具备:
但还缺少:
本次新增内建 serial Tool,并接入现有 Tool 体系:
tools.serial.enabledpkg/agent/agent_init.go/api/tools 能展示与切换 serialrequires_serial_platformserial 采用无状态调用模型,每次请求都自行打开和关闭端口,避免在 agent 回合之间维护串口会话状态。
支持动作:
list:枚举主机串口read:从串口读取指定长度字节write:向串口写入字节或文本公共参数:
portbauddata_bitsparitystop_bitstimeout_ms当前波特率实现边界:
50-4000000230400baud 的跨平台可移植取值应优先使用 230400 及以下的常见标准速率安全约束:
write 必须显式传 confirm: true4096 字节port 只接受白名单串口名:
/dev/tty*、/dev/cu.* 及对应简写设备名COM\d+ 或 \\.\COM\d+..、普通文件绝对路径、盘符路径等非串口设备路径,避免路径穿越或误打开任意文件Linux / macOS:
golang.org/x/sys/unix 和 termios 配置串口参数。230400,尚未扩展 460800、921600、1000000、2000000 等更高速率。/dev/... 枚举和访问设备。Windows:
kernel32 串口 API 配置 DCB 和 COMMTIMEOUTS。ReadFile / WriteFile;一旦 syscall 已进入执行,turn context cancellation 不能立即打断,只能等待 COMMTIMEOUTS 触发后返回。HARDWARE\\DEVICEMAP\\SERIALCOMM 枚举端口。其他平台:
serial Tool 显式返回 unsupported,不做静默降级。