Skip to content

cores: arduino: zephyrCommon: rework tone slot handling and timer lifecycle#176

Open
soburi wants to merge 1 commit intozephyrproject-rtos:nextfrom
soburi:rework_tone
Open

cores: arduino: zephyrCommon: rework tone slot handling and timer lifecycle#176
soburi wants to merge 1 commit intozephyrproject-rtos:nextfrom
soburi:rework_tone

Conversation

@soburi
Copy link
Copy Markdown
Member

@soburi soburi commented Apr 17, 2026

Rework tone/noTone internals to better match Arduino behavior while making
concurrent tone usage configurable and safer.

  • Add CONFIG_ARDUINO_MAX_TONES (default: -1).
  • Negative values fall back to the digital pin count from devicetree.
  • Replace per-pin tone timer arrays with slot-based pin_timer entries.
  • Remove the timeout companion timer and finish finite tones by counting
    remaining toggles in tone_expiry_cb().

@soburi soburi changed the title cores: arduino: zephyrCommon: rework tone slot handling and timer lif… cores: arduino: zephyrCommon: rework tone slot handling and timer lifecycle Apr 17, 2026
@soburi soburi marked this pull request as ready for review April 17, 2026 13:18
Copilot AI review requested due to automatic review settings April 17, 2026 13:18
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reworks the Arduino tone() / noTone() implementation for the Zephyr-based core to better match Arduino behavior and make concurrent tone usage configurable and safer.

Changes:

  • Introduces slot-based tone handling (via pin_timer entries) instead of per-pin timer arrays, plus a configuration mutex to serialize tone configuration.
  • Reworks finite-tone completion to be handled by counting remaining toggles directly in tone_expiry_cb() (removing the need for a companion timeout timer).
  • Updates CONFIG_ARDUINO_MAX_TONES help text and removes the USE_ARDUINO_API_RUST_IMPLEMENTATION Kconfig option.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
cores/arduino/zephyrCommon.cpp Implements slot-based tone timers, adds mutex-guarded timer lifecycle, and updates the expiry callback logic.
Kconfig Adjusts ARDUINO_MAX_TONES help text and removes a Rust-core selection config symbol.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread cores/arduino/zephyrCommon.cpp Outdated
Comment thread cores/arduino/zephyrCommon.cpp
Comment thread Kconfig
Comment thread cores/arduino/zephyrCommon.cpp
@soburi soburi marked this pull request as draft April 17, 2026 21:14
…ecycle

Rework tone/noTone internals to better match Arduino behavior while making
concurrent tone usage configurable and safer.

- Add CONFIG_ARDUINO_MAX_TONES (default: -1).
- Negative values fall back to the digital pin count from devicetree.
- Replace per-pin tone timer arrays with slot-based pin_timer entries.
- Remove the timeout companion timer and finish finite tones by counting
  remaining toggles in tone_expiry_cb().

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
@soburi soburi marked this pull request as ready for review April 18, 2026 00:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants