Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
Diff: features/FEATURE_BLE/source/GattClient.tpp
- Revision:
- 0:5b88d5760320
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/features/FEATURE_BLE/source/GattClient.tpp Tue Dec 17 23:23:45 2019 +0000 @@ -0,0 +1,245 @@ +/* mbed Microcontroller Library + * Copyright (c) 2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ble/GattClient.h" + +namespace ble { +namespace interface { + +template<class Impl> +ble_error_t GattClient<Impl>::launchServiceDiscovery( + ble::connection_handle_t connectionHandle, + ServiceDiscovery::ServiceCallback_t sc, + ServiceDiscovery::CharacteristicCallback_t cc, + const UUID &matchingServiceUUID, + const UUID &matchingCharacteristicUUIDIn +) { + return impl()->launchServiceDiscovery_( + connectionHandle, + sc, + cc, + matchingServiceUUID, + matchingCharacteristicUUIDIn + ); +} + +template<class Impl> +ble_error_t GattClient<Impl>::discoverServices( + ble::connection_handle_t connectionHandle, + ServiceDiscovery::ServiceCallback_t callback, + GattAttribute::Handle_t startHandle, + GattAttribute::Handle_t endHandle +) { + return impl()->discoverServices_( + connectionHandle, + callback, + startHandle, + endHandle + ); +} + +template<class Impl> +bool GattClient<Impl>::isServiceDiscoveryActive(void) const +{ + return impl()->isServiceDiscoveryActive_(); +} + +template<class Impl> +void GattClient<Impl>::terminateServiceDiscovery(void) +{ + return impl()->terminateServiceDiscovery_(); +} + +template<class Impl> +ble_error_t GattClient<Impl>::read( + ble::connection_handle_t connHandle, + GattAttribute::Handle_t attributeHandle, + uint16_t offset +) const { + return impl()->read_(connHandle, attributeHandle, offset); +} + +template<class Impl> +ble_error_t GattClient<Impl>::write( + GattClient::WriteOp_t cmd, + ble::connection_handle_t connHandle, + GattAttribute::Handle_t attributeHandle, + size_t length, + const uint8_t *value +) const { + return impl()->write_( + cmd, + connHandle, + attributeHandle, + length, + value + ); +} + +template<class Impl> +void GattClient<Impl>::onServiceDiscoveryTermination( + ServiceDiscovery::TerminationCallback_t callback +) { + return impl()->onServiceDiscoveryTermination_(callback); +} + +template<class Impl> +ble_error_t GattClient<Impl>::discoverCharacteristicDescriptors( + const DiscoveredCharacteristic& characteristic, + const CharacteristicDescriptorDiscovery::DiscoveryCallback_t& discoveryCallback, + const CharacteristicDescriptorDiscovery::TerminationCallback_t& terminationCallback +) { + return impl()->discoverCharacteristicDescriptors_( + characteristic, + discoveryCallback, + terminationCallback + ); +} + +template<class Impl> +bool GattClient<Impl>::isCharacteristicDescriptorDiscoveryActive( + const DiscoveredCharacteristic& characteristic +) const { + return impl()->isCharacteristicDescriptorDiscoveryActive_(characteristic); +} + +template<class Impl> +void GattClient<Impl>::terminateCharacteristicDescriptorDiscovery( + const DiscoveredCharacteristic& characteristic +) { + return impl()->terminateCharacteristicDescriptorDiscovery_(characteristic); +} + +template<class Impl> +ble_error_t GattClient<Impl>::negotiateAttMtu( + ble::connection_handle_t connHandle +) { + return impl()->negotiateAttMtu_(connHandle); +} + +template<class Impl> +ble_error_t GattClient<Impl>::reset(void) +{ + return impl()->reset_(); +} + +/* ------------------------ Default implementations ------------------------- */ + + +template<class Impl> +ble_error_t GattClient<Impl>::reset_(void) +{ + /* Notify that the instance is about to shut down. */ + shutdownCallChain.call(this); + shutdownCallChain.clear(); + + onDataReadCallbackChain.clear(); + onDataWriteCallbackChain.clear(); + onHVXCallbackChain.clear(); + + return BLE_ERROR_NONE; +} + +template<class Impl> +ble_error_t GattClient<Impl>::discoverServices_( + ble::connection_handle_t connectionHandle, + ServiceDiscovery::ServiceCallback_t callback, + GattAttribute::Handle_t startHandle, + GattAttribute::Handle_t endHandle +) { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +ble_error_t GattClient<Impl>::launchServiceDiscovery_( + ble::connection_handle_t connectionHandle, + ServiceDiscovery::ServiceCallback_t sc, + ServiceDiscovery::CharacteristicCallback_t cc, + const UUID &matchingServiceUUID, + const UUID &matchingCharacteristicUUIDIn +) { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +bool GattClient<Impl>::isServiceDiscoveryActive_(void) const +{ + return false; +} + +template<class Impl> +void GattClient<Impl>::terminateServiceDiscovery_(void) +{ +} + +template<class Impl> +ble_error_t GattClient<Impl>::negotiateAttMtu_( + ble::connection_handle_t connHandle +) { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +ble_error_t GattClient<Impl>::read_( + ble::connection_handle_t connHandle, + GattAttribute::Handle_t attributeHandle, + uint16_t offset +) const { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +ble_error_t GattClient<Impl>::write_( + GattClient::WriteOp_t cmd, + ble::connection_handle_t connHandle, + GattAttribute::Handle_t attributeHandle, + size_t length, + const uint8_t *value +) const { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +void GattClient<Impl>::onServiceDiscoveryTermination_( + ServiceDiscovery::TerminationCallback_t callback +) { +} + +template<class Impl> +ble_error_t GattClient<Impl>::discoverCharacteristicDescriptors_( + const DiscoveredCharacteristic& characteristic, + const CharacteristicDescriptorDiscovery::DiscoveryCallback_t& discoveryCallback, + const CharacteristicDescriptorDiscovery::TerminationCallback_t& terminationCallback +) { + return BLE_ERROR_NOT_IMPLEMENTED; +} + +template<class Impl> +bool GattClient<Impl>::isCharacteristicDescriptorDiscoveryActive_( + const DiscoveredCharacteristic& characteristic +) const { + return false; +} + +template<class Impl> +void GattClient<Impl>::terminateCharacteristicDescriptorDiscovery_( + const DiscoveredCharacteristic& characteristic +) { +} + +} // interface +} // ble