test
Fork of nRF51822 by
Diff: btle/btle_discovery.h
- Revision:
- 263:d5da37e9a93b
- Parent:
- 262:d6682155f833
- Child:
- 279:6e5e79f1fb61
--- a/btle/btle_discovery.h Fri Jun 19 15:55:24 2015 +0100 +++ b/btle/btle_discovery.h Fri Jun 19 15:55:24 2015 +0100 @@ -18,102 +18,10 @@ #define _BTLE_DISCOVERY_H_ #include "ble.h" -#include "UUID.h" -#include "Gap.h" +#include "ServiceDiscovery.h" void bleGattcEventHandler(const ble_evt_t *p_ble_evt); -class ServiceDiscovery { -public: - /**@brief Structure for holding information about the service and the characteristics found during - * the discovery process. - */ - struct DiscoveredService { - void setup(ShortUUIDBytes_t uuidIn, Gap::Handle_t start, Gap::Handle_t end) { - uuid = uuidIn; - startHandle = start; - endHandle = end; - } - - ShortUUIDBytes_t uuid; /**< UUID of the service. */ - Gap::Handle_t startHandle; /**< Service Handle Range. */ - Gap::Handle_t endHandle; /**< Service Handle Range. */ - }; - - /**@brief Structure for holding information about the service and the characteristics found during - * the discovery process. - */ - struct DiscoveredCharacteristic { - 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. */ - }; - - void setup(ShortUUIDBytes_t uuidIn, Properties_t propsIn, Gap::Handle_t declHandleIn, Gap::Handle_t valueHandleIn) { - uuid = uuidIn; - props = propsIn; - declHandle = declHandleIn; - valueHandle = valueHandleIn; - } - - ShortUUIDBytes_t uuid; - Properties_t props; - Gap::Handle_t declHandle; - Gap::Handle_t valueHandle; - }; - -public: - typedef void (*ServiceCallback_t)(const DiscoveredService &); - typedef void (*CharacteristicCallback_t)(const DiscoveredCharacteristic &); - -public: - static ble_error_t launch(Gap::Handle_t connectionHandle, - ServiceCallback_t sc, - CharacteristicCallback_t cc = NULL); - static ble_error_t launch(Gap::Handle_t connectionHandle, - UUID matchingServiceUUIDIn, - ServiceCallback_t sc, - UUID matchingCharacteristicUUIDIn = ShortUUIDBytes_t(BLE_UUID_UNKNOWN), - CharacteristicCallback_t cc = NULL); - - static void terminate(void); - -protected: - Gap::Handle_t connHandle; /**< Connection handle as provided by the SoftDevice. */ - UUID matchingServiceUUID; - ServiceCallback_t serviceCallback; - UUID matchingCharacteristicUUID; - CharacteristicCallback_t characteristicCallback; -}; - class NordicServiceDiscovery : public ServiceDiscovery { public: