2016-07-20 21:10:36 +00:00
|
|
|
/* 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.
|
|
|
|
*/
|
|
|
|
|
2017-10-23 23:49:48 +00:00
|
|
|
#ifndef MBED_DISCOVERED_SERVICE_H__
|
|
|
|
#define MBED_DISCOVERED_SERVICE_H__
|
2016-07-20 21:10:36 +00:00
|
|
|
|
|
|
|
#include "UUID.h"
|
|
|
|
#include "GattAttribute.h"
|
|
|
|
|
2017-10-23 23:49:48 +00:00
|
|
|
/**
|
|
|
|
* @addtogroup ble
|
|
|
|
* @{
|
|
|
|
* @addtogroup gatt
|
|
|
|
* @{
|
|
|
|
* @addtogroup client
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Representation of a GATT service discovered.
|
|
|
|
*
|
|
|
|
* GATT Services are discovered on distant GATT servers by the discovery
|
|
|
|
* procedure which can be initiated by calling
|
|
|
|
* GattClient::launchServiceDiscovery() or GattClient::discoverServices() . The
|
|
|
|
* discovery process will pass instances of this class to the callback handling
|
|
|
|
* service discovered.
|
|
|
|
*
|
|
|
|
* Discovered services are characterized by the UUID of the service discovered
|
|
|
|
* and the range of the GATT attributes belonging to the service.
|
|
|
|
*
|
|
|
|
* The UUID can be queried by calling getUUID() while the begining of the
|
|
|
|
* attribute range can be obtained via getStartHandle() and the end of the
|
|
|
|
* attribute range with a call to getEndHandle().
|
|
|
|
*
|
|
|
|
* The characteristics composing the service may be discovered by the function
|
|
|
|
* GattClient::launchServiceDiscovery().
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
|
|
|
class DiscoveredService {
|
|
|
|
public:
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Get the UUID of the discovered service.
|
2016-07-20 21:10:36 +00:00
|
|
|
*
|
2017-10-23 23:49:48 +00:00
|
|
|
* @return A reference to the UUID of the discovered service.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
const UUID &getUUID(void) const
|
|
|
|
{
|
|
|
|
return uuid;
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Get the start handle of the discovered service in the peer's GATT server.
|
|
|
|
*
|
|
|
|
* @return A reference to the start handle.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
const GattAttribute::Handle_t& getStartHandle(void) const
|
|
|
|
{
|
|
|
|
return startHandle;
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Get the end handle of the discovered service in the peer's GATT server.
|
2016-07-20 21:10:36 +00:00
|
|
|
*
|
2017-10-23 23:49:48 +00:00
|
|
|
* @return A reference to the end handle.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
const GattAttribute::Handle_t& getEndHandle(void) const
|
|
|
|
{
|
|
|
|
return endHandle;
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Construct a DiscoveredService instance.
|
2016-07-20 21:10:36 +00:00
|
|
|
*
|
2017-10-23 23:49:48 +00:00
|
|
|
* @important This API is not meant to be used publicly it is meant to be
|
|
|
|
* used by internal APIs of mbed BLE.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
DiscoveredService() :
|
|
|
|
uuid(UUID::ShortUUIDBytes_t(0)),
|
|
|
|
startHandle(GattAttribute::INVALID_HANDLE),
|
|
|
|
endHandle(GattAttribute::INVALID_HANDLE) {
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Set information about the discovered service.
|
2016-07-20 21:10:36 +00:00
|
|
|
*
|
2017-10-23 23:49:48 +00:00
|
|
|
* @important This API is not meant to be used publicly it is meant to be
|
|
|
|
* used by internal APIs of mbed BLE.
|
|
|
|
*
|
|
|
|
* @param[in] uuidIn The UUID of the discovered service.
|
|
|
|
* @param[in] startHandleIn The start handle of the discovered service in
|
|
|
|
* the peer's GATT server.
|
|
|
|
* @param[in] endHandleIn The end handle of the discovered service in the
|
|
|
|
* peer's GATT server.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
void setup(
|
|
|
|
UUID uuidIn,
|
|
|
|
GattAttribute::Handle_t startHandleIn,
|
|
|
|
GattAttribute::Handle_t endHandleIn
|
|
|
|
) {
|
|
|
|
uuid = uuidIn;
|
|
|
|
startHandle = startHandleIn;
|
|
|
|
endHandle = endHandleIn;
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Set the start and end handle of the discovered service.
|
2016-07-20 21:10:36 +00:00
|
|
|
*
|
2017-10-23 23:49:48 +00:00
|
|
|
* @important This API is not meant to be used publicly it is meant to be
|
|
|
|
* used by internal APIs of mbed BLE.
|
|
|
|
*
|
|
|
|
* @param[in] startHandleIn The start handle of the discovered service in
|
|
|
|
* the peer's GATT server.
|
|
|
|
* @param[in] endHandleIn The end handle of the discovered service in the
|
|
|
|
* peer's GATT server.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
void setup(
|
|
|
|
GattAttribute::Handle_t startHandleIn,
|
|
|
|
GattAttribute::Handle_t endHandleIn
|
|
|
|
) {
|
|
|
|
startHandle = startHandleIn;
|
|
|
|
endHandle = endHandleIn;
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2017-10-23 23:49:48 +00:00
|
|
|
* Set the long UUID of the discovered service.
|
|
|
|
*
|
|
|
|
* @important This API is not meant to be used publicly it is meant to be
|
|
|
|
* used by internal APIs of mbed BLE.
|
|
|
|
*
|
|
|
|
* @param[in] longUUID The bytes composing the long UUID of this discovered
|
|
|
|
* service.
|
|
|
|
* @param[in] order The byte ordering of @p longUUID.
|
2016-07-20 21:10:36 +00:00
|
|
|
*/
|
2017-10-23 23:49:48 +00:00
|
|
|
void setupLongUUID(
|
|
|
|
UUID::LongUUIDBytes_t longUUID,
|
|
|
|
UUID::ByteOrder_t order = UUID::MSB
|
|
|
|
) {
|
|
|
|
uuid.setupLong(longUUID, order);
|
2016-07-20 21:10:36 +00:00
|
|
|
}
|
|
|
|
|
2017-10-23 23:49:48 +00:00
|
|
|
|
2016-07-20 21:10:36 +00:00
|
|
|
private:
|
|
|
|
DiscoveredService(const DiscoveredService &);
|
|
|
|
|
|
|
|
private:
|
2017-10-23 23:49:48 +00:00
|
|
|
/**
|
|
|
|
* UUID of the service.
|
|
|
|
*/
|
|
|
|
UUID uuid;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Begining of the Service Handle Range.
|
|
|
|
*/
|
|
|
|
GattAttribute::Handle_t startHandle;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Service Handle Range.
|
|
|
|
*/
|
|
|
|
GattAttribute::Handle_t endHandle;
|
2016-07-20 21:10:36 +00:00
|
|
|
};
|
|
|
|
|
2017-10-23 23:49:48 +00:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
* @}
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
#endif /* MBED_DISCOVERED_SERVICE_H__ */
|