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.
Fork of BLE_API by
Diff: public/ServiceDiscovery.h
- Revision:
- 470:150c2363f776
- Parent:
- 469:c95e603d60dd
- Child:
- 474:2a8a453ecd7e
--- a/public/ServiceDiscovery.h Fri Jun 19 15:51:59 2015 +0100 +++ b/public/ServiceDiscovery.h Fri Jun 19 15:51:59 2015 +0100 @@ -20,164 +20,11 @@ #include "UUID.h" #include "Gap.h" #include "GattAttribute.h" +#include "DiscoveredService.h" +#include "DiscoveredCharacteristic.h" class ServiceDiscovery { public: - /**@brief Type for holding information about the service and the characteristics found during - * the discovery process. - */ - class DiscoveredService { - public: - void setup(UUID uuidIn, GattAttribute::Handle_t startHandleIn, GattAttribute::Handle_t endHandleIn) { - uuid = uuidIn; - startHandle = startHandleIn; - endHandle = endHandleIn; - } - - void setup(GattAttribute::Handle_t startHandleIn, GattAttribute::Handle_t endHandleIn) { - startHandle = startHandleIn; - endHandle = endHandleIn; - } - - void setupLongUUID(UUID::LongUUIDBytes_t longUUID) { - uuid.setupLong(longUUID); - } - - public: - const UUID &getUUID(void) const { - return uuid; - } - - const GattAttribute::Handle_t& getStartHandle(void) const { - return startHandle; - } - const GattAttribute::Handle_t& getEndHandle(void) const { - return endHandle; - } - - public: - DiscoveredService() : uuid(UUID::ShortUUIDBytes_t(0)), - startHandle(GattAttribute::INVALID_HANDLE), - endHandle(GattAttribute::INVALID_HANDLE) { - /* empty */ - } - - private: - DiscoveredService(const DiscoveredService &); - - private: - UUID uuid; /**< UUID of the service. */ - GattAttribute::Handle_t startHandle; /**< Service Handle Range. */ - GattAttribute::Handle_t endHandle; /**< Service Handle Range. */ - }; - - /**@brief Structure for holding information about the service and the characteristics found during - * the discovery process. - */ - class DiscoveredCharacteristic { - public: - struct Properties_t { - static const uint8_t BROADCAST_PROPERTY_MASK = 0x01; - static const uint8_t READ_PROPERTY_MASK = 0x02; - static const uint8_t WRITE_WO_RESPONSE_PROPERTY_MASK = 0x04; - static const uint8_t WRITE_PROPERTY_MASK = 0x08; - static const uint8_t NOTIFY_PROPERTY_MASK = 0x10; - static const uint8_t INDICATE_PROPERTY_MASK = 0x20; - static const uint8_t AUTH_SIGNED_PROPERTY_MASK = 0x40; - - Properties_t() : broadcast(0), read(0), write_wo_resp(0), write(0), notify(0), indicate(0), auth_signed_wr(0) { - /* empty */ - } - - Properties_t(uint8_t props) : - broadcast(props & BROADCAST_PROPERTY_MASK), - read(props & READ_PROPERTY_MASK), - write_wo_resp(props & WRITE_WO_RESPONSE_PROPERTY_MASK), - write(props & WRITE_PROPERTY_MASK), - notify(props & NOTIFY_PROPERTY_MASK), - indicate(props & INDICATE_PROPERTY_MASK), - auth_signed_wr(props & AUTH_SIGNED_PROPERTY_MASK) { - /* empty*/ - } - - uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ - uint8_t read :1; /**< Reading the value permitted. */ - uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ - uint8_t write :1; /**< Writing the value with Write Request permitted. */ - uint8_t notify :1; /**< Notications of the value permitted. */ - uint8_t indicate :1; /**< Indications of the value permitted. */ - uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ - }; - - struct ReadResponse_t { - GattAttribute::Handle_t handle; /**< Attribute Handle. */ - uint16_t offset; /**< Offset of the attribute data. */ - uint16_t len; /**< Attribute data length. */ - const uint8_t *data; /**< Attribute data, variable length. */ - }; - typedef void (*ReadCallback_t)(const ReadResponse_t *params); - - static void setupOnDataRead(ReadCallback_t callback) { - onDataReadCallback = callback; - } - - public: - void setup(Properties_t propsIn, - GattAttribute::Handle_t declHandleIn, - GattAttribute::Handle_t valueHandleIn) { - props = propsIn; - declHandle = declHandleIn; - valueHandle = valueHandleIn; - } - - void setup(UUID::ShortUUIDBytes_t uuidIn, - Properties_t propsIn, - GattAttribute::Handle_t declHandleIn, - GattAttribute::Handle_t valueHandleIn) { - uuid = uuidIn; - props = propsIn; - declHandle = declHandleIn; - valueHandle = valueHandleIn; - } - - void setupLongUUID(UUID::LongUUIDBytes_t longUUID) { - uuid.setupLong(longUUID); - } - - public: - UUID::ShortUUIDBytes_t getShortUUID(void) const { - return uuid.getShortUUID(); - } - - const Properties_t& getProperties(void) const { - return props; - } - - const GattAttribute::Handle_t& getDeclHandle(void) const { - return declHandle; - } - const GattAttribute::Handle_t& getValueHandle(void) const { - return valueHandle; - } - - public: - DiscoveredCharacteristic() : uuid(UUID::ShortUUIDBytes_t(0)), - props(), - declHandle(GattAttribute::INVALID_HANDLE), - valueHandle(GattAttribute::INVALID_HANDLE) { - /* empty */ - } - - private: - UUID uuid; - Properties_t props; - GattAttribute::Handle_t declHandle; - GattAttribute::Handle_t valueHandle; - - static ReadCallback_t onDataReadCallback; - }; - -public: typedef void (*ServiceCallback_t)(const DiscoveredService &); typedef void (*CharacteristicCallback_t)(const DiscoveredCharacteristic &); typedef void (*TerminationCallback_t)(Gap::Handle_t connectionHandle);