Lightly modified version of the BLE stack, that doesn't bring up a DFUService by default... as we have our own.

Fork of BLE_API by Bluetooth Low Energy

Committer:
rgrover1
Date:
Wed Apr 15 09:05:10 2015 +0100
Revision:
330:2a3f554ee9fd
Parent:
260:ea7f9f14cc15
Synchronized with git rev 88e59f33
Author: Rohit Grover
merge GattService.cpp into GattService.h

Who changed what in which revision?

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