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

Side by Side Diff: device/bluetooth/bluetooth_low_energy_device_mac.mm

Issue 1538173003: Implementing GATT connection/disconnect on OS X. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing msarda comments. Created 4 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
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 "device/bluetooth/bluetooth_low_energy_device_mac.h" 5 #include "device/bluetooth/bluetooth_low_energy_device_mac.h"
6 6
7 #import <CoreFoundation/CoreFoundation.h> 7 #import <CoreFoundation/CoreFoundation.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 25 matching lines...) Expand all
36 NSDictionary* advertisement_data, 36 NSDictionary* advertisement_data,
37 int rssi) 37 int rssi)
38 : BluetoothDeviceMac(adapter) { 38 : BluetoothDeviceMac(adapter) {
39 DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable()); 39 DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
40 identifier_ = GetPeripheralIdentifier(peripheral); 40 identifier_ = GetPeripheralIdentifier(peripheral);
41 hash_address_ = GetPeripheralHashAddress(peripheral); 41 hash_address_ = GetPeripheralHashAddress(peripheral);
42 Update(peripheral, advertisement_data, rssi); 42 Update(peripheral, advertisement_data, rssi);
43 } 43 }
44 44
45 BluetoothLowEnergyDeviceMac::~BluetoothLowEnergyDeviceMac() { 45 BluetoothLowEnergyDeviceMac::~BluetoothLowEnergyDeviceMac() {
46 if (IsGattConnected()) {
47 GetMacAdapter()->DisconnectGatt(this);
48 }
46 } 49 }
47 50
48 void BluetoothLowEnergyDeviceMac::Update(CBPeripheral* peripheral, 51 void BluetoothLowEnergyDeviceMac::Update(CBPeripheral* peripheral,
49 NSDictionary* advertisement_data, 52 NSDictionary* advertisement_data,
50 int rssi) { 53 int rssi) {
51 last_update_time_.reset([[NSDate date] retain]); 54 last_update_time_.reset([[NSDate date] retain]);
52 peripheral_.reset([peripheral retain]); 55 peripheral_.reset([peripheral retain]);
53 rssi_ = rssi; 56 rssi_ = rssi;
54 NSNumber* connectable = 57 NSNumber* connectable =
55 [advertisement_data objectForKey:CBAdvertisementDataIsConnectable]; 58 [advertisement_data objectForKey:CBAdvertisementDataIsConnectable];
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 130
128 bool BluetoothLowEnergyDeviceMac::IsGattConnected() const { 131 bool BluetoothLowEnergyDeviceMac::IsGattConnected() const {
129 return ([peripheral_ state] == CBPeripheralStateConnected); 132 return ([peripheral_ state] == CBPeripheralStateConnected);
130 } 133 }
131 134
132 bool BluetoothLowEnergyDeviceMac::IsConnectable() const { 135 bool BluetoothLowEnergyDeviceMac::IsConnectable() const {
133 return connectable_; 136 return connectable_;
134 } 137 }
135 138
136 bool BluetoothLowEnergyDeviceMac::IsConnecting() const { 139 bool BluetoothLowEnergyDeviceMac::IsConnecting() const {
137 return false; 140 return ([peripheral_ state] == CBPeripheralStateConnecting);
138 } 141 }
139 142
140 BluetoothDevice::UUIDList BluetoothLowEnergyDeviceMac::GetUUIDs() const { 143 BluetoothDevice::UUIDList BluetoothLowEnergyDeviceMac::GetUUIDs() const {
141 return BluetoothDevice::UUIDList(advertised_uuids_.begin(), 144 return BluetoothDevice::UUIDList(advertised_uuids_.begin(),
142 advertised_uuids_.end()); 145 advertised_uuids_.end());
143 } 146 }
144 147
145 int16_t BluetoothLowEnergyDeviceMac::GetInquiryRSSI() const { 148 int16_t BluetoothLowEnergyDeviceMac::GetInquiryRSSI() const {
146 return kUnknownPower; 149 return kUnknownPower;
147 } 150 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 NOTIMPLEMENTED(); 216 NOTIMPLEMENTED();
214 } 217 }
215 218
216 void BluetoothLowEnergyDeviceMac::ConnectToServiceInsecurely( 219 void BluetoothLowEnergyDeviceMac::ConnectToServiceInsecurely(
217 const device::BluetoothUUID& uuid, 220 const device::BluetoothUUID& uuid,
218 const ConnectToServiceCallback& callback, 221 const ConnectToServiceCallback& callback,
219 const ConnectToServiceErrorCallback& error_callback) { 222 const ConnectToServiceErrorCallback& error_callback) {
220 NOTIMPLEMENTED(); 223 NOTIMPLEMENTED();
221 } 224 }
222 225
223 void BluetoothLowEnergyDeviceMac::CreateGattConnection(
224 const GattConnectionCallback& callback,
225 const ConnectErrorCallback& error_callback) {
226 NOTIMPLEMENTED();
227 }
228
229 NSDate* BluetoothLowEnergyDeviceMac::GetLastUpdateTime() const { 226 NSDate* BluetoothLowEnergyDeviceMac::GetLastUpdateTime() const {
230 return last_update_time_.get(); 227 return last_update_time_.get();
231 } 228 }
232 229
233 std::string BluetoothLowEnergyDeviceMac::GetDeviceName() const { 230 std::string BluetoothLowEnergyDeviceMac::GetDeviceName() const {
234 return base::SysNSStringToUTF8([peripheral_ name]); 231 return base::SysNSStringToUTF8([peripheral_ name]);
235 } 232 }
236 233
237 void BluetoothLowEnergyDeviceMac::CreateGattConnectionImpl() { 234 void BluetoothLowEnergyDeviceMac::CreateGattConnectionImpl() {
238 // Mac implementation does not yet use the default CreateGattConnection 235 if (!IsGattConnected()) {
239 // implementation. http://crbug.com/520774 236 GetMacAdapter()->CreateGattConnection(this);
240 NOTIMPLEMENTED(); 237 }
241 } 238 }
242 239
243 void BluetoothLowEnergyDeviceMac::DisconnectGatt() { 240 void BluetoothLowEnergyDeviceMac::DisconnectGatt() {
244 // Mac implementation does not yet use the default CreateGattConnection 241 GetMacAdapter()->DisconnectGatt(this);
245 // implementation. http://crbug.com/520774
246 NOTIMPLEMENTED();
247 } 242 }
248 243
249 // static 244 // static
250 std::string BluetoothLowEnergyDeviceMac::GetPeripheralIdentifier( 245 std::string BluetoothLowEnergyDeviceMac::GetPeripheralIdentifier(
251 CBPeripheral* peripheral) { 246 CBPeripheral* peripheral) {
252 DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable()); 247 DCHECK(BluetoothAdapterMac::IsLowEnergyAvailable());
253 NSUUID* uuid = [peripheral identifier]; 248 NSUUID* uuid = [peripheral identifier];
254 NSString* uuidString = [uuid UUIDString]; 249 NSString* uuidString = [uuid UUIDString];
255 return base::SysNSStringToUTF8(uuidString); 250 return base::SysNSStringToUTF8(uuidString);
256 } 251 }
257 252
258 // static 253 // static
259 std::string BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress( 254 std::string BluetoothLowEnergyDeviceMac::GetPeripheralHashAddress(
260 CBPeripheral* peripheral) { 255 CBPeripheral* peripheral) {
261 const size_t kCanonicalAddressNumberOfBytes = 6; 256 const size_t kCanonicalAddressNumberOfBytes = 6;
262 char raw[kCanonicalAddressNumberOfBytes]; 257 char raw[kCanonicalAddressNumberOfBytes];
263 crypto::SHA256HashString(GetPeripheralIdentifier(peripheral), raw, 258 crypto::SHA256HashString(GetPeripheralIdentifier(peripheral), raw,
264 sizeof(raw)); 259 sizeof(raw));
265 std::string hash = base::HexEncode(raw, sizeof(raw)); 260 std::string hash = base::HexEncode(raw, sizeof(raw));
266 return BluetoothDevice::CanonicalizeAddress(hash); 261 return BluetoothDevice::CanonicalizeAddress(hash);
267 } 262 }
263
264 device::BluetoothAdapterMac* BluetoothLowEnergyDeviceMac::GetMacAdapter() {
265 return static_cast<BluetoothAdapterMac*>(this->adapter_);
266 }
267
268 CBPeripheral* BluetoothLowEnergyDeviceMac::GetPeripheral() {
269 return peripheral_;
270 }
271
272 void BluetoothLowEnergyDeviceMac::DidDisconnectPeripheral() {
273 if (create_gatt_connection_error_callbacks_.empty()) {
274 DidDisconnectGatt();
275 } else {
276 DidFailToConnectGatt(ERROR_FAILED);
277 }
278 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698