blob: 1441f58508cf4b0503e6587780c9a562890adfc4 [file] [log] [blame]
// 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.
#include "device/bluetooth/bluetooth_remote_gatt_service.h"
#include <utility>
#include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
#include "device/bluetooth/bluetooth_uuid.h"
namespace device {
BluetoothRemoteGattService::BluetoothRemoteGattService() = default;
BluetoothRemoteGattService::~BluetoothRemoteGattService() = default;
std::vector<BluetoothRemoteGattCharacteristic*>
BluetoothRemoteGattService::GetCharacteristics() const {
std::vector<BluetoothRemoteGattCharacteristic*> characteristics;
characteristics.reserve(characteristics_.size());
for (const auto& characteristic : characteristics_)
characteristics.push_back(characteristic.second.get());
return characteristics;
}
BluetoothRemoteGattCharacteristic*
BluetoothRemoteGattService::GetCharacteristic(
const std::string& identifier) const {
auto iter = characteristics_.find(identifier);
return iter != characteristics_.end() ? iter->second.get() : nullptr;
}
std::vector<BluetoothRemoteGattCharacteristic*>
BluetoothRemoteGattService::GetCharacteristicsByUUID(
const BluetoothUUID& characteristic_uuid) const {
std::vector<BluetoothRemoteGattCharacteristic*> result;
for (const auto& characteristic : characteristics_) {
if (characteristic.second->GetUUID() == characteristic_uuid)
result.push_back(characteristic.second.get());
}
return result;
}
bool BluetoothRemoteGattService::IsDiscoveryComplete() const {
return discovery_complete_;
}
void BluetoothRemoteGattService::SetDiscoveryComplete(bool complete) {
discovery_complete_ = complete;
}
bool BluetoothRemoteGattService::AddCharacteristic(
std::unique_ptr<BluetoothRemoteGattCharacteristic> characteristic) {
if (!characteristic)
return false;
const auto& characteristic_raw = *characteristic;
return characteristics_
.try_emplace(characteristic_raw.GetIdentifier(),
std::move(characteristic))
.second;
}
} // namespace device