An example of creating and updating a simple GATT Service using the BLE_API
Dependencies: BLE_API X_NUCLEO_IDB0XA1 mbed
main.cpp@0:dbff48b4070b, 2015-09-22 (annotated)
- Committer:
- screamer
- Date:
- Tue Sep 22 19:01:03 2015 +0000
- Revision:
- 0:dbff48b4070b
- Child:
- 1:c81543a36d05
Initial revision
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
screamer | 0:dbff48b4070b | 1 | /* mbed Microcontroller Library |
screamer | 0:dbff48b4070b | 2 | * Copyright (c) 2006-2014 ARM Limited |
screamer | 0:dbff48b4070b | 3 | * |
screamer | 0:dbff48b4070b | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
screamer | 0:dbff48b4070b | 5 | * you may not use this file except in compliance with the License. |
screamer | 0:dbff48b4070b | 6 | * You may obtain a copy of the License at |
screamer | 0:dbff48b4070b | 7 | * |
screamer | 0:dbff48b4070b | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
screamer | 0:dbff48b4070b | 9 | * |
screamer | 0:dbff48b4070b | 10 | * Unless required by applicable law or agreed to in writing, software |
screamer | 0:dbff48b4070b | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
screamer | 0:dbff48b4070b | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
screamer | 0:dbff48b4070b | 13 | * See the License for the specific language governing permissions and |
screamer | 0:dbff48b4070b | 14 | * limitations under the License. |
screamer | 0:dbff48b4070b | 15 | */ |
screamer | 0:dbff48b4070b | 16 | |
screamer | 0:dbff48b4070b | 17 | #include "mbed.h" |
screamer | 0:dbff48b4070b | 18 | #include "BLE.h" |
screamer | 0:dbff48b4070b | 19 | #include "BatteryService.h" |
screamer | 0:dbff48b4070b | 20 | |
screamer | 0:dbff48b4070b | 21 | BLE ble; |
screamer | 0:dbff48b4070b | 22 | |
screamer | 0:dbff48b4070b | 23 | DigitalOut led1(LED1, 1); |
screamer | 0:dbff48b4070b | 24 | Ticker t; |
screamer | 0:dbff48b4070b | 25 | |
screamer | 0:dbff48b4070b | 26 | void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason) |
screamer | 0:dbff48b4070b | 27 | { |
screamer | 0:dbff48b4070b | 28 | printf("Disconnected handle %u!\n\r", handle); |
screamer | 0:dbff48b4070b | 29 | printf("Restarting the advertising process\n\r"); |
screamer | 0:dbff48b4070b | 30 | ble.startAdvertising(); |
screamer | 0:dbff48b4070b | 31 | } |
screamer | 0:dbff48b4070b | 32 | |
screamer | 0:dbff48b4070b | 33 | void blink(void) |
screamer | 0:dbff48b4070b | 34 | { |
screamer | 0:dbff48b4070b | 35 | led1 = !led1; |
screamer | 0:dbff48b4070b | 36 | } |
screamer | 0:dbff48b4070b | 37 | |
screamer | 0:dbff48b4070b | 38 | int main(void) |
screamer | 0:dbff48b4070b | 39 | { |
screamer | 0:dbff48b4070b | 40 | uint8_t batteryLevel = 50; |
screamer | 0:dbff48b4070b | 41 | t.attach(blink, 1.0f); |
screamer | 0:dbff48b4070b | 42 | |
screamer | 0:dbff48b4070b | 43 | printf("Initialising\n\r"); |
screamer | 0:dbff48b4070b | 44 | |
screamer | 0:dbff48b4070b | 45 | ble.init(); |
screamer | 0:dbff48b4070b | 46 | ble.onDisconnection(disconnectionCallback); |
screamer | 0:dbff48b4070b | 47 | |
screamer | 0:dbff48b4070b | 48 | BatteryService batteryService(ble, batteryLevel); |
screamer | 0:dbff48b4070b | 49 | |
screamer | 0:dbff48b4070b | 50 | /* setup advertising */ |
screamer | 0:dbff48b4070b | 51 | ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); |
screamer | 0:dbff48b4070b | 52 | ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); |
screamer | 0:dbff48b4070b | 53 | ble.setAdvertisingInterval(1000); /* 1000ms; in multiples of 0.625ms. */ |
screamer | 0:dbff48b4070b | 54 | ble.startAdvertising(); |
screamer | 0:dbff48b4070b | 55 | |
screamer | 0:dbff48b4070b | 56 | while (true) { |
screamer | 0:dbff48b4070b | 57 | ble.waitForEvent(); // this will return upon any system event (such as an interrupt or a ticker wakeup) |
screamer | 0:dbff48b4070b | 58 | |
screamer | 0:dbff48b4070b | 59 | // the magic battery processing |
screamer | 0:dbff48b4070b | 60 | batteryLevel++; |
screamer | 0:dbff48b4070b | 61 | if (batteryLevel > 100) { |
screamer | 0:dbff48b4070b | 62 | batteryLevel = 20; |
screamer | 0:dbff48b4070b | 63 | } |
screamer | 0:dbff48b4070b | 64 | |
screamer | 0:dbff48b4070b | 65 | batteryService.updateBatteryLevel(batteryLevel); |
screamer | 0:dbff48b4070b | 66 | } |
screamer | 0:dbff48b4070b | 67 | } |
screamer | 0:dbff48b4070b | 68 |