chromium/device/bluetooth/cast/bluetooth_remote_gatt_service_cast.cc

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "device/bluetooth/cast/bluetooth_remote_gatt_service_cast.h"

#include <string>
#include <vector>

#include "base/functional/bind.h"
#include "chromecast/device/bluetooth/le/remote_characteristic.h"
#include "chromecast/device/bluetooth/le/remote_service.h"
#include "device/bluetooth/cast/bluetooth_device_cast.h"
#include "device/bluetooth/cast/bluetooth_remote_gatt_characteristic_cast.h"
#include "device/bluetooth/cast/bluetooth_utils.h"

namespace device {

BluetoothRemoteGattServiceCast::BluetoothRemoteGattServiceCast(
    BluetoothDeviceCast* device,
    scoped_refptr<chromecast::bluetooth::RemoteService> remote_service)
    : device_(device), remote_service_(std::move(remote_service)) {
  std::vector<scoped_refptr<chromecast::bluetooth::RemoteCharacteristic>>
      characteristics = remote_service_->GetCharacteristics();
  characteristics_.reserve(characteristics.size());
  for (const auto& characteristic : characteristics) {
    AddCharacteristic(std::make_unique<BluetoothRemoteGattCharacteristicCast>(
        this, characteristic));
  }
  SetDiscoveryComplete(true);
}

BluetoothRemoteGattServiceCast::~BluetoothRemoteGattServiceCast() {}

std::string BluetoothRemoteGattServiceCast::GetIdentifier() const {
  return GetUUID().canonical_value();
}

BluetoothUUID BluetoothRemoteGattServiceCast::GetUUID() const {
  return UuidToBluetoothUUID(remote_service_->uuid());
}

bool BluetoothRemoteGattServiceCast::IsPrimary() const {
  return remote_service_->primary();
}

BluetoothDevice* BluetoothRemoteGattServiceCast::GetDevice() const {
  return device_;
}

std::vector<BluetoothRemoteGattService*>
BluetoothRemoteGattServiceCast::GetIncludedServices() const {
  NOTIMPLEMENTED();
  return std::vector<BluetoothRemoteGattService*>();
}

}  // namespace device