High level Bluetooth Low Energy API and radio abstraction layer

Dependencies:   nRF51822

Dependents:   LinkNode_LIS3DH

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Wed Dec 02 10:29:44 2015 +0000
Revision:
993:4d62b7967c11
Parent:
992:ca834f7ae8ed
Child:
1042:21a86ac7f5b1
Synchronized with git rev 12e27cd4
Author: Rohit Grover
Release 2.1.3
=============

* Improvements to CallChainOfFunctionPointerswithContext:
- add a `detach` function to be able to remove callbacks.
- detach function now return true if a function has been detached and
false otherwise.
- add a function call operator.
- use safe-bool idiom. see : http://www.artima.com/cppsource/safebool.html

* Add SafeBool class which allow to easily declare a safe bool operator in
c++03.

* Improvements to FunctionPointerWithContext:
- fix call propagation
- use safe bool idiom

* Add config file for generating Doxygen.

* Setup for onRadioNotification callback does not call initRadioNotification
anymore.

* GapAdvertisementData now handles replacement and appending of data fields
based on type. Some fields can be replaced with new values, and others
require the payload to be appended.

Who changed what in which revision?

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