I've uploaded a new set of images with a fixup for the broken callback support in my latest images.
My espnow-g20-v1.19.1 branch is now updated with a fix for the callback api. Updated docs at: Callback Methods. I've also added tests for the callback apis so hopefully I won't overlook breaking these apis again .
Explanation: After migrating the recv() and irecv() methods from the C module (_espnow) to the python module (espnow.py) it was no longer possible to readily support the specific .irq() api requested by Damien in the C module. I have moved the .irq() method to the espnow.py module and renamed the low-level callback setting method in the C module to on_recv(). espnow.py:ESPNow.irq() creates a callback wrapper to match the requested api and invokes the low-level on_recv() method to set the callback (see espnow.py for the details).
In case it's not obvious, the incoming message is read out of the buffers before invoking the .irq() callbacks and the message is passed as an argument. For on_recv() callbacks, the incoming message is NOT automatically read out of the buffers before invoking the callback. This is useful if you just want to use the callback to signal your app that data is available or if you want more control over how the msg is read.