The G522 uses a Centurion protocol variant with report ID 0x50 that adds a device address byte at frame position [1], shifting all CPL fields by +1 compared to the PRO X 2's 0x51 variant. This commit adds transport- layer support for both variants while consolidating per-handle centurion state into a single CenturionHandleState dataclass. Key changes: - Consolidate _centurion_handles (set) and _centurion_protocol_versions (dict) into a single dict[int, CenturionHandleState] keyed by handle - Add _unwrap_centurion_frame() helper that auto-detects 0x50 vs 0x51 from raw frame bytes and learns the device address on first RX - Add _centurion_frame_header() to build the correct TX header per variant - Detect both report IDs in udev report descriptor parsing - Adjust bridge fragment chunk sizes for 0x50's extra header byte - Propagate full CenturionHandleState when opening per-thread handles Wire format verified against G522 diagnostic logs from LGSTrayEx#15. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| common.py | ||
| hidapi_impl.py | ||
| hidconsole.py | ||
| udev_impl.py | ||