123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_MAC_H_
- #define DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_MAC_H_
- #include <stdint.h>
- #include <string>
- #include <vector>
- #include "base/mac/scoped_nsobject.h"
- #include "base/memory/raw_ptr.h"
- #include "device/bluetooth/bluetooth_remote_gatt_service.h"
- @class CBCharacteristic;
- @class CBDescriptor;
- @class CBPeripheral;
- @class CBService;
- namespace device {
- class BluetoothAdapterMac;
- class BluetoothDevice;
- class BluetoothRemoteGattCharacteristicMac;
- class BluetoothRemoteGattDescriptorMac;
- class BluetoothLowEnergyDeviceMac;
- class DEVICE_BLUETOOTH_EXPORT BluetoothRemoteGattServiceMac
- : public BluetoothRemoteGattService {
- public:
- BluetoothRemoteGattServiceMac(
- BluetoothLowEnergyDeviceMac* bluetooth_device_mac,
- CBService* service,
- bool is_primary);
- BluetoothRemoteGattServiceMac(const BluetoothRemoteGattServiceMac&) = delete;
- BluetoothRemoteGattServiceMac& operator=(
- const BluetoothRemoteGattServiceMac&) = delete;
- ~BluetoothRemoteGattServiceMac() override;
- // BluetoothRemoteGattService override.
- std::string GetIdentifier() const override;
- BluetoothUUID GetUUID() const override;
- bool IsPrimary() const override;
- BluetoothDevice* GetDevice() const override;
- std::vector<BluetoothRemoteGattService*> GetIncludedServices() const override;
- private:
- friend class BluetoothLowEnergyDeviceMac;
- friend class BluetoothRemoteGattCharacteristicMac;
- friend class BluetoothTestMac;
- // Starts discovering characteristics by calling CoreBluetooth.
- void DiscoverCharacteristics();
- // Called by the BluetoothLowEnergyDeviceMac instance when the characteristics
- // has been discovered.
- void DidDiscoverCharacteristics();
- // Called by the BluetoothLowEnergyDeviceMac instance when the descriptors has
- // been discovered.
- void DidDiscoverDescriptors(CBCharacteristic* characteristic);
- // Sends notification if this service is ready with all characteristics
- // discovered.
- void SendNotificationIfComplete();
- // Returns the mac adapter.
- BluetoothAdapterMac* GetMacAdapter() const;
- // Returns CBPeripheral.
- CBPeripheral* GetCBPeripheral() const;
- // Returns CBService.
- CBService* GetService() const;
- // Returns a remote characteristic based on the CBCharacteristic.
- BluetoothRemoteGattCharacteristicMac* GetBluetoothRemoteGattCharacteristicMac(
- CBCharacteristic* cb_characteristic) const;
- // Returns a remote descriptor based on the CBDescriptor.
- BluetoothRemoteGattDescriptorMac* GetBluetoothRemoteGattDescriptorMac(
- CBDescriptor* cb_descriptor) const;
- // bluetooth_device_mac_ owns instances of this class.
- raw_ptr<BluetoothLowEnergyDeviceMac> bluetooth_device_mac_;
- // A service from CBPeripheral.services.
- base::scoped_nsobject<CBService> service_;
- bool is_primary_;
- // Service identifier.
- std::string identifier_;
- // Service UUID.
- BluetoothUUID uuid_;
- // Increased each time DiscoverCharacteristics() is called. And decreased when
- // DidDiscoverCharacteristics() is called.
- int discovery_pending_count_;
- };
- // Stream operator for logging.
- DEVICE_BLUETOOTH_EXPORT std::ostream& operator<<(
- std::ostream& out,
- const BluetoothRemoteGattServiceMac& service);
- } // namespace device
- #endif // DEVICE_BLUETOOTH_BLUETOOTH_REMOTE_GATT_SERVICE_MAC_H_
|