diff options
Diffstat (limited to 'arduino/libraries/Bluefruit52Lib/examples/Peripheral/beacon/beacon.ino')
-rwxr-xr-x | arduino/libraries/Bluefruit52Lib/examples/Peripheral/beacon/beacon.ino | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/arduino/libraries/Bluefruit52Lib/examples/Peripheral/beacon/beacon.ino b/arduino/libraries/Bluefruit52Lib/examples/Peripheral/beacon/beacon.ino new file mode 100755 index 0000000..5897eb8 --- /dev/null +++ b/arduino/libraries/Bluefruit52Lib/examples/Peripheral/beacon/beacon.ino @@ -0,0 +1,93 @@ +/********************************************************************* + This is an example for our nRF52 based Bluefruit LE modules + + Pick one up today in the adafruit shop! + + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + + MIT license, check LICENSE for more information + All text above, and the splash screen below must be included in + any redistribution +*********************************************************************/ +#include <bluefruit.h> + +// Beacon uses the Manufacturer Specific Data field in the advertising +// packet, which means you must provide a valid Manufacturer ID. Update +// the field below to an appropriate value. For a list of valid IDs see: +// https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers +// 0x004C is Apple (for example) +#define MANUFACTURER_ID 0x004C + +// AirLocate UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 +uint8_t beaconUuid[16] = +{ + 0xE2, 0xC5, 0x6D, 0xB5, 0xDF, 0xFB, 0x48, 0xD2, + 0xB0, 0x60, 0xD0, 0xF5, 0xA7, 0x10, 0x96, 0xE0, +}; + +// A valid Beacon packet consists of the following information: +// UUID, Major, Minor, RSSI @ 1M +BLEBeacon beacon(beaconUuid, 0x0000, 0x0000, -54); + +void setup() +{ + Serial.begin(115200); + while ( !Serial ) delay(10); // for nrf52840 with native usb + + Serial.println("Bluefruit52 Beacon Example"); + Serial.println("--------------------------\n"); + + Bluefruit.begin(); + + // off Blue LED for lowest power consumption + Bluefruit.autoConnLed(false); + + // Set max power. Accepted values are: -40, -30, -20, -16, -12, -8, -4, 0, 4 + Bluefruit.setTxPower(0); + Bluefruit.setName("Bluefruit52"); + + // Manufacturer ID is required for Manufacturer Specific Data + beacon.setManufacturer(MANUFACTURER_ID); + + // Setup the advertising packet + startAdv(); + + Serial.println("Broadcasting beacon, open your beacon app to test"); + + // Suspend Loop() to save power, since we didn't have any code there + suspendLoop(); +} + +void startAdv(void) +{ + // Advertising packet + // Set the beacon payload using the BLEBeacon class populated + // earlier in this example + Bluefruit.Advertising.setBeacon(beacon); + + // Secondary Scan Response packet (optional) + // Since there is no room for 'Name' in Advertising packet + Bluefruit.ScanResponse.addName(); + + /* Start Advertising + * - Enable auto advertising if disconnected + * - Timeout for fast mode is 30 seconds + * - Start(timeout) with timeout = 0 will advertise forever (until connected) + * + * Apple Beacon specs + * - Type: Non connectable, undirected + * - Fixed interval: 100 ms -> fast = slow = 100 ms + */ + //Bluefruit.Advertising.setType(BLE_GAP_ADV_TYPE_ADV_NONCONN_IND); + Bluefruit.Advertising.restartOnDisconnect(true); + Bluefruit.Advertising.setInterval(160, 160); // in unit of 0.625 ms + Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode + Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds +} + +void loop() +{ + // loop is already suspended, CPU will not run loop() at all +} |