1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "device/bluetooth/bluetooth_gatt_descriptor.h"
6
7#include <vector>
8
9#include "base/lazy_instance.h"
10#include "base/logging.h"
11#include "base/macros.h"
12
13namespace device {
14namespace {
15
16struct UUIDs {
17  UUIDs() : uuids_(MakeUUIDVector()) {}
18
19  const std::vector<BluetoothUUID> uuids_;
20
21 private:
22  static std::vector<BluetoothUUID> MakeUUIDVector() {
23    std::vector<BluetoothUUID> uuids;
24    static const char* const strings[] = {
25        "0x2900", "0x2901", "0x2902", "0x2903", "0x2904", "0x2905"
26    };
27
28    for (size_t i = 0; i < arraysize(strings); ++i)
29      uuids.push_back(BluetoothUUID(strings[i]));
30
31    return uuids;
32  }
33};
34
35base::LazyInstance<const UUIDs>::Leaky g_uuids = LAZY_INSTANCE_INITIALIZER;
36
37}  // namespace
38
39// static
40const BluetoothUUID&
41BluetoothGattDescriptor::CharacteristicExtendedPropertiesUuid() {
42  return g_uuids.Get().uuids_[0];
43}
44
45// static
46const BluetoothUUID&
47BluetoothGattDescriptor::CharacteristicUserDescriptionUuid() {
48  return g_uuids.Get().uuids_[1];
49}
50
51// static
52const BluetoothUUID&
53BluetoothGattDescriptor::ClientCharacteristicConfigurationUuid() {
54  return g_uuids.Get().uuids_[2];
55}
56
57// static
58const BluetoothUUID&
59BluetoothGattDescriptor::ServerCharacteristicConfigurationUuid() {
60  return g_uuids.Get().uuids_[3];
61}
62
63// static
64const BluetoothUUID&
65BluetoothGattDescriptor::CharacteristicPresentationFormatUuid() {
66  return g_uuids.Get().uuids_[4];
67}
68
69// static
70const BluetoothUUID&
71BluetoothGattDescriptor::CharacteristicAggregateFormatUuid() {
72  return g_uuids.Get().uuids_[5];
73}
74
75BluetoothGattDescriptor::BluetoothGattDescriptor() {
76}
77
78BluetoothGattDescriptor::~BluetoothGattDescriptor() {
79}
80
81// static
82BluetoothGattDescriptor* BluetoothGattDescriptor::Create(
83    const BluetoothUUID& uuid,
84    const std::vector<uint8>& value,
85    BluetoothGattCharacteristic::Permissions permissions) {
86  LOG(ERROR) << "Creating local GATT characteristic descriptors currently not "
87             << "supported.";
88  return NULL;
89}
90
91}  // namespace device
92