Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: device/bluetooth/dbus/fake_bluetooth_device_client.cc

Issue 2105423003: bluetooth: Update the map of GATT services when services resolve (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@my-origin
Patch Set: Address Luiz's and scheib's comments Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "device/bluetooth/dbus/fake_bluetooth_device_client.h" 5 #include "device/bluetooth/dbus/fake_bluetooth_device_client.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <sys/socket.h> 9 #include <sys/socket.h>
10 #include <sys/types.h> 10 #include <sys/types.h>
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 const char FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDevicePath[] = 211 const char FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDevicePath[] =
212 "/fake/hci0/devE"; 212 "/fake/hci0/devE";
213 const char 213 const char
214 FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceAddress[] = 214 FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceAddress[] =
215 "11:22:33:44:55:66"; 215 "11:22:33:44:55:66";
216 const char FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceName[] = 216 const char FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceName[] =
217 "Connected Pairable Device"; 217 "Connected Pairable Device";
218 const uint32_t 218 const uint32_t
219 FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceClass = 0x7a020c; 219 FakeBluetoothDeviceClient::kConnectedTrustedNotPairedDeviceClass = 0x7a020c;
220 220
221 const char FakeBluetoothDeviceClient::kCachedLowEnergyPath[] =
222 "/fake/hci0/devF";
223 const char FakeBluetoothDeviceClient::kCachedLowEnergyAddress[] =
224 "02:A5:11:0D:15:40";
225 const char FakeBluetoothDeviceClient::kCachedLowEnergyName[] =
226 "Bluetooth 4.0 Heart Rate Monitor";
227 const uint32_t FakeBluetoothDeviceClient::kCachedLowEnergyClass =
228 0x000918; // Major class "Health", Minor class "Heart/Pulse Rate Monitor."
229
230 FakeBluetoothDeviceClient::Properties::Properties( 221 FakeBluetoothDeviceClient::Properties::Properties(
231 const PropertyChangedCallback& callback) 222 const PropertyChangedCallback& callback)
232 : BluetoothDeviceClient::Properties( 223 : BluetoothDeviceClient::Properties(
233 NULL, 224 NULL,
234 bluetooth_device::kBluetoothDeviceInterface, 225 bluetooth_device::kBluetoothDeviceInterface,
235 callback) {} 226 callback) {}
236 227
237 FakeBluetoothDeviceClient::Properties::~Properties() {} 228 FakeBluetoothDeviceClient::Properties::~Properties() {}
238 229
239 void FakeBluetoothDeviceClient::Properties::Get( 230 void FakeBluetoothDeviceClient::Properties::Get(
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 // The device can be connected. 384 // The device can be connected.
394 properties->connected.ReplaceValue(true); 385 properties->connected.ReplaceValue(true);
395 callback.Run(); 386 callback.Run();
396 387
397 // Expose GATT services if connected to LE device. 388 // Expose GATT services if connected to LE device.
398 if (object_path == dbus::ObjectPath(kLowEnergyPath)) { 389 if (object_path == dbus::ObjectPath(kLowEnergyPath)) {
399 FakeBluetoothGattServiceClient* gatt_service_client = 390 FakeBluetoothGattServiceClient* gatt_service_client =
400 static_cast<FakeBluetoothGattServiceClient*>( 391 static_cast<FakeBluetoothGattServiceClient*>(
401 bluez::BluezDBusManager::Get()->GetBluetoothGattServiceClient()); 392 bluez::BluezDBusManager::Get()->GetBluetoothGattServiceClient());
402 gatt_service_client->ExposeHeartRateService(object_path); 393 gatt_service_client->ExposeHeartRateService(object_path);
394 properties->services_resolved.ReplaceValue(true);
403 } 395 }
404 396
405 AddInputDeviceIfNeeded(object_path, properties); 397 AddInputDeviceIfNeeded(object_path, properties);
406 } 398 }
407 399
408 void FakeBluetoothDeviceClient::Disconnect( 400 void FakeBluetoothDeviceClient::Disconnect(
409 const dbus::ObjectPath& object_path, 401 const dbus::ObjectPath& object_path,
410 const base::Closure& callback, 402 const base::Closure& callback,
411 const ErrorCallback& error_callback) { 403 const ErrorCallback& error_callback) {
412 VLOG(1) << "Disconnect: " << object_path.value(); 404 VLOG(1) << "Disconnect: " << object_path.value();
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 properties->address.ReplaceValue(kJustWorksAddress); 681 properties->address.ReplaceValue(kJustWorksAddress);
690 properties->bluetooth_class.ReplaceValue(kJustWorksClass); 682 properties->bluetooth_class.ReplaceValue(kJustWorksClass);
691 properties->name.ReplaceValue("JustWorks"); 683 properties->name.ReplaceValue("JustWorks");
692 properties->alias.ReplaceValue(kJustWorksName); 684 properties->alias.ReplaceValue(kJustWorksName);
693 685
694 } else if (device_path == dbus::ObjectPath(kLowEnergyPath)) { 686 } else if (device_path == dbus::ObjectPath(kLowEnergyPath)) {
695 properties->address.ReplaceValue(kLowEnergyAddress); 687 properties->address.ReplaceValue(kLowEnergyAddress);
696 properties->bluetooth_class.ReplaceValue(kLowEnergyClass); 688 properties->bluetooth_class.ReplaceValue(kLowEnergyClass);
697 properties->name.ReplaceValue("Heart Rate Monitor"); 689 properties->name.ReplaceValue("Heart Rate Monitor");
698 properties->alias.ReplaceValue(kLowEnergyName); 690 properties->alias.ReplaceValue(kLowEnergyName);
691 properties->services_resolved.ReplaceValue(false);
699 692
700 std::vector<std::string> uuids; 693 std::vector<std::string> uuids;
701 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID); 694 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID);
702 properties->uuids.ReplaceValue(uuids); 695 properties->uuids.ReplaceValue(uuids);
703 } else if (device_path == 696 } else if (device_path ==
704 dbus::ObjectPath(kConnectedTrustedNotPairedDevicePath)) { 697 dbus::ObjectPath(kConnectedTrustedNotPairedDevicePath)) {
705 properties->address.ReplaceValue(kConnectedTrustedNotPairedDeviceAddress); 698 properties->address.ReplaceValue(kConnectedTrustedNotPairedDeviceAddress);
706 properties->bluetooth_class.ReplaceValue( 699 properties->bluetooth_class.ReplaceValue(
707 kConnectedTrustedNotPairedDeviceClass); 700 kConnectedTrustedNotPairedDeviceClass);
708 properties->trusted.ReplaceValue(true); 701 properties->trusted.ReplaceValue(true);
709 properties->connected.ReplaceValue(true); 702 properties->connected.ReplaceValue(true);
710 properties->paired.ReplaceValue(false); 703 properties->paired.ReplaceValue(false);
711 properties->name.ReplaceValue("Connected Pairable Device"); 704 properties->name.ReplaceValue("Connected Pairable Device");
712 properties->alias.ReplaceValue(kConnectedTrustedNotPairedDeviceName); 705 properties->alias.ReplaceValue(kConnectedTrustedNotPairedDeviceName);
713 } else if (device_path == dbus::ObjectPath(kCachedLowEnergyPath)) {
714 properties->address.ReplaceValue(kLowEnergyAddress);
715 properties->bluetooth_class.ReplaceValue(kLowEnergyClass);
716 properties->name.ReplaceValue("Heart Rate Monitor");
717 properties->alias.ReplaceValue(kLowEnergyName);
718 properties->alias.ReplaceValue(kLowEnergyName);
719 properties->services_resolved.ReplaceValue(false);
720
721 std::vector<std::string> uuids;
722 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID);
723 properties->uuids.ReplaceValue(uuids);
724 } else { 706 } else {
725 NOTREACHED(); 707 NOTREACHED();
726 } 708 }
727 709
728 properties_map_.insert(std::make_pair(device_path, std::move(properties))); 710 properties_map_.insert(std::make_pair(device_path, std::move(properties)));
729 device_list_.push_back(device_path); 711 device_list_.push_back(device_path);
730 712
731 // After the new properties| is added to the map, expose the heart rate
732 // service to emulate the device with cached GATT services.
733 if (device_path == dbus::ObjectPath(kCachedLowEnergyPath)) {
734 static_cast<FakeBluetoothGattServiceClient*>(
735 bluez::BluezDBusManager::Get()->GetBluetoothGattServiceClient())
736 ->ExposeHeartRateServiceWithoutDelay(device_path);
737 }
738
739 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 713 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
740 DeviceAdded(device_path)); 714 DeviceAdded(device_path));
741 } 715 }
742 716
743 void FakeBluetoothDeviceClient::CreateDeviceWithProperties( 717 void FakeBluetoothDeviceClient::CreateDeviceWithProperties(
744 const dbus::ObjectPath& adapter_path, 718 const dbus::ObjectPath& adapter_path,
745 const IncomingDeviceProperties& props) { 719 const IncomingDeviceProperties& props) {
746 dbus::ObjectPath device_path(props.device_path); 720 dbus::ObjectPath device_path(props.device_path);
747 if (std::find(device_list_.begin(), device_list_.end(), device_path) != 721 if (std::find(device_list_.begin(), device_list_.end(), device_path) !=
748 device_list_.end()) 722 device_list_.end())
(...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after
1744 } 1718 }
1745 properties->type.set_valid(true); 1719 properties->type.set_valid(true);
1746 1720
1747 properties_map_.insert(std::make_pair(device_path, std::move(properties))); 1721 properties_map_.insert(std::make_pair(device_path, std::move(properties)));
1748 device_list_.push_back(device_path); 1722 device_list_.push_back(device_path);
1749 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 1723 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
1750 DeviceAdded(device_path)); 1724 DeviceAdded(device_path));
1751 } 1725 }
1752 1726
1753 } // namespace bluez 1727 } // namespace bluez
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698