Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 17 23:23:45 2019 +0000
Revision:
0:5b88d5760320
mbed-os5 only for TYBLE16

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /* mbed Microcontroller Library
kenjiArai 0:5b88d5760320 2 * Copyright (c) 2006-2013 ARM Limited
kenjiArai 0:5b88d5760320 3 *
kenjiArai 0:5b88d5760320 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 5 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 6 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 7 *
kenjiArai 0:5b88d5760320 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 9 *
kenjiArai 0:5b88d5760320 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 13 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 14 * limitations under the License.
kenjiArai 0:5b88d5760320 15 */
kenjiArai 0:5b88d5760320 16
kenjiArai 0:5b88d5760320 17 #ifndef MBED_DISCOVERED_SERVICE_H__
kenjiArai 0:5b88d5760320 18 #define MBED_DISCOVERED_SERVICE_H__
kenjiArai 0:5b88d5760320 19
kenjiArai 0:5b88d5760320 20 #include "UUID.h"
kenjiArai 0:5b88d5760320 21 #include "GattAttribute.h"
kenjiArai 0:5b88d5760320 22
kenjiArai 0:5b88d5760320 23 /**
kenjiArai 0:5b88d5760320 24 * @addtogroup ble
kenjiArai 0:5b88d5760320 25 * @{
kenjiArai 0:5b88d5760320 26 * @addtogroup gatt
kenjiArai 0:5b88d5760320 27 * @{
kenjiArai 0:5b88d5760320 28 * @addtogroup client
kenjiArai 0:5b88d5760320 29 * @{
kenjiArai 0:5b88d5760320 30 */
kenjiArai 0:5b88d5760320 31
kenjiArai 0:5b88d5760320 32 /**
kenjiArai 0:5b88d5760320 33 * Representation of a GATT service discovered.
kenjiArai 0:5b88d5760320 34 *
kenjiArai 0:5b88d5760320 35 * The discovery procedure discovers GATT Services are discovered on distant
kenjiArai 0:5b88d5760320 36 * GATT servers, which can be initiated by calling
kenjiArai 0:5b88d5760320 37 * GattClient::launchServiceDiscovery() or GattClient::discoverServices(). The
kenjiArai 0:5b88d5760320 38 * discovery process passes instances of this class to the callback handling
kenjiArai 0:5b88d5760320 39 * service discovered.
kenjiArai 0:5b88d5760320 40 *
kenjiArai 0:5b88d5760320 41 * Discovered services are characterized by the UUID of the service discovered
kenjiArai 0:5b88d5760320 42 * and the range of the GATT attributes belonging to the service.
kenjiArai 0:5b88d5760320 43 *
kenjiArai 0:5b88d5760320 44 * The UUID can be queried by calling getUUID() while the begining of the
kenjiArai 0:5b88d5760320 45 * attribute range can be obtained through getStartHandle() and the end of the
kenjiArai 0:5b88d5760320 46 * attribute range with a call to getEndHandle().
kenjiArai 0:5b88d5760320 47 *
kenjiArai 0:5b88d5760320 48 * The characteristics composing the service may be discovered by the function
kenjiArai 0:5b88d5760320 49 * GattClient::launchServiceDiscovery().
kenjiArai 0:5b88d5760320 50 */
kenjiArai 0:5b88d5760320 51 class DiscoveredService {
kenjiArai 0:5b88d5760320 52 public:
kenjiArai 0:5b88d5760320 53 /**
kenjiArai 0:5b88d5760320 54 * Get the UUID of the discovered service.
kenjiArai 0:5b88d5760320 55 *
kenjiArai 0:5b88d5760320 56 * @return A reference to the UUID of the discovered service.
kenjiArai 0:5b88d5760320 57 */
kenjiArai 0:5b88d5760320 58 const UUID &getUUID(void) const
kenjiArai 0:5b88d5760320 59 {
kenjiArai 0:5b88d5760320 60 return uuid;
kenjiArai 0:5b88d5760320 61 }
kenjiArai 0:5b88d5760320 62
kenjiArai 0:5b88d5760320 63 /**
kenjiArai 0:5b88d5760320 64 * Get the start handle of the discovered service in the peer's GATT server.
kenjiArai 0:5b88d5760320 65 *
kenjiArai 0:5b88d5760320 66 * @return A reference to the start handle.
kenjiArai 0:5b88d5760320 67 */
kenjiArai 0:5b88d5760320 68 const GattAttribute::Handle_t& getStartHandle(void) const
kenjiArai 0:5b88d5760320 69 {
kenjiArai 0:5b88d5760320 70 return startHandle;
kenjiArai 0:5b88d5760320 71 }
kenjiArai 0:5b88d5760320 72
kenjiArai 0:5b88d5760320 73 /**
kenjiArai 0:5b88d5760320 74 * Get the end handle of the discovered service in the peer's GATT server.
kenjiArai 0:5b88d5760320 75 *
kenjiArai 0:5b88d5760320 76 * @return A reference to the end handle.
kenjiArai 0:5b88d5760320 77 */
kenjiArai 0:5b88d5760320 78 const GattAttribute::Handle_t& getEndHandle(void) const
kenjiArai 0:5b88d5760320 79 {
kenjiArai 0:5b88d5760320 80 return endHandle;
kenjiArai 0:5b88d5760320 81 }
kenjiArai 0:5b88d5760320 82
kenjiArai 0:5b88d5760320 83 public:
kenjiArai 0:5b88d5760320 84 /**
kenjiArai 0:5b88d5760320 85 * Construct a DiscoveredService instance.
kenjiArai 0:5b88d5760320 86 *
kenjiArai 0:5b88d5760320 87 * @attention This API is not meant to be used publicly. It is meant to be
kenjiArai 0:5b88d5760320 88 * used by internal APIs of Mbed BLE.
kenjiArai 0:5b88d5760320 89 */
kenjiArai 0:5b88d5760320 90 DiscoveredService() :
kenjiArai 0:5b88d5760320 91 uuid(UUID::ShortUUIDBytes_t(0)),
kenjiArai 0:5b88d5760320 92 startHandle(GattAttribute::INVALID_HANDLE),
kenjiArai 0:5b88d5760320 93 endHandle(GattAttribute::INVALID_HANDLE) {
kenjiArai 0:5b88d5760320 94 }
kenjiArai 0:5b88d5760320 95
kenjiArai 0:5b88d5760320 96 /**
kenjiArai 0:5b88d5760320 97 * Set information about the discovered service.
kenjiArai 0:5b88d5760320 98 *
kenjiArai 0:5b88d5760320 99 * @attention This API is not meant to be used publicly. It is meant to be
kenjiArai 0:5b88d5760320 100 * used by internal APIs of Mbed BLE.
kenjiArai 0:5b88d5760320 101 *
kenjiArai 0:5b88d5760320 102 * @param[in] uuidIn The UUID of the discovered service.
kenjiArai 0:5b88d5760320 103 * @param[in] startHandleIn The start handle of the discovered service in
kenjiArai 0:5b88d5760320 104 * the peer's GATT server.
kenjiArai 0:5b88d5760320 105 * @param[in] endHandleIn The end handle of the discovered service in the
kenjiArai 0:5b88d5760320 106 * peer's GATT server.
kenjiArai 0:5b88d5760320 107 */
kenjiArai 0:5b88d5760320 108 void setup(
kenjiArai 0:5b88d5760320 109 UUID uuidIn,
kenjiArai 0:5b88d5760320 110 GattAttribute::Handle_t startHandleIn,
kenjiArai 0:5b88d5760320 111 GattAttribute::Handle_t endHandleIn
kenjiArai 0:5b88d5760320 112 ) {
kenjiArai 0:5b88d5760320 113 uuid = uuidIn;
kenjiArai 0:5b88d5760320 114 startHandle = startHandleIn;
kenjiArai 0:5b88d5760320 115 endHandle = endHandleIn;
kenjiArai 0:5b88d5760320 116 }
kenjiArai 0:5b88d5760320 117
kenjiArai 0:5b88d5760320 118 /**
kenjiArai 0:5b88d5760320 119 * Set the start and end handle of the discovered service.
kenjiArai 0:5b88d5760320 120 *
kenjiArai 0:5b88d5760320 121 * @attention This API is not meant to be used publicly. It is meant to be
kenjiArai 0:5b88d5760320 122 * used by internal APIs of Mbed BLE.
kenjiArai 0:5b88d5760320 123 *
kenjiArai 0:5b88d5760320 124 * @param[in] startHandleIn The start handle of the discovered service in
kenjiArai 0:5b88d5760320 125 * the peer's GATT server.
kenjiArai 0:5b88d5760320 126 * @param[in] endHandleIn The end handle of the discovered service in the
kenjiArai 0:5b88d5760320 127 * peer's GATT server.
kenjiArai 0:5b88d5760320 128 */
kenjiArai 0:5b88d5760320 129 void setup(
kenjiArai 0:5b88d5760320 130 GattAttribute::Handle_t startHandleIn,
kenjiArai 0:5b88d5760320 131 GattAttribute::Handle_t endHandleIn
kenjiArai 0:5b88d5760320 132 ) {
kenjiArai 0:5b88d5760320 133 startHandle = startHandleIn;
kenjiArai 0:5b88d5760320 134 endHandle = endHandleIn;
kenjiArai 0:5b88d5760320 135 }
kenjiArai 0:5b88d5760320 136
kenjiArai 0:5b88d5760320 137 /**
kenjiArai 0:5b88d5760320 138 * Set the long UUID of the discovered service.
kenjiArai 0:5b88d5760320 139 *
kenjiArai 0:5b88d5760320 140 * @attention This API is not meant to be used publicly. It is meant to be
kenjiArai 0:5b88d5760320 141 * used by internal APIs of Mbed BLE.
kenjiArai 0:5b88d5760320 142 *
kenjiArai 0:5b88d5760320 143 * @param[in] longUUID The bytes composing the long UUID of this discovered
kenjiArai 0:5b88d5760320 144 * service.
kenjiArai 0:5b88d5760320 145 * @param[in] order The byte ordering of @p longUUID.
kenjiArai 0:5b88d5760320 146 */
kenjiArai 0:5b88d5760320 147 void setupLongUUID(
kenjiArai 0:5b88d5760320 148 UUID::LongUUIDBytes_t longUUID,
kenjiArai 0:5b88d5760320 149 UUID::ByteOrder_t order = UUID::MSB
kenjiArai 0:5b88d5760320 150 ) {
kenjiArai 0:5b88d5760320 151 uuid.setupLong(longUUID, order);
kenjiArai 0:5b88d5760320 152 }
kenjiArai 0:5b88d5760320 153
kenjiArai 0:5b88d5760320 154
kenjiArai 0:5b88d5760320 155 private:
kenjiArai 0:5b88d5760320 156 DiscoveredService(const DiscoveredService &);
kenjiArai 0:5b88d5760320 157
kenjiArai 0:5b88d5760320 158 private:
kenjiArai 0:5b88d5760320 159 /**
kenjiArai 0:5b88d5760320 160 * UUID of the service.
kenjiArai 0:5b88d5760320 161 */
kenjiArai 0:5b88d5760320 162 UUID uuid;
kenjiArai 0:5b88d5760320 163
kenjiArai 0:5b88d5760320 164 /**
kenjiArai 0:5b88d5760320 165 * Begining of the Service Handle Range.
kenjiArai 0:5b88d5760320 166 */
kenjiArai 0:5b88d5760320 167 GattAttribute::Handle_t startHandle;
kenjiArai 0:5b88d5760320 168
kenjiArai 0:5b88d5760320 169 /**
kenjiArai 0:5b88d5760320 170 * Service Handle Range.
kenjiArai 0:5b88d5760320 171 */
kenjiArai 0:5b88d5760320 172 GattAttribute::Handle_t endHandle;
kenjiArai 0:5b88d5760320 173 };
kenjiArai 0:5b88d5760320 174
kenjiArai 0:5b88d5760320 175 /**
kenjiArai 0:5b88d5760320 176 * @}
kenjiArai 0:5b88d5760320 177 * @}
kenjiArai 0:5b88d5760320 178 * @}
kenjiArai 0:5b88d5760320 179 */
kenjiArai 0:5b88d5760320 180
kenjiArai 0:5b88d5760320 181 #endif /* MBED_DISCOVERED_SERVICE_H__ */