OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_win.h" | 5 #include "device/bluetooth/bluetooth_low_energy_win.h" |
6 | 6 |
7 #include <cfg.h> | 7 #include <cfg.h> |
8 #define INITGUID // For DEVPKEY_Xxxx guid/pid pairs | 8 #define INITGUID // For DEVPKEY_Xxxx guid/pid pairs |
9 #include <devpkey.h> | 9 #include <devpkey.h> |
10 | 10 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 error)) { | 315 error)) { |
316 return false; | 316 return false; |
317 } | 317 } |
318 | 318 |
319 if (value->property_type() != DEVPROP_TYPE_UINT32) { | 319 if (value->property_type() != DEVPROP_TYPE_UINT32) { |
320 *error = kDeviceInfoError; | 320 *error = kDeviceInfoError; |
321 return false; | 321 return false; |
322 } | 322 } |
323 | 323 |
324 device_info->connected = !(value->AsUint32() & DN_DEVICE_DISCONNECTED); | 324 device_info->connected = !(value->AsUint32() & DN_DEVICE_DISCONNECTED); |
| 325 // Windows 8 exposes BLE devices only if they are visible and paired. This |
| 326 // might change in the future if Windows offers a public API for discovering |
| 327 // and pairing BLE devices. |
| 328 device_info->visible = true; |
| 329 device_info->authenticated = true; |
325 return true; | 330 return true; |
326 } | 331 } |
327 | 332 |
328 bool CollectBluetoothLowEnergyDeviceInfo( | 333 bool CollectBluetoothLowEnergyDeviceInfo( |
329 const ScopedDeviceInfoSetHandle& device_info_handle, | 334 const ScopedDeviceInfoSetHandle& device_info_handle, |
330 PSP_DEVICE_INTERFACE_DATA device_interface_data, | 335 PSP_DEVICE_INTERFACE_DATA device_interface_data, |
331 scoped_ptr<device::win::BluetoothLowEnergyDeviceInfo>* device_info, | 336 scoped_ptr<device::win::BluetoothLowEnergyDeviceInfo>* device_info, |
332 std::string* error) { | 337 std::string* error) { |
333 // Retrieve required # of bytes for interface details | 338 // Retrieve required # of bytes for interface details |
334 ULONG required_length = 0; | 339 ULONG required_length = 0; |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 value_size_(value_size) { | 517 value_size_(value_size) { |
513 } | 518 } |
514 | 519 |
515 uint32_t DevicePropertyValue::AsUint32() const { | 520 uint32_t DevicePropertyValue::AsUint32() const { |
516 CHECK_EQ(property_type_, static_cast<DEVPROPTYPE>(DEVPROP_TYPE_UINT32)); | 521 CHECK_EQ(property_type_, static_cast<DEVPROPTYPE>(DEVPROP_TYPE_UINT32)); |
517 CHECK_EQ(value_size_, sizeof(uint32_t)); | 522 CHECK_EQ(value_size_, sizeof(uint32_t)); |
518 return *reinterpret_cast<uint32_t*>(value_.get()); | 523 return *reinterpret_cast<uint32_t*>(value_.get()); |
519 } | 524 } |
520 | 525 |
521 BluetoothLowEnergyDeviceInfo::BluetoothLowEnergyDeviceInfo() | 526 BluetoothLowEnergyDeviceInfo::BluetoothLowEnergyDeviceInfo() |
522 : connected(false) { | 527 : visible(false), authenticated(false), connected(false) { |
523 address.ullLong = BLUETOOTH_NULL_ADDRESS; | 528 address.ullLong = BLUETOOTH_NULL_ADDRESS; |
524 } | 529 } |
525 | 530 |
526 BluetoothLowEnergyDeviceInfo::~BluetoothLowEnergyDeviceInfo() { | 531 BluetoothLowEnergyDeviceInfo::~BluetoothLowEnergyDeviceInfo() { |
527 } | 532 } |
528 | 533 |
529 bool IsBluetoothLowEnergySupported() { | 534 bool IsBluetoothLowEnergySupported() { |
530 return base::win::GetVersion() >= base::win::VERSION_WIN8; | 535 return base::win::GetVersion() >= base::win::VERSION_WIN8; |
531 } | 536 } |
532 | 537 |
(...skipping 29 matching lines...) Expand all Loading... |
562 | 567 |
563 bool ExtractBluetoothAddressFromDeviceInstanceIdForTesting( | 568 bool ExtractBluetoothAddressFromDeviceInstanceIdForTesting( |
564 const std::string& instance_id, | 569 const std::string& instance_id, |
565 BLUETOOTH_ADDRESS* btha, | 570 BLUETOOTH_ADDRESS* btha, |
566 std::string* error) { | 571 std::string* error) { |
567 return ExtractBluetoothAddressFromDeviceInstanceId(instance_id, btha, error); | 572 return ExtractBluetoothAddressFromDeviceInstanceId(instance_id, btha, error); |
568 } | 573 } |
569 | 574 |
570 } // namespace win | 575 } // namespace win |
571 } // namespace device | 576 } // namespace device |
OLD | NEW |