Index: device/bluetooth/bluetooth_low_energy_defs_win.h |
diff --git a/device/bluetooth/bluetooth_low_energy_defs_win.h b/device/bluetooth/bluetooth_low_energy_defs_win.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..921821a648529752a23c6e7294cd5afcf5c7d99b |
--- /dev/null |
+++ b/device/bluetooth/bluetooth_low_energy_defs_win.h |
@@ -0,0 +1,192 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |
+#define DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |
+ |
+#include <windows.h> |
+#include <cfg.h> |
+#include <devpkey.h> |
+#include <setupapi.h> |
+// #include <bthledef.h> |
+// TODO(rpaquay): |
+// bthledef.h from Win8 SDK has a couple of issues when used in a Win32 app: |
+// * line 420: usage of "pragma pop" instead of "pragma warning(pop)" |
+// * line 349: no CALLBACK modifier in the definition of |
+// PFNBLUETOOTH_GATT_EVENT_CALLBACK. |
+// |
+// So, we duplicate the definitions we need and prevent the build from including |
+// the content of bthledef.h. |
+#ifndef __BTHLEDEF_H__ |
+#define __BTHLEDEF_H__ |
+ |
+// |
+// Bluetooth LE device interface GUID |
+// |
+// {781aee18-7733-4ce4-adb0-91f41c67b592} |
+DEFINE_GUID(GUID_BLUETOOTHLE_DEVICE_INTERFACE, |
+ 0x781aee18, |
+ 0x7733, |
+ 0x4ce4, |
+ 0xad, |
+ 0xd0, |
+ 0x91, |
+ 0xf4, |
+ 0x1c, |
+ 0x67, |
+ 0xb5, |
+ 0x92); |
+ |
+DEFINE_GUID(BTH_LE_ATT_BLUETOOTH_BASE_GUID, |
+ 0x00000000, |
+ 0x0000, |
+ 0x1000, |
+ 0x80, |
+ 0x00, |
+ 0x00, |
+ 0x80, |
+ 0x5F, |
+ 0x9B, |
+ 0x34, |
+ 0xFB); |
+ |
+#define BLUETOOTH_GATT_FLAG_NONE 0x00000000 |
+ |
+typedef struct _BTH_LE_UUID { |
+ BOOLEAN IsShortUuid; |
+#ifdef MIDL_PASS |
+ [ switch_type(BOOLEAN), switch_is((BOOLEAN)IsShortUuid) ] |
+#endif |
+ union { |
+#ifdef MIDL_PASS |
+ [case(TRUE)] |
+#endif |
+ USHORT ShortUuid; |
+#ifdef MIDL_PASS |
+ [case(FALSE)] |
+#endif |
+ GUID LongUuid; |
+ } Value; |
+} BTH_LE_UUID, *PBTH_LE_UUID; |
+ |
+typedef struct _BTH_LE_GATT_SERVICE { |
+ BTH_LE_UUID ServiceUuid; |
+ USHORT AttributeHandle; |
+} BTH_LE_GATT_SERVICE, *PBTH_LE_GATT_SERVICE; |
+ |
+typedef struct _BTH_LE_GATT_CHARACTERISTIC { |
+ USHORT ServiceHandle; |
+ BTH_LE_UUID CharacteristicUuid; |
+ USHORT AttributeHandle; |
+ USHORT CharacteristicValueHandle; |
+ BOOLEAN IsBroadcastable; |
+ BOOLEAN IsReadable; |
+ BOOLEAN IsWritable; |
+ BOOLEAN IsWritableWithoutResponse; |
+ BOOLEAN IsSignedWritable; |
+ BOOLEAN IsNotifiable; |
+ BOOLEAN IsIndicatable; |
+ BOOLEAN HasExtendedProperties; |
+} BTH_LE_GATT_CHARACTERISTIC, *PBTH_LE_GATT_CHARACTERISTIC; |
+ |
+typedef struct _BTH_LE_GATT_CHARACTERISTIC_VALUE { |
+ ULONG DataSize; |
+ |
+#ifdef MIDL_PASS |
+ [size_is(DataSize)] UCHAR Data[*]; |
+#else |
+ _Field_size_bytes_(DataSize) UCHAR Data[1]; |
+#endif |
+} BTH_LE_GATT_CHARACTERISTIC_VALUE, *PBTH_LE_GATT_CHARACTERISTIC_VALUE; |
+ |
+typedef enum _BTH_LE_GATT_DESCRIPTOR_TYPE { |
+ CharacteristicExtendedProperties, |
+ CharacteristicUserDescription, |
+ ClientCharacteristicConfiguration, |
+ ServerCharacteristicConfiguration, |
+ CharacteristicFormat, |
+ CharacteristicAggregateFormat, |
+ CustomDescriptor |
+} BTH_LE_GATT_DESCRIPTOR_TYPE, |
+ *PBTH_LE_GATT_DESCRIPTOR_TYPE; |
+ |
+typedef struct _BTH_LE_GATT_DESCRIPTOR { |
+ USHORT ServiceHandle; |
+ USHORT CharacteristicHandle; |
+ BTH_LE_GATT_DESCRIPTOR_TYPE DescriptorType; |
+ BTH_LE_UUID DescriptorUuid; |
+ USHORT AttributeHandle; |
+} BTH_LE_GATT_DESCRIPTOR, *PBTH_LE_GATT_DESCRIPTOR; |
+ |
+typedef struct _BTH_LE_GATT_DESCRIPTOR_VALUE { |
+ BTH_LE_GATT_DESCRIPTOR_TYPE DescriptorType; |
+ BTH_LE_UUID DescriptorUuid; |
+ |
+#ifdef MIDL_PASS |
+ [ |
+ switch_type(BTH_LE_GATT_DESCRIPTOR_TYPE), |
+ switch_is((BTH_LE_GATT_DESCRIPTOR_TYPE)DescriptorType) |
+ ] |
+#endif |
+ union { |
+ |
+#ifdef MIDL_PASS |
+ [case(CharacteristicExtendedProperties)] |
+#endif |
+ struct { |
+ BOOLEAN IsReliableWriteEnabled; |
+ BOOLEAN IsAuxiliariesWritable; |
+ } CharacteristicExtendedProperties; |
+ |
+#ifdef MIDL_PASS |
+ [case(ClientCharacteristicConfiguration)] |
+#endif |
+ struct { |
+ BOOLEAN IsSubscribeToNotification; |
+ BOOLEAN IsSubscribeToIndication; |
+ } ClientCharacteristicConfiguration; |
+ |
+#ifdef MIDL_PASS |
+ [case(ServerCharacteristicConfiguration)] |
+#endif |
+ struct { |
+ BOOLEAN IsBroadcast; |
+ } ServerCharacteristicConfiguration; |
+ |
+#ifdef MIDL_PASS |
+ [case(CharacteristicFormat)] |
+#endif |
+ struct { |
+ UCHAR Format; |
+ UCHAR Exponent; |
+ BTH_LE_UUID Unit; |
+ UCHAR NameSpace; |
+ BTH_LE_UUID Description; |
+ } CharacteristicFormat; |
+#ifdef MIDL_PASS |
+ [default]; |
+#endif |
+ }; |
+ |
+ ULONG DataSize; |
+ |
+#ifdef MIDL_PASS |
+ [size_is(DataSize)] UCHAR Data[*]; |
+#else |
+ _Field_size_bytes_(DataSize) UCHAR Data[1]; |
+#endif |
+} BTH_LE_GATT_DESCRIPTOR_VALUE, *PBTH_LE_GATT_DESCRIPTOR_VALUE; |
+ |
+typedef enum _BTH_LE_GATT_EVENT_TYPE { |
+ CharacteristicValueChangedEvent, |
+} BTH_LE_GATT_EVENT_TYPE; |
+ |
+typedef ULONG64 BTH_LE_GATT_RELIABLE_WRITE_CONTEXT, |
+ *PBTH_LE_GATT_RELIABLE_WRITE_CONTEXT; |
+ |
+#endif // __BTHLEDEF_H__ |
+#include <bluetoothapis.h> |
+#include <bluetoothleapis.h> |
+ |
+#endif // DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |