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:
rgrover1
Date:
Fri Nov 28 14:21:41 2014 +0000
Revision:
6:31b65d4ea67d
Parent:
3:1d2526788eaa
Child:
7:6faec5978fb4
Implementation for URIBeacon2; ; https://github.com/google/uribeacon

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 6:31b65d4ea67d 19 #include "URIBeacon2Service.h"
rgrover1 6:31b65d4ea67d 20 #include "DFUService.h"
rgrover1 6:31b65d4ea67d 21 #include "DeviceInformationService.h"
rgrover1 0:790a27ffc99b 22
rgrover1 0:790a27ffc99b 23 BLEDevice ble;
rgrover1 0:790a27ffc99b 24
rgrover1 6:31b65d4ea67d 25 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
rgrover1 6:31b65d4ea67d 26 {
rgrover1 6:31b65d4ea67d 27 ble.startAdvertising();
rgrover1 6:31b65d4ea67d 28 }
rgrover1 0:790a27ffc99b 29
rgrover1 0:790a27ffc99b 30 int main(void)
rgrover1 0:790a27ffc99b 31 {
rgrover1 0:790a27ffc99b 32 ble.init();
rgrover1 6:31b65d4ea67d 33 ble.onDisconnection(disconnectionCallback);
rgrover1 0:790a27ffc99b 34
rgrover1 6:31b65d4ea67d 35 URIBeacon2Service uriBeacon(ble, "http://developer.mbed.org");
rgrover1 6:31b65d4ea67d 36 if (!uriBeacon.configuredSuccessfully()) {
rgrover1 6:31b65d4ea67d 37 error("failed to accommodate URI");
rgrover1 6:31b65d4ea67d 38 }
rgrover1 6:31b65d4ea67d 39 /* optional use of the API offered by URIBeacon2Service */
rgrover1 6:31b65d4ea67d 40 uriBeacon.setTxPowerLevel(URIBeacon2Service::TX_POWER_MODE_LOW, -4);
rgrover1 6:31b65d4ea67d 41 uriBeacon.useTxPowerMode(URIBeacon2Service::TX_POWER_MODE_LOW);
rgrover1 0:790a27ffc99b 42
rgrover1 6:31b65d4ea67d 43 /* Setup auxiliary services. */
rgrover1 6:31b65d4ea67d 44 DFUService dfu(ble); /* To allow over-the-air firmware udpates. optional. */
rgrover1 6:31b65d4ea67d 45 DeviceInformationService deviceInfo(ble, "ARM", "URIBeacon2", "SN1", "hw-rev1", "fw-rev1", "soft-rev1"); /* optional */
rgrover1 6:31b65d4ea67d 46
rgrover1 0:790a27ffc99b 47 ble.startAdvertising();
rgrover1 0:790a27ffc99b 48
rgrover1 0:790a27ffc99b 49 while (true) {
rgrover1 0:790a27ffc99b 50 ble.waitForEvent();
rgrover1 0:790a27ffc99b 51 }
rgrover1 0:790a27ffc99b 52 }