OLD | NEW |
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/bluetooth_device_experimental_chromeos.h" | 5 #include "device/bluetooth/bluetooth_device_experimental_chromeos.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "chromeos/dbus/dbus_thread_manager.h" | 8 #include "chromeos/dbus/dbus_thread_manager.h" |
9 #include "chromeos/dbus/experimental_bluetooth_adapter_client.h" | 9 #include "chromeos/dbus/experimental_bluetooth_adapter_client.h" |
10 #include "chromeos/dbus/experimental_bluetooth_agent_manager_client.h" | 10 #include "chromeos/dbus/experimental_bluetooth_agent_manager_client.h" |
11 #include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h" | 11 #include "chromeos/dbus/experimental_bluetooth_agent_service_provider.h" |
12 #include "chromeos/dbus/experimental_bluetooth_device_client.h" | 12 #include "chromeos/dbus/experimental_bluetooth_device_client.h" |
| 13 #include "chromeos/dbus/experimental_bluetooth_input_client.h" |
13 #include "dbus/bus.h" | 14 #include "dbus/bus.h" |
14 #include "device/bluetooth/bluetooth_adapter_experimental_chromeos.h" | 15 #include "device/bluetooth/bluetooth_adapter_experimental_chromeos.h" |
15 #include "device/bluetooth/bluetooth_socket.h" | 16 #include "device/bluetooth/bluetooth_socket.h" |
16 #include "third_party/cros_system_api/dbus/service_constants.h" | 17 #include "third_party/cros_system_api/dbus/service_constants.h" |
17 | 18 |
18 using device::BluetoothDevice; | 19 using device::BluetoothDevice; |
19 | 20 |
20 namespace { | 21 namespace { |
21 | 22 |
22 // The agent path is relatively meaningless since BlueZ only supports one | 23 // The agent path is relatively meaningless since BlueZ only supports one |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 bool BluetoothDeviceExperimentalChromeOS::IsConnected() const { | 84 bool BluetoothDeviceExperimentalChromeOS::IsConnected() const { |
84 ExperimentalBluetoothDeviceClient::Properties* properties = | 85 ExperimentalBluetoothDeviceClient::Properties* properties = |
85 DBusThreadManager::Get()->GetExperimentalBluetoothDeviceClient()-> | 86 DBusThreadManager::Get()->GetExperimentalBluetoothDeviceClient()-> |
86 GetProperties(object_path_); | 87 GetProperties(object_path_); |
87 DCHECK(properties); | 88 DCHECK(properties); |
88 | 89 |
89 return properties->connected.value(); | 90 return properties->connected.value(); |
90 } | 91 } |
91 | 92 |
92 bool BluetoothDeviceExperimentalChromeOS::IsConnectable() const { | 93 bool BluetoothDeviceExperimentalChromeOS::IsConnectable() const { |
93 // TODO(deymo): implement | 94 ExperimentalBluetoothInputClient::Properties* input_properties = |
94 return false; | 95 DBusThreadManager::Get()->GetExperimentalBluetoothInputClient()-> |
| 96 GetProperties(object_path_); |
| 97 // GetProperties returns NULL when the device does not implement the given |
| 98 // interface. Non HID devices are normally connectable. |
| 99 if (!input_properties) |
| 100 return true; |
| 101 |
| 102 return input_properties->reconnect_mode.value() != "device"; |
95 } | 103 } |
96 | 104 |
97 bool BluetoothDeviceExperimentalChromeOS::IsConnecting() const { | 105 bool BluetoothDeviceExperimentalChromeOS::IsConnecting() const { |
98 return num_connecting_calls_ > 0; | 106 return num_connecting_calls_ > 0; |
99 } | 107 } |
100 | 108 |
101 BluetoothDeviceExperimentalChromeOS::ServiceList | 109 BluetoothDeviceExperimentalChromeOS::ServiceList |
102 BluetoothDeviceExperimentalChromeOS::GetServices() const { | 110 BluetoothDeviceExperimentalChromeOS::GetServices() const { |
103 ExperimentalBluetoothDeviceClient::Properties* properties = | 111 ExperimentalBluetoothDeviceClient::Properties* properties = |
104 DBusThreadManager::Get()->GetExperimentalBluetoothDeviceClient()-> | 112 DBusThreadManager::Get()->GetExperimentalBluetoothDeviceClient()-> |
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 if (!confirmation_callback_.is_null()) { | 611 if (!confirmation_callback_.is_null()) { |
604 confirmation_callback_.Run(status); | 612 confirmation_callback_.Run(status); |
605 confirmation_callback_.Reset(); | 613 confirmation_callback_.Reset(); |
606 callback_run = true; | 614 callback_run = true; |
607 } | 615 } |
608 | 616 |
609 return callback_run; | 617 return callback_run; |
610 } | 618 } |
611 | 619 |
612 } // namespace chromeos | 620 } // namespace chromeos |
OLD | NEW |