OLD | NEW |
(Empty) | |
| 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. |
| 4 |
| 5 #ifndef DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |
| 6 #define DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |
| 7 |
| 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. |
| 18 // |
| 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__ |
| 23 |
| 24 // |
| 25 // Bluetooth LE device interface GUID |
| 26 // |
| 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); |
| 40 |
| 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); |
| 53 |
| 54 #define BLUETOOTH_GATT_FLAG_NONE 0x00000000 |
| 55 |
| 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; |
| 72 |
| 73 typedef struct _BTH_LE_GATT_SERVICE { |
| 74 BTH_LE_UUID ServiceUuid; |
| 75 USHORT AttributeHandle; |
| 76 } BTH_LE_GATT_SERVICE, *PBTH_LE_GATT_SERVICE; |
| 77 |
| 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; |
| 92 |
| 93 typedef struct _BTH_LE_GATT_CHARACTERISTIC_VALUE { |
| 94 ULONG DataSize; |
| 95 |
| 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; |
| 102 |
| 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; |
| 113 |
| 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; |
| 121 |
| 122 typedef struct _BTH_LE_GATT_DESCRIPTOR_VALUE { |
| 123 BTH_LE_GATT_DESCRIPTOR_TYPE DescriptorType; |
| 124 BTH_LE_UUID DescriptorUuid; |
| 125 |
| 126 #ifdef MIDL_PASS |
| 127 [ |
| 128 switch_type(BTH_LE_GATT_DESCRIPTOR_TYPE), |
| 129 switch_is((BTH_LE_GATT_DESCRIPTOR_TYPE)DescriptorType) |
| 130 ] |
| 131 #endif |
| 132 union { |
| 133 |
| 134 #ifdef MIDL_PASS |
| 135 [case(CharacteristicExtendedProperties)] |
| 136 #endif |
| 137 struct { |
| 138 BOOLEAN IsReliableWriteEnabled; |
| 139 BOOLEAN IsAuxiliariesWritable; |
| 140 } CharacteristicExtendedProperties; |
| 141 |
| 142 #ifdef MIDL_PASS |
| 143 [case(ClientCharacteristicConfiguration)] |
| 144 #endif |
| 145 struct { |
| 146 BOOLEAN IsSubscribeToNotification; |
| 147 BOOLEAN IsSubscribeToIndication; |
| 148 } ClientCharacteristicConfiguration; |
| 149 |
| 150 #ifdef MIDL_PASS |
| 151 [case(ServerCharacteristicConfiguration)] |
| 152 #endif |
| 153 struct { |
| 154 BOOLEAN IsBroadcast; |
| 155 } ServerCharacteristicConfiguration; |
| 156 |
| 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 |
| 170 }; |
| 171 |
| 172 ULONG DataSize; |
| 173 |
| 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; |
| 180 |
| 181 typedef enum _BTH_LE_GATT_EVENT_TYPE { |
| 182 CharacteristicValueChangedEvent, |
| 183 } BTH_LE_GATT_EVENT_TYPE; |
| 184 |
| 185 typedef ULONG64 BTH_LE_GATT_RELIABLE_WRITE_CONTEXT, |
| 186 *PBTH_LE_GATT_RELIABLE_WRITE_CONTEXT; |
| 187 |
| 188 #endif // __BTHLEDEF_H__ |
| 189 #include <bluetoothapis.h> |
| 190 #include <bluetoothleapis.h> |
| 191 |
| 192 #endif // DEVICE_BLUETOOTH_BLUETOOTH_LOW_ENERGY_DEFS_WIN_H_ |
OLD | NEW |