preparing support for eddystone

This commit is contained in:
Peli de Halleux 2016-11-29 09:21:23 -08:00
parent 63d0b86508
commit b1fcc51bc8
8 changed files with 145 additions and 4 deletions

View File

@ -29,19 +29,21 @@ control.inBackground(() => {
}); });
``` ```
## Bluetooth ## bluetooth and Eddystone
```namespaces ```namespaces
devices.tellCameraTo(MesCameraEvent.TakePhoto); devices.tellCameraTo(MesCameraEvent.TakePhoto);
bluetooth.onBluetoothConnected(() => {}); bluetooth.onBluetoothConnected(() => {});
eddystone.advertiseUrl("https://pxt.io", 6);
``` ```
```package ```package
radio radio
devices devices
bluetooth bluetooth
eddystone
``` ```
### See Also ### See Also
[basic](/reference/basic), [input](/reference/input), [music](/reference/music), [led](/reference/led), [Math (blocks)](/blocks/math), [String](/reference/types/string), [game](/reference/game), [images](/reference/images), [pins](/reference/pins), [serial](/reference/serial), [control](/reference/control), [radio](/reference/radio), [devices](/reference/devices), [bluetooth](/reference/bluetooth) [basic](/reference/basic), [input](/reference/input), [music](/reference/music), [led](/reference/led), [Math (blocks)](/blocks/math), [String](/reference/types/string), [game](/reference/game), [images](/reference/images), [pins](/reference/pins), [serial](/reference/serial), [control](/reference/control), [radio](/reference/radio), [devices](/reference/devices), [bluetooth](/reference/bluetooth), [eddystone](/reference/eddystone)

View File

@ -0,0 +1,28 @@
# Eddystone
Support for Eddystone beacons.
```cards
eddystone.advertiseUrl("https://pxt.io/", 6);
eddystone.stopAdvertising();
```
### Advanced
Bluetooth beacons are used to indicate proximity to a place or object of interest.
Beacons use Bluetooth advertising to broadcast a small amount of data, which can be received and acted upon by anyone in range
with a suitable device and software, typically a smartphone and application.
There are various beacon message formats, which define the way Bluetooth advertising packets are used as containers for beacon data.
iBeacon is Apple's beacon message format. Eddystone comes from Google.
More information at https://lancaster-university.github.io/microbit-docs/ble/eddystone/
### See Also
[eddystone.advertiseUrl](/reference/eddystone/advertise-url),
[eddystone.stopAdvertising](/reference/eddystone/stop-advertising),
```package
eddystone
```

View File

@ -0,0 +1,31 @@
#include "pxt.h"
#include "Microbit.h"
#include "MicroBitEddystone.h"
using namespace pxt;
/**
* Support for Eddystone beacons
*/
//% color=#0082FB weight=19
namespace eddystone {
const int8_t CALIBRATED_POWERS[] = {-49, -37, -33, -28, -25, -20, -15, -10};
/**
* Advertise an Eddystone URL
*/
//% blockId=eddystone_advertise_url block="eddystone advertise url %url|power %powerLevel"
void advertiseUrl(StringData* url, int powerLevel) {
int power = CALIBRATED_POWERS[min(7, max(0, powerLevel))];
ManagedString murl(url)
uBit.bleManager.advertiseEddystoneUrl(murl, power, false);
}
/**
* Stops advertising Eddystone end points
*/
//% blockId=eddystone_stop_advertising block="eddystone stop advertising"
void stopAdvertising() {
uBit.bleManager.stopAdvertising();
}
}

View File

@ -0,0 +1,13 @@
/**
* Support for Eddystone beacons
*/
//% color=#0082FB weight=19
namespace eddystone {
//% shim=eddystone::advertiseUrl
export function advertiseUrl(url: string, powerLevel: number) {
}
//% shim=eddystone::stopAdvertising
export function stopAdvertising() {
}
}

5
libs/eddystone/enums.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
// Auto-generated. Do not edit.
declare namespace eddystone {
}
// Auto-generated. Do not edit. Really.

38
libs/eddystone/pxt.json Normal file
View File

@ -0,0 +1,38 @@
{
"name": "eddystone",
"description": "Eddystone beacon support",
"dependencies": {
"core": "file:../core"
},
"files": [
"eddystone.cpp",
"eddystone.ts",
"enums.d.ts",
"shims.d.ts"
],
"yotta": {
"config": {
"microbit-dal": {
"bluetooth": {
"enabled": 1,
"eddystone_url": 1,
"eddystone_uid": 0
}
}
},
"optionalConfig": {
"microbit-dal": {
"bluetooth": {
"pairing_mode": 0,
"private_addressing": 0,
"whitelist": 0,
"advertising_timeout": 0,
"tx_power": 6,
"dfu_service": 0,
"event_service": 0,
"device_info_service": 0
}
}
}
}
}

23
libs/eddystone/shims.d.ts vendored Normal file
View File

@ -0,0 +1,23 @@
// Auto-generated. Do not edit.
/**
* Support for Eddystone beacons
*/
//% color=#0082FB weight=19
declare namespace eddystone {
/**
* Advertise an Eddystone URL
*/
//% blockId=eddystone_advertise_url block="eddystone advertise url %url|power %powerLevel" shim=eddystone::advertiseUrl
function advertiseUrl(url: string, powerLevel: number): void;
/**
* Stops advertising Eddystone end points
*/
//% blockId=eddystone_stop_advertising block="eddystone stop advertising" shim=eddystone::stopAdvertising
function stopAdvertising(): void;
}
// Auto-generated. Do not edit. Really.

View File

@ -9,7 +9,8 @@
"libs/core", "libs/core",
"libs/radio", "libs/radio",
"libs/devices", "libs/devices",
"libs/bluetooth" "libs/bluetooth",
"libs/eddystone"
], ],
"cloud": { "cloud": {
"workspace": false, "workspace": false,