e2a7635f2f
Harden legacy bounds
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:51:36 +09:00
6f18b65217
Document protocol modes
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
05790b4f99
Update build helper
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
05e04b2632
Wire protocol modes
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
01cf6ed26f
Enable firmware tests
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
f3067bfd2e
Add legacy contracts
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
95b0576d1d
Add Switch2 driver
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
3251e49191
Implement Switch2 descriptors
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
0ec06676c3
Define Switch2 descriptors
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
f8de986717
Implement Switch2 reports
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
f79394cd80
Define Switch2 reports
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
950c5de1ea
Implement Switch2 commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
1b65893a69
Define Switch2 commands
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
1a6859855e
Add protocol facade
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
a7f07c67b8
Implement UART decoder
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
05098bbdac
Define UART decoder
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
a1dd3af692
Share input model
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-08-11 12:23:07 +09:00
0fe53a53b1
feat(bridge): add controller-side ABXY swap combo (LB+RB+SELECT+START)
...
Holding all four buttons simultaneously toggles the ABXY layout for that controller with a 200ms rumble confirmation pulse.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 20:43:32 -06:00
5c18c75d33
feat(bridge): migrate to SDL3 and fix controller hotplug issues
...
- Migrate all SDL2 GameController API calls to SDL3 Gamepad equivalents
- Fix PermissionError on controller reconnect by closing UART handle before
releasing port back to pool (Windows holds COM ports exclusively)
- Add DisplayIndexAllocator so controllers get stable display indices (0, 0, 0)
instead of incrementing SDL instance IDs (1, 2, 3) on each reconnect
- Button mapping now uses SDL3 positional constants (SOUTH/EAST/WEST/NORTH)
which works correctly for all controller types without USE_BUTTON_LABELS hint
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 16:54:58 -06:00
3f6bf3dee2
chore: replace pysdl2 with PySDL3 for SDL3 sensor support
...
SDL3 includes a dedicated 8BitDo HIDAPI driver with native gyro/accel sensor support, which SDL2 lacked.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-16 16:54:45 -06:00
e13ba506cf
chore: add uv lockfile for reproducible dependency resolution
2026-03-16 12:19:36 -06:00
91c619691d
chore: update README with IMU/motion controls documentation
2026-03-16 12:00:49 -06:00
bd973253a6
fix(bridge): reverse SDL axis remapping to recover Nintendo-native IMU axes
...
SDL's hidapi_switch.c SendSensorUpdate() remaps Nintendo's raw sensor axes
to match PlayStation convention before emitting SDL sensor events:
SDL_X = -Nintendo_Y, SDL_Y = +Nintendo_Z, SDL_Z = -Nintendo_X
This commit reverses that transform so the values sent to the Pico are in
Nintendo's native coordinate frame:
Nintendo_X_raw = -SDL_Z
Nintendo_Y_raw = -SDL_X
Nintendo_Z_raw = +SDL_Y
Same mapping for gyro (bias subtraction happens before axis reversal).
Confirmed from SDL3 hidapi_switch.c source (SDL2 uses same SDL3 backend).
2026-03-16 12:00:44 -06:00
22da7bce8f
chore: add IMU diagnostic tool
...
- Add tools/read_pro_imu.py from gyrov3 branch
- Reads raw 0x30 HID reports from Switch Pro Controller / Pico
- Lazy pyhidapi import with helpful error message when missing
- Supports --list, --count, --plot, --save-prefix flags
2026-03-16 11:50:46 -06:00
d81e8f90c0
feat(bridge): add SDL sensor reading and gyro bias calibration
...
- Add initialize_controller_sensors() for SDL accel/gyro enable
- Add handle_sensor_update() with direct axis passthrough (no remapping)
- Add gyro bias calibration (200 samples, zero gyro until locked)
- Add IMU sample FIFO with pop-to-report before UART send
- Add --debug-imu, --no-imu, --gyro-scale CLI flags
2026-03-16 11:50:40 -06:00
0db04be858
feat(firmware): add IMU data structures and UART v2 parser
...
- Add SwitchImuSample struct and IMU fields to SwitchInputState
- Add fill_imu_report_data() to pack samples into imuData[36]
- Rewrite switch_pro_apply_uart_packet() for v2 with checksum validation
- Enlarge poll_uart_frames() buffer to 64 bytes for variable-length frames
- Clear imu_sample_count after each USB report send (prevent stale IMU)
2026-03-16 11:50:32 -06:00
2604ff274b
feat(uart): add v2 protocol with IMU sample support
...
- Add UART_PROTOCOL_VERSION=2, IMUSample dataclass, conversion constants
- Rewrite SwitchReport.to_bytes() for versioned v2 framing with checksum
- Add ACCEL_LSB_PER_G=4096, GYRO_LSB_PER_RAD_S=818.5, MS2_PER_G constants
- Add SENSOR_ACCEL/SENSOR_GYRO SDL type constants with fallback
- Add protocol round-trip tests (8 tests, all passing)
2026-03-16 11:50:25 -06:00
ae65251cb4
Fix controllers
2026-01-10 23:19:32 -07:00
b04a6d29ca
Add license
2025-12-14 14:47:49 -07:00
e41a1746ba
Add references
2025-12-14 14:08:03 -07:00
22cfe62c41
Add gyro branch ref
2025-12-14 14:04:28 -07:00
ef10552e19
Touch up readme, fix build.py
2025-12-14 13:31:11 -07:00
11b397df20
Add firmware and readme for building firmware
2025-12-14 13:23:20 -07:00
81f281e93f
Update readme
2025-12-14 13:10:39 -07:00
b6553fc305
Rearrange python code
2025-12-08 19:36:01 -07:00
53f07b5a6f
Add reference to GP2040-CE repo
2025-12-08 19:27:30 -07:00
ef3b08352c
Remove autotest
2025-12-08 19:20:24 -07:00
6a8bf6c27f
Add manufacturer
2025-12-06 11:53:36 -07:00
5779599000
Add build.py
2025-12-06 11:41:53 -07:00
jojomawswan
aef37123fd
Refactor
2025-12-01 13:29:04 -07:00
jojomawswan
1cb7075180
Make example work and redo some library code
2025-12-01 12:45:13 -07:00
jojomawswan
abdda5a7c4
Add pyproject.toml
2025-11-29 22:43:02 -07:00
jojomawswan
3a9f707e9b
Add docs
2025-11-29 21:51:00 -07:00
jojomawswan
c37bcc2ce4
Add swapping hotkey
2025-11-29 21:03:34 -07:00
jojomawswan
8e740d4fff
Add zeroing ability
2025-11-29 20:54:15 -07:00
80528ff39e
Make more sane search
2025-11-25 17:57:14 -07:00
5ce26f2181
Tighten serial detection for linux
2025-11-25 17:51:21 -07:00
6191333abb
Remove rust
2025-11-25 16:24:42 -07:00
ac5fc7be44
add requirements.txt
2025-11-25 11:37:09 -07:00
396d8ba33d
Refactor into lib
2025-11-25 06:23:01 -07:00