Open
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)