Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / device / bluetooth / bluetooth_low_energy_defs_win.h
blob921821a648529752a23c6e7294cd5afcf5c7d99b
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
3 // found in the LICENSE file.
5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_
6 #define DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_
8 #include <windows.h>
9 #include <cfg.h>
10 #include <devpkey.h>
11 #include <setupapi.h>
12 // #include <bthledef.h>
13 // TODO(rpaquay):
14 // bthledef.h from Win8 SDK has a couple of issues when used in a Win32 app:
15 // * line 420: usage of "pragma pop" instead of "pragma warning(pop)"
16 // * line 349: no CALLBACK modifier in the definition of
17 // PFNBLUETOOTH_GATT_EVENT_CALLBACK.
19 // So, we duplicate the definitions we need and prevent the build from including
20 // the content of bthledef.h.
21 #ifndef __BTHLEDEF_H__
22 #define __BTHLEDEF_H__
25 // Bluetooth LE device interface GUID
27 // {781aee18-7733-4ce4-adb0-91f41c67b592}
28 DEFINE_GUID(GUID_BLUETOOTHLE_DEVICE_INTERFACE,
29 0x781aee18,
30 0x7733,
31 0x4ce4,
32 0xad,
33 0xd0,
34 0x91,
35 0xf4,
36 0x1c,
37 0x67,
38 0xb5,
39 0x92);
41 DEFINE_GUID(BTH_LE_ATT_BLUETOOTH_BASE_GUID,
42 0x00000000,
43 0x0000,
44 0x1000,
45 0x80,
46 0x00,
47 0x00,
48 0x80,
49 0x5F,
50 0x9B,
51 0x34,
52 0xFB);
54 #define BLUETOOTH_GATT_FLAG_NONE 0x00000000
56 typedef struct _BTH_LE_UUID {
57 BOOLEAN IsShortUuid;
58 #ifdef MIDL_PASS
59 [ switch_type(BOOLEAN), switch_is((BOOLEAN)IsShortUuid) ]
60 #endif
61 union {
62 #ifdef MIDL_PASS
63 [case(TRUE)]
64 #endif
65 USHORT ShortUuid;
66 #ifdef MIDL_PASS
67 [case(FALSE)]
68 #endif
69 GUID LongUuid;
70 } Value;
71 } BTH_LE_UUID, *PBTH_LE_UUID;
73 typedef struct _BTH_LE_GATT_SERVICE {
74 BTH_LE_UUID ServiceUuid;
75 USHORT AttributeHandle;
76 } BTH_LE_GATT_SERVICE, *PBTH_LE_GATT_SERVICE;
78 typedef struct _BTH_LE_GATT_CHARACTERISTIC {
79 USHORT ServiceHandle;
80 BTH_LE_UUID CharacteristicUuid;
81 USHORT AttributeHandle;
82 USHORT CharacteristicValueHandle;
83 BOOLEAN IsBroadcastable;
84 BOOLEAN IsReadable;
85 BOOLEAN IsWritable;
86 BOOLEAN IsWritableWithoutResponse;
87 BOOLEAN IsSignedWritable;
88 BOOLEAN IsNotifiable;
89 BOOLEAN IsIndicatable;
90 BOOLEAN HasExtendedProperties;
91 } BTH_LE_GATT_CHARACTERISTIC, *PBTH_LE_GATT_CHARACTERISTIC;
93 typedef struct _BTH_LE_GATT_CHARACTERISTIC_VALUE {
94 ULONG DataSize;
96 #ifdef MIDL_PASS
97 [size_is(DataSize)] UCHAR Data[*];
98 #else
99 _Field_size_bytes_(DataSize) UCHAR Data[1];
100 #endif
101 } BTH_LE_GATT_CHARACTERISTIC_VALUE, *PBTH_LE_GATT_CHARACTERISTIC_VALUE;
103 typedef enum _BTH_LE_GATT_DESCRIPTOR_TYPE {
104 CharacteristicExtendedProperties,
105 CharacteristicUserDescription,
106 ClientCharacteristicConfiguration,
107 ServerCharacteristicConfiguration,
108 CharacteristicFormat,
109 CharacteristicAggregateFormat,
110 CustomDescriptor
111 } BTH_LE_GATT_DESCRIPTOR_TYPE,
112 *PBTH_LE_GATT_DESCRIPTOR_TYPE;
114 typedef struct _BTH_LE_GATT_DESCRIPTOR {
115 USHORT ServiceHandle;
116 USHORT CharacteristicHandle;
117 BTH_LE_GATT_DESCRIPTOR_TYPE DescriptorType;
118 BTH_LE_UUID DescriptorUuid;
119 USHORT AttributeHandle;
120 } BTH_LE_GATT_DESCRIPTOR, *PBTH_LE_GATT_DESCRIPTOR;
122 typedef struct _BTH_LE_GATT_DESCRIPTOR_VALUE {
123 BTH_LE_GATT_DESCRIPTOR_TYPE DescriptorType;
124 BTH_LE_UUID DescriptorUuid;
126 #ifdef MIDL_PASS
128 switch_type(BTH_LE_GATT_DESCRIPTOR_TYPE),
129 switch_is((BTH_LE_GATT_DESCRIPTOR_TYPE)DescriptorType)
131 #endif
132 union {
134 #ifdef MIDL_PASS
135 [case(CharacteristicExtendedProperties)]
136 #endif
137 struct {
138 BOOLEAN IsReliableWriteEnabled;
139 BOOLEAN IsAuxiliariesWritable;
140 } CharacteristicExtendedProperties;
142 #ifdef MIDL_PASS
143 [case(ClientCharacteristicConfiguration)]
144 #endif
145 struct {
146 BOOLEAN IsSubscribeToNotification;
147 BOOLEAN IsSubscribeToIndication;
148 } ClientCharacteristicConfiguration;
150 #ifdef MIDL_PASS
151 [case(ServerCharacteristicConfiguration)]
152 #endif
153 struct {
154 BOOLEAN IsBroadcast;
155 } ServerCharacteristicConfiguration;
157 #ifdef MIDL_PASS
158 [case(CharacteristicFormat)]
159 #endif
160 struct {
161 UCHAR Format;
162 UCHAR Exponent;
163 BTH_LE_UUID Unit;
164 UCHAR NameSpace;
165 BTH_LE_UUID Description;
166 } CharacteristicFormat;
167 #ifdef MIDL_PASS
168 [default];
169 #endif
172 ULONG DataSize;
174 #ifdef MIDL_PASS
175 [size_is(DataSize)] UCHAR Data[*];
176 #else
177 _Field_size_bytes_(DataSize) UCHAR Data[1];
178 #endif
179 } BTH_LE_GATT_DESCRIPTOR_VALUE, *PBTH_LE_GATT_DESCRIPTOR_VALUE;
181 typedef enum _BTH_LE_GATT_EVENT_TYPE {
182 CharacteristicValueChangedEvent,
183 } BTH_LE_GATT_EVENT_TYPE;
185 typedef ULONG64 BTH_LE_GATT_RELIABLE_WRITE_CONTEXT,
186 *PBTH_LE_GATT_RELIABLE_WRITE_CONTEXT;
188 #endif // __BTHLEDEF_H__
189 #include <bluetoothapis.h>
190 #include <bluetoothleapis.h>
192 #endif // DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_