xref: /btstack/port/arduino/examples/iBeaconScanner/iBeaconScanner.ino (revision 16ece13520cb8efcf94cb63eab58a3eda87f40a2)
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