Fixed-scope STM32 firmware patch sprint

FreeJoy Consumer Keys Firmware Sprint

A $100 prepared firmware patch offer for the open paid-help request asking for STM32 USB keyboard consumer keys. The patch is local and proof-gated; no upstream comment, email, PR, or patch delivery has been sent.

Prepared patch

Report ID: REPORT_ID_CONSUMER_KEYS

Usages: mute, volume up/down, play/pause, next, previous, stop

Prototype mapping: logical buttons 120-126

Build: toolchain unavailable locally, not hardware-flashed.

Prepared firmware files7
Primary sprint price$100
Confirmed money$0

Concrete Deliverable

  1. Add a Consumer Control HID report collection to the FreeJoy joystick HID descriptor.
  2. Add a compact report helper for mute, volume up, volume down, play/pause, next track, previous track, and stop.
  3. Wire consumer key changes into the endpoint-1 send path without posting or delivering upstream.
  4. Document the prototype logical-button mapping and remaining configurator/hardware gates.

Implementation Evidence

FilePrepared change
application/Inc/common_defines.hAdds REPORT_ID_CONSUMER_KEYS.
application/Src/usb_hw.cAdds dynamic Consumer Control descriptor bytes and updates the HID report length.
application/Src/consumer_keys.cBuilds the 2-byte consumer key report from logical buttons 120-126.
application/Src/stm32f10x_it.cSends the consumer key report on state change, otherwise sends normal joystick data.
Verification log
FreeJoy consumer-control HID patch verification
Generated: 2026-06-20 JST

Source issue:
  URL: https://github.com/FreeJoy-Team/FreeJoy/issues/249
  Title: Adding support for full keyboard $
  State: OPEN
  Comments: 0
  Updated: 2025-03-24T11:47:44Z

Local checks:
  git diff --check: passed
  static_descriptor_tokens: 132
  declared JoystickHID_SIZ_REPORT_DESC: 132
  patch file includes new consumer_keys.h: true
  patch file includes new consumer_keys.c: true
  patch file includes armgcc/makefile.app entry: true
  patch file includes REPORT_ID_CONSUMER_KEYS: true
  patch file includes Volume Increment usage: true

Build attempt:
  Command: make -C armgcc app
  Result: failed before compiling project source because arm-none-eabi-gcc is not installed.
  Key output:
    make -f makefile.app
    mkdir -p build/app
    arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb ... ../application/Src/analog.c -o build/app/analog.o
    /bin/sh: arm-none-eabi-gcc: command not found
    make[1]: *** [build/app/analog.o] Error 127
    make: *** [app] Error 2

Money boundary:
  Confirmed money: $0
  This patch is prepared work only. Count money only after real scope acceptance, seller-owned payment proof, delivery proof, and posted/released/payable/cleared funds.

Exact Claim Steps

  1. Open the source issue and confirm it is still open.
  2. Review the local patch and verification log on the shared machine.
  3. Add only your seller-owned checkout, invoice, marketplace order, funded milestone, or payment-request URL.
  4. Use the draft response only after you approve posting or sending it.
  5. Require the exact acceptance sentence before payment.
  6. Deliver the patch only after external payment proof or after you explicitly decide to publish it unpaid.
  7. Count $0 until payment is posted, released, payable, cleared, credited, or otherwise externally verifiable.

Exact Acceptance Before Payment

I accept the FreeJoy Consumer Keys Firmware Sprint fixed-scope terms at $100. I understand work starts only after seller-owned external payment proof exists; I will provide only public or buyer-authorized firmware requirements; the deliverable is limited to the prepared consumer-control HID report descriptor, report helper, endpoint send wiring, apply notes, and verification notes; and STM32 hardware flashing, host OS certification, configurator UI/protocol integration, full keyboard matrix support, private device data, public posting, pull requests, or ongoing revisions are not included unless separately agreed before payment.
open_paid_help_request_prepared_firmware_patch

Adding support for full keyboard $

Requester says they would be happy to pay for STM32 USB keyboard support with consumer keys.

Draft response not posted

I prepared a firmware-side FreeJoy consumer-control HID patch for media keys. It adds a new consumer-keys report ID, expands the joystick HID descriptor to include a Consumer Control collection for mute, volume up/down, play/pause, next, previous, and stop, adds a compact report helper, wires it into the TIM2 endpoint-1 send path on state changes, and includes makefile wiring. I can hand over the patch or adapt it to a branch after fixed-scope acceptance and external payment proof; hardware flashing/configurator integration would need separate scope.

Draft response prepared only. External comments, emails, direct messages, pull requests, or patch delivery require explicit send approval.

Money And Posting Boundary

SignalCounted as money?
Prepared patch, notes, page, CSV, draft response, or IndexNow resultNo. Counts $0.
Issue says requester would be happy to payNo. Requires accepted scope and external payment proof.
External payment posted, released, payable, or cleared after delivery proofYes. Count only verified net amount after fees/refunds.