project for eddystone
Dependencies: BLE_API mbed nRF51822
Fork of BLE_URIBeacon by
main.cpp@29:db32d8dae04c, 2015-11-02 (annotated)
- Committer:
- sunsmile2015
- Date:
- Mon Nov 02 10:14:48 2015 +0000
- Revision:
- 29:db32d8dae04c
- Parent:
- 28:63be4e73d447
tested
Who changed what in which revision?
User | Revision | Line number | New 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 | } |