1 2#include <BTstack.h> 3#include <SPI.h> 4 5/* EXAMPLE_START(iBeaconScanner): iBeacon Scanner 6 * 7 * @section Setup 8 * 9 * @text After BTstack.setup(), BTstack is configured to call 10 * advertisementCallback whenever an Advertisement was received. 11 * Then, a device discovery is started 12 */ 13 14/* LISTING_START(iBeaconSetup): iBeacon Scanner Setup */ 15void setup(void){ 16 Serial.begin(9600); 17 BTstack.setup(); 18 BTstack.setBLEAdvertisementCallback(advertisementCallback); 19 BTstack.bleStartScanning(); 20} 21/* LISTING_END(iBeaconSetup): iBeacon Scanner Setup */ 22 23void loop(void){ 24 BTstack.loop(); 25} 26 27/* 28 * @section Advertisment Callback 29 * 30 * @text Whenever an Advertisement is received, isIBeacon() checks if 31 * it contains an iBeacon. If yes, the Major ID, Minor ID, and UUID 32 * is printed. 33 * If it's not an iBeacon, only the BD_ADDR and the received signal strength 34 * (RSSI) is shown. 35 */ 36/* LISTING_START(iBeaconCallback): iBeacon Scanner Callback */ 37void advertisementCallback(BLEAdvertisement *adv) { 38 if (adv->isIBeacon()) { 39 Serial.print("iBeacon found "); 40 Serial.print(adv->getBdAddr()->getAddressString()); 41 Serial.print(", RSSI "); 42 Serial.print(adv->getRssi()); 43 Serial.print(", UUID "); 44 Serial.print(adv->getIBeaconUUID()->getUuidString()); 45 Serial.print(", MajorID "); 46 Serial.print(adv->getIBeaconMajorID()); 47 Serial.print(", MinorID "); 48 Serial.print(adv->getIBecaonMinorID()); 49 Serial.print(", Measured Power "); 50 Serial.println(adv->getiBeaconMeasuredPower()); 51 } else { 52 Serial.print("Device discovered: "); 53 Serial.print(adv->getBdAddr()->getAddressString()); 54 Serial.print(", RSSI "); 55 Serial.println(adv->getRssi()); 56 } 57} 58/* LISTING_END(iBeaconCallback): iBeacon Scanner Callback */ 59 60