Lancaster University's fork of the mbed BLE API. Lives on github, https://github.com/lancaster-university/BLE_API

Dependents:   microbit-dal microbit-dal microbit-ble-open microbit-dal ... more

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Thu Nov 26 12:52:02 2015 +0000
Revision:
908:0a28c427cdc7
Parent:
907:f9a79127973a
Child:
912:f728aa46e7df
Synchronized with git rev e4a6b63f
Author: Irit Arkin
New version

Based on the main repo's master version, with edits to the API.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rgrover1 710:b2e1a2660ec2 1 /* mbed Microcontroller Library
rgrover1 710:b2e1a2660ec2 2 * Copyright (c) 2006-2013 ARM Limited
rgrover1 710:b2e1a2660ec2 3 *
rgrover1 710:b2e1a2660ec2 4 * Licensed under the Apache License, Version 2.0 (the "License");
rgrover1 710:b2e1a2660ec2 5 * you may not use this file except in compliance with the License.
rgrover1 710:b2e1a2660ec2 6 * You may obtain a copy of the License at
rgrover1 710:b2e1a2660ec2 7 *
rgrover1 710:b2e1a2660ec2 8 * http://www.apache.org/licenses/LICENSE-2.0
rgrover1 710:b2e1a2660ec2 9 *
rgrover1 710:b2e1a2660ec2 10 * Unless required by applicable law or agreed to in writing, software
rgrover1 710:b2e1a2660ec2 11 * distributed under the License is distributed on an "AS IS" BASIS,
rgrover1 710:b2e1a2660ec2 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rgrover1 710:b2e1a2660ec2 13 * See the License for the specific language governing permissions and
rgrover1 710:b2e1a2660ec2 14 * limitations under the License.
rgrover1 710:b2e1a2660ec2 15 */
rgrover1 710:b2e1a2660ec2 16
rgrover1 710:b2e1a2660ec2 17 #ifndef __GATT_SERVICE_H__
rgrover1 710:b2e1a2660ec2 18 #define __GATT_SERVICE_H__
rgrover1 710:b2e1a2660ec2 19
rgrover1 710:b2e1a2660ec2 20 #include "UUID.h"
rgrover1 710:b2e1a2660ec2 21 #include "GattCharacteristic.h"
rgrover1 710:b2e1a2660ec2 22
rgrover1 710:b2e1a2660ec2 23 class GattService {
rgrover1 710:b2e1a2660ec2 24 public:
rgrover1 710:b2e1a2660ec2 25 enum {
rgrover1 710:b2e1a2660ec2 26 UUID_ALERT_NOTIFICATION_SERVICE = 0x1811,
rgrover1 710:b2e1a2660ec2 27 UUID_BATTERY_SERVICE = 0x180F,
rgrover1 710:b2e1a2660ec2 28 UUID_BLOOD_PRESSURE_SERVICE = 0x1810,
rgrover1 710:b2e1a2660ec2 29 UUID_CURRENT_TIME_SERVICE = 0x1805,
rgrover1 710:b2e1a2660ec2 30 UUID_CYCLING_SPEED_AND_CADENCE = 0x1816,
rgrover1 710:b2e1a2660ec2 31 UUID_DEVICE_INFORMATION_SERVICE = 0x180A,
rgrover1 908:0a28c427cdc7 32 UUID_ENVIRONMENTAL_SERVICE = 0x181A,
rgrover1 710:b2e1a2660ec2 33 UUID_GLUCOSE_SERVICE = 0x1808,
rgrover1 710:b2e1a2660ec2 34 UUID_HEALTH_THERMOMETER_SERVICE = 0x1809,
rgrover1 710:b2e1a2660ec2 35 UUID_HEART_RATE_SERVICE = 0x180D,
rgrover1 710:b2e1a2660ec2 36 UUID_HUMAN_INTERFACE_DEVICE_SERVICE = 0x1812,
rgrover1 710:b2e1a2660ec2 37 UUID_IMMEDIATE_ALERT_SERVICE = 0x1802,
rgrover1 710:b2e1a2660ec2 38 UUID_LINK_LOSS_SERVICE = 0x1803,
rgrover1 710:b2e1a2660ec2 39 UUID_NEXT_DST_CHANGE_SERVICE = 0x1807,
rgrover1 710:b2e1a2660ec2 40 UUID_PHONE_ALERT_STATUS_SERVICE = 0x180E,
rgrover1 710:b2e1a2660ec2 41 UUID_REFERENCE_TIME_UPDATE_SERVICE = 0x1806,
rgrover1 710:b2e1a2660ec2 42 UUID_RUNNING_SPEED_AND_CADENCE = 0x1814,
rgrover1 710:b2e1a2660ec2 43 UUID_SCAN_PARAMETERS_SERVICE = 0x1813,
rgrover1 710:b2e1a2660ec2 44 UUID_TX_POWER_SERVICE = 0x1804
rgrover1 710:b2e1a2660ec2 45 };
rgrover1 710:b2e1a2660ec2 46
rgrover1 710:b2e1a2660ec2 47 public:
rgrover1 710:b2e1a2660ec2 48 /**
rgrover1 747:48d376eca517 49 * @brief Creates a new GattService using the specified 16-bit
rgrover1 908:0a28c427cdc7 50 * UUID, value length, and properties.
rgrover1 710:b2e1a2660ec2 51 *
rgrover1 908:0a28c427cdc7 52 * @note The UUID value must be unique and is normally >1.
rgrover1 710:b2e1a2660ec2 53 *
rgrover1 710:b2e1a2660ec2 54 * @param[in] uuid
rgrover1 908:0a28c427cdc7 55 * The UUID to use for this service.
rgrover1 710:b2e1a2660ec2 56 * @param[in] characteristics
rgrover1 908:0a28c427cdc7 57 * A pointer to an array of characteristics to be included within this service.
rgrover1 710:b2e1a2660ec2 58 * @param[in] numCharacteristics
rgrover1 908:0a28c427cdc7 59 * The number of characteristics.
rgrover1 710:b2e1a2660ec2 60 */
rgrover1 710:b2e1a2660ec2 61 GattService(const UUID &uuid, GattCharacteristic *characteristics[], unsigned numCharacteristics) :
rgrover1 710:b2e1a2660ec2 62 _primaryServiceID(uuid), _characteristicCount(numCharacteristics), _characteristics(characteristics), _handle(0) {
rgrover1 710:b2e1a2660ec2 63 /* empty */
rgrover1 710:b2e1a2660ec2 64 }
rgrover1 710:b2e1a2660ec2 65
rgrover1 710:b2e1a2660ec2 66 const UUID &getUUID(void) const {return _primaryServiceID; }
rgrover1 710:b2e1a2660ec2 67 uint16_t getHandle(void) const {return _handle; }
rgrover1 710:b2e1a2660ec2 68 uint8_t getCharacteristicCount(void) const {return _characteristicCount;}
rgrover1 710:b2e1a2660ec2 69 void setHandle(uint16_t handle) {_handle = handle;}
rgrover1 710:b2e1a2660ec2 70
rgrover1 710:b2e1a2660ec2 71 GattCharacteristic *getCharacteristic(uint8_t index) {
rgrover1 710:b2e1a2660ec2 72 if (index >= _characteristicCount) {
rgrover1 710:b2e1a2660ec2 73 return NULL;
rgrover1 710:b2e1a2660ec2 74 }
rgrover1 710:b2e1a2660ec2 75
rgrover1 710:b2e1a2660ec2 76 return _characteristics[index];
rgrover1 710:b2e1a2660ec2 77 }
rgrover1 710:b2e1a2660ec2 78
rgrover1 710:b2e1a2660ec2 79 private:
rgrover1 710:b2e1a2660ec2 80 UUID _primaryServiceID;
rgrover1 710:b2e1a2660ec2 81 uint8_t _characteristicCount;
rgrover1 710:b2e1a2660ec2 82 GattCharacteristic **_characteristics;
rgrover1 710:b2e1a2660ec2 83 uint16_t _handle;
rgrover1 710:b2e1a2660ec2 84 };
rgrover1 710:b2e1a2660ec2 85
rgrover1 710:b2e1a2660ec2 86 #endif // ifndef __GATT_SERVICE_H__