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:
Mon Dec 01 14:35:47 2014 +0000
Revision:
7:6faec5978fb4
Parent:
6:31b65d4ea67d
Child:
8:b816829fb712
updating to 0.2.6 of BLE_API.; Incorporated feedback from Bill Schilit regarding URIBeaconConfigService.

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 7:6faec5978fb4 19 #include "URIBeaconConfigService.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 7:6faec5978fb4 35 URIBeaconConfigService uriBeaconConfig(ble, "http://www.mbed.org");
rgrover1 7:6faec5978fb4 36 if (!uriBeaconConfig.configuredSuccessfully()) {
rgrover1 6:31b65d4ea67d 37 error("failed to accommodate URI");
rgrover1 6:31b65d4ea67d 38 }
rgrover1 7:6faec5978fb4 39 /* optional use of the API offered by URIBeaconConfigService */
rgrover1 7:6faec5978fb4 40 const int8_t powerLevels[] = {-20, -4, 0, 10};
rgrover1 7:6faec5978fb4 41 uriBeaconConfig.setTxPowerLevels(powerLevels);
rgrover1 7:6faec5978fb4 42 uriBeaconConfig.setTxPowerMode(URIBeaconConfigService::TX_POWER_MODE_LOW);
rgrover1 0:790a27ffc99b 43
rgrover1 6:31b65d4ea67d 44 /* Setup auxiliary services. */
rgrover1 6:31b65d4ea67d 45 DFUService dfu(ble); /* To allow over-the-air firmware udpates. optional. */
rgrover1 6:31b65d4ea67d 46 DeviceInformationService deviceInfo(ble, "ARM", "URIBeacon2", "SN1", "hw-rev1", "fw-rev1", "soft-rev1"); /* optional */
rgrover1 6:31b65d4ea67d 47
rgrover1 0:790a27ffc99b 48 ble.startAdvertising();
rgrover1 0:790a27ffc99b 49
rgrover1 0:790a27ffc99b 50 while (true) {
rgrover1 0:790a27ffc99b 51 ble.waitForEvent();
rgrover1 0:790a27ffc99b 52 }
rgrover1 0:790a27ffc99b 53 }