Commit Graph

20 Commits

Author SHA1 Message Date
Ken Sanislo 693741f216 Add Centurion transport and PRO X 2 LIGHTSPEED headset support
Adds support for the Logitech PRO X 2 LIGHTSPEED Gaming Headset (PID 0x0AF7)
which uses the Centurion transport protocol (report ID 0x51 on USB usage page
0xFFA0) instead of standard HID++ report IDs.

Changes:
- HID enumeration: detect Centurion devices via report descriptor parsing
  (usage page 0xFFA0, report ID 0x51, 63-byte frames)
- Centurion transport: wrap/unwrap HID++ 2.0 frames in Centurion framing
  for write, read, and ping operations
- Feature discovery: enumerate features individually on Centurion devices
  (different response format: [remaining_count, feat_hi, feat_lo])
- Device descriptor for PRO X 2 LIGHTSPEED Gaming Headset
- New feature enum entries for Centurion-era headset features (0x06xx)
- CenturionRawRW class for write-only headset settings controlled via
  raw Centurion commands reverse-engineered from HeadsetControl
- HeadsetSidetone setting (0-100 range, persisted locally)

Known limitations:
- Only sidetone control is implemented; other features need RE work
- Settings are write-only (no read-back from device)
- Headset features (0x06xx) not discoverable via IRoot; registered manually
2026-04-12 14:51:54 -07:00
Peter F. Patel-Schneider a866de47fb udev: correctly re-raise access exception 2025-10-17 19:41:23 -04:00
MattHag 5f5c7cdcce Fixes on top of refactoring 2025-01-01 10:46:04 -05:00
MattHag 0bf7a78553 Add type hints
Related #2273
2025-01-01 10:46:04 -05:00
MattHag 4c160d1723 Remove NamedInts: Convert Task to enum
Refactor code related to task and task ID.

Related #2273
2025-01-01 10:46:04 -05:00
MattHag cba3533869 Remove factory wrapper classes
A module level function is sufficient, no wrapper needed.
2024-10-11 07:42:38 -04:00
MattHag 1729189981 base: Add find_paired_node functions
Avoid direct access to hidapi and use the base module as low-level API
instead. This change replaces the remaining calls to find_paired_node
and find_paired_node_wpid by exposing them via base module.
2024-10-11 07:42:38 -04:00
MattHag 615499dce2 device: Remove hard dependency on hidapi 2024-10-11 07:42:38 -04:00
MattHag 741c0861c2 Clarify that fake hidpp is used
This module shouldn't be necessary on the long run. Remove pieces from
it whenever possible.
2024-10-08 14:35:16 -04:00
MattHag c29231bc6b
refactor: Creation of devices (#2493)
* Refine interfaces for testability

* Reenable fixed device tests
2024-05-27 11:58:16 -04:00
Peter F. Patel-Schneider 90b0db6c3b device: don't ping device when getting name or codename 2024-05-22 21:22:08 -04:00
MattHag 500b9998c5
Fix macOS compatibility and reenable CI tests
* Fix CI for macOS

* Fix error message for missing hidapi

* Skip some device and receiver tests on macOS

Tests fail on macOS, enable them when unit tests are
refined to only test the module without dependencies.

* Safe guard dbus import
2024-05-22 18:45:40 -04:00
Peter F. Patel-Schneider c4e2a5683a device: initialize device registers to empty list 2024-04-19 16:05:29 -04:00
Peter F. Patel-Schneider e667d41c7b solaar: use bluez dbus signals to disconnect and connect bluetooth devices 2024-04-18 20:32:40 -04:00
Peter F. Patel-Schneider 1eb1d4b198 tests: extend tests for device.py 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider c7195881e3 tests: expand tests for device.py 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider 6c67789bad tests: extend device testing 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider e64eec18e9 tests: extend testing of hidpp20 2024-04-13 18:38:44 -04:00
Peter F. Patel-Schneider 07c0d35f80 tests: fix finding paired node in test_device 2024-03-23 08:26:12 -04:00
Peter F. Patel-Schneider ebc76bca24 tests: add tests for logitech_receiver device 2024-03-23 08:26:12 -04:00