Commit Graph
32 Commits
Author SHA1 Message Date
MarcelineVPQandClaude Opus 4.7 1b1944c006 feat(remap): on-dongle button remapping over 0xF6/0xF7
16-entry source→target table in its own flash sector (-3, magic DS5\x03),
identity default, 0xFF = disabled. Applied to the OUTGOING host report copy
only — raw interrupt_in_data (OLED screens + PS+Mute reboot combo) stays
physical. Edited via the existing 0xF6/0xF7 vendor reports with a hardened
RM+version frame (no HID-descriptor change, so Windows enumeration is
unaffected) plus a revision counter the host polls to confirm a write.
Apply logic + button set ported from SundayMoments/DS5_Bridge (credit).

scripts/remap_test.py exercises the path over /dev/hidraw without the web
tool. Verified on hardware: swap applied, read back, survived reboot.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 10:42:29 -06:00
MarcelineVPQandClaude Opus 4.7 a7835ac156 chore(version): single source of truth — release tag → FIRMWARE_VERSION macro
Audit revealed the Status screen hardcoded "v0.6.0" while v0.6.1 and
v0.6.2 had already shipped — the version string was scattered and
fell behind every release. Centralizing:

- CMakeLists.txt: target_compile_definitions adds
  FIRMWARE_VERSION="${VERSION}" so the existing -DVERSION=$tag flag
  passed by release.yml propagates into C++ as a compile-time macro.
  Local builds without -DVERSION get "dev" — a deliberate "this is
  not a release build" tell on the Status header.
- src/oled.cpp render_screen() now renders
  "DS5 Bridge " FIRMWARE_VERSION via string-literal concatenation. The
  only place a version literal exists in source is now the macro at
  the link layer.
- CLAUDE.md gets a "Versioning — single source of truth" section
  documenting the release ritual (CHANGELOG bump → tag → push → gh
  release create → CI builds + propagates) and naming the
  WEB_REPO_DISPATCH_PAT follow-up that's still pending.

Web preview is updated separately to read firmware-latest.json at
runtime — same single source of truth, different distribution path
(the GitHub API).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 22:17:46 -06:00
5425b21f00 feat(cpu): smoothed RP2350 CPU/Clock telemetry + 0xfc HID report
Add cpu_temp_raw_smoothed() (cmd.cpp/cmd.h): 256-sample average over a
slow EMA (alpha=0.15) so the RP2350 on-die temperature converges to the
true value instead of chasing per-sample 12-bit ADC noise (~1 LSB =
0.47 C). Single source of truth, ADC initialised in one place.

Also export CPU/Clock telemetry on HID feature report 0xfc (set_khz,
cached real_khz, vreg code, ADC ch4 raw). The handler is dormant: live
read over WebHID is not feasible (Chrome requires the report declared
in the HID descriptor, and declaring the OLED Edition vendor reports
breaks DualSense enumeration on Windows). It is harmless and left for a
possible future non-WebHID consumer. Link hardware_adc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 07:31:13 -06:00
MarcelineVPQandClaude Opus 4.7 4b6a72b70a rebase: Phase B — trivial files for the v0.6.0 base
Build-system, config, usb, and CI wiring on top of upstream's
v0.6.0-hotfix tree. Build will still fail until Phase C+D land bt.h
accessors that oled.cpp references; that's expected mid-rebase.

CMakeLists.txt: add src/oled.cpp + src/slots.cpp to add_executable,
link hardware_spi, restore OUTPUT_NAME ds5-bridge-oled.

src/config.h: append the 4 OLED Edition Config_body fields
(current_slot + auto_haptics_enable/gain/lowpass). Preserves
upstream's field order for the first 8 fields.

src/config.cpp:
- speaker_volume validity default -100 dB → 0 dB (footgun fix)
- 4 new validity guards for the appended fields with sensible
  defaults (Fallback / 100 % / 160 Hz / slot 0)
- config_default() impl (was declared in upstream's config.h since
  v0.5.4 but never defined; the OLED Edition's "Reset to defaults"
  Settings item calls it)

src/usb.cpp: drop the UAC1 SET_CUR Volume → flash-config sync that
let PipeWire/Pulse silently override the user's saved Spk Vol on
every device reconnect. Borrowed from loteran/DS5Dongle commit
03fa1e4.

src/usb_descriptors.cpp: restore iSerialNumber = STRID_SERIAL.
Upstream's commit e79c762 zeroed it to work around SpecialK (#32),
but that broke Windows device identity (#100) — users lost
per-device volume / app preferences when moving USB ports. The
OLED Edition prioritizes Windows device-identity stability for
the broader user base over SpecialK compat for a narrower one.

.github/workflows/{build,release}.yml: artifact filenames use
ds5-bridge-oled.uf2 (and -debug / -picow variants) per the
OUTPUT_NAME rebrand.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 07:53:41 -06:00
awalolandGitHub 154e3a6355 Merge branch 'master' into refactor/state_mgr 2026-05-16 14:06:01 +08:00
awalol 7bbe37ba1c refactor: unified controller state by state_mgr 2026-05-15 20:07:12 +08:00
awalol 58909831e1 feat: add 0xf8 feature report to get firmware version and add config version 2026-05-14 20:28:22 +08:00
Antti Pohjola 9cf52a0665 bugfix: Pico W build. 2026-05-13 14:04:56 +03:00
Antti Pohjola 5e7da1779e feat: add DISABLE_SPEAKER_PROC build flag 2026-05-13 13:15:09 +03:00
awalol bb1c8f4a97 add Log Verbose option 2026-05-09 14:22:46 +08:00
awalol be01dc439e add usb serial for debug firmware
Code by gpt5.5-xhigh
2026-05-08 13:54:07 +08:00
awalol 351d71dfe1 cmd: controller mode switch 2026-05-05 15:19:22 +08:00
awalol 0d32db4d9f cmd: poll rate switch 2026-05-05 13:00:28 +08:00
awalol fb8624b61b feat: config manager 2026-05-05 01:17:15 +08:00
awalol d1d54eaa41 add watchdog 2026-04-30 14:25:31 +08:00
awalol a2e3a33f00 bump version 0.5.3 2026-04-29 21:47:22 +08:00
awalol 93c884be7e fix: improve DSE compatibility. Thanks @fuhuasxflwb 2026-04-28 23:48:09 +08:00
awalol c2703b2525 bump version 2026-04-28 14:25:11 +08:00
awalol d789ce5a3f update CMakeLists.txt 2026-04-27 18:07:56 +08:00
awalol 372e44a85d optimize overclocking. Thanks JunHoo(@1220951120) 2026-04-27 17:41:53 +08:00
awalol 6eaeb32e91 bump version 2026-04-26 15:15:06 +08:00
awalol fe1c1cd6a5 fix: speaker noise. Thanks Junhoo (@1220951120) 2026-04-26 14:07:05 +08:00
awalol 2fb3c2f90b speaker work 2026-04-26 11:34:34 +08:00
awalol 1551ff6325 DSE compile options 2026-04-14 22:39:50 +08:00
awalol ed4f7ac8e6 修复静默时间bug 增加静默时间到30分钟 2026-04-04 00:44:35 +08:00
awalol 845656aedd feat:adjust gain in speaker volume. add led and auto-disconnect toggle in mute. 2026-03-22 00:33:30 +08:00
awalol 4aa1646f0a add WDL submodule 2026-03-15 20:20:45 +08:00
awalol 4f1191f316 bump version 2026-03-15 18:37:02 +08:00
awalol 5251ae1f5b fix gyro 2026-03-15 13:35:45 +08:00
awalol 51157ce997 我也不知道改了什么 2026-03-14 21:37:47 +08:00
awalol 0fd9c2bdd3 fix reconnect 2026-03-10 16:14:05 +08:00
awalol 9a929530d9 First Commit 2026-03-05 16:21:25 +08:00