mbed-os/features/FEATURE_BLE/ble/DiscoveredCharacteristicDes...

154 lines
4.2 KiB
C++

/* mbed Microcontroller Library
* Copyright (c) 2006-2013 ARM Limited
*
* 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.
*/
#ifndef MBED_DISCOVERED_CHARACTERISTIC_DESCRIPTOR_H__
#define MBED_DISCOVERED_CHARACTERISTIC_DESCRIPTOR_H__
#include "UUID.h"
#include "Gap.h"
#include "GattAttribute.h"
#include "GattClient.h"
#include "CharacteristicDescriptorDiscovery.h"
/**
* @addtogroup ble
* @{
* @addtogroup gatt
* @{
* @addtogroup client
* @{
*/
/**
* Representation of a characteristic descriptor discovered.
*
* Characteristic descriptors can be seen as the metadata of the characteristic.
* They can contain things such as the unit of the characteristic value, extra
* permission informations or the Client Configuration state in regard to
* notification or indication.
*
* The descriptors of a characterstic are discovered by a Characteristic
* Descriptor Discovery Procedure, which can be initiated by either
* GattClient::discoverCharacteristicDescriptors() or
* DiscoveredCharacteristic::discoverDescriptors().
*
* The discovery procedure returns the UUID of the descriptor (its type) and its
* handle.
*
* Read and write of the descriptor value can be initiated by
* GattClient::read and GattClient::write.
*
* @todo read member function
* @todo write member function
* @todo enumeration of standard descriptors
*/
class DiscoveredCharacteristicDescriptor {
public:
/**
* Construct a new instance of a DiscoveredCharacteristicDescriptor.
*
* @param[in] client The client that has discovered the descriptor.
* @param[in] connectionHandle Handle of the connection to the GATT server
* containing the descriptor.
* @param[in] attributeHandle GATT attribute handle of the descriptor.
* @param[in] uuid UUID of the descriptor.
*
* @note This constructor is not meant to be called directly by application
* code. The Gattclient class generates descriptors discovered.
*/
DiscoveredCharacteristicDescriptor(
GattClient *client,
Gap::Handle_t connectionHandle,
GattAttribute::Handle_t attributeHandle,
const UUID &uuid
) : _client(client),
_connectionHandle(connectionHandle),
_uuid(uuid),
_gattHandle(attributeHandle) {
}
/**
* Return the GattClient, which can operate on this descriptor.
*
* @return GattClient, which can operate on this descriptor.
*/
GattClient* getGattClient()
{
return _client;
}
/**
* Return the GattClient, which can operate on this descriptor.
*
* @return GattClient, which can operate on this descriptor.
*/
const GattClient* getGattClient() const
{
return _client;
}
/**
* Return the connection handle to the GattServer containing this
* descriptor.
*
* @return the connection handle to the GattServer containing this
* descriptor.
*/
Gap::Handle_t getConnectionHandle() const
{
return _connectionHandle;
}
/**
* Return the UUID of this descriptor.
*
* @return UUID of this descriptor.
*/
const UUID& getUUID(void) const
{
return _uuid;
}
/**
* Return the attribute handle of this descriptor.
*
* This attribute handle can be used to interact with the descriptor on its
* gatt server.
*
* @return Attribute handle of the descriptor
*/
GattAttribute::Handle_t getAttributeHandle() const
{
return _gattHandle;
}
private:
GattClient *_client;
Gap::Handle_t _connectionHandle;
UUID _uuid;
GattAttribute::Handle_t _gattHandle;
};
/**
* @}
* @}
* @}
*/
#endif /* MBED_DISCOVERED_CHARACTERISTIC_DESCRIPTOR_H__ */