Hi, I'm getting a crash when discarding an advertising packet.
Roughly what I do is:
// Setup advertiser_instance_init(_advertiser, NULL, _buffer, MESH_ADVERTISER_BUF_SIZE); advertiser_address_set(_advertiser, &address); advertiser_interval_set(_advertiser, intervalMs); advertiser_tx_power_set(_advertiser, txPower); advertiser_enable(_advertiser); // Advertise packet _advPacket = advertiser_packet_alloc(_advertiser, 7 + ibeacon->size()); _advPacket->config.repeats = ADVERTISER_REPEAT_INFINITE; advertiser_packet_send(_advertiser, _advPacket); // Then half a second later, change the packet. advertiser_packet_discard(_advertiser, _advPacket); _advPacket = advertiser_packet_alloc(_advertiser, 7 + ibeacon->size()); _advPacket->config.repeats = ADVERTISER_REPEAT_INFINITE; advertiser_packet_send(_advertiser, _advPacket);
Which crashes at advertiser_packet_discard().
GDB trace:
#1 0x0004dc1c in mesh_assertion_handler (pc=<optimized out>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/examples/common/src/assertion_handler_weak.c:54 #2 0x00043ac6 in packet_buffer_free (p_buffer=0x20004278 <MeshAdvertiser::init()::advertiser+92>, p_packet=0x20008330) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/core/src/packet_buffer.c:396 #3 0x000474c6 in advertiser_packet_discard (p_adv=<optimized out>, p_packet=<optimized out>) at /home/vliedel/dev/bluenet-workspace-cmake/bluenet/tools/mesh_sdk/mesh/bearer/src/advertiser.c:378
It looks like packet_buffer_pop() should've been called.
But the mesh advertiser never calls that, as the packet is configured to repeat infinite.
So what would i need to do, in order to change the advertised packet?
Using:
nRF52832
SD 132 6.1.1
SDK 15.3.0
Mesh SDK 3.2.0.