I am trying to connect two ESP32 via Bluetooth, while one is serving as the server and one as a client. Connecting the client to the server works just fine and discovering the characteristic works too. But when I try to register the characteristic for notify, I get an error message.
The rest of my code seems to work just fine, because if I don't register the characteristic for notifying, I don't have any problems.
if (pRemoteCharacteristic->canNotify()) {
Serial.println("Setting up notify");
pRemoteCharacteristic->registerForNotify(notifyCallback);
}
I always get the following error message:
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d495f PS : 0x00060330 A0 : 0x800d4154 A1 : 0x3ffca250
A2 : 0x00000000 A3 : 0x3ffca29e A4 : 0x00000002 A5 : 0x00000000
A6 : 0x3ffe1ac8 A7 : 0x3f01a2e0 A8 : 0x800d3e4c A9 : 0x3ffca200
A10 : 0x3ffca24c A11 : 0xaab8b50c A12 : 0x3ffc60e4 A13 : 0xaab8b50c
A14 : 0x3ffca200 A15 : 0xff000000 SAR : 0x00000008 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000030 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Backtrace: 0x400d495f:0x3ffca250 0x400d4151:0x3ffca280 0x400d1ba5:0x3ffca2e0 0x400d1c42:0x3ffca350 0x400d86bd:0x3ffca390 0x40090461:0x3ffca3b0
The BLE implementation uses in some parts string (small s) functions and uses this methods like
msg += ab.toString();
to append them.
On Avr microcontrollers this leads to heap fragmentation, causing unexpected results like crash.The notification (look in the corresponding BLERemoteCharacteristic.h and cpp file) builds messages this way. (version till 1.0.4 at point of writing the latest aval.) Refer this issue to the github repo as a possible bug.
User contributions licensed under CC BY-SA 3.0