Preliminary main mbed library for nexpaq development

Committer:
nexpaq
Date:
Fri Nov 04 20:27:58 2016 +0000
Revision:
0:6c56fb4bc5f0
Moving to library for sharing updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nexpaq 0:6c56fb4bc5f0 1 /* mbed Microcontroller Library
nexpaq 0:6c56fb4bc5f0 2 * Copyright (c) 2006-2013 ARM Limited
nexpaq 0:6c56fb4bc5f0 3 *
nexpaq 0:6c56fb4bc5f0 4 * Licensed under the Apache License, Version 2.0 (the "License");
nexpaq 0:6c56fb4bc5f0 5 * you may not use this file except in compliance with the License.
nexpaq 0:6c56fb4bc5f0 6 * You may obtain a copy of the License at
nexpaq 0:6c56fb4bc5f0 7 *
nexpaq 0:6c56fb4bc5f0 8 * http://www.apache.org/licenses/LICENSE-2.0
nexpaq 0:6c56fb4bc5f0 9 *
nexpaq 0:6c56fb4bc5f0 10 * Unless required by applicable law or agreed to in writing, software
nexpaq 0:6c56fb4bc5f0 11 * distributed under the License is distributed on an "AS IS" BASIS,
nexpaq 0:6c56fb4bc5f0 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
nexpaq 0:6c56fb4bc5f0 13 * See the License for the specific language governing permissions and
nexpaq 0:6c56fb4bc5f0 14 * limitations under the License.
nexpaq 0:6c56fb4bc5f0 15 */
nexpaq 0:6c56fb4bc5f0 16
nexpaq 0:6c56fb4bc5f0 17 #ifndef __GATT_SERVICE_H__
nexpaq 0:6c56fb4bc5f0 18 #define __GATT_SERVICE_H__
nexpaq 0:6c56fb4bc5f0 19
nexpaq 0:6c56fb4bc5f0 20 #include "UUID.h"
nexpaq 0:6c56fb4bc5f0 21 #include "GattCharacteristic.h"
nexpaq 0:6c56fb4bc5f0 22
nexpaq 0:6c56fb4bc5f0 23 class GattService {
nexpaq 0:6c56fb4bc5f0 24 public:
nexpaq 0:6c56fb4bc5f0 25 enum {
nexpaq 0:6c56fb4bc5f0 26 UUID_ALERT_NOTIFICATION_SERVICE = 0x1811,
nexpaq 0:6c56fb4bc5f0 27 UUID_BATTERY_SERVICE = 0x180F,
nexpaq 0:6c56fb4bc5f0 28 UUID_BLOOD_PRESSURE_SERVICE = 0x1810,
nexpaq 0:6c56fb4bc5f0 29 UUID_CURRENT_TIME_SERVICE = 0x1805,
nexpaq 0:6c56fb4bc5f0 30 UUID_CYCLING_SPEED_AND_CADENCE = 0x1816,
nexpaq 0:6c56fb4bc5f0 31 UUID_DEVICE_INFORMATION_SERVICE = 0x180A,
nexpaq 0:6c56fb4bc5f0 32 UUID_ENVIRONMENTAL_SERVICE = 0x181A,
nexpaq 0:6c56fb4bc5f0 33 UUID_GLUCOSE_SERVICE = 0x1808,
nexpaq 0:6c56fb4bc5f0 34 UUID_HEALTH_THERMOMETER_SERVICE = 0x1809,
nexpaq 0:6c56fb4bc5f0 35 UUID_HEART_RATE_SERVICE = 0x180D,
nexpaq 0:6c56fb4bc5f0 36 UUID_HUMAN_INTERFACE_DEVICE_SERVICE = 0x1812,
nexpaq 0:6c56fb4bc5f0 37 UUID_IMMEDIATE_ALERT_SERVICE = 0x1802,
nexpaq 0:6c56fb4bc5f0 38 UUID_LINK_LOSS_SERVICE = 0x1803,
nexpaq 0:6c56fb4bc5f0 39 UUID_NEXT_DST_CHANGE_SERVICE = 0x1807,
nexpaq 0:6c56fb4bc5f0 40 UUID_PHONE_ALERT_STATUS_SERVICE = 0x180E,
nexpaq 0:6c56fb4bc5f0 41 UUID_REFERENCE_TIME_UPDATE_SERVICE = 0x1806,
nexpaq 0:6c56fb4bc5f0 42 UUID_RUNNING_SPEED_AND_CADENCE = 0x1814,
nexpaq 0:6c56fb4bc5f0 43 UUID_SCAN_PARAMETERS_SERVICE = 0x1813,
nexpaq 0:6c56fb4bc5f0 44 UUID_TX_POWER_SERVICE = 0x1804
nexpaq 0:6c56fb4bc5f0 45 };
nexpaq 0:6c56fb4bc5f0 46
nexpaq 0:6c56fb4bc5f0 47 public:
nexpaq 0:6c56fb4bc5f0 48 /**
nexpaq 0:6c56fb4bc5f0 49 * @brief Creates a new GattService using the specified 16-bit
nexpaq 0:6c56fb4bc5f0 50 * UUID, value length, and properties.
nexpaq 0:6c56fb4bc5f0 51 *
nexpaq 0:6c56fb4bc5f0 52 * @note The UUID value must be unique and is normally >1.
nexpaq 0:6c56fb4bc5f0 53 *
nexpaq 0:6c56fb4bc5f0 54 * @param[in] uuid
nexpaq 0:6c56fb4bc5f0 55 * The UUID to use for this service.
nexpaq 0:6c56fb4bc5f0 56 * @param[in] characteristics
nexpaq 0:6c56fb4bc5f0 57 * A pointer to an array of characteristics to be included within this service.
nexpaq 0:6c56fb4bc5f0 58 * @param[in] numCharacteristics
nexpaq 0:6c56fb4bc5f0 59 * The number of characteristics.
nexpaq 0:6c56fb4bc5f0 60 */
nexpaq 0:6c56fb4bc5f0 61 GattService(const UUID &uuid, GattCharacteristic *characteristics[], unsigned numCharacteristics) :
nexpaq 0:6c56fb4bc5f0 62 _primaryServiceID(uuid),
nexpaq 0:6c56fb4bc5f0 63 _characteristicCount(numCharacteristics),
nexpaq 0:6c56fb4bc5f0 64 _characteristics(characteristics),
nexpaq 0:6c56fb4bc5f0 65 _handle(0) {
nexpaq 0:6c56fb4bc5f0 66 /* empty */
nexpaq 0:6c56fb4bc5f0 67 }
nexpaq 0:6c56fb4bc5f0 68
nexpaq 0:6c56fb4bc5f0 69 /**
nexpaq 0:6c56fb4bc5f0 70 * Get this service's UUID.
nexpaq 0:6c56fb4bc5f0 71 *
nexpaq 0:6c56fb4bc5f0 72 * @return A reference to the service's UUID.
nexpaq 0:6c56fb4bc5f0 73 */
nexpaq 0:6c56fb4bc5f0 74 const UUID &getUUID(void) const {
nexpaq 0:6c56fb4bc5f0 75 return _primaryServiceID;
nexpaq 0:6c56fb4bc5f0 76 }
nexpaq 0:6c56fb4bc5f0 77
nexpaq 0:6c56fb4bc5f0 78 /**
nexpaq 0:6c56fb4bc5f0 79 * Get handle of the service declaration attribute in the ATT table.
nexpaq 0:6c56fb4bc5f0 80 *
nexpaq 0:6c56fb4bc5f0 81 * @return The service's handle.
nexpaq 0:6c56fb4bc5f0 82 */
nexpaq 0:6c56fb4bc5f0 83 uint16_t getHandle(void) const {
nexpaq 0:6c56fb4bc5f0 84 return _handle;
nexpaq 0:6c56fb4bc5f0 85 }
nexpaq 0:6c56fb4bc5f0 86
nexpaq 0:6c56fb4bc5f0 87 /**
nexpaq 0:6c56fb4bc5f0 88 * Get the total number of characteristics within this service.
nexpaq 0:6c56fb4bc5f0 89 *
nexpaq 0:6c56fb4bc5f0 90 * @return The total number of characteristics within this service.
nexpaq 0:6c56fb4bc5f0 91 */
nexpaq 0:6c56fb4bc5f0 92 uint8_t getCharacteristicCount(void) const {
nexpaq 0:6c56fb4bc5f0 93 return _characteristicCount;
nexpaq 0:6c56fb4bc5f0 94 }
nexpaq 0:6c56fb4bc5f0 95
nexpaq 0:6c56fb4bc5f0 96 /**
nexpaq 0:6c56fb4bc5f0 97 * Set the handle of the service declaration attribute in the ATT table.
nexpaq 0:6c56fb4bc5f0 98 *
nexpaq 0:6c56fb4bc5f0 99 * @param[in] handle
nexpaq 0:6c56fb4bc5f0 100 * The service's handle.
nexpaq 0:6c56fb4bc5f0 101 */
nexpaq 0:6c56fb4bc5f0 102 void setHandle(uint16_t handle) {
nexpaq 0:6c56fb4bc5f0 103 _handle = handle;
nexpaq 0:6c56fb4bc5f0 104 }
nexpaq 0:6c56fb4bc5f0 105
nexpaq 0:6c56fb4bc5f0 106 /**
nexpaq 0:6c56fb4bc5f0 107 * Get this service's characteristic at a specific index.
nexpaq 0:6c56fb4bc5f0 108 *
nexpaq 0:6c56fb4bc5f0 109 * @param[in] index
nexpaq 0:6c56fb4bc5f0 110 * The index of the characteristic.
nexpaq 0:6c56fb4bc5f0 111 *
nexpaq 0:6c56fb4bc5f0 112 * @return A pointer to the characterisitic at index @p index.
nexpaq 0:6c56fb4bc5f0 113 */
nexpaq 0:6c56fb4bc5f0 114 GattCharacteristic *getCharacteristic(uint8_t index) {
nexpaq 0:6c56fb4bc5f0 115 if (index >= _characteristicCount) {
nexpaq 0:6c56fb4bc5f0 116 return NULL;
nexpaq 0:6c56fb4bc5f0 117 }
nexpaq 0:6c56fb4bc5f0 118
nexpaq 0:6c56fb4bc5f0 119 return _characteristics[index];
nexpaq 0:6c56fb4bc5f0 120 }
nexpaq 0:6c56fb4bc5f0 121
nexpaq 0:6c56fb4bc5f0 122 private:
nexpaq 0:6c56fb4bc5f0 123 /**
nexpaq 0:6c56fb4bc5f0 124 * This service's UUID.
nexpaq 0:6c56fb4bc5f0 125 */
nexpaq 0:6c56fb4bc5f0 126 UUID _primaryServiceID;
nexpaq 0:6c56fb4bc5f0 127 /**
nexpaq 0:6c56fb4bc5f0 128 * Total number of characteristics within this service.
nexpaq 0:6c56fb4bc5f0 129 */
nexpaq 0:6c56fb4bc5f0 130 uint8_t _characteristicCount;
nexpaq 0:6c56fb4bc5f0 131 /**
nexpaq 0:6c56fb4bc5f0 132 * An array with pointers to the characteristics added to this service.
nexpaq 0:6c56fb4bc5f0 133 */
nexpaq 0:6c56fb4bc5f0 134 GattCharacteristic **_characteristics;
nexpaq 0:6c56fb4bc5f0 135 /**
nexpaq 0:6c56fb4bc5f0 136 * Handle of the service declaration attribute in the ATT table.
nexpaq 0:6c56fb4bc5f0 137 *
nexpaq 0:6c56fb4bc5f0 138 * @note This handle is generally assigned by the underlying BLE stack when the
nexpaq 0:6c56fb4bc5f0 139 * service is added to the ATT table.
nexpaq 0:6c56fb4bc5f0 140 */
nexpaq 0:6c56fb4bc5f0 141 uint16_t _handle;
nexpaq 0:6c56fb4bc5f0 142 };
nexpaq 0:6c56fb4bc5f0 143
nexpaq 0:6c56fb4bc5f0 144 #endif /* ifndef __GATT_SERVICE_H__ */