Jacob McEntire / BLE_API_mod2

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Fri Jun 19 15:52:06 2015 +0100
Revision:
526:caa67c3187a0
Parent:
524:6e97ab392e2a
Child:
528:8d21604fe31d
Synchronized with git rev 9bcd7433
Author: Rohit Grover
Rename BLEDevice as BLE. Retain an alias to BLEDevice for the sake of compatibility with old code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rohit Grover 118:620d28e7a1ba 1 /* mbed Microcontroller Library
Rohit Grover 118:620d28e7a1ba 2 * Copyright (c) 2006-2013 ARM Limited
Rohit Grover 118:620d28e7a1ba 3 *
Rohit Grover 118:620d28e7a1ba 4 * Licensed under the Apache License, Version 2.0 (the "License");
Rohit Grover 118:620d28e7a1ba 5 * you may not use this file except in compliance with the License.
Rohit Grover 118:620d28e7a1ba 6 * You may obtain a copy of the License at
Rohit Grover 118:620d28e7a1ba 7 *
Rohit Grover 118:620d28e7a1ba 8 * http://www.apache.org/licenses/LICENSE-2.0
Rohit Grover 118:620d28e7a1ba 9 *
Rohit Grover 118:620d28e7a1ba 10 * Unless required by applicable law or agreed to in writing, software
Rohit Grover 118:620d28e7a1ba 11 * distributed under the License is distributed on an "AS IS" BASIS,
Rohit Grover 118:620d28e7a1ba 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Rohit Grover 118:620d28e7a1ba 13 * See the License for the specific language governing permissions and
Rohit Grover 118:620d28e7a1ba 14 * limitations under the License.
Rohit Grover 118:620d28e7a1ba 15 */
Rohit Grover 118:620d28e7a1ba 16
Rohit Grover 118:620d28e7a1ba 17 #ifndef __BLE_BATTERY_SERVICE_H__
Rohit Grover 118:620d28e7a1ba 18 #define __BLE_BATTERY_SERVICE_H__
Rohit Grover 118:620d28e7a1ba 19
Rohit Grover 118:620d28e7a1ba 20 #include "BLEDevice.h"
Rohit Grover 118:620d28e7a1ba 21
rgrover1 242:0e9201b67e2f 22 /**
mbedAustin 238:905d6fc17fda 23 * @class BatteryService
rgrover1 242:0e9201b67e2f 24 * @brief BLE Battery Service. This service displays the battery level from 0%->100% represented as a 8bit number.<br>
mbedAustin 238:905d6fc17fda 25 * Service: https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml <br>
rgrover1 242:0e9201b67e2f 26 * Battery Level Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.battery_level.xml
mbedAustin 238:905d6fc17fda 27 */
Rohit Grover 118:620d28e7a1ba 28 class BatteryService {
Rohit Grover 118:620d28e7a1ba 29 public:
mbedAustin 238:905d6fc17fda 30 /**
mbedAustin 238:905d6fc17fda 31 * @param[ref] _ble
mbedAustin 238:905d6fc17fda 32 * BLEDevice object for the underlying controller.
mbedAustin 238:905d6fc17fda 33 * @param[in] level
rgrover1 242:0e9201b67e2f 34 * 8bit batterly level. Usually used to represent percentage of batterly charge remaining.
mbedAustin 238:905d6fc17fda 35 */
Rohit Grover 118:620d28e7a1ba 36 BatteryService(BLEDevice &_ble, uint8_t level = 100) :
Rohit Grover 118:620d28e7a1ba 37 ble(_ble),
Rohit Grover 118:620d28e7a1ba 38 batteryLevel(level),
rgrover1 277:1407d2f1ce3c 39 batteryLevelCharacteristic(GattCharacteristic::UUID_BATTERY_LEVEL_CHAR, &batteryLevel, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) {
Rohit Grover 118:620d28e7a1ba 40
Rohit Grover 118:620d28e7a1ba 41 GattCharacteristic *charTable[] = {&batteryLevelCharacteristic};
Rohit Grover 118:620d28e7a1ba 42 GattService batteryService(GattService::UUID_BATTERY_SERVICE, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
Rohit Grover 118:620d28e7a1ba 43
Rohit Grover 118:620d28e7a1ba 44 ble.addService(batteryService);
Rohit Grover 118:620d28e7a1ba 45 }
Rohit Grover 118:620d28e7a1ba 46
Rohit Grover 118:620d28e7a1ba 47 /**
rgrover1 242:0e9201b67e2f 48 * @brief Update the battery level with a new value. Valid values range from
Rohit Grover 118:620d28e7a1ba 49 * 0..100. Anything outside this range will be ignored.
rgrover1 242:0e9201b67e2f 50 *
rgrover1 242:0e9201b67e2f 51 * @param newLevel
mbedAustin 238:905d6fc17fda 52 * update to battery level.
Rohit Grover 118:620d28e7a1ba 53 */
Rohit Grover 118:620d28e7a1ba 54 void updateBatteryLevel(uint8_t newLevel) {
Rohit Grover 118:620d28e7a1ba 55 batteryLevel = newLevel;
Rohit Grover 118:620d28e7a1ba 56 ble.updateCharacteristicValue(batteryLevelCharacteristic.getValueAttribute().getHandle(), &batteryLevel, 1);
Rohit Grover 118:620d28e7a1ba 57 }
Rohit Grover 118:620d28e7a1ba 58
rgrover1 526:caa67c3187a0 59 protected:
rgrover1 277:1407d2f1ce3c 60 BLEDevice &ble;
rgrover1 277:1407d2f1ce3c 61
rgrover1 277:1407d2f1ce3c 62 uint8_t batteryLevel;
rgrover1 277:1407d2f1ce3c 63 ReadOnlyGattCharacteristic<uint8_t> batteryLevelCharacteristic;
Rohit Grover 118:620d28e7a1ba 64 };
Rohit Grover 118:620d28e7a1ba 65
rgrover1 242:0e9201b67e2f 66 #endif /* #ifndef __BLE_BATTERY_SERVICE_H__*/