OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromeos/dbus/bluetooth_gatt_characteristic_client.h" | 5 #include "chromeos/dbus/bluetooth_gatt_characteristic_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
9 #include "base/observer_list.h" | 9 #include "base/observer_list.h" |
10 #include "dbus/bus.h" | 10 #include "dbus/bus.h" |
11 #include "dbus/object_manager.h" | 11 #include "dbus/object_manager.h" |
12 #include "third_party/cros_system_api/dbus/service_constants.h" | 12 #include "third_party/cros_system_api/dbus/service_constants.h" |
13 | 13 |
14 namespace chromeos { | 14 namespace chromeos { |
15 | 15 |
16 namespace { | |
17 | |
18 // TODO(armansito): Move these to service_constants.h later. | |
19 const char kNotifyingProperty[] = "Notifying"; | |
20 const char kStartNotify[] = "StartNotify"; | |
21 const char kStopNotify[] = "StopNotify"; | |
22 | |
23 } // namespace | |
24 | |
25 // static | 16 // static |
26 const char BluetoothGattCharacteristicClient::kNoResponseError[] = | 17 const char BluetoothGattCharacteristicClient::kNoResponseError[] = |
27 "org.chromium.Error.NoResponse"; | 18 "org.chromium.Error.NoResponse"; |
28 // static | 19 // static |
29 const char BluetoothGattCharacteristicClient::kUnknownCharacteristicError[] = | 20 const char BluetoothGattCharacteristicClient::kUnknownCharacteristicError[] = |
30 "org.chromium.Error.UnknownCharacteristic"; | 21 "org.chromium.Error.UnknownCharacteristic"; |
31 | 22 |
32 BluetoothGattCharacteristicClient::Properties::Properties( | 23 BluetoothGattCharacteristicClient::Properties::Properties( |
33 dbus::ObjectProxy* object_proxy, | 24 dbus::ObjectProxy* object_proxy, |
34 const std::string& interface_name, | 25 const std::string& interface_name, |
35 const PropertyChangedCallback& callback) | 26 const PropertyChangedCallback& callback) |
36 : dbus::PropertySet(object_proxy, interface_name, callback) { | 27 : dbus::PropertySet(object_proxy, interface_name, callback) { |
37 RegisterProperty(bluetooth_gatt_characteristic::kUUIDProperty, &uuid); | 28 RegisterProperty(bluetooth_gatt_characteristic::kUUIDProperty, &uuid); |
38 RegisterProperty(bluetooth_gatt_characteristic::kServiceProperty, &service); | 29 RegisterProperty(bluetooth_gatt_characteristic::kServiceProperty, &service); |
39 RegisterProperty(kNotifyingProperty, ¬ifying); | 30 RegisterProperty(bluetooth_gatt_characteristic::kNotifyingProperty, |
| 31 ¬ifying); |
40 RegisterProperty(bluetooth_gatt_characteristic::kFlagsProperty, &flags); | 32 RegisterProperty(bluetooth_gatt_characteristic::kFlagsProperty, &flags); |
| 33 RegisterProperty(bluetooth_gatt_characteristic::kDescriptorsProperty, |
| 34 &descriptors); |
41 } | 35 } |
42 | 36 |
43 BluetoothGattCharacteristicClient::Properties::~Properties() { | 37 BluetoothGattCharacteristicClient::Properties::~Properties() { |
44 } | 38 } |
45 | 39 |
46 // The BluetoothGattCharacteristicClient implementation used in production. | 40 // The BluetoothGattCharacteristicClient implementation used in production. |
47 class BluetoothGattCharacteristicClientImpl | 41 class BluetoothGattCharacteristicClientImpl |
48 : public BluetoothGattCharacteristicClient, | 42 : public BluetoothGattCharacteristicClient, |
49 public dbus::ObjectManager::Interface { | 43 public dbus::ObjectManager::Interface { |
50 public: | 44 public: |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 const ErrorCallback& error_callback) OVERRIDE { | 145 const ErrorCallback& error_callback) OVERRIDE { |
152 dbus::ObjectProxy* object_proxy = | 146 dbus::ObjectProxy* object_proxy = |
153 object_manager_->GetObjectProxy(object_path); | 147 object_manager_->GetObjectProxy(object_path); |
154 if (!object_proxy) { | 148 if (!object_proxy) { |
155 error_callback.Run(kUnknownCharacteristicError, ""); | 149 error_callback.Run(kUnknownCharacteristicError, ""); |
156 return; | 150 return; |
157 } | 151 } |
158 | 152 |
159 dbus::MethodCall method_call( | 153 dbus::MethodCall method_call( |
160 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface, | 154 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface, |
161 kStartNotify); | 155 bluetooth_gatt_characteristic::kStartNotify); |
162 | 156 |
163 object_proxy->CallMethodWithErrorCallback( | 157 object_proxy->CallMethodWithErrorCallback( |
164 &method_call, | 158 &method_call, |
165 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 159 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
166 base::Bind(&BluetoothGattCharacteristicClientImpl::OnSuccess, | 160 base::Bind(&BluetoothGattCharacteristicClientImpl::OnSuccess, |
167 weak_ptr_factory_.GetWeakPtr(), | 161 weak_ptr_factory_.GetWeakPtr(), |
168 callback), | 162 callback), |
169 base::Bind(&BluetoothGattCharacteristicClientImpl::OnError, | 163 base::Bind(&BluetoothGattCharacteristicClientImpl::OnError, |
170 weak_ptr_factory_.GetWeakPtr(), | 164 weak_ptr_factory_.GetWeakPtr(), |
171 error_callback)); | 165 error_callback)); |
172 } | 166 } |
173 | 167 |
174 // BluetoothGattCharacteristicClient override. | 168 // BluetoothGattCharacteristicClient override. |
175 virtual void StopNotify(const dbus::ObjectPath& object_path, | 169 virtual void StopNotify(const dbus::ObjectPath& object_path, |
176 const base::Closure& callback, | 170 const base::Closure& callback, |
177 const ErrorCallback& error_callback) OVERRIDE { | 171 const ErrorCallback& error_callback) OVERRIDE { |
178 dbus::ObjectProxy* object_proxy = | 172 dbus::ObjectProxy* object_proxy = |
179 object_manager_->GetObjectProxy(object_path); | 173 object_manager_->GetObjectProxy(object_path); |
180 if (!object_proxy) { | 174 if (!object_proxy) { |
181 error_callback.Run(kUnknownCharacteristicError, ""); | 175 error_callback.Run(kUnknownCharacteristicError, ""); |
182 return; | 176 return; |
183 } | 177 } |
184 | 178 |
185 dbus::MethodCall method_call( | 179 dbus::MethodCall method_call( |
186 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface, | 180 bluetooth_gatt_characteristic::kBluetoothGattCharacteristicInterface, |
187 kStopNotify); | 181 bluetooth_gatt_characteristic::kStopNotify); |
188 | 182 |
189 object_proxy->CallMethodWithErrorCallback( | 183 object_proxy->CallMethodWithErrorCallback( |
190 &method_call, | 184 &method_call, |
191 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 185 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
192 base::Bind(&BluetoothGattCharacteristicClientImpl::OnSuccess, | 186 base::Bind(&BluetoothGattCharacteristicClientImpl::OnSuccess, |
193 weak_ptr_factory_.GetWeakPtr(), | 187 weak_ptr_factory_.GetWeakPtr(), |
194 callback), | 188 callback), |
195 base::Bind(&BluetoothGattCharacteristicClientImpl::OnError, | 189 base::Bind(&BluetoothGattCharacteristicClientImpl::OnError, |
196 weak_ptr_factory_.GetWeakPtr(), | 190 weak_ptr_factory_.GetWeakPtr(), |
197 error_callback)); | 191 error_callback)); |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 | 353 |
360 BluetoothGattCharacteristicClient::~BluetoothGattCharacteristicClient() { | 354 BluetoothGattCharacteristicClient::~BluetoothGattCharacteristicClient() { |
361 } | 355 } |
362 | 356 |
363 // static | 357 // static |
364 BluetoothGattCharacteristicClient* BluetoothGattCharacteristicClient::Create() { | 358 BluetoothGattCharacteristicClient* BluetoothGattCharacteristicClient::Create() { |
365 return new BluetoothGattCharacteristicClientImpl(); | 359 return new BluetoothGattCharacteristicClientImpl(); |
366 } | 360 } |
367 | 361 |
368 } // namespace chromeos | 362 } // namespace chromeos |
OLD | NEW |