initial commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/** Example of continuous scanning for BLE advertisements.
|
||||
* This example will scan forever while consuming as few resources as possible
|
||||
* and report all advertisments on the serial monitor.
|
||||
*
|
||||
* Created: on January 31 2021
|
||||
* Author: H2zero
|
||||
*
|
||||
*/
|
||||
|
||||
#include "NimBLEDevice.h"
|
||||
|
||||
NimBLEScan* pBLEScan;
|
||||
|
||||
class MyAdvertisedDeviceCallbacks: public NimBLEAdvertisedDeviceCallbacks {
|
||||
void onResult(NimBLEAdvertisedDevice* advertisedDevice) {
|
||||
Serial.printf("Advertised Device: %s \n", advertisedDevice->toString().c_str());
|
||||
}
|
||||
};
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.println("Scanning...");
|
||||
|
||||
/** *Optional* Sets the filtering mode used by the scanner in the BLE controller.
|
||||
*
|
||||
* Can be one of:
|
||||
* CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE (0) (default)
|
||||
* Filter by device address only, advertisements from the same address will be reported only once.
|
||||
*
|
||||
* CONFIG_BTDM_SCAN_DUPL_TYPE_DATA (1)
|
||||
* Filter by data only, advertisements with the same data will only be reported once,
|
||||
* even from different addresses.
|
||||
*
|
||||
* CONFIG_BTDM_SCAN_DUPL_TYPE_DATA_DEVICE (2)
|
||||
* Filter by address and data, advertisements from the same address will be reported only once,
|
||||
* except if the data in the advertisement has changed, then it will be reported again.
|
||||
*
|
||||
* Can only be used BEFORE calling NimBLEDevice::init.
|
||||
*/
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
|
||||
/** *Optional* Sets the scan filter cache size in the BLE controller.
|
||||
* When the number of duplicate advertisements seen by the controller
|
||||
* reaches this value it will clear the cache and start reporting previously
|
||||
* seen devices. The larger this number, the longer time between repeated
|
||||
* device reports. Range 10 - 1000. (default 20)
|
||||
*
|
||||
* Can only be used BEFORE calling NimBLEDevice::init.
|
||||
*/
|
||||
NimBLEDevice::setScanDuplicateCacheSize(200);
|
||||
|
||||
NimBLEDevice::init("");
|
||||
|
||||
pBLEScan = NimBLEDevice::getScan(); //create new scan
|
||||
// Set the callback for when devices are discovered, no duplicates.
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks(), false);
|
||||
pBLEScan->setActiveScan(true); // Set active scanning, this will get more data from the advertiser.
|
||||
pBLEScan->setInterval(97); // How often the scan occurs / switches channels; in milliseconds,
|
||||
pBLEScan->setWindow(37); // How long to scan during the interval; in milliseconds.
|
||||
pBLEScan->setMaxResults(0); // do not store the scan results, use callback only.
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// If an error occurs that stops the scan, it will be restarted here.
|
||||
if(pBLEScan->isScanning() == false) {
|
||||
// Start scan with: duration = 0 seconds(forever), no scan end callback, not a continuation of a previous scan.
|
||||
pBLEScan->start(0, nullptr, false);
|
||||
}
|
||||
|
||||
delay(2000);
|
||||
}
|
||||
Reference in New Issue
Block a user