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) 2019 ARM Limited
kenjiArai 0:5b88d5760320 3 * SPDX-License-Identifier: Apache-2.0
kenjiArai 0:5b88d5760320 4 *
kenjiArai 0:5b88d5760320 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 6 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 7 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 8 *
kenjiArai 0:5b88d5760320 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 10 *
kenjiArai 0:5b88d5760320 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 14 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 15 * limitations under the License.
kenjiArai 0:5b88d5760320 16 */
kenjiArai 0:5b88d5760320 17
kenjiArai 0:5b88d5760320 18 #include "ble/GattClient.h"
kenjiArai 0:5b88d5760320 19
kenjiArai 0:5b88d5760320 20 namespace ble {
kenjiArai 0:5b88d5760320 21 namespace interface {
kenjiArai 0:5b88d5760320 22
kenjiArai 0:5b88d5760320 23 template<class Impl>
kenjiArai 0:5b88d5760320 24 ble_error_t GattClient<Impl>::launchServiceDiscovery(
kenjiArai 0:5b88d5760320 25 ble::connection_handle_t connectionHandle,
kenjiArai 0:5b88d5760320 26 ServiceDiscovery::ServiceCallback_t sc,
kenjiArai 0:5b88d5760320 27 ServiceDiscovery::CharacteristicCallback_t cc,
kenjiArai 0:5b88d5760320 28 const UUID &matchingServiceUUID,
kenjiArai 0:5b88d5760320 29 const UUID &matchingCharacteristicUUIDIn
kenjiArai 0:5b88d5760320 30 ) {
kenjiArai 0:5b88d5760320 31 return impl()->launchServiceDiscovery_(
kenjiArai 0:5b88d5760320 32 connectionHandle,
kenjiArai 0:5b88d5760320 33 sc,
kenjiArai 0:5b88d5760320 34 cc,
kenjiArai 0:5b88d5760320 35 matchingServiceUUID,
kenjiArai 0:5b88d5760320 36 matchingCharacteristicUUIDIn
kenjiArai 0:5b88d5760320 37 );
kenjiArai 0:5b88d5760320 38 }
kenjiArai 0:5b88d5760320 39
kenjiArai 0:5b88d5760320 40 template<class Impl>
kenjiArai 0:5b88d5760320 41 ble_error_t GattClient<Impl>::discoverServices(
kenjiArai 0:5b88d5760320 42 ble::connection_handle_t connectionHandle,
kenjiArai 0:5b88d5760320 43 ServiceDiscovery::ServiceCallback_t callback,
kenjiArai 0:5b88d5760320 44 GattAttribute::Handle_t startHandle,
kenjiArai 0:5b88d5760320 45 GattAttribute::Handle_t endHandle
kenjiArai 0:5b88d5760320 46 ) {
kenjiArai 0:5b88d5760320 47 return impl()->discoverServices_(
kenjiArai 0:5b88d5760320 48 connectionHandle,
kenjiArai 0:5b88d5760320 49 callback,
kenjiArai 0:5b88d5760320 50 startHandle,
kenjiArai 0:5b88d5760320 51 endHandle
kenjiArai 0:5b88d5760320 52 );
kenjiArai 0:5b88d5760320 53 }
kenjiArai 0:5b88d5760320 54
kenjiArai 0:5b88d5760320 55 template<class Impl>
kenjiArai 0:5b88d5760320 56 bool GattClient<Impl>::isServiceDiscoveryActive(void) const
kenjiArai 0:5b88d5760320 57 {
kenjiArai 0:5b88d5760320 58 return impl()->isServiceDiscoveryActive_();
kenjiArai 0:5b88d5760320 59 }
kenjiArai 0:5b88d5760320 60
kenjiArai 0:5b88d5760320 61 template<class Impl>
kenjiArai 0:5b88d5760320 62 void GattClient<Impl>::terminateServiceDiscovery(void)
kenjiArai 0:5b88d5760320 63 {
kenjiArai 0:5b88d5760320 64 return impl()->terminateServiceDiscovery_();
kenjiArai 0:5b88d5760320 65 }
kenjiArai 0:5b88d5760320 66
kenjiArai 0:5b88d5760320 67 template<class Impl>
kenjiArai 0:5b88d5760320 68 ble_error_t GattClient<Impl>::read(
kenjiArai 0:5b88d5760320 69 ble::connection_handle_t connHandle,
kenjiArai 0:5b88d5760320 70 GattAttribute::Handle_t attributeHandle,
kenjiArai 0:5b88d5760320 71 uint16_t offset
kenjiArai 0:5b88d5760320 72 ) const {
kenjiArai 0:5b88d5760320 73 return impl()->read_(connHandle, attributeHandle, offset);
kenjiArai 0:5b88d5760320 74 }
kenjiArai 0:5b88d5760320 75
kenjiArai 0:5b88d5760320 76 template<class Impl>
kenjiArai 0:5b88d5760320 77 ble_error_t GattClient<Impl>::write(
kenjiArai 0:5b88d5760320 78 GattClient::WriteOp_t cmd,
kenjiArai 0:5b88d5760320 79 ble::connection_handle_t connHandle,
kenjiArai 0:5b88d5760320 80 GattAttribute::Handle_t attributeHandle,
kenjiArai 0:5b88d5760320 81 size_t length,
kenjiArai 0:5b88d5760320 82 const uint8_t *value
kenjiArai 0:5b88d5760320 83 ) const {
kenjiArai 0:5b88d5760320 84 return impl()->write_(
kenjiArai 0:5b88d5760320 85 cmd,
kenjiArai 0:5b88d5760320 86 connHandle,
kenjiArai 0:5b88d5760320 87 attributeHandle,
kenjiArai 0:5b88d5760320 88 length,
kenjiArai 0:5b88d5760320 89 value
kenjiArai 0:5b88d5760320 90 );
kenjiArai 0:5b88d5760320 91 }
kenjiArai 0:5b88d5760320 92
kenjiArai 0:5b88d5760320 93 template<class Impl>
kenjiArai 0:5b88d5760320 94 void GattClient<Impl>::onServiceDiscoveryTermination(
kenjiArai 0:5b88d5760320 95 ServiceDiscovery::TerminationCallback_t callback
kenjiArai 0:5b88d5760320 96 ) {
kenjiArai 0:5b88d5760320 97 return impl()->onServiceDiscoveryTermination_(callback);
kenjiArai 0:5b88d5760320 98 }
kenjiArai 0:5b88d5760320 99
kenjiArai 0:5b88d5760320 100 template<class Impl>
kenjiArai 0:5b88d5760320 101 ble_error_t GattClient<Impl>::discoverCharacteristicDescriptors(
kenjiArai 0:5b88d5760320 102 const DiscoveredCharacteristic& characteristic,
kenjiArai 0:5b88d5760320 103 const CharacteristicDescriptorDiscovery::DiscoveryCallback_t& discoveryCallback,
kenjiArai 0:5b88d5760320 104 const CharacteristicDescriptorDiscovery::TerminationCallback_t& terminationCallback
kenjiArai 0:5b88d5760320 105 ) {
kenjiArai 0:5b88d5760320 106 return impl()->discoverCharacteristicDescriptors_(
kenjiArai 0:5b88d5760320 107 characteristic,
kenjiArai 0:5b88d5760320 108 discoveryCallback,
kenjiArai 0:5b88d5760320 109 terminationCallback
kenjiArai 0:5b88d5760320 110 );
kenjiArai 0:5b88d5760320 111 }
kenjiArai 0:5b88d5760320 112
kenjiArai 0:5b88d5760320 113 template<class Impl>
kenjiArai 0:5b88d5760320 114 bool GattClient<Impl>::isCharacteristicDescriptorDiscoveryActive(
kenjiArai 0:5b88d5760320 115 const DiscoveredCharacteristic& characteristic
kenjiArai 0:5b88d5760320 116 ) const {
kenjiArai 0:5b88d5760320 117 return impl()->isCharacteristicDescriptorDiscoveryActive_(characteristic);
kenjiArai 0:5b88d5760320 118 }
kenjiArai 0:5b88d5760320 119
kenjiArai 0:5b88d5760320 120 template<class Impl>
kenjiArai 0:5b88d5760320 121 void GattClient<Impl>::terminateCharacteristicDescriptorDiscovery(
kenjiArai 0:5b88d5760320 122 const DiscoveredCharacteristic& characteristic
kenjiArai 0:5b88d5760320 123 ) {
kenjiArai 0:5b88d5760320 124 return impl()->terminateCharacteristicDescriptorDiscovery_(characteristic);
kenjiArai 0:5b88d5760320 125 }
kenjiArai 0:5b88d5760320 126
kenjiArai 0:5b88d5760320 127 template<class Impl>
kenjiArai 0:5b88d5760320 128 ble_error_t GattClient<Impl>::negotiateAttMtu(
kenjiArai 0:5b88d5760320 129 ble::connection_handle_t connHandle
kenjiArai 0:5b88d5760320 130 ) {
kenjiArai 0:5b88d5760320 131 return impl()->negotiateAttMtu_(connHandle);
kenjiArai 0:5b88d5760320 132 }
kenjiArai 0:5b88d5760320 133
kenjiArai 0:5b88d5760320 134 template<class Impl>
kenjiArai 0:5b88d5760320 135 ble_error_t GattClient<Impl>::reset(void)
kenjiArai 0:5b88d5760320 136 {
kenjiArai 0:5b88d5760320 137 return impl()->reset_();
kenjiArai 0:5b88d5760320 138 }
kenjiArai 0:5b88d5760320 139
kenjiArai 0:5b88d5760320 140 /* ------------------------ Default implementations ------------------------- */
kenjiArai 0:5b88d5760320 141
kenjiArai 0:5b88d5760320 142
kenjiArai 0:5b88d5760320 143 template<class Impl>
kenjiArai 0:5b88d5760320 144 ble_error_t GattClient<Impl>::reset_(void)
kenjiArai 0:5b88d5760320 145 {
kenjiArai 0:5b88d5760320 146 /* Notify that the instance is about to shut down. */
kenjiArai 0:5b88d5760320 147 shutdownCallChain.call(this);
kenjiArai 0:5b88d5760320 148 shutdownCallChain.clear();
kenjiArai 0:5b88d5760320 149
kenjiArai 0:5b88d5760320 150 onDataReadCallbackChain.clear();
kenjiArai 0:5b88d5760320 151 onDataWriteCallbackChain.clear();
kenjiArai 0:5b88d5760320 152 onHVXCallbackChain.clear();
kenjiArai 0:5b88d5760320 153
kenjiArai 0:5b88d5760320 154 return BLE_ERROR_NONE;
kenjiArai 0:5b88d5760320 155 }
kenjiArai 0:5b88d5760320 156
kenjiArai 0:5b88d5760320 157 template<class Impl>
kenjiArai 0:5b88d5760320 158 ble_error_t GattClient<Impl>::discoverServices_(
kenjiArai 0:5b88d5760320 159 ble::connection_handle_t connectionHandle,
kenjiArai 0:5b88d5760320 160 ServiceDiscovery::ServiceCallback_t callback,
kenjiArai 0:5b88d5760320 161 GattAttribute::Handle_t startHandle,
kenjiArai 0:5b88d5760320 162 GattAttribute::Handle_t endHandle
kenjiArai 0:5b88d5760320 163 ) {
kenjiArai 0:5b88d5760320 164 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 165 }
kenjiArai 0:5b88d5760320 166
kenjiArai 0:5b88d5760320 167 template<class Impl>
kenjiArai 0:5b88d5760320 168 ble_error_t GattClient<Impl>::launchServiceDiscovery_(
kenjiArai 0:5b88d5760320 169 ble::connection_handle_t connectionHandle,
kenjiArai 0:5b88d5760320 170 ServiceDiscovery::ServiceCallback_t sc,
kenjiArai 0:5b88d5760320 171 ServiceDiscovery::CharacteristicCallback_t cc,
kenjiArai 0:5b88d5760320 172 const UUID &matchingServiceUUID,
kenjiArai 0:5b88d5760320 173 const UUID &matchingCharacteristicUUIDIn
kenjiArai 0:5b88d5760320 174 ) {
kenjiArai 0:5b88d5760320 175 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 176 }
kenjiArai 0:5b88d5760320 177
kenjiArai 0:5b88d5760320 178 template<class Impl>
kenjiArai 0:5b88d5760320 179 bool GattClient<Impl>::isServiceDiscoveryActive_(void) const
kenjiArai 0:5b88d5760320 180 {
kenjiArai 0:5b88d5760320 181 return false;
kenjiArai 0:5b88d5760320 182 }
kenjiArai 0:5b88d5760320 183
kenjiArai 0:5b88d5760320 184 template<class Impl>
kenjiArai 0:5b88d5760320 185 void GattClient<Impl>::terminateServiceDiscovery_(void)
kenjiArai 0:5b88d5760320 186 {
kenjiArai 0:5b88d5760320 187 }
kenjiArai 0:5b88d5760320 188
kenjiArai 0:5b88d5760320 189 template<class Impl>
kenjiArai 0:5b88d5760320 190 ble_error_t GattClient<Impl>::negotiateAttMtu_(
kenjiArai 0:5b88d5760320 191 ble::connection_handle_t connHandle
kenjiArai 0:5b88d5760320 192 ) {
kenjiArai 0:5b88d5760320 193 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 194 }
kenjiArai 0:5b88d5760320 195
kenjiArai 0:5b88d5760320 196 template<class Impl>
kenjiArai 0:5b88d5760320 197 ble_error_t GattClient<Impl>::read_(
kenjiArai 0:5b88d5760320 198 ble::connection_handle_t connHandle,
kenjiArai 0:5b88d5760320 199 GattAttribute::Handle_t attributeHandle,
kenjiArai 0:5b88d5760320 200 uint16_t offset
kenjiArai 0:5b88d5760320 201 ) const {
kenjiArai 0:5b88d5760320 202 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 203 }
kenjiArai 0:5b88d5760320 204
kenjiArai 0:5b88d5760320 205 template<class Impl>
kenjiArai 0:5b88d5760320 206 ble_error_t GattClient<Impl>::write_(
kenjiArai 0:5b88d5760320 207 GattClient::WriteOp_t cmd,
kenjiArai 0:5b88d5760320 208 ble::connection_handle_t connHandle,
kenjiArai 0:5b88d5760320 209 GattAttribute::Handle_t attributeHandle,
kenjiArai 0:5b88d5760320 210 size_t length,
kenjiArai 0:5b88d5760320 211 const uint8_t *value
kenjiArai 0:5b88d5760320 212 ) const {
kenjiArai 0:5b88d5760320 213 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 214 }
kenjiArai 0:5b88d5760320 215
kenjiArai 0:5b88d5760320 216 template<class Impl>
kenjiArai 0:5b88d5760320 217 void GattClient<Impl>::onServiceDiscoveryTermination_(
kenjiArai 0:5b88d5760320 218 ServiceDiscovery::TerminationCallback_t callback
kenjiArai 0:5b88d5760320 219 ) {
kenjiArai 0:5b88d5760320 220 }
kenjiArai 0:5b88d5760320 221
kenjiArai 0:5b88d5760320 222 template<class Impl>
kenjiArai 0:5b88d5760320 223 ble_error_t GattClient<Impl>::discoverCharacteristicDescriptors_(
kenjiArai 0:5b88d5760320 224 const DiscoveredCharacteristic& characteristic,
kenjiArai 0:5b88d5760320 225 const CharacteristicDescriptorDiscovery::DiscoveryCallback_t& discoveryCallback,
kenjiArai 0:5b88d5760320 226 const CharacteristicDescriptorDiscovery::TerminationCallback_t& terminationCallback
kenjiArai 0:5b88d5760320 227 ) {
kenjiArai 0:5b88d5760320 228 return BLE_ERROR_NOT_IMPLEMENTED;
kenjiArai 0:5b88d5760320 229 }
kenjiArai 0:5b88d5760320 230
kenjiArai 0:5b88d5760320 231 template<class Impl>
kenjiArai 0:5b88d5760320 232 bool GattClient<Impl>::isCharacteristicDescriptorDiscoveryActive_(
kenjiArai 0:5b88d5760320 233 const DiscoveredCharacteristic& characteristic
kenjiArai 0:5b88d5760320 234 ) const {
kenjiArai 0:5b88d5760320 235 return false;
kenjiArai 0:5b88d5760320 236 }
kenjiArai 0:5b88d5760320 237
kenjiArai 0:5b88d5760320 238 template<class Impl>
kenjiArai 0:5b88d5760320 239 void GattClient<Impl>::terminateCharacteristicDescriptorDiscovery_(
kenjiArai 0:5b88d5760320 240 const DiscoveredCharacteristic& characteristic
kenjiArai 0:5b88d5760320 241 ) {
kenjiArai 0:5b88d5760320 242 }
kenjiArai 0:5b88d5760320 243
kenjiArai 0:5b88d5760320 244 } // interface
kenjiArai 0:5b88d5760320 245 } // ble