OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <string> | 5 #include <string> |
6 #include <utility> | 6 #include <utility> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "device/bluetooth/adapter.h" | 9 #include "device/bluetooth/adapter.h" |
10 #include "device/bluetooth/device.h" | 10 #include "device/bluetooth/device.h" |
(...skipping 16 matching lines...) Expand all Loading... | |
27 adapter_info->address = adapter_->GetAddress(); | 27 adapter_info->address = adapter_->GetAddress(); |
28 adapter_info->name = adapter_->GetName(); | 28 adapter_info->name = adapter_->GetName(); |
29 adapter_info->initialized = adapter_->IsInitialized(); | 29 adapter_info->initialized = adapter_->IsInitialized(); |
30 adapter_info->present = adapter_->IsPresent(); | 30 adapter_info->present = adapter_->IsPresent(); |
31 adapter_info->powered = adapter_->IsPowered(); | 31 adapter_info->powered = adapter_->IsPowered(); |
32 adapter_info->discoverable = adapter_->IsDiscoverable(); | 32 adapter_info->discoverable = adapter_->IsDiscoverable(); |
33 adapter_info->discovering = adapter_->IsDiscovering(); | 33 adapter_info->discovering = adapter_->IsDiscovering(); |
34 callback.Run(std::move(adapter_info)); | 34 callback.Run(std::move(adapter_info)); |
35 } | 35 } |
36 | 36 |
37 void Adapter::GetDevice(const std::string& address, | 37 void Adapter::ConnectToDevice(const std::string& address, |
38 const GetDeviceCallback& callback) { | 38 const ConnectToDeviceCallback& callback) { |
39 mojom::DevicePtr device_ptr; | 39 device::BluetoothDevice* device = adapter_->GetDevice(address); |
40 mojo::MakeStrongBinding(base::MakeUnique<Device>(address, adapter_), | 40 if (device) { |
ortuno
2016/10/25 10:42:09
nit: To avoid indenting lines:
if (!condition) {
mbrunson
2016/10/25 20:03:03
Done.
| |
41 mojo::GetProxy(&device_ptr)); | 41 device->CreateGattConnection( |
42 callback.Run(std::move(device_ptr)); | 42 base::Bind(&Adapter::OnGattConnected, weak_ptr_factory_.GetWeakPtr(), |
43 callback), | |
44 base::Bind(&Adapter::OnConnectError, weak_ptr_factory_.GetWeakPtr(), | |
45 callback)); | |
46 } else { | |
47 mojom::ConnectErrorPtr error = mojom::ConnectError::New(); | |
48 error->code = mojom::ConnectError::Code::ERROR_FAILED; | |
49 callback.Run(std::move(error), nullptr /* Device */); | |
50 } | |
43 } | 51 } |
44 | 52 |
45 void Adapter::GetDevices(const GetDevicesCallback& callback) { | 53 void Adapter::GetDevices(const GetDevicesCallback& callback) { |
46 std::vector<mojom::DeviceInfoPtr> devices; | 54 std::vector<mojom::DeviceInfoPtr> devices; |
47 | 55 |
48 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { | 56 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { |
49 mojom::DeviceInfoPtr device_info = | 57 mojom::DeviceInfoPtr device_info = |
50 Device::ConstructDeviceInfoStruct(device); | 58 Device::ConstructDeviceInfoStruct(device); |
51 devices.push_back(std::move(device_info)); | 59 devices.push_back(std::move(device_info)); |
52 } | 60 } |
(...skipping 22 matching lines...) Expand all Loading... | |
75 } | 83 } |
76 | 84 |
77 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, | 85 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter, |
78 device::BluetoothDevice* device) { | 86 device::BluetoothDevice* device) { |
79 if (client_) { | 87 if (client_) { |
80 auto device_info = Device::ConstructDeviceInfoStruct(device); | 88 auto device_info = Device::ConstructDeviceInfoStruct(device); |
81 client_->DeviceChanged(std::move(device_info)); | 89 client_->DeviceChanged(std::move(device_info)); |
82 } | 90 } |
83 } | 91 } |
84 | 92 |
93 void Adapter::OnGattConnected( | |
94 const ConnectToDeviceCallback& callback, | |
95 std::unique_ptr<device::BluetoothGattConnection> connection) { | |
96 mojom::DevicePtr device_ptr; | |
97 mojo::MakeStrongBinding( | |
98 base::MakeUnique<Device>(adapter_, std::move(connection)), | |
99 mojo::GetProxy(&device_ptr)); | |
100 callback.Run(nullptr /* ConnectError */, std::move(device_ptr)); | |
101 } | |
102 | |
103 void Adapter::OnConnectError( | |
104 const ConnectToDeviceCallback& callback, | |
105 device::BluetoothDevice::ConnectErrorCode error_code) { | |
106 mojom::ConnectErrorPtr error = mojom::ConnectError::New(); | |
107 error->code = static_cast<mojom::ConnectError::Code>(error_code); | |
ortuno
2016/10/25 10:42:09
Hmmm this is dangerous. Someone could add a new er
mbrunson
2016/10/25 20:03:03
Done.
| |
108 callback.Run(std::move(error), nullptr /* Device */); | |
109 } | |
85 } // namespace bluetooth | 110 } // namespace bluetooth |
OLD | NEW |