-
-
Notifications
You must be signed in to change notification settings - Fork 7k
Open
Labels
Component: CoreRelated to the code for the standard Arduino APIRelated to the code for the standard Arduino APILibrary: OtherArduino libraries that don't have their own labelArduino libraries that don't have their own labelLibrary: WireThe Wire Arduino libraryThe Wire Arduino libraryfeature requestA request to make an enhancement (not a bug fix)A request to make an enhancement (not a bug fix)
Description
On Arduino, you'll tipically declare a new callback on the main file for each thing you are listening on.
It's very difficult to write generic, reusable libraries that attach to interruptions or other callbacks.
In C/C++ world, we usually specify an extra void*
parameter when registering the callback, where the listener can store any context necessary.
I suggest we adopt this on all Arduino callbacks: attachInterrupt()
, Serial.serialEvent()
, Wire.OnReceive()
, etc
I've already create #4519, which upgrades attachInterrupt()
.
Keep in mind that the changes can be done in a backwars-compatible way, and the impact in performance, memory and flash storage is quite low (But not zero)
Metadata
Metadata
Assignees
Labels
Component: CoreRelated to the code for the standard Arduino APIRelated to the code for the standard Arduino APILibrary: OtherArduino libraries that don't have their own labelArduino libraries that don't have their own labelLibrary: WireThe Wire Arduino libraryThe Wire Arduino libraryfeature requestA request to make an enhancement (not a bug fix)A request to make an enhancement (not a bug fix)