1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEVICE_BLUETOOTH_EMULATION_FAKE_REMOTE_GATT_SERVICE_H_
#define DEVICE_BLUETOOTH_EMULATION_FAKE_REMOTE_GATT_SERVICE_H_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/memory/raw_ptr.h"
#include "device/bluetooth/bluetooth_remote_gatt_service.h"
#include "device/bluetooth/emulation/fake_remote_gatt_characteristic.h"
#include "device/bluetooth/public/cpp/bluetooth_uuid.h"
#include "device/bluetooth/public/mojom/emulation/fake_bluetooth.mojom-forward.h"
namespace device {
class BluetoothDevice;
class BluetoothRemoteGattService;
} // namespace device
namespace bluetooth {
class FakePeripheral;
// Implements device::BluetoothRemoteGattService. Meant to be used by
// FakePeripheral to keep track of the service's state and attributes.
//
// Not intended for direct use by clients. See README.md.
class FakeRemoteGattService : public device::BluetoothRemoteGattService {
public:
FakeRemoteGattService(const std::string& service_id,
const device::BluetoothUUID& service_uuid,
bool is_primary,
FakePeripheral* device);
~FakeRemoteGattService() override;
// Returns true if there are no pending responses for any characterstics.
bool AllResponsesConsumed();
// Adds a fake characteristic with |characteristic_uuid| and |properties|
// to this service. Returns the characteristic's Id.
std::string AddFakeCharacteristic(
const device::BluetoothUUID& characteristic_uuid,
mojom::CharacteristicPropertiesPtr properties);
// Removes a fake characteristic with |identifier| from this service.
bool RemoveFakeCharacteristic(const std::string& identifier);
FakePeripheral& fake_peripheral() const { return fake_peripheral_.get(); }
// device::BluetoothGattService overrides:
std::string GetIdentifier() const override;
device::BluetoothUUID GetUUID() const override;
bool IsPrimary() const override;
// device::BluetoothRemoteGattService overrides:
device::BluetoothDevice* GetDevice() const override;
std::vector<device::BluetoothRemoteGattService*> GetIncludedServices()
const override;
private:
const std::string service_id_;
const device::BluetoothUUID service_uuid_;
const bool is_primary_;
const raw_ref<FakePeripheral> fake_peripheral_;
size_t last_characteristic_id_ = 0;
};
} // namespace bluetooth
#endif // DEVICE_BLUETOOTH_EMULATION_FAKE_REMOTE_GATT_SERVICE_H_
|