Example program for the Eddystone Beacon service.

Dependencies:   BLE_API mbed nRF51822 X_NUCLEO_IDB0XA1

Fork of BLE_EddystoneBeacon by URIBeacon

This example demonstrates how to set up and initialize a Eddystone Beacon. For more details on the Eddystone specification please see the Eddystone Github Page.

The Basics

An Eddystone Beacon is a Bluetooth Low Energy beacon, that means it does all of its data transfer in GAP advertising packets. Eddystone beacons, unlike other beacons, broadcast multiple types of data. Currently Eddystone beacons have 3 frame types (UID, URL, TLM) that will get swapped out periodically. This swapping of frame data allows Eddystone beacons to send many different types of data, thus increasing their usefulness over traditional beacons. Note that the UID frame type provides the same 16Bytes of UUID namespace that iBeacons do and the URL frame type provides the same functionality as a URIBeacon.

For more details see the Eddystone Specification.

Smartphone Apps

nRF Master Control Panel - this program recognizes Eddystone beacons and will display the data for all frame types.

iPhone Physical Web app

Android App

Walkthrough of Physical Web application

Technical Details

The Eddystone Specification looks like the following image. Please note that this may change over time and for up to date information the official spec should be referenced. /media/uploads/mbedAustin/scratch-1-.png

The Eddystone Frames get swapped in and out depending on what frames you have enabled. The only required frame type is the TLM frame, all others are optional and you can have any number enabled. To disable the UID or URL frames give their values a 'NULL' in the Eddystone constructor. The Eddystone spec recommends broadcasting 10 frames a second.

Note

  • The current Eddystone mbed example does not allow for combining the eddystone service with other services, this will be changes in a future update.
  • There is an Eddystone Config service that allows for updating beacons in the field. We are working on an example for this, so keep your eyes pealed for a future update.

Changes

RevisionDateWhoCommit message
36:17b4a0ff9abb 2016-09-20 Vincent Coubard Update libraries and add support of the ST shield. default tip
35:6b767cd9c296 2016-04-11 vcoubard Update libraries to the latest revision.
34:f6d4a699a1ea 2015-11-26 andresag Update example to use latest version of BLE_API and nRF51822 library. Furthermore, the example now uses a new Eddystone implementation rather than the deprecated implementation under ble/services.
33:862e6e0831ea 2015-10-01 mbedAustin updated example to be in line with API changes
32:41840b78597e 2015-10-01 mbedAustin Updating example to comply with latest API changes
31:bdd03742096a 2015-08-11 mbedAustin cleaned up code prior to public release.
30:6c2db8bf5b17 2015-07-24 mbedAustin [[Working]] Updated main program to periodically update the temperature and battery voltage.
29:dfb7fb5a971b 2015-07-24 mbedAustin [[Working]] Eddystone beacon working with URI, UID and TLM packets being sent correctly.
28:af37cebcb583 2015-07-24 mbedAustin [[FIX]] fixed build issue, now compiling, though not running correctly.
27:29c6d1bb462e 2015-07-24 mbedAustin Stripped out the config service, bare bones eddystone service.
26:2896fbdd0450 2015-07-24 mbedAustin [[Branch]] Simpliefied everything down, was having trouble getting the config service to work, so i stripped it out. This is the bare bones eddystone beacon service.
25:e20bed9e466f 2015-07-24 mbedAustin [[Debug]] added function to take all parameters for eddystone beacon, thus bypassing the need for config. Will get this working then go back to get config working.
24:8edfe6730cc2 2015-07-23 mbedAustin Renamed ZipBeacon ->EddystoneBeacon
23:05e9bb3b13af 2015-07-23 mbedAustin Renamed ZipBeacon->Eddystone, everything compiles and continues to work just fine.
22:160766614338 2015-07-23 mbedAustin [[Fix]] Eddystone functional with onRadioNotificationCallback. The beacon is functionally complete. Everything going forward is just polish.
21:f4646308f363 2015-07-23 mbedAustin [[Fix]] made RFU field in UID frame BigEndian Compliant (again, facepalm)
20:3b133cfafc39 2015-07-23 mbedAustin [[Fix]] Changed endian-ness on TLM frame contructor from little to big endian. *FacePalm*
19:f7c33fa88ca5 2015-07-23 mbedAustin [[Fix]] Fixed issue with UID where it would allow power outside the specified ranges. Added explicit enforcement to both the set function and the create payload function to enforce -20 to 100 as valid power levels.
18:91c36071aafb 2015-07-23 mbedAustin [[Debug]] Things are working now. Moved Radio callback to a ticker in the main.cpp file. I believe the issue i'm seeing is switching within an interrupt callback context.
17:0458759c40e4 2015-07-22 mbedAustin [[Debug]] Compiling, hardfaulting when attempting to dynamically switch frames.
16:a7d07ea94b31 2015-07-22 mbedAustin [[DEBUG]] commiting for help with Debug. Currently hardfaulting when trying to hotswap frames.
15:af8c24f34a9f 2015-07-20 mbedAustin [[Testing]] - confirmed all packets are being encoded correctly. Currently using Ticker to switch payloads. Need to add stuff to BLE library to enable callbacks to object functions.;
14:5a2a104a21a8 2015-07-20 mbedAustin [[Testing Commit]]; ; Added button interrupt that will swap out the frame types.
13:91c356fa928e 2015-07-17 mbedAustin maked TLM fields as volatile
12:ced5e837c511 2015-07-17 mbedAustin added functions to update TLM field values.
11:73ea4ef7f5a4 2015-07-17 mbedAustin Added functions to construct each frame type from the subsidiary data.
10:b5d19bcf23cf 2015-07-17 mbedAustin added private variables and set functions for 3 types of beacon frames.
9:7b4ba649e342 2015-07-02 rgrover1 updating to the latest of the underlying libraries.;
8:1a21308e5008 2015-06-20 rgrover1 update to the newer APIs; rename BLEDevice with BLE
7:e9800c45e065 2015-06-19 rgrover1 updating to the latest of the underlying libraries.
6:e90c398b03e0 2015-05-15 rgrover1 adding some missing bits from URIBeaconConfigService about saving params.
5:878741147deb 2015-05-15 rgrover1 merge with changes to remap beacon period
4:4440953bde10 2015-05-15 rgrover1 Get the Floor Period test to pass.
3:f2ae7f047554 2015-05-14 JonnyA Temporarily use older versions of the libraries for old boot-loader compatibility
2:8020d6d4455a 2015-05-14 rgrover1 reintroduce param persistence into ZipBeacon.
1:25315b3a440c 2015-05-13 rgrover1 updating to Nordic's S130 softdevice, and to the latest of BLE_API and nRF51
0:c04d932e96c9 2015-05-12 screamer Initial revision