Skip to content

v2.2.0

Choose a tag to compare

@ramseymcgrath ramseymcgrath released this 19 Feb 07:42
· 7 commits to master since this release
ebcc3bf
Feather bridge v2 (#15)

* ..

* Improved core1/core0 behavior

* cleanup

* improve protocol

* WIP: bridge protocol improvements

Current work on feather-bridge-v2 before merging fix-core-contention.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Remove obsolete protocol_luts files

These text-based protocol lookup tables are no longer needed after
switching to binary fast commands. The fast_commands.h provides
inline packet builders that are much faster.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix build: remove obsolete bridge protocol conversion

Core1 translator now outputs fast command packets directly,
no conversion needed. Removed incorrect bridge_build_mouse_move
call that was referencing deleted bridge_protocol.h.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Add missing fast command definitions and fix build

After merging fix-core-contention, added all missing:
- Fast command IDs (FAST_CMD_*)
- Fast command struct definitions (fast_cmd_*_t)
- Bridge protocol compatibility defines
- Fixed humanization mode references (LOW/MEDIUM/HIGH → MICRO/FULL)
- Unified KEY_PRESS and KEY_COMBO handlers

Both bridge and main KMBox firmware now build successfully.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix humanization mode change lockup

Increased flash_safe_execute timeout from 500ms to 2000ms.
Core1 USB host operations can be intensive, requiring more
time to safely pause for flash writes.

The 500ms timeout was too short and caused apparent lockups
when changing humanization modes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ..

* ..

* ..

* Add Xbox controller passthrough with input injection

Implements Console Mode: detects Xbox GIP controllers on the host port,
passes through all traffic (including RSA auth) to the console on the
device port, and allows gamepad input injection via serial commands.

New files:
- xbox_gip.h: GIP protocol definitions, ring buffers, gamepad state
- xbox_host.c/h: TinyUSB custom host driver (Core 1)
- xbox_device.c/h: TinyUSB custom device class (Core 0)

Key design decisions:
- Cross-core auth proxy via spinlock-protected ring buffers
- Input merge: buttons OR (additive), sticks/triggers replace (absolute)
- Auth completion detected when input reports arrive post-challenge
- USB re-enumeration on controller unplug for clean mode transitions
- Hot path functions in RAM (__not_in_flash_func) to avoid XIP misses
- Lockless fast-path on queue empty checks to reduce spinlock contention
- Bitmask queue indexing (& instead of %) for single-cycle wrap

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ..

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>