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

Side by Side Diff: components/proximity_auth/ble/bluetooth_low_energy_characteristics_finder.cc

Issue 1898643002: Refactor device::BluetoothGattXXX classes to split into remote/local. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/proximity_auth/ble/bluetooth_low_energy_characteristics_fin der.h" 5 #include "components/proximity_auth/ble/bluetooth_low_energy_characteristics_fin der.h"
6 6
7 #include "components/proximity_auth/logging/logging.h" 7 #include "components/proximity_auth/logging/logging.h"
8 #include "device/bluetooth/bluetooth_adapter.h" 8 #include "device/bluetooth/bluetooth_adapter.h"
9 #include "device/bluetooth/bluetooth_device.h" 9 #include "device/bluetooth/bluetooth_device.h"
10 #include "device/bluetooth/bluetooth_gatt_characteristic.h" 10 #include "device/bluetooth/bluetooth_remote_gatt_characteristic.h"
11 #include "device/bluetooth/bluetooth_uuid.h" 11 #include "device/bluetooth/bluetooth_uuid.h"
12 12
13 using device::BluetoothAdapter; 13 using device::BluetoothAdapter;
14 using device::BluetoothDevice; 14 using device::BluetoothDevice;
15 using device::BluetoothGattCharacteristic; 15 using device::BluetoothRemoteGattCharacteristic;
16 using device::BluetoothGattService; 16 using device::BluetoothRemoteGattService;
17 using device::BluetoothUUID; 17 using device::BluetoothUUID;
18 18
19 namespace proximity_auth { 19 namespace proximity_auth {
20 20
21 BluetoothLowEnergyCharacteristicsFinder:: 21 BluetoothLowEnergyCharacteristicsFinder::
22 BluetoothLowEnergyCharacteristicsFinder( 22 BluetoothLowEnergyCharacteristicsFinder(
23 scoped_refptr<BluetoothAdapter> adapter, 23 scoped_refptr<BluetoothAdapter> adapter,
24 BluetoothDevice* device, 24 BluetoothDevice* device,
25 const RemoteAttribute& remote_service, 25 const RemoteAttribute& remote_service,
26 const RemoteAttribute& to_peripheral_char, 26 const RemoteAttribute& to_peripheral_char,
(...skipping 26 matching lines...) Expand all
53 ~BluetoothLowEnergyCharacteristicsFinder() { 53 ~BluetoothLowEnergyCharacteristicsFinder() {
54 ResetCallbacks(); 54 ResetCallbacks();
55 if (adapter_) { 55 if (adapter_) {
56 adapter_->RemoveObserver(this); 56 adapter_->RemoveObserver(this);
57 adapter_ = NULL; 57 adapter_ = NULL;
58 } 58 }
59 } 59 }
60 60
61 void BluetoothLowEnergyCharacteristicsFinder::GattCharacteristicAdded( 61 void BluetoothLowEnergyCharacteristicsFinder::GattCharacteristicAdded(
62 BluetoothAdapter* adapter, 62 BluetoothAdapter* adapter,
63 BluetoothGattCharacteristic* characteristic) { 63 BluetoothRemoteGattCharacteristic* characteristic) {
64 PA_LOG(INFO) << "New char found: " 64 PA_LOG(INFO) << "New char found: "
65 << characteristic->GetUUID().canonical_value(); 65 << characteristic->GetUUID().canonical_value();
66 HandleCharacteristicUpdate(characteristic); 66 HandleCharacteristicUpdate(characteristic);
67 } 67 }
68 68
69 void BluetoothLowEnergyCharacteristicsFinder::GattDiscoveryCompleteForService( 69 void BluetoothLowEnergyCharacteristicsFinder::GattDiscoveryCompleteForService(
70 BluetoothAdapter* adapter, 70 BluetoothAdapter* adapter,
71 BluetoothGattService* service) { 71 BluetoothRemoteGattService* service) {
72 if (service && service->GetUUID() == remote_service_.uuid) { 72 if (service && service->GetUUID() == remote_service_.uuid) {
73 PA_LOG(INFO) << "All characteristics discovered for " 73 PA_LOG(INFO) << "All characteristics discovered for "
74 << remote_service_.uuid.canonical_value(); 74 << remote_service_.uuid.canonical_value();
75 75
76 if (to_peripheral_char_.id.empty() || from_peripheral_char_.id.empty()) { 76 if (to_peripheral_char_.id.empty() || from_peripheral_char_.id.empty()) {
77 if (!error_callback_.is_null()) { 77 if (!error_callback_.is_null()) {
78 error_callback_.Run(to_peripheral_char_, from_peripheral_char_); 78 error_callback_.Run(to_peripheral_char_, from_peripheral_char_);
79 ResetCallbacks(); 79 ResetCallbacks();
80 } 80 }
81 } 81 }
82 } 82 }
83 } 83 }
84 84
85 void BluetoothLowEnergyCharacteristicsFinder::ScanRemoteCharacteristics( 85 void BluetoothLowEnergyCharacteristicsFinder::ScanRemoteCharacteristics(
86 BluetoothDevice* device, 86 BluetoothDevice* device,
87 const BluetoothUUID& service_uuid) { 87 const BluetoothUUID& service_uuid) {
88 PA_LOG(INFO) << "Scanning remote characteristics."; 88 PA_LOG(INFO) << "Scanning remote characteristics.";
89 if (device) { 89 if (device) {
90 std::vector<BluetoothGattService*> services = device->GetGattServices(); 90 std::vector<BluetoothRemoteGattService*> services =
91 device->GetGattServices();
91 PA_LOG(INFO) << device->GetAddress() << " has " << services.size() 92 PA_LOG(INFO) << device->GetAddress() << " has " << services.size()
92 << " services."; 93 << " services.";
93 for (const auto& service : services) { 94 for (const auto& service : services) {
94 if (service->GetUUID() == service_uuid) { 95 if (service->GetUUID() == service_uuid) {
95 // Right service found, now scaning its characteristics. 96 // Right service found, now scaning its characteristics.
96 std::vector<device::BluetoothGattCharacteristic*> characteristics = 97 std::vector<device::BluetoothRemoteGattCharacteristic*>
97 service->GetCharacteristics(); 98 characteristics = service->GetCharacteristics();
98 PA_LOG(INFO) << "Service " << service_uuid.canonical_value() << " has " 99 PA_LOG(INFO) << "Service " << service_uuid.canonical_value() << " has "
99 << characteristics.size() << " characteristics."; 100 << characteristics.size() << " characteristics.";
100 for (const auto& characteristic : characteristics) { 101 for (const auto& characteristic : characteristics) {
101 HandleCharacteristicUpdate(characteristic); 102 HandleCharacteristicUpdate(characteristic);
102 } 103 }
103 break; 104 break;
104 } 105 }
105 } 106 }
106 } 107 }
107 } 108 }
108 109
109 void BluetoothLowEnergyCharacteristicsFinder::HandleCharacteristicUpdate( 110 void BluetoothLowEnergyCharacteristicsFinder::HandleCharacteristicUpdate(
110 BluetoothGattCharacteristic* characteristic) { 111 BluetoothRemoteGattCharacteristic* characteristic) {
111 UpdateCharacteristicsStatus(characteristic); 112 UpdateCharacteristicsStatus(characteristic);
112 113
113 if (!to_peripheral_char_.id.empty() && !from_peripheral_char_.id.empty() && 114 if (!to_peripheral_char_.id.empty() && !from_peripheral_char_.id.empty() &&
114 !success_callback_.is_null()) { 115 !success_callback_.is_null()) {
115 PA_LOG(INFO) << "Found write and read characteristics on remote device."; 116 PA_LOG(INFO) << "Found write and read characteristics on remote device.";
116 success_callback_.Run(remote_service_, to_peripheral_char_, 117 success_callback_.Run(remote_service_, to_peripheral_char_,
117 from_peripheral_char_); 118 from_peripheral_char_);
118 ResetCallbacks(); 119 ResetCallbacks();
119 } 120 }
120 } 121 }
121 122
122 void BluetoothLowEnergyCharacteristicsFinder::UpdateCharacteristicsStatus( 123 void BluetoothLowEnergyCharacteristicsFinder::UpdateCharacteristicsStatus(
123 BluetoothGattCharacteristic* characteristic) { 124 BluetoothRemoteGattCharacteristic* characteristic) {
124 if (characteristic && 125 if (characteristic &&
125 characteristic->GetService()->GetUUID() == remote_service_.uuid) { 126 characteristic->GetService()->GetUUID() == remote_service_.uuid) {
126 BluetoothUUID uuid = characteristic->GetUUID(); 127 BluetoothUUID uuid = characteristic->GetUUID();
127 if (to_peripheral_char_.uuid == uuid) 128 if (to_peripheral_char_.uuid == uuid)
128 to_peripheral_char_.id = characteristic->GetIdentifier(); 129 to_peripheral_char_.id = characteristic->GetIdentifier();
129 if (from_peripheral_char_.uuid == uuid) 130 if (from_peripheral_char_.uuid == uuid)
130 from_peripheral_char_.id = characteristic->GetIdentifier(); 131 from_peripheral_char_.id = characteristic->GetIdentifier();
131 132
132 BluetoothGattService* service = characteristic->GetService(); 133 BluetoothRemoteGattService* service = characteristic->GetService();
133 remote_service_.id = service->GetIdentifier(); 134 remote_service_.id = service->GetIdentifier();
134 } 135 }
135 } 136 }
136 137
137 void BluetoothLowEnergyCharacteristicsFinder::ResetCallbacks() { 138 void BluetoothLowEnergyCharacteristicsFinder::ResetCallbacks() {
138 success_callback_.Reset(); 139 success_callback_.Reset();
139 error_callback_.Reset(); 140 error_callback_.Reset();
140 } 141 }
141 142
142 } // namespace proximity_auth 143 } // namespace proximity_auth
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698