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.
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
Revision | Date | Who | Commit 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
|