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

Side by Side Diff: chromeos/dbus/fake_bluetooth_device_client.cc

Issue 206443009: chromeos/dbus: Add fake D-Bus clients for GATT client-mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 9 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 | Annotate | Revision Log
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 "chromeos/dbus/fake_bluetooth_device_client.h" 5 #include "chromeos/dbus/fake_bluetooth_device_client.h"
6 6
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <unistd.h> 8 #include <unistd.h>
9 #include <sys/types.h> 9 #include <sys/types.h>
10 #include <sys/socket.h> 10 #include <sys/socket.h>
11 11
12 #include <algorithm> 12 #include <algorithm>
13 #include <map> 13 #include <map>
14 #include <string> 14 #include <string>
15 #include <utility> 15 #include <utility>
16 #include <vector> 16 #include <vector>
17 17
18 #include "base/bind.h" 18 #include "base/bind.h"
19 #include "base/logging.h" 19 #include "base/logging.h"
20 #include "base/memory/scoped_ptr.h" 20 #include "base/memory/scoped_ptr.h"
21 #include "base/message_loop/message_loop.h" 21 #include "base/message_loop/message_loop.h"
22 #include "base/rand_util.h"
22 #include "base/stl_util.h" 23 #include "base/stl_util.h"
23 #include "base/threading/worker_pool.h" 24 #include "base/threading/worker_pool.h"
24 #include "base/time/time.h" 25 #include "base/time/time.h"
25 #include "chromeos/dbus/dbus_thread_manager.h" 26 #include "chromeos/dbus/dbus_thread_manager.h"
26 #include "chromeos/dbus/fake_bluetooth_adapter_client.h" 27 #include "chromeos/dbus/fake_bluetooth_adapter_client.h"
27 #include "chromeos/dbus/fake_bluetooth_agent_manager_client.h" 28 #include "chromeos/dbus/fake_bluetooth_agent_manager_client.h"
28 #include "chromeos/dbus/fake_bluetooth_agent_service_provider.h" 29 #include "chromeos/dbus/fake_bluetooth_agent_service_provider.h"
30 #include "chromeos/dbus/fake_bluetooth_gatt_service_client.h"
29 #include "chromeos/dbus/fake_bluetooth_input_client.h" 31 #include "chromeos/dbus/fake_bluetooth_input_client.h"
30 #include "chromeos/dbus/fake_bluetooth_profile_manager_client.h" 32 #include "chromeos/dbus/fake_bluetooth_profile_manager_client.h"
31 #include "chromeos/dbus/fake_bluetooth_profile_service_provider.h" 33 #include "chromeos/dbus/fake_bluetooth_profile_service_provider.h"
32 #include "dbus/file_descriptor.h" 34 #include "dbus/file_descriptor.h"
33 #include "dbus/object_path.h" 35 #include "dbus/object_path.h"
34 #include "third_party/cros_system_api/dbus/service_constants.h" 36 #include "third_party/cros_system_api/dbus/service_constants.h"
35 37
36 namespace { 38 namespace {
37 39
38 // Default interval between simulated events. 40 // Default interval between simulated events.
39 const int kSimulationIntervalMs = 750; 41 const int kSimulationIntervalMs = 750;
40 42
43 // Minimum and maximum bounds for randomly generated RSSI values.
44 const int kMinRSSI = -90;
45 const int kMaxRSSI = -30;
46
41 47
42 void SimulatedProfileSocket(int fd) { 48 void SimulatedProfileSocket(int fd) {
43 // Simulate a server-side socket of a profile; read data from the socket, 49 // Simulate a server-side socket of a profile; read data from the socket,
44 // write it back, and then close. 50 // write it back, and then close.
45 char buf[1024]; 51 char buf[1024];
46 ssize_t len; 52 ssize_t len;
47 ssize_t count; 53 ssize_t count;
48 54
49 len = read(fd, buf, sizeof buf); 55 len = read(fd, buf, sizeof buf);
50 if (len < 0) { 56 if (len < 0) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 const uint32 FakeBluetoothDeviceClient::kUnpairableDeviceClass = 0x002540; 166 const uint32 FakeBluetoothDeviceClient::kUnpairableDeviceClass = 0x002540;
161 167
162 const char FakeBluetoothDeviceClient::kJustWorksPath[] = 168 const char FakeBluetoothDeviceClient::kJustWorksPath[] =
163 "/fake/hci0/devB"; 169 "/fake/hci0/devB";
164 const char FakeBluetoothDeviceClient::kJustWorksAddress[] = 170 const char FakeBluetoothDeviceClient::kJustWorksAddress[] =
165 "00:0C:8A:00:00:00"; 171 "00:0C:8A:00:00:00";
166 const char FakeBluetoothDeviceClient::kJustWorksName[] = 172 const char FakeBluetoothDeviceClient::kJustWorksName[] =
167 "Just-Works Device"; 173 "Just-Works Device";
168 const uint32 FakeBluetoothDeviceClient::kJustWorksClass = 0x240428; 174 const uint32 FakeBluetoothDeviceClient::kJustWorksClass = 0x240428;
169 175
176 const char FakeBluetoothDeviceClient::kLowEnergyPath[] =
177 "/fake/hci0/devC";
178 const char FakeBluetoothDeviceClient::kLowEnergyAddress[] =
179 "00:1A:11:00:15:30";
180 const char FakeBluetoothDeviceClient::kLowEnergyName[] =
181 "Bluetooth 4.0 Heart Rate Monitor";
182 const uint32 FakeBluetoothDeviceClient::kLowEnergyClass =
183 0x000918; // Major class "Health", Minor class "Heart/Pulse Rate Monitor."
184
170 FakeBluetoothDeviceClient::Properties::Properties( 185 FakeBluetoothDeviceClient::Properties::Properties(
171 const PropertyChangedCallback& callback) 186 const PropertyChangedCallback& callback)
172 : BluetoothDeviceClient::Properties( 187 : BluetoothDeviceClient::Properties(
173 NULL, 188 NULL,
174 bluetooth_device::kBluetoothDeviceInterface, 189 bluetooth_device::kBluetoothDeviceInterface,
175 callback) { 190 callback) {
176 } 191 }
177 192
178 FakeBluetoothDeviceClient::Properties::~Properties() { 193 FakeBluetoothDeviceClient::Properties::~Properties() {
179 } 194 }
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 // Must not be paired 301 // Must not be paired
287 error_callback.Run(bluetooth_device::kErrorFailed, 302 error_callback.Run(bluetooth_device::kErrorFailed,
288 "Connection fails while paired"); 303 "Connection fails while paired");
289 return; 304 return;
290 } 305 }
291 306
292 // The device can be connected. 307 // The device can be connected.
293 properties->connected.ReplaceValue(true); 308 properties->connected.ReplaceValue(true);
294 callback.Run(); 309 callback.Run();
295 310
311 // Expose GATT services if connected to LE device.
312 if (object_path == dbus::ObjectPath(kLowEnergyPath)) {
313 FakeBluetoothGattServiceClient* gatt_service_client =
314 static_cast<FakeBluetoothGattServiceClient*>(
315 DBusThreadManager::Get()->GetBluetoothGattServiceClient());
316 gatt_service_client->ExposeHeartRateService(
317 dbus::ObjectPath(kLowEnergyPath));
318 }
319
296 AddInputDeviceIfNeeded(object_path, properties); 320 AddInputDeviceIfNeeded(object_path, properties);
297 } 321 }
298 322
299 void FakeBluetoothDeviceClient::Disconnect( 323 void FakeBluetoothDeviceClient::Disconnect(
300 const dbus::ObjectPath& object_path, 324 const dbus::ObjectPath& object_path,
301 const base::Closure& callback, 325 const base::Closure& callback,
302 const ErrorCallback& error_callback) { 326 const ErrorCallback& error_callback) {
303 VLOG(1) << "Disconnect: " << object_path.value(); 327 VLOG(1) << "Disconnect: " << object_path.value();
304 Properties* properties = GetProperties(object_path); 328 Properties* properties = GetProperties(object_path);
305 329
306 if (properties->connected.value() == true) { 330 if (!properties->connected.value()) {
307 callback.Run();
308 properties->connected.ReplaceValue(false);
309 } else {
310 error_callback.Run("org.bluez.Error.NotConnected", "Not Connected"); 331 error_callback.Run("org.bluez.Error.NotConnected", "Not Connected");
332 return;
311 } 333 }
334
335 // Hide the Heart Rate Service if disconnected from LE device.
336 if (object_path == dbus::ObjectPath(kLowEnergyPath)) {
337 FakeBluetoothGattServiceClient* gatt_service_client =
338 static_cast<FakeBluetoothGattServiceClient*>(
339 DBusThreadManager::Get()->GetBluetoothGattServiceClient());
340 gatt_service_client->HideHeartRateService();
341 }
342
343 callback.Run();
344 properties->connected.ReplaceValue(false);
312 } 345 }
313 346
314 void FakeBluetoothDeviceClient::ConnectProfile( 347 void FakeBluetoothDeviceClient::ConnectProfile(
315 const dbus::ObjectPath& object_path, 348 const dbus::ObjectPath& object_path,
316 const std::string& uuid, 349 const std::string& uuid,
317 const base::Closure& callback, 350 const base::Closure& callback,
318 const ErrorCallback& error_callback) { 351 const ErrorCallback& error_callback) {
319 VLOG(1) << "ConnectProfile: " << object_path.value() << " " << uuid; 352 VLOG(1) << "ConnectProfile: " << object_path.value() << " " << uuid;
320 353
321 FakeBluetoothProfileManagerClient* fake_bluetooth_profile_manager_client = 354 FakeBluetoothProfileManagerClient* fake_bluetooth_profile_manager_client =
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 properties->bluetooth_class.ReplaceValue(kUnpairableDeviceClass); 590 properties->bluetooth_class.ReplaceValue(kUnpairableDeviceClass);
558 properties->name.ReplaceValue("Fake Unpairable Device"); 591 properties->name.ReplaceValue("Fake Unpairable Device");
559 properties->alias.ReplaceValue(kUnpairableDeviceName); 592 properties->alias.ReplaceValue(kUnpairableDeviceName);
560 593
561 } else if (device_path == dbus::ObjectPath(kJustWorksPath)) { 594 } else if (device_path == dbus::ObjectPath(kJustWorksPath)) {
562 properties->address.ReplaceValue(kJustWorksAddress); 595 properties->address.ReplaceValue(kJustWorksAddress);
563 properties->bluetooth_class.ReplaceValue(kJustWorksClass); 596 properties->bluetooth_class.ReplaceValue(kJustWorksClass);
564 properties->name.ReplaceValue("JustWorks"); 597 properties->name.ReplaceValue("JustWorks");
565 properties->alias.ReplaceValue(kJustWorksName); 598 properties->alias.ReplaceValue(kJustWorksName);
566 599
600 } else if (device_path == dbus::ObjectPath(kLowEnergyPath)) {
601 properties->address.ReplaceValue(kLowEnergyAddress);
602 properties->bluetooth_class.ReplaceValue(kLowEnergyClass);
603 properties->name.ReplaceValue("Heart Rate Monitor");
604 properties->alias.ReplaceValue(kLowEnergyName);
605
606 std::vector<std::string> uuids;
607 uuids.push_back(FakeBluetoothGattServiceClient::kHeartRateServiceUUID);
608 properties->uuids.ReplaceValue(uuids);
609
567 } else { 610 } else {
568 NOTREACHED(); 611 NOTREACHED();
569 612
570 } 613 }
571 614
572 properties_map_[device_path] = properties; 615 properties_map_[device_path] = properties;
573 device_list_.push_back(device_path); 616 device_list_.push_back(device_path);
574 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 617 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
575 DeviceAdded(device_path)); 618 DeviceAdded(device_path));
576 } 619 }
(...skipping 13 matching lines...) Expand all
590 device_list_.erase(listiter); 633 device_list_.erase(listiter);
591 634
592 // Remove the Input interface if it exists. This should be called before the 635 // Remove the Input interface if it exists. This should be called before the
593 // BluetoothDeviceClient::Observer::DeviceRemoved because it deletes the 636 // BluetoothDeviceClient::Observer::DeviceRemoved because it deletes the
594 // BluetoothDeviceChromeOS object, including the device_path referenced here. 637 // BluetoothDeviceChromeOS object, including the device_path referenced here.
595 FakeBluetoothInputClient* fake_bluetooth_input_client = 638 FakeBluetoothInputClient* fake_bluetooth_input_client =
596 static_cast<FakeBluetoothInputClient*>( 639 static_cast<FakeBluetoothInputClient*>(
597 DBusThreadManager::Get()->GetBluetoothInputClient()); 640 DBusThreadManager::Get()->GetBluetoothInputClient());
598 fake_bluetooth_input_client->RemoveInputDevice(device_path); 641 fake_bluetooth_input_client->RemoveInputDevice(device_path);
599 642
643 if (device_path == dbus::ObjectPath(kLowEnergyPath)) {
644 FakeBluetoothGattServiceClient* gatt_service_client =
645 static_cast<FakeBluetoothGattServiceClient*>(
646 DBusThreadManager::Get()->GetBluetoothGattServiceClient());
647 gatt_service_client->HideHeartRateService();
648 }
649
600 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 650 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
601 DeviceRemoved(device_path)); 651 DeviceRemoved(device_path));
602 652
603 delete properties; 653 delete properties;
604 properties_map_.erase(iter); 654 properties_map_.erase(iter);
605 } 655 }
606 656
607 void FakeBluetoothDeviceClient::OnPropertyChanged( 657 void FakeBluetoothDeviceClient::OnPropertyChanged(
608 const dbus::ObjectPath& object_path, 658 const dbus::ObjectPath& object_path,
609 const std::string& property_name) { 659 const std::string& property_name) {
660 VLOG(2) << "Fake Bluetooth device property changed: " << object_path.value()
661 << ": " << property_name;
610 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_, 662 FOR_EACH_OBSERVER(BluetoothDeviceClient::Observer, observers_,
611 DevicePropertyChanged(object_path, property_name)); 663 DevicePropertyChanged(object_path, property_name));
612 } 664 }
613 665
614 void FakeBluetoothDeviceClient::DiscoverySimulationTimer() { 666 void FakeBluetoothDeviceClient::DiscoverySimulationTimer() {
615 if (!discovery_simulation_step_) 667 if (!discovery_simulation_step_)
616 return; 668 return;
617 669
618 // Timer fires every .75s, the numbers below are arbitrary to give a feel 670 // Timer fires every .75s, the numbers below are arbitrary to give a feel
619 // for a discovery process. 671 // for a discovery process.
620 VLOG(1) << "discovery simulation, step " << discovery_simulation_step_; 672 VLOG(1) << "discovery simulation, step " << discovery_simulation_step_;
621 if (discovery_simulation_step_ == 2) { 673 if (discovery_simulation_step_ == 2) {
622 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 674 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
623 dbus::ObjectPath(kLegacyAutopairPath)); 675 dbus::ObjectPath(kLegacyAutopairPath));
676 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
677 dbus::ObjectPath(kLowEnergyPath));
624 678
625 } else if (discovery_simulation_step_ == 4) { 679 } else if (discovery_simulation_step_ == 4) {
626 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 680 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
627 dbus::ObjectPath(kDisplayPinCodePath)); 681 dbus::ObjectPath(kDisplayPinCodePath));
628 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 682 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
629 dbus::ObjectPath(kVanishingDevicePath)); 683 dbus::ObjectPath(kVanishingDevicePath));
684 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
685 base::RandInt(kMinRSSI, kMaxRSSI));
630 686
631 } else if (discovery_simulation_step_ == 7) { 687 } else if (discovery_simulation_step_ == 7) {
632 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 688 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
633 dbus::ObjectPath(kConnectUnpairablePath)); 689 dbus::ObjectPath(kConnectUnpairablePath));
690 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
691 base::RandInt(kMinRSSI, kMaxRSSI));
634 692
635 } else if (discovery_simulation_step_ == 8) { 693 } else if (discovery_simulation_step_ == 8) {
636 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 694 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
637 dbus::ObjectPath(kDisplayPasskeyPath)); 695 dbus::ObjectPath(kDisplayPasskeyPath));
638 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 696 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
639 dbus::ObjectPath(kRequestPinCodePath)); 697 dbus::ObjectPath(kRequestPinCodePath));
698 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
699 base::RandInt(kMinRSSI, kMaxRSSI));
640 700
641 } else if (discovery_simulation_step_ == 10) { 701 } else if (discovery_simulation_step_ == 10) {
642 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 702 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
643 dbus::ObjectPath(kConfirmPasskeyPath)); 703 dbus::ObjectPath(kConfirmPasskeyPath));
644 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 704 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
645 dbus::ObjectPath(kRequestPasskeyPath)); 705 dbus::ObjectPath(kRequestPasskeyPath));
646 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 706 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
647 dbus::ObjectPath(kUnconnectableDevicePath)); 707 dbus::ObjectPath(kUnconnectableDevicePath));
648 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 708 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
649 dbus::ObjectPath(kUnpairableDevicePath)); 709 dbus::ObjectPath(kUnpairableDevicePath));
650 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 710 CreateDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
651 dbus::ObjectPath(kJustWorksPath)); 711 dbus::ObjectPath(kJustWorksPath));
712 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
713 base::RandInt(kMinRSSI, kMaxRSSI));
652 714
653 } else if (discovery_simulation_step_ == 13) { 715 } else if (discovery_simulation_step_ == 13) {
654 RemoveDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath), 716 RemoveDevice(dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
655 dbus::ObjectPath(kVanishingDevicePath)); 717 dbus::ObjectPath(kVanishingDevicePath));
718 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
719 base::RandInt(kMinRSSI, kMaxRSSI));
656 720
657 } else if (discovery_simulation_step_ == 14) { 721 } else if (discovery_simulation_step_ == 14) {
722 UpdateDeviceRSSI(dbus::ObjectPath(kLowEnergyPath),
723 base::RandInt(kMinRSSI, kMaxRSSI));
658 return; 724 return;
659 725
660 } 726 }
661 727
662 ++discovery_simulation_step_; 728 ++discovery_simulation_step_;
663 base::MessageLoop::current()->PostDelayedTask( 729 base::MessageLoop::current()->PostDelayedTask(
664 FROM_HERE, 730 FROM_HERE,
665 base::Bind(&FakeBluetoothDeviceClient::DiscoverySimulationTimer, 731 base::Bind(&FakeBluetoothDeviceClient::DiscoverySimulationTimer,
666 base::Unretained(this)), 732 base::Unretained(this)),
667 base::TimeDelta::FromMilliseconds(simulation_interval_ms_)); 733 base::TimeDelta::FromMilliseconds(simulation_interval_ms_));
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 803
738 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client = 804 FakeBluetoothAgentManagerClient* fake_bluetooth_agent_manager_client =
739 static_cast<FakeBluetoothAgentManagerClient*>( 805 static_cast<FakeBluetoothAgentManagerClient*>(
740 DBusThreadManager::Get()->GetBluetoothAgentManagerClient()); 806 DBusThreadManager::Get()->GetBluetoothAgentManagerClient());
741 FakeBluetoothAgentServiceProvider* agent_service_provider = 807 FakeBluetoothAgentServiceProvider* agent_service_provider =
742 fake_bluetooth_agent_manager_client->GetAgentServiceProvider(); 808 fake_bluetooth_agent_manager_client->GetAgentServiceProvider();
743 CHECK(agent_service_provider != NULL); 809 CHECK(agent_service_provider != NULL);
744 810
745 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) || 811 if (object_path == dbus::ObjectPath(kLegacyAutopairPath) ||
746 object_path == dbus::ObjectPath(kConnectUnpairablePath) || 812 object_path == dbus::ObjectPath(kConnectUnpairablePath) ||
747 object_path == dbus::ObjectPath(kUnconnectableDevicePath)) { 813 object_path == dbus::ObjectPath(kUnconnectableDevicePath) ||
814 object_path == dbus::ObjectPath(kLowEnergyPath)) {
748 // No need to call anything on the pairing delegate, just wait 3 times 815 // No need to call anything on the pairing delegate, just wait 3 times
749 // the interval before acting as if the other end accepted it. 816 // the interval before acting as if the other end accepted it.
750 base::MessageLoop::current()->PostDelayedTask( 817 base::MessageLoop::current()->PostDelayedTask(
751 FROM_HERE, 818 FROM_HERE,
752 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing, 819 base::Bind(&FakeBluetoothDeviceClient::CompleteSimulatedPairing,
753 base::Unretained(this), 820 base::Unretained(this),
754 object_path, callback, error_callback), 821 object_path, callback, error_callback),
755 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_)); 822 base::TimeDelta::FromMilliseconds(3 * simulation_interval_ms_));
756 823
757 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) { 824 } else if (object_path == dbus::ObjectPath(kDisplayPinCodePath)) {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 // If the paired device is a HID device based on it's bluetooth class, 981 // If the paired device is a HID device based on it's bluetooth class,
915 // simulate the Input interface. 982 // simulate the Input interface.
916 FakeBluetoothInputClient* fake_bluetooth_input_client = 983 FakeBluetoothInputClient* fake_bluetooth_input_client =
917 static_cast<FakeBluetoothInputClient*>( 984 static_cast<FakeBluetoothInputClient*>(
918 DBusThreadManager::Get()->GetBluetoothInputClient()); 985 DBusThreadManager::Get()->GetBluetoothInputClient());
919 986
920 if ((properties->bluetooth_class.value() & 0x001f03) == 0x000500) 987 if ((properties->bluetooth_class.value() & 0x001f03) == 0x000500)
921 fake_bluetooth_input_client->AddInputDevice(object_path); 988 fake_bluetooth_input_client->AddInputDevice(object_path);
922 } 989 }
923 990
991 void FakeBluetoothDeviceClient::UpdateDeviceRSSI(
992 const dbus::ObjectPath& object_path,
993 int16 rssi) {
994 PropertiesMap::iterator iter = properties_map_.find(object_path);
995 if (iter == properties_map_.end()) {
996 VLOG(2) << "Fake device does not exist: " << object_path.value();
997 return;
998 }
999 Properties* properties = iter->second;
1000 DCHECK(properties);
1001 properties->rssi.ReplaceValue(rssi);
1002 }
1003
924 void FakeBluetoothDeviceClient::PinCodeCallback( 1004 void FakeBluetoothDeviceClient::PinCodeCallback(
925 const dbus::ObjectPath& object_path, 1005 const dbus::ObjectPath& object_path,
926 const base::Closure& callback, 1006 const base::Closure& callback,
927 const ErrorCallback& error_callback, 1007 const ErrorCallback& error_callback,
928 BluetoothAgentServiceProvider::Delegate::Status status, 1008 BluetoothAgentServiceProvider::Delegate::Status status,
929 const std::string& pincode) { 1009 const std::string& pincode) {
930 VLOG(1) << "PinCodeCallback: " << object_path.value(); 1010 VLOG(1) << "PinCodeCallback: " << object_path.value();
931 1011
932 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) { 1012 if (status == BluetoothAgentServiceProvider::Delegate::SUCCESS) {
933 base::MessageLoop::current()->PostDelayedTask( 1013 base::MessageLoop::current()->PostDelayedTask(
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 // TODO(keybuk): tear down this side of the connection 1173 // TODO(keybuk): tear down this side of the connection
1094 callback.Run(); 1174 callback.Run();
1095 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) { 1175 } else if (status == BluetoothProfileServiceProvider::Delegate::CANCELLED) {
1096 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled"); 1176 error_callback.Run(bluetooth_device::kErrorFailed, "Canceled");
1097 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) { 1177 } else if (status == BluetoothProfileServiceProvider::Delegate::REJECTED) {
1098 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected"); 1178 error_callback.Run(bluetooth_device::kErrorFailed, "Rejected");
1099 } 1179 }
1100 } 1180 }
1101 1181
1102 } // namespace chromeos 1182 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/fake_bluetooth_device_client.h ('k') | chromeos/dbus/fake_bluetooth_gatt_characteristic_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698