P0-B1 spawn infrastructure from USB-IMPLEMENTATION-PLAN.md v2.
Add two new public functions to usb-core::spawn:
class_driver_for_usb_class(class, subclass, protocol) -> Option<&str>
Maps USB class codes to driver binary paths:
0x03 -> /usr/bin/usbhidd (HID)
0x08 -> /usr/bin/usbscsid (Mass Storage)
0x09 -> /usr/bin/usbhubd (Hub)
spawn_class_driver_for_port(...args...)
Spawns the correct class daemon with the right argv layout:
- HID/Hub: <scheme> <port> <interface_num>
- Storage: <scheme> <port> <protocol_byte>
The existing spawn_usb_driver is preserved for backward compatibility.
Both new functions have no_std stubs so the crate still compiles without
the std feature.
Next: wire the spawn call into ehcid after device enumeration (P0-B1
call site) + add xhcid-compatible scheme paths (descriptors/request/
endpoints/attach) to ehcid's scheme handler so the spawned daemons can
open XhciClientHandle successfully.
- Cookbook Cargo.toml: 0.1.0 → 0.2.5
- All 61 in-house crate Cargo.toml versions: 0.2.4 → 0.2.5
- os-release.in: fix URLs from github.com to gitea.redbearos.org
- sync-versions.sh --check passes with zero drift
The OS version is derived from the git branch name at build time.
Building on branch 0.2.5 produces os-release with VERSION_ID=0.2.5.
Add guard-recipes.sh with four modes:
- --verify: check all local/recipes have correct symlinks into recipes/
- --fix: repair broken symlinks (run before builds)
- --save-all: snapshot all recipe.toml into local/recipes/
- --restore: recreate all symlinks from local/recipes/ (run after sync-upstream)
Wired into apply-patches.sh (post-patch) and sync-upstream.sh (post-sync).
This prevents the build system from deleting recipe files during
cargo cook, make distclean, or upstream source refresh.