Skip to content

feat(hid_probe): VID と PID で任意のデバイスを読む - #25

Merged
torabit merged 1 commit into
mainfrom
torabit/feat/probe-any-device
Sep 27, 2026
Merged

torabit merged 1 commit into
mainfrom
torabit/feat/probe-any-device

Conversation

@torabit

@torabit torabit commented Sep 27, 2026

Copy link
Copy Markdown
Owner

変更内容

  • hid_probe に --list と --vid と --pid を足した
  • README に、対応していないパッドを調べる手順の節を足した
hid_probe.exe                            今までと同じ。Sony の既知の機種を探して開く
hid_probe.exe --list                     繋がっている HID を全部並べる
hid_probe.exe --vid 0x0F0D --pid 0x0084  指定した 1 台を開く

なぜ

HORIPAD Turbo Plus を繋いでも一覧にすら出ない。デバイスの選別を Sony の VID と 4 つの PID で決め打ちしているため。

対応できるかどうかはレポートを読まないと決められない。PS4 のライセンス品なので DualShock 4 互換の形式で送る見込みは高いが、確かめていない。ジャイロもタッチパッドも無い機種なので、DS4 のレポートで IMU と timestamp が入る領域が何になっているかは特に分からない。そこが空なら timeline の校正と wrap 処理は空回りする。

読む道具を先に広げる。

判断したこと

--list は並べるだけで開かない。開くと他のアプリと device を取り合う。何が繋がっているかを見たいだけの段階で触る理由が無い。

--vid と --pid は両方を必須にした。片方だけを受け付けると、同じ VID の別のデバイスを開いたときに何を読んだのか出力から決められない。

--list と VID/PID の同時指定は断る。並べたのか開いたのかが出力から読めなくなる。

引数の解析は probe モジュールの外に置いた。probe は cfg(windows) の中にあり、中に書くと Windows 以外で test が走らない。

引数の誤りは終了コード 2 で終わる。1 は実行時の失敗に取ってあるので、指定の誤りと読み分けられる。

引数の parser は依存に足さず自前で書いた。読む値が 3 つしか無い。frametap.toml で TOML の parser を入れなかったのと同じ判断になる。

検証

  • cargo fmt --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test (118 件)

引数の解析に test が 9 件ある。

  • 引数なし、--list、--vid と --pid の組み合わせ
  • --vid だけ、--pid だけ
  • --list と VID/PID の併用
  • 16 進として読めない値、u16 に入らない値
  • 値の欠落、知らない引数

test と実装を同時に書いたので、最初から全部通った。空振りしていないことを、実装を 2 通りに壊して確かめた。--vid だけを通すようにすると one_of_the_two_is_refused だけが落ち、0x を剥がすのをやめると a_vid_and_a_pid_open_that_device だけが落ちた。

デバイスを開く側は Windows でしか動かないので、実機で試すまで未検証になる。

対応していないパッドを繋いでも一覧に出なかった。デバイスの選別を Sony の VID と
4 つの PID で決め打ちしていたため。対応できるかどうかはレポートを読まないと
決められないので、読む道具の側を先に広げる。

--list は並べるだけで開かない。開くと他のアプリと device を取り合う。

引数の解析は probe の外に置いた。probe は cfg(windows) の中にあり、中に書くと
Windows 以外で test が走らない。

引数の誤りは終了コード 2 で終わる。1 は実行時の失敗に取ってあるので、指定の
誤りと読み分けられるようにする。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@torabit
torabit merged commit ded98ab into main Sep 27, 2026
1 check passed
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