https://github.com/google/physical-web

Dependencies:   BLE_API mbed nRF51822

PhysicalWeb is the general concept of connecting physical devices to the web via BLE.

The core of the PhysicalWeb concept is based around the URI Beacon service. A URI Beacon is an unencrypted broadcast of a Universal Resource Indicator (URI), most commonly in the form of web links. This example is a more advanced form of the UriBeacon Example.

The PhysicalWeb concept is currently being championed by Google so the majority of the documentation is based around the [ https://github.com/google/physical-web | Google PhysicalWeb Github] page.

Here's an introduction to the concept.

There's an Android App to go with it.

As mentioned above, the UriBeacon Service is key to the implementation of PhysicalWeb. The UriBeacon documentation is based out of the Google UriBeacon Github page

Committer:
stevep
Date:
Thu Oct 09 18:11:31 2014 +0000
Revision:
3:1d2526788eaa
Parent:
2:b7b8197d1a32
Child:
6:31b65d4ea67d
replace http://www with http://

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 0:790a27ffc99b 1 /* mbed Microcontroller Library
rgrover1 0:790a27ffc99b 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 0:790a27ffc99b 3 *
rgrover1 0:790a27ffc99b 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 0:790a27ffc99b 5 * you may not use this file except in compliance with the License.
rgrover1 0:790a27ffc99b 6 * You may obtain a copy of the License at
rgrover1 0:790a27ffc99b 7 *
rgrover1 0:790a27ffc99b 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 0:790a27ffc99b 9 *
rgrover1 0:790a27ffc99b 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 0:790a27ffc99b 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 0:790a27ffc99b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 0:790a27ffc99b 13 * See the License for the specific language governing permissions and
rgrover1 0:790a27ffc99b 14 * limitations under the License.
rgrover1 0:790a27ffc99b 15 */
rgrover1 0:790a27ffc99b 16
rgrover1 0:790a27ffc99b 17 #include "mbed.h"
rgrover1 0:790a27ffc99b 18 #include "BLEDevice.h"
rgrover1 0:790a27ffc99b 19
rgrover1 0:790a27ffc99b 20 BLEDevice ble;
rgrover1 0:790a27ffc99b 21
rgrover1 0:790a27ffc99b 22 static const uint8_t BEACON_UUID[] = {0xD8, 0xFE};
rgrover1 2:b7b8197d1a32 23 uint8_t urldata[] = {
rgrover1 0:790a27ffc99b 24 BEACON_UUID[0], BEACON_UUID[1],
rgrover1 0:790a27ffc99b 25 0x00, // flags
rgrover1 0:790a27ffc99b 26 0x20, // power
stevep 3:1d2526788eaa 27 0x02, // http://
rgrover1 1:65e87169548d 28 'm',
rgrover1 1:65e87169548d 29 'b',
rgrover1 1:65e87169548d 30 'e',
rgrover1 1:65e87169548d 31 'd',
rgrover1 0:790a27ffc99b 32 0x08, // .".org"
rgrover1 0:790a27ffc99b 33 };
rgrover1 0:790a27ffc99b 34
rgrover1 0:790a27ffc99b 35 int main(void)
rgrover1 0:790a27ffc99b 36 {
rgrover1 0:790a27ffc99b 37 ble.init();
rgrover1 0:790a27ffc99b 38
rgrover1 0:790a27ffc99b 39 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, BEACON_UUID, sizeof(BEACON_UUID));
rgrover1 0:790a27ffc99b 40 ble.accumulateAdvertisingPayload(GapAdvertisingData::SERVICE_DATA, urldata, sizeof(urldata));
rgrover1 0:790a27ffc99b 41
rgrover1 0:790a27ffc99b 42 ble.setAdvertisingType(GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED);
rgrover1 0:790a27ffc99b 43 ble.setAdvertisingInterval(1600); /* 1s; in multiples of 0.625ms. */
rgrover1 0:790a27ffc99b 44 ble.startAdvertising();
rgrover1 0:790a27ffc99b 45
rgrover1 0:790a27ffc99b 46 while (true) {
rgrover1 0:790a27ffc99b 47 ble.waitForEvent();
rgrover1 0:790a27ffc99b 48 }
rgrover1 0:790a27ffc99b 49 }