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

Side by Side Diff: device/bluetooth/adapter.cc

Issue 2564113003: bluetooth: Add basic scanning to chrome://bluetooth-internals. (Closed)
Patch Set: Replace discovering string in bluetooth_internals.js Created 3 years, 11 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
« no previous file with comments | « device/bluetooth/adapter.h ('k') | device/bluetooth/discovery_session.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "device/bluetooth/adapter.h" 10 #include "device/bluetooth/adapter.h"
11 #include "device/bluetooth/device.h" 11 #include "device/bluetooth/device.h"
12 #include "device/bluetooth/discovery_session.h"
12 #include "device/bluetooth/public/interfaces/connect_result_type_converter.h" 13 #include "device/bluetooth/public/interfaces/connect_result_type_converter.h"
14 #include "mojo/public/cpp/bindings/strong_binding.h"
13 15
14 namespace bluetooth { 16 namespace bluetooth {
15 17
16 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter) 18 Adapter::Adapter(scoped_refptr<device::BluetoothAdapter> adapter)
17 : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) { 19 : adapter_(std::move(adapter)), client_(nullptr), weak_ptr_factory_(this) {
18 adapter_->AddObserver(this); 20 adapter_->AddObserver(this);
19 } 21 }
20 22
21 Adapter::~Adapter() { 23 Adapter::~Adapter() {
22 adapter_->RemoveObserver(this); 24 adapter_->RemoveObserver(this);
23 adapter_ = nullptr; 25 adapter_ = nullptr;
24 } 26 }
25 27
26 void Adapter::GetInfo(const GetInfoCallback& callback) {
27 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New();
28 adapter_info->address = adapter_->GetAddress();
29 adapter_info->name = adapter_->GetName();
30 adapter_info->initialized = adapter_->IsInitialized();
31 adapter_info->present = adapter_->IsPresent();
32 adapter_info->powered = adapter_->IsPowered();
33 adapter_info->discoverable = adapter_->IsDiscoverable();
34 adapter_info->discovering = adapter_->IsDiscovering();
35 callback.Run(std::move(adapter_info));
36 }
37
38 void Adapter::ConnectToDevice(const std::string& address, 28 void Adapter::ConnectToDevice(const std::string& address,
39 const ConnectToDeviceCallback& callback) { 29 const ConnectToDeviceCallback& callback) {
40 device::BluetoothDevice* device = adapter_->GetDevice(address); 30 device::BluetoothDevice* device = adapter_->GetDevice(address);
41 31
42 if (!device) { 32 if (!device) {
43 callback.Run(mojom::ConnectResult::DEVICE_NO_LONGER_IN_RANGE, 33 callback.Run(mojom::ConnectResult::DEVICE_NO_LONGER_IN_RANGE,
44 nullptr /* device */); 34 nullptr /* device */);
45 return; 35 return;
46 } 36 }
47 37
48 device->CreateGattConnection( 38 device->CreateGattConnection(
49 base::Bind(&Adapter::OnGattConnected, weak_ptr_factory_.GetWeakPtr(), 39 base::Bind(&Adapter::OnGattConnected, weak_ptr_factory_.GetWeakPtr(),
50 callback), 40 callback),
51 base::Bind(&Adapter::OnConnectError, weak_ptr_factory_.GetWeakPtr(), 41 base::Bind(&Adapter::OnConnectError, weak_ptr_factory_.GetWeakPtr(),
52 callback)); 42 callback));
53 } 43 }
54 44
55 void Adapter::GetDevices(const GetDevicesCallback& callback) { 45 void Adapter::GetDevices(const GetDevicesCallback& callback) {
56 std::vector<mojom::DeviceInfoPtr> devices; 46 std::vector<mojom::DeviceInfoPtr> devices;
57 47
58 for (const device::BluetoothDevice* device : adapter_->GetDevices()) { 48 for (const device::BluetoothDevice* device : adapter_->GetDevices()) {
59 mojom::DeviceInfoPtr device_info = 49 mojom::DeviceInfoPtr device_info =
60 Device::ConstructDeviceInfoStruct(device); 50 Device::ConstructDeviceInfoStruct(device);
61 devices.push_back(std::move(device_info)); 51 devices.push_back(std::move(device_info));
62 } 52 }
63 53
64 callback.Run(std::move(devices)); 54 callback.Run(std::move(devices));
65 } 55 }
66 56
57 void Adapter::GetInfo(const GetInfoCallback& callback) {
58 mojom::AdapterInfoPtr adapter_info = mojom::AdapterInfo::New();
59 adapter_info->address = adapter_->GetAddress();
60 adapter_info->name = adapter_->GetName();
61 adapter_info->initialized = adapter_->IsInitialized();
62 adapter_info->present = adapter_->IsPresent();
63 adapter_info->powered = adapter_->IsPowered();
64 adapter_info->discoverable = adapter_->IsDiscoverable();
65 adapter_info->discovering = adapter_->IsDiscovering();
66 callback.Run(std::move(adapter_info));
67 }
68
67 void Adapter::SetClient(mojom::AdapterClientPtr client) { 69 void Adapter::SetClient(mojom::AdapterClientPtr client) {
68 client_ = std::move(client); 70 client_ = std::move(client);
69 } 71 }
70 72
73 void Adapter::StartDiscoverySession(
74 const StartDiscoverySessionCallback& callback) {
75 adapter_->StartDiscoverySession(
76 base::Bind(&Adapter::OnStartDiscoverySession,
77 weak_ptr_factory_.GetWeakPtr(), callback),
78 base::Bind(&Adapter::OnDiscoverySessionError,
79 weak_ptr_factory_.GetWeakPtr(), callback));
80 }
81
82 void Adapter::AdapterDiscoveringChanged(device::BluetoothAdapter* adapter,
83 bool discovering) {
84 if (client_)
85 client_->DiscoveringChanged(discovering);
86 }
87
71 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter, 88 void Adapter::DeviceAdded(device::BluetoothAdapter* adapter,
72 device::BluetoothDevice* device) { 89 device::BluetoothDevice* device) {
73 if (client_) { 90 if (client_) {
74 auto device_info = Device::ConstructDeviceInfoStruct(device); 91 auto device_info = Device::ConstructDeviceInfoStruct(device);
75 client_->DeviceAdded(std::move(device_info)); 92 client_->DeviceAdded(std::move(device_info));
76 } 93 }
77 } 94 }
78 95
96 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter,
97 device::BluetoothDevice* device) {
98 if (client_) {
99 auto device_info = Device::ConstructDeviceInfoStruct(device);
100 client_->DeviceChanged(std::move(device_info));
101 }
102 }
103
79 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter, 104 void Adapter::DeviceRemoved(device::BluetoothAdapter* adapter,
80 device::BluetoothDevice* device) { 105 device::BluetoothDevice* device) {
81 if (client_) { 106 if (client_) {
82 auto device_info = Device::ConstructDeviceInfoStruct(device); 107 auto device_info = Device::ConstructDeviceInfoStruct(device);
83 client_->DeviceRemoved(std::move(device_info)); 108 client_->DeviceRemoved(std::move(device_info));
84 } 109 }
85 } 110 }
86 111
87 void Adapter::DeviceChanged(device::BluetoothAdapter* adapter,
88 device::BluetoothDevice* device) {
89 if (client_) {
90 auto device_info = Device::ConstructDeviceInfoStruct(device);
91 client_->DeviceChanged(std::move(device_info));
92 }
93 }
94
95 void Adapter::OnGattConnected( 112 void Adapter::OnGattConnected(
96 const ConnectToDeviceCallback& callback, 113 const ConnectToDeviceCallback& callback,
97 std::unique_ptr<device::BluetoothGattConnection> connection) { 114 std::unique_ptr<device::BluetoothGattConnection> connection) {
98 mojom::DevicePtr device_ptr; 115 mojom::DevicePtr device_ptr;
99 Device::Create(adapter_, std::move(connection), 116 Device::Create(adapter_, std::move(connection),
100 mojo::MakeRequest(&device_ptr)); 117 mojo::MakeRequest(&device_ptr));
101 callback.Run(mojom::ConnectResult::SUCCESS, std::move(device_ptr)); 118 callback.Run(mojom::ConnectResult::SUCCESS, std::move(device_ptr));
102 } 119 }
103 120
104 void Adapter::OnConnectError( 121 void Adapter::OnConnectError(
105 const ConnectToDeviceCallback& callback, 122 const ConnectToDeviceCallback& callback,
106 device::BluetoothDevice::ConnectErrorCode error_code) { 123 device::BluetoothDevice::ConnectErrorCode error_code) {
107 callback.Run(mojo::ConvertTo<mojom::ConnectResult>(error_code), 124 callback.Run(mojo::ConvertTo<mojom::ConnectResult>(error_code),
108 nullptr /* Device */); 125 nullptr /* Device */);
109 } 126 }
127
128 void Adapter::OnStartDiscoverySession(
129 const StartDiscoverySessionCallback& callback,
130 std::unique_ptr<device::BluetoothDiscoverySession> session) {
131 mojom::DiscoverySessionPtr session_ptr;
132 mojo::MakeStrongBinding(
133 base::MakeUnique<DiscoverySession>(std::move(session)),
134 mojo::MakeRequest(&session_ptr));
135 callback.Run(std::move(session_ptr));
136 }
137
138 void Adapter::OnDiscoverySessionError(
139 const StartDiscoverySessionCallback& callback) {
140 callback.Run(nullptr /* session */);
141 }
142
110 } // namespace bluetooth 143 } // namespace bluetooth
OLDNEW
« no previous file with comments | « device/bluetooth/adapter.h ('k') | device/bluetooth/discovery_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698