Add GoPro client notes to AGENTS.md: Xbox mapping, QR view, sidecar IDs

This commit is contained in:
fedora-bot
2026-04-26 21:02:29 +03:00
parent a247440732
commit 6992f63c3e

View File

@@ -233,6 +233,35 @@ setInterval(() => {
4. If no beacon is received for ~3060 s, mark the device offline.
- The IP in the beacon is what the listener should use for all subsequent HTTP API calls.
## GoPro Client (`clients/gopro-scicam/`)
Flask-based USB controller for GoPro HERO12. Serves web UI on port 5000, captures download to local `captures/` with JSON sidecars.
### Xbox Controller Mapping (Browser Gamepad API)
Tested with "Microsoft X-Box 360 pad" on Linux (`/dev/input/js0`).
**Note:** Standard mapping (`gp.mapping === 'standard'`) button indices differ from X-input labels:
| Button Index | Physical Label | Action |
|--------------|----------------|--------|
| 0 | A | Capture photo |
| 1 | B | Toggle QR display overlay |
| 2 | X | Capture photo |
| 3 | Y | **Next Box** (regenerate `item_id`) |
### QR View (`--qrview`)
- Spawns a borderless Tkinter window on DP-1 (`1920x1080+0+0`)
- Displays the current `item_id` as a maximized QR code
- Polls for UUID changes every 500ms and redraws with green flash
- Left-click or `N` key = regenerate box ID
- Right-click or `Q`/`Escape` = close window
### Sidecar ID Model
- `item_id`: single point of truth — the QR visible in the photo (either detected from image or current box ID fallback)
- `capture_id`: unique UUID generated per individual photo/video
## Future Roadmap (do not break)
- **Database sync** is planned. It must be non-destructive to images/sidecars.