Skip to content

v0.7.5

Choose a tag to compare

@github-actions github-actions released this 06 Sep 13:16
· 84 commits to master since this release
a02be5d

It's been a while since v0.7.3, and a lot has quietly gone in. This release is
mostly about foundations — the kind of plumbing that isn't exciting on its
own but is what everything coming next is built on. If you've been running
master, very little here is new to you. If you've been on the last tagged
release, quite a lot is.

The two things actually worth plugging in for:

  • Feature Reports — a proper two-way HID channel. Your host app can now push
    configuration to the gamepad (LED colour, rumble strength, profile switches,
    whatever you want to define) instead of only reading buttons and axes from
    it. Turn it on with setEnableFeatureReport(true), pick a buffer length, and
    poll isFeatureReceived(). There's a Python script in
    examples/TestFeatureReports/ you can run against a real device in about a
    minute.
  • Nordic UART Service — a plain serial pipe over BLE, alongside the gamepad.
    Great for logging, diagnostics, or a companion app that needs to talk to the
    device without pretending to be a HID host. beginNUS(),
    sendDataOverNUS(), setNUSDataReceivedCallback(). The new
    Diagnostics.ino example streams live device state over it.

Smaller things you might notice: sliders now sit in their own HID collections
(some games will see the axes differently — remap if needed), you can dump the
generated HID descriptor with -DBLE_GAMEPAD_DEBUG=1, and the whole codebase
has had a formatting and warnings cleanup so it builds quietly on current
toolchains.

Behind the scenes there's now a real CI setup: every board (S3/C3/C6) builds on
every PR, sketch sizes are tracked over time, and there's hardware-in-the-loop
testing running against actual silicon. Releases are automated end to end now
too.

Take it for a spin

  1. Update the library (Arduino Library Manager / PlatformIO) to 0.7.5.
  2. Flash examples/Diagnostics/Diagnostics.ino, pair, and watch the device
    report its own state over the UART service.
  3. Try examples/TestFeatureReports/ and send a feature report from your
    computer to the board.
  4. Rebuild an existing sketch of yours — it should just work, and build cleaner
    than before.

Feedback very welcome

This is deliberately a base release. New features are coming soon — several
big ones are built directly on top of Feature Reports and NUS. If something
here doesn't behave, the API feels awkward, or you have a use case you want the
foundation to support, please open an issue (there are templates now) or start
a discussion. Early feedback on these primitives is genuinely useful right now,
while they're still easy to change.

What's Changed

  • Add comment back of readable if statement by @LeeNX in #281
  • Cast char* to const char*, resolve warning: ISO C++ by @LeeNX in #282
  • Add debug HID Report Descriptor as a build env 'BLE_GAMEPAD_DEBUG' by @LeeNX in #293
  • Bump actions/checkout from 4 to 5 by @dependabot[bot] in #289
  • For set functions - Cast char* to const char*, resolve warning: ISO C++ by @LeeNX in #290
  • Fix Fightstick.ino state comparison logic by @tachikoma0023 in #299
  • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #302
  • chore(ci): updates to add Sketches report size delta to PR workflows by @LeeNX in #296
  • chore(ci): remove comment-on-pr, as it does not exist by @LeeNX in #303
  • chore(ci): split PR report update into a workflow by @LeeNX in #304
  • Bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #308
  • Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #307
  • Put sliders into their own logical collections by @pkendall64 in #318
  • Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #316
  • Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #315
  • chore(ci): improvements, fix the resize and build checks by @LeeNX in #327
  • Bump actions/setup-python from 6 to 7 by @dependabot[bot] in #328
  • Bump actions/checkout from 6 to 7 by @dependabot[bot] in #324
  • chore(ci): fix by removing Diagnostics.ino by @LeeNX in #330
  • chore(ci): automate releases and fix monthly size reporting by @LeeNX in #334
  • Extend the NUS services for external connection, plus add Diagnostics.ino example by @LeeNX in #329
  • chore(ci): build a board matrix (S3/C3/C6) and add per-run memory summary by @LeeNX in #335
  • chore: add issue templates by @LeeNX in #336
  • Add HID Feature Reports by @LeeNX in #283
  • chore(ci): fix report_size_summary.py by not breaking on new or missing example sketches by @LeeNX in #338
  • Add GattVsHid.md, document battery level via upower in LinuxHIDTesting.md by @LeeNX in #339
  • chore(ci): skip new sketch deltas, plus ReadME updates by @LeeNX in #340
  • Add standard linting, CI and correction to bring balance of code to this standard by @LeeNX in #341
  • fix: silence -Wreorder and -Wdeprecated-declarations warnings by @lemmingDev in #345
  • Add hardware-in-the-loop testing for Linux by @LeeNX in #347
  • Add self contained basic test firmware by @LeeNX in #343
  • HilTesting.md: step-by-step for creating HIL_DISPATCH_TOKEN by @LeeNX in #349

New Contributors

Full Changelog: v0.7.3...v0.7.5