project for eddystone

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_URIBeacon by Bluetooth Low Energy

Committer:
sunsmile2015
Date:
Mon Nov 02 10:14:48 2015 +0000
Revision:
29:db32d8dae04c
Parent:
28:63be4e73d447
tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 14:868a1207022d 1 /* mbed Microcontroller Library
sunsmile2015 28:63be4e73d447 2 * Copyright (c) 2006-2015 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 13:b82d8db73633 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 26:a2396234b4a8 18 #include "ble/BLE.h"
sunsmile2015 28:63be4e73d447 19 #include "ble/services/EddystoneService.h"
rgrover1 13:b82d8db73633 20
sunsmile2015 28:63be4e73d447 21 DigitalOut led1(LED1, 1);
rgrover1 13:b82d8db73633 22
sunsmile2015 28:63be4e73d447 23 static uint8_t UIDnamespace[] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA}; // 10Bytes for Namespace UUID
sunsmile2015 28:63be4e73d447 24 static uint8_t UIDinstance[] = {0xbb,0xcc,0xdd,0xee,0xff,0x00}; // 6Bytes for Instance UUID
sunsmile2015 28:63be4e73d447 25 static char Url[] = "http://www.mbed.org";
sunsmile2015 28:63be4e73d447 26 static int8_t radioTxPower = 20;
sunsmile2015 28:63be4e73d447 27 static int8_t advTxPower = -20;
sunsmile2015 28:63be4e73d447 28 static uint16_t beaconPeriodus = 1000;
sunsmile2015 28:63be4e73d447 29 static uint8_t tlmVersion = 0x00;
rgrover1 17:e2c0a1696e39 30
sunsmile2015 28:63be4e73d447 31 static int battery = 0;
sunsmile2015 28:63be4e73d447 32 static int temp = 0;
sunsmile2015 28:63be4e73d447 33
sunsmile2015 28:63be4e73d447 34 EddystoneService *eddyBeaconPtr;
sunsmile2015 28:63be4e73d447 35
sunsmile2015 28:63be4e73d447 36 void blinkCallback(void)
rgrover1 17:e2c0a1696e39 37 {
sunsmile2015 28:63be4e73d447 38 led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
rgrover1 17:e2c0a1696e39 39 }
rgrover1 17:e2c0a1696e39 40
sunsmile2015 28:63be4e73d447 41 /* Optional Function to update Eddystone beacon TLM frame battery voltage */
sunsmile2015 28:63be4e73d447 42 void tlmBatteryCallback(void){
sunsmile2015 28:63be4e73d447 43 /* add the function to get battery */
sunsmile2015 29:db32d8dae04c 44 battery = 0xFEFE;
sunsmile2015 28:63be4e73d447 45 eddyBeaconPtr->updateTlmBatteryVoltage(battery);
sunsmile2015 28:63be4e73d447 46 }
sunsmile2015 28:63be4e73d447 47
sunsmile2015 28:63be4e73d447 48 /* Optional Function to update Eddystone beacon TLM frame temperature */
sunsmile2015 28:63be4e73d447 49 void tlmTemperatureCallback(void){
sunsmile2015 28:63be4e73d447 50 /* add the function to get temperature*/
sunsmile2015 28:63be4e73d447 51 eddyBeaconPtr->updateTlmBeaconTemp(temp++);
rgrover1 6:31b65d4ea67d 52 }
rgrover1 0:790a27ffc99b 53
rgrover1 0:790a27ffc99b 54 int main(void)
rgrover1 0:790a27ffc99b 55 {
sunsmile2015 28:63be4e73d447 56 // minar::Scheduler::postCallback(blinkCallback).period(minar::milliseconds(500));
sunsmile2015 28:63be4e73d447 57 Ticker tickerBattery;
sunsmile2015 28:63be4e73d447 58 Ticker tickerTemp;
sunsmile2015 28:63be4e73d447 59
sunsmile2015 28:63be4e73d447 60 BLE &ble = BLE::Instance();
rgrover1 0:790a27ffc99b 61 ble.init();
rgrover1 13:b82d8db73633 62
sunsmile2015 28:63be4e73d447 63 /* Setup Eddystone Service */
sunsmile2015 28:63be4e73d447 64 eddyBeaconPtr = new EddystoneService(ble, beaconPeriodus, radioTxPower);
rgrover1 13:b82d8db73633 65
sunsmile2015 28:63be4e73d447 66 /* Set Eddystone Frame Data (TLM,UID,URI...etc) */
sunsmile2015 28:63be4e73d447 67 eddyBeaconPtr->setTLMFrameData(tlmVersion, 5.0);
sunsmile2015 28:63be4e73d447 68 eddyBeaconPtr->setURLFrameData(advTxPower, Url, 2.0);
sunsmile2015 28:63be4e73d447 69 eddyBeaconPtr->setUIDFrameData(advTxPower, UIDnamespace, UIDinstance, 3.0);
rgrover1 0:790a27ffc99b 70
sunsmile2015 28:63be4e73d447 71 /* Callbacks for temperature / battery updates */
sunsmile2015 28:63be4e73d447 72 // minar::Scheduler::postCallback(tlmTemperatureCallback).period(minar::milliseconds(2000));
sunsmile2015 28:63be4e73d447 73 // minar::Scheduler::postCallback(tlmBatteryCallback).period(minar::milliseconds(1000));
sunsmile2015 28:63be4e73d447 74 tickerBattery.attach(tlmBatteryCallback, 1);
sunsmile2015 28:63be4e73d447 75 tickerTemp.attach(tlmTemperatureCallback,1);
sunsmile2015 28:63be4e73d447 76 /* Start Advertising the eddystone service. */
sunsmile2015 28:63be4e73d447 77 eddyBeaconPtr->start();
sunsmile2015 28:63be4e73d447 78 ble.gap().startAdvertising();
sunsmile2015 28:63be4e73d447 79
rgrover1 0:790a27ffc99b 80 while (true) {
rgrover1 0:790a27ffc99b 81 ble.waitForEvent();
rgrover1 0:790a27ffc99b 82 }
sunsmile2015 28:63be4e73d447 83
rgrover1 0:790a27ffc99b 84 }