Closed
Description
I have quite a complex application which is low on memory. From time to time this application scans for surrounding bluetooth devices. As the whole BLEScan-stuff consumes plenty of RAM, after such a scan everything is deinitialised to save the related memory:
BLEDevice::init("");
pBLEScan = BLEDevice::getScan(); //create new scan
if (pBLEScan)
{
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true); //set passive scan; active scan uses more power, but get results faster
pBLEScan->setInterval(100);
pBLEScan->setWindow(99); // less or equal setInterval value
BLEScanResults foundDevices = pBLEScan->start(5,false);
pBLEScan->stop();
pBLEScan->clearResults(); // delete results fromBLEScan buffer to release memory
}
BLEDevice::deinit(true);
My problem: this works well for the very first call. On the second and all following calls, no more bluetooth-devices are found, means BLEDevice::deinit() or BLEDevice::init() seems to be incomplete and probably leaves some variables back in a state, which avoids further successful scanning.
So my question: how can I reinitialise the whole BLE-stuff correctly in order to successfully scan the devices more than once?
Thanks!
Metadata
Metadata
Assignees
Labels
No labels