| OLD | NEW |
| (Empty) |
| 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 "chromeos/dbus/fake_bluetooth_gatt_manager_client.h" | |
| 6 | |
| 7 #include "base/logging.h" | |
| 8 #include "chromeos/dbus/fake_bluetooth_gatt_characteristic_service_provider.h" | |
| 9 #include "chromeos/dbus/fake_bluetooth_gatt_descriptor_service_provider.h" | |
| 10 #include "chromeos/dbus/fake_bluetooth_gatt_service_service_provider.h" | |
| 11 #include "third_party/cros_system_api/dbus/service_constants.h" | |
| 12 | |
| 13 namespace chromeos { | |
| 14 | |
| 15 FakeBluetoothGattManagerClient::FakeBluetoothGattManagerClient() { | |
| 16 } | |
| 17 | |
| 18 FakeBluetoothGattManagerClient::~FakeBluetoothGattManagerClient() { | |
| 19 } | |
| 20 | |
| 21 // DBusClient override. | |
| 22 void FakeBluetoothGattManagerClient::Init(dbus::Bus* bus) { | |
| 23 } | |
| 24 | |
| 25 // BluetoothGattManagerClient overrides. | |
| 26 void FakeBluetoothGattManagerClient::RegisterService( | |
| 27 const dbus::ObjectPath& service_path, | |
| 28 const Options& options, | |
| 29 const base::Closure& callback, | |
| 30 const ErrorCallback& error_callback) { | |
| 31 VLOG(1) << "Register GATT service: " << service_path.value(); | |
| 32 | |
| 33 // If a service provider wasn't created before, return error. | |
| 34 ServiceMap::iterator iter = service_map_.find(service_path); | |
| 35 if (iter == service_map_.end()) { | |
| 36 error_callback.Run(bluetooth_gatt_manager::kErrorInvalidArguments, | |
| 37 "GATT service doesn't exist: " + service_path.value()); | |
| 38 return; | |
| 39 } | |
| 40 | |
| 41 // Check to see if this GATT service was already registered. | |
| 42 ServiceProvider* provider = &iter->second; | |
| 43 if (provider->first) { | |
| 44 error_callback.Run( | |
| 45 bluetooth_gatt_manager::kErrorAlreadyExists, | |
| 46 "GATT service already registered: " + service_path.value()); | |
| 47 return; | |
| 48 } | |
| 49 | |
| 50 // Success! | |
| 51 provider->first = true; | |
| 52 callback.Run(); | |
| 53 } | |
| 54 | |
| 55 void FakeBluetoothGattManagerClient::UnregisterService( | |
| 56 const dbus::ObjectPath& service_path, | |
| 57 const base::Closure& callback, | |
| 58 const ErrorCallback& error_callback) { | |
| 59 VLOG(1) << "Unregister GATT service: " << service_path.value(); | |
| 60 | |
| 61 // If a service provider wasn't created before, return error. | |
| 62 ServiceMap::iterator iter = service_map_.find(service_path); | |
| 63 if (iter == service_map_.end()) { | |
| 64 error_callback.Run(bluetooth_gatt_manager::kErrorInvalidArguments, | |
| 65 "GATT service doesn't exist: " + service_path.value()); | |
| 66 return; | |
| 67 } | |
| 68 | |
| 69 // Return error if the GATT service wasn't registered before. | |
| 70 ServiceProvider* provider = &iter->second; | |
| 71 if (!provider->first) { | |
| 72 error_callback.Run( | |
| 73 bluetooth_gatt_manager::kErrorDoesNotExist, | |
| 74 "GATT service not registered: " + service_path.value()); | |
| 75 return; | |
| 76 } | |
| 77 | |
| 78 // Success! | |
| 79 provider->first = false; | |
| 80 callback.Run(); | |
| 81 } | |
| 82 | |
| 83 void FakeBluetoothGattManagerClient::RegisterServiceServiceProvider( | |
| 84 FakeBluetoothGattServiceServiceProvider* provider) { | |
| 85 // Ignore, if a service provider is already registered for the object path. | |
| 86 ServiceMap::iterator iter = service_map_.find(provider->object_path()); | |
| 87 if (iter != service_map_.end()) { | |
| 88 VLOG(1) << "GATT service service provider already registered for " | |
| 89 << "object path: " << provider->object_path().value(); | |
| 90 return; | |
| 91 } | |
| 92 service_map_[provider->object_path()] = std::make_pair(false, provider); | |
| 93 } | |
| 94 | |
| 95 void FakeBluetoothGattManagerClient::RegisterCharacteristicServiceProvider( | |
| 96 FakeBluetoothGattCharacteristicServiceProvider* provider) { | |
| 97 // Ignore, if a service provider is already registered for the object path. | |
| 98 CharacteristicMap::iterator iter = | |
| 99 characteristic_map_.find(provider->object_path()); | |
| 100 if (iter != characteristic_map_.end()) { | |
| 101 VLOG(1) << "GATT characteristic service provider already registered for " | |
| 102 << "object path: " << provider->object_path().value(); | |
| 103 return; | |
| 104 } | |
| 105 characteristic_map_[provider->object_path()] = provider; | |
| 106 } | |
| 107 | |
| 108 void FakeBluetoothGattManagerClient::RegisterDescriptorServiceProvider( | |
| 109 FakeBluetoothGattDescriptorServiceProvider* provider) { | |
| 110 // Ignore, if a service provider is already registered for the object path. | |
| 111 DescriptorMap::iterator iter = | |
| 112 descriptor_map_.find(provider->object_path()); | |
| 113 if (iter != descriptor_map_.end()) { | |
| 114 VLOG(1) << "GATT descriptor service provider already registered for " | |
| 115 << "object path: " << provider->object_path().value(); | |
| 116 return; | |
| 117 } | |
| 118 descriptor_map_[provider->object_path()] = provider; | |
| 119 } | |
| 120 | |
| 121 void FakeBluetoothGattManagerClient::UnregisterServiceServiceProvider( | |
| 122 FakeBluetoothGattServiceServiceProvider* provider) { | |
| 123 ServiceMap::iterator iter = | |
| 124 service_map_.find(provider->object_path()); | |
| 125 if (iter != service_map_.end() && iter->second.second == provider) | |
| 126 service_map_.erase(iter); | |
| 127 } | |
| 128 | |
| 129 void FakeBluetoothGattManagerClient::UnregisterCharacteristicServiceProvider( | |
| 130 FakeBluetoothGattCharacteristicServiceProvider* provider) { | |
| 131 characteristic_map_.erase(provider->object_path()); | |
| 132 } | |
| 133 | |
| 134 void FakeBluetoothGattManagerClient::UnregisterDescriptorServiceProvider( | |
| 135 FakeBluetoothGattDescriptorServiceProvider* provider) { | |
| 136 descriptor_map_.erase(provider->object_path()); | |
| 137 } | |
| 138 | |
| 139 FakeBluetoothGattServiceServiceProvider* | |
| 140 FakeBluetoothGattManagerClient::GetServiceServiceProvider( | |
| 141 const dbus::ObjectPath& object_path) const { | |
| 142 ServiceMap::const_iterator iter = service_map_.find(object_path); | |
| 143 if (iter == service_map_.end()) | |
| 144 return NULL; | |
| 145 return iter->second.second; | |
| 146 } | |
| 147 | |
| 148 FakeBluetoothGattCharacteristicServiceProvider* | |
| 149 FakeBluetoothGattManagerClient::GetCharacteristicServiceProvider( | |
| 150 const dbus::ObjectPath& object_path) const { | |
| 151 CharacteristicMap::const_iterator iter = | |
| 152 characteristic_map_.find(object_path); | |
| 153 if (iter == characteristic_map_.end()) | |
| 154 return NULL; | |
| 155 return iter->second; | |
| 156 } | |
| 157 | |
| 158 FakeBluetoothGattDescriptorServiceProvider* | |
| 159 FakeBluetoothGattManagerClient::GetDescriptorServiceProvider( | |
| 160 const dbus::ObjectPath& object_path) const { | |
| 161 DescriptorMap::const_iterator iter = descriptor_map_.find(object_path); | |
| 162 if (iter == descriptor_map_.end()) | |
| 163 return NULL; | |
| 164 return iter->second; | |
| 165 } | |
| 166 | |
| 167 bool FakeBluetoothGattManagerClient::IsServiceRegistered( | |
| 168 const dbus::ObjectPath& object_path) const { | |
| 169 ServiceMap::const_iterator iter = service_map_.find(object_path); | |
| 170 if (iter == service_map_.end()) | |
| 171 return false; | |
| 172 return iter->second.first; | |
| 173 } | |
| 174 | |
| 175 } // namespace chromeos | |
| OLD | NEW |