424c8feb57
chore: update README with IMU/motion controls documentation
2026-03-16 12:00:49 -06:00
a55b3786c1
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
65af2f6d5f
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
eb8994ec3b
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
4501528371
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
fa0ddcd10f
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
1a1d6db3df
Fix controllers
2026-01-10 23:19:32 -07:00
62707e419b
Add license
2025-12-14 14:47:49 -07:00
c00b096209
Add references
2025-12-14 14:08:03 -07:00
6f8c698805
Add gyro branch ref
2025-12-14 14:04:28 -07:00
e549376ee4
Touch up readme, fix build.py
2025-12-14 13:31:11 -07:00
06d702d91d
Add firmware and readme for building firmware
2025-12-14 13:23:20 -07:00
231a38cb64
Update readme
2025-12-14 13:10:39 -07:00
d08d36df82
Rearrange python code
2025-12-08 19:36:01 -07:00
7dd8e414a4
Add reference to GP2040-CE repo
2025-12-08 19:27:30 -07:00
0a8134ae15
Remove autotest
2025-12-08 19:20:24 -07:00
10dfbd3a08
Add manufacturer
2025-12-06 11:53:36 -07:00
b09e4b3397
Add build.py
2025-12-06 11:41:53 -07:00
jojomawswan
cd26ddb865
Refactor
2025-12-01 13:29:04 -07:00
jojomawswan
6720390109
Make example work and redo some library code
2025-12-01 12:45:13 -07:00
jojomawswan
5086fdaa03
Add pyproject.toml
2025-11-29 22:43:02 -07:00
jojomawswan
025dcc4341
Add docs
2025-11-29 21:51:00 -07:00
jojomawswan
c0c97aa70f
Add swapping hotkey
2025-11-29 21:03:34 -07:00
jojomawswan
703338ce58
Add zeroing ability
2025-11-29 20:54:15 -07:00
fd1095d1cf
Make more sane search
2025-11-25 17:57:14 -07:00
fba378e8e6
Tighten serial detection for linux
2025-11-25 17:51:21 -07:00
05ea1a3f91
Remove rust
2025-11-25 16:24:42 -07:00
70564d87ca
add requirements.txt
2025-11-25 11:37:09 -07:00
1bd428c45c
Refactor into lib
2025-11-25 06:23:01 -07:00
c7ef19fe23
Build with colors :)
2025-11-24 22:40:51 -07:00
32c5360544
Add GUID based selection
2025-11-23 10:08:59 -07:00
101fb1f3cb
Docs and connection
2025-11-23 09:58:07 -07:00
acdd702647
Fix hotplugging
2025-11-23 09:48:30 -07:00
38c9550359
README update
2025-11-23 09:33:08 -07:00
78201e8316
Comments
2025-11-23 09:31:43 -07:00
30aa3efc81
Refactor
2025-11-23 09:27:16 -07:00
jojomawswan
bf4e6f75ea
Make stuff work in windows
2025-11-22 18:37:54 -07:00
jojomawswan
d24cfad5dd
Types
2025-11-22 11:08:24 -07:00
a700640f9d
Add include for controllers
2025-11-22 10:12:30 -07:00
c69db9bc28
Add abxy swapping
2025-11-22 09:27:40 -07:00
282832ed06
Add hints for pro controller
2025-11-22 09:24:13 -07:00
d63a0c78b2
Uart opening warning
2025-11-22 08:22:25 -07:00
520eecbab4
Add include filter
2025-11-21 15:59:37 -07:00
b900cde25b
Add filtering
2025-11-21 15:49:39 -07:00
9105f8285b
Controller tweaks
2025-11-21 15:46:06 -07:00
92af052279
Update with docs and rename uart file
2025-11-21 15:00:17 -07:00
e8b8d6d670
Add color config
2025-11-21 13:23:43 -07:00
fc917afcd3
Make other controllers work
2025-11-21 08:11:24 -07:00
0a5cce3e80
Add hot plugging
2025-11-20 22:50:14 -07:00
a2646f6002
WORKING
2025-11-20 22:40:36 -07:00