aboutsummaryrefslogtreecommitdiff
path: root/nimbluez/msbt/ms_bthdef.nim
diff options
context:
space:
mode:
authorElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
committerElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
commit0c4a1cc1c2083a871562364de5df4f9d88ec321e (patch)
treeddb8428845b663c078359eda4ec81bdcc157414f /nimbluez/msbt/ms_bthdef.nim
parent27a7a2a18a6db8b67cbe0e86c37cb174de2a1295 (diff)
downloadNimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.tar.gz
NimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.zip
First version.
Diffstat (limited to 'nimbluez/msbt/ms_bthdef.nim')
-rw-r--r--nimbluez/msbt/ms_bthdef.nim1279
1 files changed, 1279 insertions, 0 deletions
diff --git a/nimbluez/msbt/ms_bthdef.nim b/nimbluez/msbt/ms_bthdef.nim
new file mode 100644
index 0000000..96be91d
--- /dev/null
+++ b/nimbluez/msbt/ms_bthdef.nim
@@ -0,0 +1,1279 @@
+#++
+#
+#Copyright (c) 2000 Microsoft Corporation
+#
+#Module Name:
+#
+# bthdef.h
+#
+#Abstract:
+#
+# This module contains the Bluetooth common structures and definitions
+#
+#Author:
+#
+#Notes:
+#
+#Environment:
+#
+# Kernel mode only
+#
+#
+#Revision History:
+#
+# --
+import winlean
+import ms_bthsdpdef
+
+template DEFINE_GUID*(name: expr; p1: int32; p2, p3: int16;
+ p41, p42, p43, p44, p45, p46, p47, p48: int8): stmt {.immediate.} =
+ const
+ name* = GUID(D1: int32(p1), D2: int16(p2), D3: int16(p3),
+ D4: [int8(p41), int8(p42), int8(p43), int8(p44),
+ int8(p45), int8(p46), int8(p47), int8(p48)])
+#
+# Bluetooth 2.1 support added in KB942567
+#
+
+# {0850302A-B344-4fda-9BE9-90576B8D46F0}
+DEFINE_GUID(GUID_BTHPORT_DEVICE_INTERFACE, 0x0850302A, 0x0000B344,
+ 0x00004FDA, 0x0000009B, 0x000000E9, 0x00000090, 0x00000057,
+ 0x0000006B, 0x0000008D, 0x00000046, 0x000000F0)
+# RFCOMM device interface GUID for RFCOMM services
+# {b142fc3e-fa4e-460b-8abc-072b628b3c70}
+DEFINE_GUID(GUID_BTH_RFCOMM_SERVICE_DEVICE_INTERFACE, 0xB142FC3E,
+ 0x0000FA4E, 0x0000460B, 0x0000008A, 0x000000BC, 0x00000007,
+ 0x0000002B, 0x00000062, 0x0000008B, 0x0000003C, 0x00000070)
+# {EA3B5B82-26EE-450E-B0D8-D26FE30A3869}
+DEFINE_GUID(GUID_BLUETOOTH_RADIO_IN_RANGE, 0xEA3B5B82, 0x000026EE,
+ 0x0000450E, 0x000000B0, 0x000000D8, 0x000000D2, 0x0000006F,
+ 0x000000E3, 0x0000000A, 0x00000038, 0x00000069)
+# {E28867C9-C2AA-4CED-B969-4570866037C4}
+DEFINE_GUID(GUID_BLUETOOTH_RADIO_OUT_OF_RANGE, 0xE28867C9, 0x0000C2AA,
+ 0x00004CED, 0x000000B9, 0x00000069, 0x00000045, 0x00000070,
+ 0x00000086, 0x00000060, 0x00000037, 0x000000C4)
+# {7EAE4030-B709-4AA8-AC55-E953829C9DAA}
+DEFINE_GUID(GUID_BLUETOOTH_L2CAP_EVENT, 0x7EAE4030, 0x0000B709,
+ 0x00004AA8, 0x000000AC, 0x00000055, 0x000000E9, 0x00000053,
+ 0x00000082, 0x0000009C, 0x0000009D, 0x000000AA)
+# {FC240062-1541-49BE-B463-84C4DCD7BF7F}
+DEFINE_GUID(GUID_BLUETOOTH_HCI_EVENT, 0xFC240062, 0x00001541, 0x000049BE,
+ 0x000000B4, 0x00000063, 0x00000084, 0x000000C4, 0x000000DC,
+ 0x000000D7, 0x000000BF, 0x0000007F)
+#
+# Support added in KB942567
+#
+# {5DC9136D-996C-46DB-84F5-32C0A3F47352}
+DEFINE_GUID(GUID_BLUETOOTH_AUTHENTICATION_REQUEST, 0x5DC9136D,
+ 0x0000996C, 0x000046DB, 0x00000084, 0x000000F5, 0x00000032,
+ 0x000000C0, 0x000000A3, 0x000000F4, 0x00000073, 0x00000052)
+# {D668DFCD-0F4E-4EFC-BFE0-392EEEC5109C}
+DEFINE_GUID(GUID_BLUETOOTH_KEYPRESS_EVENT, 0xD668DFCD, 0x00000F4E,
+ 0x00004EFC, 0x000000BF, 0x000000E0, 0x00000039, 0x0000002E,
+ 0x000000EE, 0x000000C5, 0x00000010, 0x0000009C)
+# {547247e6-45bb-4c33-af8c-c00efe15a71d}
+DEFINE_GUID(GUID_BLUETOOTH_HCI_VENDOR_EVENT, 0x547247E6, 0x000045BB,
+ 0x00004C33, 0x000000AF, 0x0000008C, 0x000000C0, 0x0000000E,
+ 0x000000FE, 0x00000015, 0x000000A7, 0x0000001D)
+#
+# Bluetooth base UUID for service discovery
+#
+DEFINE_GUID(Bluetooth_Base_UUID, 0x00000000, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+#
+# UUID for the root of the browse group list
+#
+DEFINE_GUID(SDP_PROTOCOL_UUID, 0x00000001, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UDP_PROTOCOL_UUID, 0x00000002, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(RFCOMM_PROTOCOL_UUID, 0x00000003, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(TCP_PROTOCOL_UUID, 0x00000004, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(TCSBIN_PROTOCOL_UUID, 0x00000005, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(TCSAT_PROTOCOL_UUID, 0x00000006, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(OBEX_PROTOCOL_UUID, 0x00000008, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(IP_PROTOCOL_UUID, 0x00000009, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(FTP_PROTOCOL_UUID, 0x0000000A, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HTTP_PROTOCOL_UUID, 0x0000000C, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(WSP_PROTOCOL_UUID, 0x0000000E, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(BNEP_PROTOCOL_UUID, 0x0000000F, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UPNP_PROTOCOL_UUID, 0x00000010, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HID_PROTOCOL_UUID, 0x00000011, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HCCC_PROTOCOL_UUID, 0x00000012, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HCDC_PROTOCOL_UUID, 0x00000014, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HN_PROTOCOL_UUID, 0x00000016, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AVCTP_PROTOCOL_UUID, 0x00000017, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AVDTP_PROTOCOL_UUID, 0x00000019, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(CMPT_PROTOCOL_UUID, 0x0000001B, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UDI_C_PLANE_PROTOCOL_UUID, 0x0000001D, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(L2CAP_PROTOCOL_UUID, 0x00000100, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+const
+ SDP_PROTOCOL_UUID16* = (0x00000001)
+ UDP_PROTOCOL_UUID16* = (0x00000002)
+ RFCOMM_PROTOCOL_UUID16* = (0x00000003)
+ TCP_PROTOCOL_UUID16* = (0x00000004)
+ TCSBIN_PROTOCOL_UUID16* = (0x00000005)
+ TCSAT_PROTOCOL_UUID16* = (0x00000006)
+ OBEX_PROTOCOL_UUID16* = (0x00000008)
+ IP_PROTOCOL_UUID16* = (0x00000009)
+ FTP_PROTOCOL_UUID16* = (0x0000000A)
+ HTTP_PROTOCOL_UUID16* = (0x0000000C)
+ WSP_PROTOCOL_UUID16* = (0x0000000E)
+ BNEP_PROTOCOL_UUID16* = (0x0000000F)
+ UPNP_PROTOCOL_UUID16* = (0x00000010)
+ HID_PROTOCOL_UUID16* = (0x00000011)
+ HCCC_PROTOCOL_UUID16* = (0x00000012)
+ HCDC_PROTOCOL_UUID16* = (0x00000014)
+ HCN_PROTOCOL_UUID16* = (0x00000016)
+ AVCTP_PROTOCOL_UUID16* = (0x00000017)
+ AVDTP_PROTOCOL_UUID16* = (0x00000019)
+ CMPT_PROTOCOL_UUID16* = (0x0000001B)
+ UDI_C_PLANE_PROTOCOL_UUID16* = (0x0000001D)
+ L2CAP_PROTOCOL_UUID16* = (0x00000100)
+DEFINE_GUID(ServiceDiscoveryServerServiceClassID_UUID, 0x00001000,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(BrowseGroupDescriptorServiceClassID_UUID, 0x00001001,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PublicBrowseGroupServiceClass_UUID, 0x00001002, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(SerialPortServiceClass_UUID, 0x00001101, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(LANAccessUsingPPPServiceClass_UUID, 0x00001102, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(DialupNetworkingServiceClass_UUID, 0x00001103, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(IrMCSyncServiceClass_UUID, 0x00001104, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(OBEXObjectPushServiceClass_UUID, 0x00001105, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(OBEXFileTransferServiceClass_UUID, 0x00001106, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(IrMCSyncCommandServiceClass_UUID, 0x00001107, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HeadsetServiceClass_UUID, 0x00001108, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(CordlessTelephonyServiceClass_UUID, 0x00001109, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AudioSourceServiceClass_UUID, 0x0000110A, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AudioSinkServiceClass_UUID, 0x0000110B, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AVRemoteControlTargetServiceClass_UUID, 0x0000110C,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AdvancedAudioDistributionServiceClass_UUID, 0x0000110D,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AVRemoteControlServiceClass_UUID, 0x0000110E, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AVRemoteControlControllerServiceClass_UUID, 0x0000110F,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(IntercomServiceClass_UUID, 0x00001110, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(FaxServiceClass_UUID, 0x00001111, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HeadsetAudioGatewayServiceClass_UUID, 0x00001112, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(WAPServiceClass_UUID, 0x00001113, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(WAPClientServiceClass_UUID, 0x00001114, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PANUServiceClass_UUID, 0x00001115, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(NAPServiceClass_UUID, 0x00001116, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(GNServiceClass_UUID, 0x00001117, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(DirectPrintingServiceClass_UUID, 0x00001118, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ReferencePrintingServiceClass_UUID, 0x00001119, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ImagingServiceClass_UUID, 0x0000111A, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ImagingResponderServiceClass_UUID, 0x0000111B, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ImagingAutomaticArchiveServiceClass_UUID, 0x0000111C,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ImagingReferenceObjectsServiceClass_UUID, 0x0000111D,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HandsfreeServiceClass_UUID, 0x0000111E, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HandsfreeAudioGatewayServiceClass_UUID, 0x0000111F,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(DirectPrintingReferenceObjectsServiceClass_UUID, 0x00001120,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ReflectedUIServiceClass_UUID, 0x00001121, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(BasicPringingServiceClass_UUID, 0x00001122, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PrintingStatusServiceClass_UUID, 0x00001123, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HumanInterfaceDeviceServiceClass_UUID, 0x00001124, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HardcopyCableReplacementServiceClass_UUID, 0x00001125,
+ 0x00000000, 0x00001000, 0x00000080, 0x00000000, 0x00000000,
+ 0x00000080, 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HCRPrintServiceClass_UUID, 0x00001126, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(HCRScanServiceClass_UUID, 0x00001127, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(CommonISDNAccessServiceClass_UUID, 0x00001128, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(VideoConferencingGWServiceClass_UUID, 0x00001129, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UDIMTServiceClass_UUID, 0x0000112A, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UDITAServiceClass_UUID, 0x0000112B, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(AudioVideoServiceClass_UUID, 0x0000112C, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(SimAccessServiceClass_UUID, 0x0000112D, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PhonebookAccessPceServiceClass_UUID, 0x0000112E, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PhonebookAccessPseServiceClass_UUID, 0x0000112F, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(PnPInformationServiceClass_UUID, 0x00001200, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(GenericNetworkingServiceClass_UUID, 0x00001201, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(GenericFileTransferServiceClass_UUID, 0x00001202, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(GenericAudioServiceClass_UUID, 0x00001203, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(GenericTelephonyServiceClass_UUID, 0x00001204, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UPnpServiceClass_UUID, 0x00001205, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(UPnpIpServiceClass_UUID, 0x00001206, 0x00000000, 0x00001000,
+ 0x00000080, 0x00000000, 0x00000000, 0x00000080, 0x0000005F,
+ 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ESdpUpnpIpPanServiceClass_UUID, 0x00001300, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ESdpUpnpIpLapServiceClass_UUID, 0x00001301, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(ESdpUpnpL2capServiceClass_UUID, 0x00001302, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(VideoSourceServiceClass_UUID, 0x00001303, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(VideoSinkServiceClass_UUID, 0x00001304, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+DEFINE_GUID(VideoDistributionServiceClass_UUID, 0x00001305, 0x00000000,
+ 0x00001000, 0x00000080, 0x00000000, 0x00000000, 0x00000080,
+ 0x0000005F, 0x0000009B, 0x00000034, 0x000000FB)
+#
+# Fixing typos introduced in previous releases
+#
+const
+ BasicPrintingServiceClass_UUID* = BasicPringingServiceClass_UUID
+ ServiceDiscoveryServerServiceClassID_UUID16* = (0x00001000)
+ BrowseGroupDescriptorServiceClassID_UUID16* = (0x00001001)
+ PublicBrowseGroupServiceClassID_UUID16* = (0x00001002)
+ SerialPortServiceClassID_UUID16* = (0x00001101)
+ LANAccessUsingPPPServiceClassID_UUID16* = (0x00001102)
+ DialupNetworkingServiceClassID_UUID16* = (0x00001103)
+ IrMCSyncServiceClassID_UUID16* = (0x00001104)
+ OBEXObjectPushServiceClassID_UUID16* = (0x00001105)
+ OBEXFileTransferServiceClassID_UUID16* = (0x00001106)
+ IrMcSyncCommandServiceClassID_UUID16* = (0x00001107)
+ HeadsetServiceClassID_UUID16* = (0x00001108)
+ CordlessServiceClassID_UUID16* = (0x00001109)
+ AudioSourceServiceClassID_UUID16* = (0x0000110A)
+ AudioSinkSourceServiceClassID_UUID16* = (0x0000110B)
+ AVRemoteControlTargetServiceClassID_UUID16* = (0x0000110C)
+ AdvancedAudioDistributionServiceClassID_UUID16* = (0x0000110D)
+ AVRemoteControlServiceClassID_UUID16* = (0x0000110E)
+ AVRemoteControlControllerServiceClass_UUID16* = (0x0000110F)
+ IntercomServiceClassID_UUID16* = (0x00001110)
+ FaxServiceClassID_UUID16* = (0x00001111)
+ HeadsetAudioGatewayServiceClassID_UUID16* = (0x00001112)
+ WAPServiceClassID_UUID16* = (0x00001113)
+ WAPClientServiceClassID_UUID16* = (0x00001114)
+ PANUServiceClassID_UUID16* = (0x00001115)
+ NAPServiceClassID_UUID16* = (0x00001116)
+ GNServiceClassID_UUID16* = (0x00001117)
+ DirectPrintingServiceClassID_UUID16* = (0x00001118)
+ ReferencePrintingServiceClassID_UUID16* = (0x00001119)
+ ImagingServiceClassID_UUID16* = (0x0000111A)
+ ImagingResponderServiceClassID_UUID16* = (0x0000111B)
+ ImagingAutomaticArchiveServiceClassID_UUID16* = (0x0000111C)
+ ImagingReferenceObjectsServiceClassID_UUID16* = (0x0000111D)
+ HandsfreeServiceClassID_UUID16* = (0x0000111E)
+ HandsfreeAudioGatewayServiceClassID_UUID16* = (0x0000111F)
+ DirectPrintingReferenceObjectsServiceClassID_UUID16* = (0x00001120)
+ ReflectsUIServiceClassID_UUID16* = (0x00001121)
+ BasicPrintingServiceClassID_UUID16* = (0x00001122)
+ PrintingStatusServiceClassID_UUID16* = (0x00001123)
+ HumanInterfaceDeviceServiceClassID_UUID16* = (0x00001124)
+ HardcopyCableReplacementServiceClassID_UUID16* = (0x00001125)
+ HCRPrintServiceClassID_UUID16* = (0x00001126)
+ HCRScanServiceClassID_UUID16* = (0x00001127)
+ CommonISDNAccessServiceClass_UUID16* = (0x00001128)
+ VideoConferencingGWServiceClass_UUID16* = (0x00001129)
+ UDIMTServiceClass_UUID16* = (0x0000112A)
+ UDITAServiceClass_UUID16* = (0x0000112B)
+ AudioVideoServiceClass_UUID16* = (0x0000112C)
+ PnPInformationServiceClassID_UUID16* = (0x00001200)
+ GenericNetworkingServiceClassID_UUID16* = (0x00001201)
+ GenericFileTransferServiceClassID_UUID16* = (0x00001202)
+ GenericAudioServiceClassID_UUID16* = (0x00001203)
+ GenericTelephonyServiceClassID_UUID16* = (0x00001204)
+#
+# The SIG renamed the uuid for VideoConferencingServiceClass
+#
+const
+ VideoConferencingServiceClass_UUID* = AVRemoteControlControllerServiceClass_UUID
+ VideoConferencingServiceClassID_UUID16* = AVRemoteControlControllerServiceClass_UUID16
+
+#
+# max length of device friendly name.
+#
+const
+ BTH_MAX_NAME_SIZE* = (248)
+ BTH_MAX_PIN_SIZE* = (16)
+ BTH_LINK_KEY_LENGTH* = (16)
+ BTH_MFG_ERICSSON* = (0)
+ BTH_MFG_NOKIA* = (1)
+ BTH_MFG_INTEL* = (2)
+ BTH_MFG_IBM* = (3)
+ BTH_MFG_TOSHIBA* = (4)
+ BTH_MFG_3COM* = (5)
+ BTH_MFG_MICROSOFT* = (6)
+ BTH_MFG_LUCENT* = (7)
+ BTH_MFG_MOTOROLA* = (8)
+ BTH_MFG_INFINEON* = (9)
+ BTH_MFG_CSR* = (10)
+ BTH_MFG_SILICONWAVE* = (11)
+ BTH_MFG_DIGIANSWER* = (12)
+ BTH_MFG_TI* = (13)
+ BTH_MFG_PARTHUS* = (14)
+ BTH_MFG_BROADCOM* = (15)
+ BTH_MFG_MITEL* = (16)
+ BTH_MFG_WIDCOMM* = (17)
+ BTH_MFG_ZEEVO* = (18)
+ BTH_MFG_ATMEL* = (19)
+ BTH_MFG_MITSIBUSHI* = (20)
+ BTH_MFG_RTX_TELECOM* = (21)
+ BTH_MFG_KC_TECHNOLOGY* = (22)
+ BTH_MFG_NEWLOGIC* = (23)
+ BTH_MFG_TRANSILICA* = (24)
+ BTH_MFG_ROHDE_SCHWARZ* = (25)
+ BTH_MFG_TTPCOM* = (26)
+ BTH_MFG_SIGNIA* = (27)
+ BTH_MFG_CONEXANT* = (28)
+ BTH_MFG_QUALCOMM* = (29)
+ BTH_MFG_INVENTEL* = (30)
+ BTH_MFG_AVM_BERLIN* = (31)
+ BTH_MFG_BANDSPEED* = (32)
+ BTH_MFG_MANSELLA* = (33)
+ BTH_MFG_NEC* = (34)
+ BTH_MFG_WAVEPLUS_TECHNOLOGY_CO* = (35)
+ BTH_MFG_ALCATEL* = (36)
+ BTH_MFG_PHILIPS_SEMICONDUCTOR* = (37)
+ BTH_MFG_C_TECHNOLOGIES* = (38)
+ BTH_MFG_OPEN_INTERFACE* = (39)
+ BTH_MFG_RF_MICRO_DEVICES* = (40)
+ BTH_MFG_HITACHI* = (41)
+ BTH_MFG_SYMBOL_TECHNOLOGIES* = (42)
+ BTH_MFG_TENOVIS* = (43)
+ BTH_MFG_MACRONIX_INTERNATIONAL* = (44)
+ BTH_MFG_NORDIC_SEMICONDUCTORS_ASA* = (89)
+ BTH_MFG_INTERNAL_USE* = (65535)
+type
+ BTH_ADDR* = ULONGLONG
+ PBTH_ADDR* = ptr ULONGLONG
+ BTH_COD* = ULONG
+ PBTH_COD* = ptr ULONG
+ BTH_LAP* = ULONG
+ PBTH_LAP* = ptr ULONG
+const
+ NAP_BIT_OFFSET* = (8 * 4)
+ SAP_BIT_OFFSET* = (0)
+template GET_NAP*(bth_addr: expr): expr =
+ ((USHORT)(((bth_addr) and NAP_MASK) shr NAP_BIT_OFFSET))
+
+template GET_SAP*(bth_addr: expr): expr =
+ ((ULONG)(((bth_addr) and SAP_MASK) shr SAP_BIT_OFFSET))
+
+template SET_NAP*(nap: expr): expr =
+ (((ULONGLONG)((USHORT)(nap))) shl NAP_BIT_OFFSET)
+
+template SET_SAP*(sap: expr): expr =
+ (((ULONGLONG)((ULONG)(sap))) shl SAP_BIT_OFFSET)
+
+template SET_NAP_SAP*(nap, sap: expr): expr =
+ (SET_NAP(nap) or SET_SAP(sap))
+
+const
+ COD_FORMAT_BIT_OFFSET* = (0)
+ COD_MINOR_BIT_OFFSET* = (2)
+ COD_MAJOR_BIT_OFFSET* = (8 * 1)
+ COD_SERVICE_BIT_OFFSET* = (8 * 1 + 5)
+ COD_FORMAT_MASK* = (0x00000003)
+ COD_MINOR_MASK* = (0x000000FC)
+ COD_MAJOR_MASK* = (0x00001F00)
+ COD_SERVICE_MASK* = (0x00FFE000)
+template GET_COD_FORMAT*(cod: expr): expr =
+ ((cod) and COD_FORMAT_MASK shr COD_FORMAT_BIT_OFFSET)
+
+template GET_COD_MINOR*(cod: expr): expr =
+ (((cod) and COD_MINOR_MASK) shr COD_MINOR_BIT_OFFSET)
+
+template GET_COD_MAJOR*(cod: expr): expr =
+ (((cod) and COD_MAJOR_MASK) shr COD_MAJOR_BIT_OFFSET)
+
+template GET_COD_SERVICE*(cod: expr): expr =
+ (((cod) and COD_SERVICE_MASK) shr COD_SERVICE_BIT_OFFSET)
+
+template SET_COD_MINOR*(cod, minor: expr): expr =
+ (cod) = ((cod) and not COD_MINOR_MASK) or
+ ((minor) shl COD_MINOR_BIT_OFFSET)
+
+template SET_COD_MAJOR*(cod, major: expr): expr =
+ (cod) = ((cod) and not COD_MAJOR_MASK) or
+ ((major) shl COD_MAJOR_BIT_OFFSET)
+
+template SET_COD_SERVICE*(cod, service: expr): expr =
+ (cod) = ((cod) and not COD_SERVICE_MASK) or
+ ((service) shl COD_SERVICE_BIT_OFFSET)
+
+const
+ COD_VERSION* = (0x00000000)
+ COD_SERVICE_LIMITED* = (0x00000001)
+ COD_SERVICE_POSITIONING* = (0x00000008)
+ COD_SERVICE_NETWORKING* = (0x00000010)
+ COD_SERVICE_RENDERING* = (0x00000020)
+ COD_SERVICE_CAPTURING* = (0x00000040)
+ COD_SERVICE_OBJECT_XFER* = (0x00000080)
+ COD_SERVICE_AUDIO* = (0x00000100)
+ COD_SERVICE_TELEPHONY* = (0x00000200)
+ COD_SERVICE_INFORMATION* = (0x00000400)
+ COD_SERVICE_VALID_MASK* = (COD_SERVICE_LIMITED or
+ COD_SERVICE_POSITIONING or COD_SERVICE_NETWORKING or
+ COD_SERVICE_RENDERING or COD_SERVICE_CAPTURING or
+ COD_SERVICE_OBJECT_XFER or COD_SERVICE_AUDIO or
+ COD_SERVICE_TELEPHONY or COD_SERVICE_INFORMATION)
+ COD_SERVICE_MAX_COUNT* = (9)
+#
+# Major class codes
+#
+const
+ COD_MAJOR_MISCELLANEOUS* = (0x00000000)
+ COD_MAJOR_COMPUTER* = (0x00000001)
+ COD_MAJOR_PHONE* = (0x00000002)
+ COD_MAJOR_LAN_ACCESS* = (0x00000003)
+ COD_MAJOR_AUDIO* = (0x00000004)
+ COD_MAJOR_PERIPHERAL* = (0x00000005)
+ COD_MAJOR_IMAGING* = (0x00000006)
+ COD_MAJOR_WEARABLE* = (0x00000007)
+ COD_MAJOR_TOY* = (0x00000008)
+ COD_MAJOR_HEALTH* = (0x00000009)
+ COD_MAJOR_UNCLASSIFIED* = (0x0000001F)
+#
+# Minor class codes specific to each major class
+#
+const
+ COD_COMPUTER_MINOR_UNCLASSIFIED* = (0x00000000)
+ COD_COMPUTER_MINOR_DESKTOP* = (0x00000001)
+ COD_COMPUTER_MINOR_SERVER* = (0x00000002)
+ COD_COMPUTER_MINOR_LAPTOP* = (0x00000003)
+ COD_COMPUTER_MINOR_HANDHELD* = (0x00000004)
+ COD_COMPUTER_MINOR_PALM* = (0x00000005)
+ COD_COMPUTER_MINOR_WEARABLE* = (0x00000006)
+ COD_PHONE_MINOR_UNCLASSIFIED* = (0x00000000)
+ COD_PHONE_MINOR_CELLULAR* = (0x00000001)
+ COD_PHONE_MINOR_CORDLESS* = (0x00000002)
+ COD_PHONE_MINOR_SMART* = (0x00000003)
+ COD_PHONE_MINOR_WIRED_MODEM* = (0x00000004)
+ COD_AUDIO_MINOR_UNCLASSIFIED* = (0x00000000)
+ COD_AUDIO_MINOR_HEADSET* = (0x00000001)
+ COD_AUDIO_MINOR_HANDS_FREE* = (0x00000002)
+ COD_AUDIO_MINOR_HEADSET_HANDS_FREE* = (0x00000003)
+ COD_AUDIO_MINOR_MICROPHONE* = (0x00000004)
+ COD_AUDIO_MINOR_LOUDSPEAKER* = (0x00000005)
+ COD_AUDIO_MINOR_HEADPHONES* = (0x00000006)
+ COD_AUDIO_MINOR_PORTABLE_AUDIO* = (0x00000007)
+ COD_AUDIO_MINOR_CAR_AUDIO* = (0x00000008)
+ COD_AUDIO_MINOR_SET_TOP_BOX* = (0x00000009)
+ COD_AUDIO_MINOR_HIFI_AUDIO* = (0x0000000A)
+ COD_AUDIO_MINOR_VCR* = (0x0000000B)
+ COD_AUDIO_MINOR_VIDEO_CAMERA* = (0x0000000C)
+ COD_AUDIO_MINOR_CAMCORDER* = (0x0000000D)
+ COD_AUDIO_MINOR_VIDEO_MONITOR* = (0x0000000E)
+ COD_AUDIO_MINOR_VIDEO_DISPLAY_LOUDSPEAKER* = (0x0000000F)
+ COD_AUDIO_MINOR_VIDEO_DISPLAY_CONFERENCING* = (0x00000010)
+# #define COD_AUDIO_MINOR_RESERVED (0x11)
+const
+ COD_AUDIO_MINOR_GAMING_TOY* = (0x00000012)
+ COD_PERIPHERAL_MINOR_KEYBOARD_MASK* = (0x00000010)
+ COD_PERIPHERAL_MINOR_POINTER_MASK* = (0x00000020)
+ COD_PERIPHERAL_MINOR_NO_CATEGORY* = (0x00000000)
+ COD_PERIPHERAL_MINOR_JOYSTICK* = (0x00000001)
+ COD_PERIPHERAL_MINOR_GAMEPAD* = (0x00000002)
+ COD_PERIPHERAL_MINOR_REMOTE_CONTROL* = (0x00000003)
+ COD_PERIPHERAL_MINOR_SENSING* = (0x00000004)
+ COD_IMAGING_MINOR_DISPLAY_MASK* = (0x00000004)
+ COD_IMAGING_MINOR_CAMERA_MASK* = (0x00000008)
+ COD_IMAGING_MINOR_SCANNER_MASK* = (0x00000010)
+ COD_IMAGING_MINOR_PRINTER_MASK* = (0x00000020)
+ COD_WEARABLE_MINOR_WRIST_WATCH* = (0x00000001)
+ COD_WEARABLE_MINOR_PAGER* = (0x00000002)
+ COD_WEARABLE_MINOR_JACKET* = (0x00000003)
+ COD_WEARABLE_MINOR_HELMET* = (0x00000004)
+ COD_WEARABLE_MINOR_GLASSES* = (0x00000005)
+ COD_TOY_MINOR_ROBOT* = (0x00000001)
+ COD_TOY_MINOR_VEHICLE* = (0x00000002)
+ COD_TOY_MINOR_DOLL_ACTION_FIGURE* = (0x00000003)
+ COD_TOY_MINOR_CONTROLLER* = (0x00000004)
+ COD_TOY_MINOR_GAME* = (0x00000005)
+ COD_HEALTH_MINOR_BLOOD_PRESSURE_MONITOR* = (0x00000001)
+ COD_HEALTH_MINOR_THERMOMETER* = (0x00000002)
+ COD_HEALTH_MINOR_WEIGHING_SCALE* = (0x00000003)
+ COD_HEALTH_MINOR_GLUCOSE_METER* = (0x00000004)
+ COD_HEALTH_MINOR_PULSE_OXIMETER* = (0x00000005)
+ COD_HEALTH_MINOR_HEART_PULSE_MONITOR* = (0x00000006)
+ COD_HEALTH_MINOR_HEALTH_DATA_DISPLAY* = (0x00000007)
+ COD_HEALTH_MINOR_STEP_COUNTER* = (0x00000008)
+#
+# Cannot use GET_COD_MINOR for this b/c it is embedded in a different manner
+# than the rest of the major classes
+#
+const
+ COD_LAN_ACCESS_BIT_OFFSET* = (5)
+ COD_LAN_MINOR_MASK* = (0x0000001C)
+ COD_LAN_ACCESS_MASK* = (0x000000E0)
+template GET_COD_LAN_MINOR*(cod: expr): expr =
+ (((cod) and COD_LAN_MINOR_MASK) shr COD_MINOR_BIT_OFFSET)
+
+template GET_COD_LAN_ACCESS*(cod: expr): expr =
+ (((cod) and COD_LAN_ACCESS_MASK) shr COD_LAN_ACCESS_BIT_OFFSET)
+
+#
+# LAN access percent usage subcodes
+#
+const
+ COD_LAN_MINOR_UNCLASSIFIED* = (0x00000000)
+ COD_LAN_ACCESS_0_USED* = (0x00000000)
+ COD_LAN_ACCESS_17_USED* = (0x00000001)
+ COD_LAN_ACCESS_33_USED* = (0x00000002)
+ COD_LAN_ACCESS_50_USED* = (0x00000003)
+ COD_LAN_ACCESS_67_USED* = (0x00000004)
+ COD_LAN_ACCESS_83_USED* = (0x00000005)
+ COD_LAN_ACCESS_99_USED* = (0x00000006)
+ COD_LAN_ACCESS_FULL* = (0x00000007)
+#
+# Extended Inquiry Response (EIR) defines.
+#
+const
+ BTH_EIR_FLAGS_ID* = (0x00000001)
+ BTH_EIR_16_UUIDS_PARTIAL_ID* = (0x00000002)
+ BTH_EIR_16_UUIDS_COMPLETE_ID* = (0x00000003)
+ BTH_EIR_32_UUIDS_PARTIAL_ID* = (0x00000004)
+ BTH_EIR_32_UUIDS_COMPLETE_ID* = (0x00000005)
+ BTH_EIR_128_UUIDS_PARTIAL_ID* = (0x00000006)
+ BTH_EIR_128_UUIDS_COMPLETE_ID* = (0x00000007)
+ BTH_EIR_LOCAL_NAME_PARTIAL_ID* = (0x00000008)
+ BTH_EIR_LOCAL_NAME_COMPLETE_ID* = (0x00000009)
+ BTH_EIR_TX_POWER_LEVEL_ID* = (0x0000000A)
+ BTH_EIR_OOB_OPT_DATA_LEN_ID* = (0x0000000B) # OOB only.
+ BTH_EIR_OOB_BD_ADDR_ID* = (0x0000000C) # OOB only.
+ BTH_EIR_OOB_COD_ID* = (0x0000000D) # OOB only.
+ BTH_EIR_OOB_SP_HASH_ID* = (0x0000000E) # OOB only.
+ BTH_EIR_OOB_SP_RANDOMIZER_ID* = (0x0000000F) # OOB only.
+ BTH_EIR_MANUFACTURER_ID* = (0x000000FF)
+#
+# Extended Inquiry Response (EIR) size.
+#
+const
+ BTH_EIR_SIZE* = (240)
+#
+# General Inquiry Access Code.
+#
+const
+ LAP_GIAC_VALUE* = (0x009E8B33)
+#
+# Limited Inquiry Access Code.
+#
+const
+ LAP_LIAC_VALUE* = (0x009E8B00)
+ BTH_ADDR_IAC_FIRST* = (0x009E8B00)
+ BTH_ADDR_IAC_LAST* = (0x009E8B3F)
+ BTH_ADDR_LIAC* = (0x009E8B00)
+ BTH_ADDR_GIAC* = (0x009E8B33)
+template BTH_ERROR*(btStatus: expr): expr =
+ ((btStatus) != BTH_ERROR_SUCCESS)
+
+template BTH_SUCCESS*(btStatus: expr): expr =
+ ((btStatus) == BTH_ERROR_SUCCESS)
+
+const
+ BTH_ERROR_SUCCESS* = (0x00000000)
+ BTH_ERROR_UNKNOWN_HCI_COMMAND* = (0x00000001)
+ BTH_ERROR_NO_CONNECTION* = (0x00000002)
+ BTH_ERROR_HARDWARE_FAILURE* = (0x00000003)
+ BTH_ERROR_PAGE_TIMEOUT* = (0x00000004)
+ BTH_ERROR_AUTHENTICATION_FAILURE* = (0x00000005)
+ BTH_ERROR_KEY_MISSING* = (0x00000006)
+ BTH_ERROR_MEMORY_FULL* = (0x00000007)
+ BTH_ERROR_CONNECTION_TIMEOUT* = (0x00000008)
+ BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS* = (0x00000009)
+ BTH_ERROR_MAX_NUMBER_OF_SCO_CONNECTIONS* = (0x0000000A)
+ BTH_ERROR_ACL_CONNECTION_ALREADY_EXISTS* = (0x0000000B)
+ BTH_ERROR_COMMAND_DISALLOWED* = (0x0000000C)
+ BTH_ERROR_HOST_REJECTED_LIMITED_RESOURCES* = (0x0000000D)
+ BTH_ERROR_HOST_REJECTED_SECURITY_REASONS* = (0x0000000E)
+ BTH_ERROR_HOST_REJECTED_PERSONAL_DEVICE* = (0x0000000F)
+ BTH_ERROR_HOST_TIMEOUT* = (0x00000010)
+ BTH_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER* = (0x00000011)
+ BTH_ERROR_INVALID_HCI_PARAMETER* = (0x00000012)
+ BTH_ERROR_REMOTE_USER_ENDED_CONNECTION* = (0x00000013)
+ BTH_ERROR_REMOTE_LOW_RESOURCES* = (0x00000014)
+ BTH_ERROR_REMOTE_POWERING_OFF* = (0x00000015)
+ BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION* = (0x00000016)
+ BTH_ERROR_REPEATED_ATTEMPTS* = (0x00000017)
+ BTH_ERROR_PAIRING_NOT_ALLOWED* = (0x00000018)
+ BTH_ERROR_UKNOWN_LMP_PDU* = (0x00000019)
+ BTH_ERROR_UNSUPPORTED_REMOTE_FEATURE* = (0x0000001A)
+ BTH_ERROR_SCO_OFFSET_REJECTED* = (0x0000001B)
+ BTH_ERROR_SCO_INTERVAL_REJECTED* = (0x0000001C)
+ BTH_ERROR_SCO_AIRMODE_REJECTED* = (0x0000001D)
+ BTH_ERROR_INVALID_LMP_PARAMETERS* = (0x0000001E)
+ BTH_ERROR_UNSPECIFIED_ERROR* = (0x0000001F)
+ BTH_ERROR_UNSUPPORTED_LMP_PARM_VALUE* = (0x00000020)
+ BTH_ERROR_ROLE_CHANGE_NOT_ALLOWED* = (0x00000021)
+ BTH_ERROR_LMP_RESPONSE_TIMEOUT* = (0x00000022)
+ BTH_ERROR_LMP_TRANSACTION_COLLISION* = (0x00000023)
+ BTH_ERROR_LMP_PDU_NOT_ALLOWED* = (0x00000024)
+ BTH_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE* = (0x00000025)
+ BTH_ERROR_UNIT_KEY_NOT_USED* = (0x00000026)
+ BTH_ERROR_QOS_IS_NOT_SUPPORTED* = (0x00000027)
+ BTH_ERROR_INSTANT_PASSED* = (0x00000028)
+ BTH_ERROR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED* = (0x00000029)
+ BTH_ERROR_DIFFERENT_TRANSACTION_COLLISION* = (0x0000002A)
+ BTH_ERROR_QOS_UNACCEPTABLE_PARAMETER* = (0x0000002C)
+ BTH_ERROR_QOS_REJECTED* = (0x0000002D)
+ BTH_ERROR_CHANNEL_CLASSIFICATION_NOT_SUPPORTED* = (0x0000002E)
+ BTH_ERROR_INSUFFICIENT_SECURITY* = (0x0000002F)
+ BTH_ERROR_PARAMETER_OUT_OF_MANDATORY_RANGE* = (0x00000030)
+ BTH_ERROR_ROLE_SWITCH_PENDING* = (0x00000032)
+ BTH_ERROR_RESERVED_SLOT_VIOLATION* = (0x00000034)
+ BTH_ERROR_ROLE_SWITCH_FAILED* = (0x00000035)
+ BTH_ERROR_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE* = (0x00000036)
+ BTH_ERROR_SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST* = (0x00000037)
+ BTH_ERROR_HOST_BUSY_PAIRING* = (0x00000038)
+ BTH_ERROR_CONNECTION_REJECTED_DUE_TO_NO_SUITABLE_CHANNEL_FOUND* = (
+ 0x00000039)
+ BTH_ERROR_CONTROLLER_BUSY* = (0x0000003A)
+ BTH_ERROR_UNACCEPTABLE_CONNECTION_INTERVAL* = (0x0000003B)
+ BTH_ERROR_DIRECTED_ADVERTISING_TIMEOUT* = (0x0000003C)
+ BTH_ERROR_CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE* = (0x0000003D)
+ BTH_ERROR_CONNECTION_FAILED_TO_BE_ESTABLISHED* = (0x0000003E)
+ BTH_ERROR_MAC_CONNECTION_FAILED* = (0x0000003F)
+ BTH_ERROR_UNSPECIFIED* = (0x000000FF)
+#
+# Min, max, and default L2cap MTU.
+#
+const
+ L2CAP_MIN_MTU* = (48)
+ L2CAP_MAX_MTU* = (0x0000FFFF)
+ L2CAP_DEFAULT_MTU* = (672)
+#
+# Max l2cap signal size (48) - size of signal header (4)
+#
+const
+ MAX_L2CAP_PING_DATA_LENGTH* = (44)
+ MAX_L2CAP_INFO_DATA_LENGTH* = (44)
+#
+# the following structures provide information about
+# disocvered remote radios.
+#
+const
+ BDIF_ADDRESS* = (0x00000001)
+ BDIF_COD* = (0x00000002)
+ BDIF_NAME* = (0x00000004)
+ BDIF_PAIRED* = (0x00000008)
+ BDIF_PERSONAL* = (0x00000010)
+ BDIF_CONNECTED* = (0x00000020)
+#
+# Support added in KB942567
+#
+const
+ BDIF_SHORT_NAME* = (0x00000040)
+ BDIF_VISIBLE* = (0x00000080)
+ BDIF_SSP_SUPPORTED* = (0x00000100)
+ BDIF_SSP_PAIRED* = (0x00000200)
+ BDIF_SSP_MITM_PROTECTED* = (0x00000400)
+ BDIF_RSSI* = (0x00001000)
+ BDIF_EIR* = (0x00002000)
+
+const
+ BDIF_BR* = (0x00004000)
+ BDIF_LE* = (0x00008000)
+ BDIF_LE_PAIRED* = (0x00010000)
+ BDIF_LE_PERSONAL* = (0x00020000)
+ BDIF_LE_MITM_PROTECTED* = (0x00040000)
+ BDIF_LE_PRIVACY_ENABLED* = (0x00080000)
+ BDIF_LE_RANDOM_ADDRESS_TYPE* = (0x00100000)
+ BDIF_VALID_FLAGS* = (BDIF_ADDRESS or BDIF_COD or BDIF_NAME or
+ BDIF_PAIRED or BDIF_PERSONAL or BDIF_CONNECTED or
+ BDIF_SHORT_NAME or BDIF_VISIBLE or BDIF_RSSI or BDIF_EIR or
+ BDIF_SSP_PAIRED or BDIF_SSP_MITM_PROTECTED or BDIF_BR or
+ BDIF_LE or BDIF_LE_PAIRED or BDIF_LE_PERSONAL or
+ BDIF_LE_MITM_PROTECTED or BDIF_LE_PRIVACY_ENABLED or
+ BDIF_LE_RANDOM_ADDRESS_TYPE)
+
+type
+ BTH_DEVICE_INFO* = object
+ flags*: ULONG #
+ # Combination BDIF_Xxx flags
+ #
+ #
+ # Address of remote device.
+ #
+ address*: BTH_ADDR #
+ # Class Of Device.
+ #
+ classOfDevice*: BTH_COD #
+ # name of the device
+ #
+ name*: array[BTH_MAX_NAME_SIZE, CHAR]
+
+ PBTH_DEVICE_INFO* = ptr BTH_DEVICE_INFO
+#
+# Buffer associated with GUID_BLUETOOTH_RADIO_IN_RANGE
+#
+type
+ BTH_RADIO_IN_RANGE* = object
+ deviceInfo*: BTH_DEVICE_INFO #
+ # Information about the remote radio
+ #
+ #
+ # The previous flags value for the BTH_DEVICE_INFO. The receiver of this
+ # notification can compare the deviceInfo.flags and previousDeviceFlags
+ # to determine what has changed about this remote radio.
+ #
+ # For instance, if BDIF_NAME is set in deviceInfo.flags and not in
+ # previousDeviceFlags, the remote radio's has just been retrieved.
+ #
+ previousDeviceFlags*: ULONG
+
+ PBTH_RADIO_IN_RANGE* = ptr BTH_RADIO_IN_RANGE
+#
+# Buffer associated with GUID_BLUETOOTH_L2CAP_EVENT
+#
+type
+ BTH_L2CAP_EVENT_INFO* = object
+ bthAddress*: BTH_ADDR #
+ # Remote radio address which the L2CAP event is associated with
+ #
+ #
+ # The PSM that is either being connected to or disconnected from
+ #
+ psm*: USHORT #
+ # If != 0, then the channel has just been established. If == 0, then the
+ # channel has been destroyed. Notifications for a destroyed channel will
+ # only be sent for channels successfully established.
+ #
+ connected*: UCHAR #
+ # If != 0, then the local host iniated the l2cap connection. If == 0, then
+ # the remote host initated the connection. This field is only valid if
+ # connect is != 0.
+ #
+ initiated*: UCHAR
+
+ PBTH_L2CAP_EVENT_INFO* = ptr BTH_L2CAP_EVENT_INFO
+const
+ HCI_CONNECTION_TYPE_ACL* = (1)
+ HCI_CONNECTION_TYPE_SCO* = (2)
+ HCI_CONNECTION_TYPE_LE* = (3)
+#
+# Fix typos
+#
+const
+ HCI_CONNNECTION_TYPE_ACL* = HCI_CONNECTION_TYPE_ACL
+ HCI_CONNNECTION_TYPE_SCO* = HCI_CONNECTION_TYPE_SCO
+#
+# Buffer associated with GUID_BLUETOOTH_HCI_EVENT
+#
+type
+ BTH_HCI_EVENT_INFO* = object
+ bthAddress*: BTH_ADDR #
+ # Remote radio address which the HCI event is associated with
+ #
+ #
+ # HCI_CONNNECTION_TYPE_XXX value
+ #
+ connectionType*: UCHAR #
+ # If != 0, then the underlying connection to the remote radio has just
+ # been estrablished. If == 0, then the underlying conneciton has just been
+ # destroyed.
+ #
+ connected*: UCHAR
+
+ PBTH_HCI_EVENT_INFO* = ptr BTH_HCI_EVENT_INFO
+#
+# Support added in KB942567
+#
+type
+ IO_CAPABILITY* {.size: sizeof(cint).} = enum
+ IoCaps_DisplayOnly = 0x00000000, IoCaps_DisplayYesNo = 0x00000001,
+ IoCaps_KeyboardOnly = 0x00000002,
+ IoCaps_NoInputNoOutput = 0x00000003, IoCaps_Undefined = 0x000000FF
+ AUTHENTICATION_REQUIREMENTS* {.size: sizeof(cint).} = enum
+ MITMProtectionNotRequired = 0x00000000,
+ MITMProtectionRequired = 0x00000001,
+ MITMProtectionNotRequiredBonding = 0x00000002,
+ MITMProtectionRequiredBonding = 0x00000003,
+ MITMProtectionNotRequiredGeneralBonding = 0x00000004,
+ MITMProtectionRequiredGeneralBonding = 0x00000005,
+ MITMProtectionNotDefined = 0x000000FF
+template IsMITMProtectionRequired*(requirements: expr): expr =
+ ((MITMProtectionRequired == requirements) or
+ (MITMProtectionRequiredBonding == requirements) or
+ (MITMProtectionRequiredGeneralBonding == requirements))
+
+#
+# Max length we allow for ServiceName in the remote SDP records
+#
+const
+ BTH_MAX_SERVICE_NAME_SIZE* = (256)
+ MAX_UUIDS_IN_QUERY* = (12)
+ BTH_VID_DEFAULT_VALUE* = (0x0000FFFF)
+ SDP_ERROR_INVALID_SDP_VERSION* = (0x00000001)
+ SDP_ERROR_INVALID_RECORD_HANDLE* = (0x00000002)
+ SDP_ERROR_INVALID_REQUEST_SYNTAX* = (0x00000003)
+ SDP_ERROR_INVALID_PDU_SIZE* = (0x00000004)
+ SDP_ERROR_INVALID_CONTINUATION_STATE* = (0x00000005)
+ SDP_ERROR_INSUFFICIENT_RESOURCES* = (0x00000006)
+#
+# Defined by windows to handle server errors that are not described by the
+# above errors. Start at 0x0100 so we don't go anywhere near the spec
+# defined values.
+#
+#
+# Success, nothing went wrong
+#
+const
+ SDP_ERROR_SUCCESS* = SDP_ERROR(0x00000000)
+#
+# The SDP PDU or parameters other than the SDP stream response was not correct
+#
+const
+ SDP_ERROR_SERVER_INVALID_RESPONSE* = SDP_ERROR(0x00000100)
+#
+# The SDP response stream did not parse correctly.
+#
+const
+ SDP_ERROR_SERVER_RESPONSE_DID_NOT_PARSE* = SDP_ERROR(0x00000200)
+#
+# The SDP response stream was successfully parsed, but did not match the
+# required format for the query.
+#
+const
+ SDP_ERROR_SERVER_BAD_FORMAT* = SDP_ERROR(0x00000300)
+#
+# SDP was unable to send a continued query back to the server
+#
+const
+ SDP_ERROR_COULD_NOT_SEND_CONTINUE* = SDP_ERROR(0x00000400)
+#
+# Server sent a response that was too large to fit in the caller's buffer.
+#
+const
+ SDP_ERROR_RESPONSE_TOO_LARGE* = SDP_ERROR(0x00000500)
+ SDP_ATTRIB_RECORD_HANDLE* = (0x00000000)
+ SDP_ATTRIB_CLASS_ID_LIST* = (0x00000001)
+ SDP_ATTRIB_RECORD_STATE* = (0x00000002)
+ SDP_ATTRIB_SERVICE_ID* = (0x00000003)
+ SDP_ATTRIB_PROTOCOL_DESCRIPTOR_LIST* = (0x00000004)
+ SDP_ATTRIB_BROWSE_GROUP_LIST* = (0x00000005)
+ SDP_ATTRIB_LANG_BASE_ATTRIB_ID_LIST* = (0x00000006)
+ SDP_ATTRIB_INFO_TIME_TO_LIVE* = (0x00000007)
+ SDP_ATTRIB_AVAILABILITY* = (0x00000008)
+ SDP_ATTRIB_PROFILE_DESCRIPTOR_LIST* = (0x00000009)
+ SDP_ATTRIB_DOCUMENTATION_URL* = (0x0000000A)
+ SDP_ATTRIB_CLIENT_EXECUTABLE_URL* = (0x0000000B)
+ SDP_ATTRIB_ICON_URL* = (0x0000000C)
+ SDP_ATTRIB_ADDITIONAL_PROTOCOL_DESCRIPTOR_LIST* = (0x0000000D)
+#
+# Attribute IDs in the range of 0x000D - 0x01FF are reserved for future use
+#
+const
+ SDP_ATTRIB_PROFILE_SPECIFIC* = (0x00000200)
+ LANG_BASE_LANGUAGE_INDEX* = (0x00000000)
+ LANG_BASE_ENCODING_INDEX* = (0x00000001)
+ LANG_BASE_OFFSET_INDEX* = (0x00000002)
+ LANG_DEFAULT_ID* = (0x00000100)
+ LANGUAGE_EN_US* = (0x0000656E)
+ ENCODING_UTF_8* = (0x0000006A)
+ STRING_NAME_OFFSET* = (0x00000000)
+ STRING_DESCRIPTION_OFFSET* = (0x00000001)
+ STRING_PROVIDER_NAME_OFFSET* = (0x00000002)
+ SDP_ATTRIB_SDP_VERSION_NUMBER_LIST* = (0x00000200)
+ SDP_ATTRIB_SDP_DATABASE_STATE* = (0x00000201)
+ SDP_ATTRIB_BROWSE_GROUP_ID* = (0x00000200)
+ SDP_ATTRIB_CORDLESS_EXTERNAL_NETWORK* = (0x00000301)
+ SDP_ATTRIB_FAX_CLASS_1_SUPPORT* = (0x00000302)
+ SDP_ATTRIB_FAX_CLASS_2_0_SUPPORT* = (0x00000303)
+ SDP_ATTRIB_FAX_CLASS_2_SUPPORT* = (0x00000304)
+ SDP_ATTRIB_FAX_AUDIO_FEEDBACK_SUPPORT* = (0x00000305)
+ SDP_ATTRIB_HEADSET_REMOTE_AUDIO_VOLUME_CONTROL* = (0x00000302)
+ SDP_ATTRIB_LAN_LPSUBNET* = (0x00000200)
+ SDP_ATTRIB_OBJECT_PUSH_SUPPORTED_FORMATS_LIST* = (0x00000303)
+ SDP_ATTRIB_SYNCH_SUPPORTED_DATA_STORES_LIST* = (0x00000301)
+# this is in the assigned numbers doc, but it does not show up in any profile
+const
+ SDP_ATTRIB_SERVICE_VERSION* = (0x00000300)
+ SDP_ATTRIB_PAN_NETWORK_ADDRESS* = (0x00000306)
+ SDP_ATTRIB_PAN_WAP_GATEWAY* = (0x00000307)
+ SDP_ATTRIB_PAN_HOME_PAGE_URL* = (0x00000308)
+ SDP_ATTRIB_PAN_WAP_STACK_TYPE* = (0x00000309)
+ SDP_ATTRIB_PAN_SECURITY_DESCRIPTION* = (0x0000030A)
+ SDP_ATTRIB_PAN_NET_ACCESS_TYPE* = (0x0000030B)
+ SDP_ATTRIB_PAN_MAX_NET_ACCESS_RATE* = (0x0000030C)
+ SDP_ATTRIB_IMAGING_SUPPORTED_CAPABILITIES* = (0x00000310)
+ SDP_ATTRIB_IMAGING_SUPPORTED_FEATURES* = (0x00000311)
+ SDP_ATTRIB_IMAGING_SUPPORTED_FUNCTIONS* = (0x00000312)
+ SDP_ATTRIB_IMAGING_TOTAL_DATA_CAPACITY* = (0x00000313)
+ SDP_ATTRIB_DI_SPECIFICATION_ID* = (0x00000200)
+ SDP_ATTRIB_DI_VENDOR_ID* = (0x00000201)
+ SDP_ATTRIB_DI_PRODUCT_ID* = (0x00000202)
+ SDP_ATTRIB_DI_VERSION* = (0x00000203)
+ SDP_ATTRIB_DI_PRIMARY_RECORD* = (0x00000204)
+ SDP_ATTRIB_DI_VENDOR_ID_SOURCE* = (0x00000205)
+ SDP_ATTRIB_HID_DEVICE_RELEASE_NUMBER* = (0x00000200)
+ SDP_ATTRIB_HID_PARSER_VERSION* = (0x00000201)
+ SDP_ATTRIB_HID_DEVICE_SUBCLASS* = (0x00000202)
+ SDP_ATTRIB_HID_COUNTRY_CODE* = (0x00000203)
+ SDP_ATTRIB_HID_VIRTUAL_CABLE* = (0x00000204)
+ SDP_ATTRIB_HID_RECONNECT_INITIATE* = (0x00000205)
+ SDP_ATTRIB_HID_DESCRIPTOR_LIST* = (0x00000206)
+ SDP_ATTRIB_HID_LANG_ID_BASE_LIST* = (0x00000207)
+ SDP_ATTRIB_HID_SDP_DISABLE* = (0x00000208)
+ SDP_ATTRIB_HID_BATTERY_POWER* = (0x00000209)
+ SDP_ATTRIB_HID_REMOTE_WAKE* = (0x0000020A)
+ SDP_ATTRIB_HID_PROFILE_VERSION* = (0x0000020B)
+ SDP_ATTRIB_HID_SUPERVISION_TIMEOUT* = (0x0000020C)
+ SDP_ATTRIB_HID_NORMALLY_CONNECTABLE* = (0x0000020D)
+ SDP_ATTRIB_HID_BOOT_DEVICE* = (0x0000020E)
+ SDP_ATTRIB_HID_SSR_HOST_MAX_LATENCY* = (0x0000020F)
+ SDP_ATTRIB_HID_SSR_HOST_MIN_TIMEOUT* = (0x00000210)
+#
+# Profile specific values
+#
+const
+ CORDLESS_EXTERNAL_NETWORK_PSTN* = (0x00000001)
+ CORDLESS_EXTERNAL_NETWORK_ISDN* = (0x00000002)
+ CORDLESS_EXTERNAL_NETWORK_GSM* = (0x00000003)
+ CORDLESS_EXTERNAL_NETWORK_CDMA* = (0x00000004)
+ CORDLESS_EXTERNAL_NETWORK_ANALOG_CELLULAR* = (0x00000005)
+ CORDLESS_EXTERNAL_NETWORK_PACKET_SWITCHED* = (0x00000006)
+ CORDLESS_EXTERNAL_NETWORK_OTHER* = (0x00000007)
+ OBJECT_PUSH_FORMAT_VCARD_2_1* = (0x00000001)
+ OBJECT_PUSH_FORMAT_VCARD_3_0* = (0x00000002)
+ OBJECT_PUSH_FORMAT_VCAL_1_0* = (0x00000003)
+ OBJECT_PUSH_FORMAT_ICAL_2_0* = (0x00000004)
+ OBJECT_PUSH_FORMAT_VNOTE* = (0x00000005)
+ OBJECT_PUSH_FORMAT_VMESSAGE* = (0x00000006)
+ OBJECT_PUSH_FORMAT_ANY* = (0x000000FF)
+ SYNCH_DATA_STORE_PHONEBOOK* = (0x00000001)
+ SYNCH_DATA_STORE_CALENDAR* = (0x00000003)
+ SYNCH_DATA_STORE_NOTES* = (0x00000005)
+ SYNCH_DATA_STORE_MESSAGES* = (0x00000006)
+ DI_VENDOR_ID_SOURCE_BLUETOOTH_SIG* = (0x00000001)
+ DI_VENDOR_ID_SOURCE_USB_IF* = (0x00000002)
+ PSM_SDP* = (0x00000001)
+ PSM_RFCOMM* = (0x00000003)
+ PSM_TCS_BIN* = (0x00000005)
+ PSM_TCS_BIN_CORDLESS* = (0x00000007)
+ PSM_BNEP* = (0x0000000F)
+ PSM_HID_CONTROL* = (0x00000011)
+ PSM_HID_INTERRUPT* = (0x00000013)
+ PSM_AVCTP* = (0x00000017)
+ PSM_AVDTP* = (0x00000019)
+ PSM_UDI_C_PLANE* = (0x0000001D)
+#
+# Strings
+#
+const
+ STR_ADDR_FMTA* = "(%02x:%02x:%02x:%02x:%02x:%02x)"
+const
+ STR_ADDR_SHORT_FMTA* = "%04x%08x"
+const
+ STR_USBHCI_CLASS_HARDWAREIDA* = "USB\x08Class_E0&SubClass_01&Prot_01"
+when defined(UNICODE) or defined(BTH_KERN):
+ const
+ STR_ADDR_FMT* = STR_ADDR_FMTW
+ STR_ADDR_SHORT_FMT* = STR_ADDR_SHORT_FMTW
+ STR_USBHCI_CLASS_HARDWAREID* = STR_USBHCI_CLASS_HARDWAREIDW
+else:
+ const
+ STR_ADDR_FMT* = STR_ADDR_FMTA
+ STR_ADDR_SHORT_FMT* = STR_ADDR_SHORT_FMTA
+ STR_USBHCI_CLASS_HARDWAREID* = STR_USBHCI_CLASS_HARDWAREIDA
+
+template GET_BITS*(field, offset, mask: expr): expr =
+ (((field) shr (offset)) and (mask))
+
+template GET_BIT*(field, offset: expr): expr =
+ (GET_BITS(field, offset, 0x00000001))
+
+template LMP_3_SLOT_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 0))
+
+template LMP_5_SLOT_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 1))
+
+template LMP_ENCRYPTION*(x: expr): expr =
+ (GET_BIT(x, 2))
+
+template LMP_SLOT_OFFSET*(x: expr): expr =
+ (GET_BIT(x, 3))
+
+template LMP_TIMING_ACCURACY*(x: expr): expr =
+ (GET_BIT(x, 4))
+
+template LMP_SWITCH*(x: expr): expr =
+ (GET_BIT(x, 5))
+
+template LMP_HOLD_MODE*(x: expr): expr =
+ (GET_BIT(x, 6))
+
+template LMP_SNIFF_MODE*(x: expr): expr =
+ (GET_BIT(x, 7))
+
+template LMP_PARK_MODE*(x: expr): expr =
+ (GET_BIT(x, 8))
+
+template LMP_RSSI*(x: expr): expr =
+ (GET_BIT(x, 9))
+
+template LMP_CHANNEL_QUALITY_DRIVEN_MODE*(x: expr): expr =
+ (GET_BIT(x, 10))
+
+template LMP_SCO_LINK*(x: expr): expr =
+ (GET_BIT(x, 11))
+
+template LMP_HV2_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 12))
+
+template LMP_HV3_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 13))
+
+template LMP_MU_LAW_LOG*(x: expr): expr =
+ (GET_BIT(x, 14))
+
+template LMP_A_LAW_LOG*(x: expr): expr =
+ (GET_BIT(x, 15))
+
+template LMP_CVSD*(x: expr): expr =
+ (GET_BIT(x, 16))
+
+template LMP_PAGING_SCHEME*(x: expr): expr =
+ (GET_BIT(x, 17))
+
+template LMP_POWER_CONTROL*(x: expr): expr =
+ (GET_BIT(x, 18))
+
+template LMP_TRANSPARENT_SCO_DATA*(x: expr): expr =
+ (GET_BIT(x, 19))
+
+template LMP_FLOW_CONTROL_LAG*(x: expr): expr =
+ (GET_BITS(x, 20, 0x00000003))
+
+template LMP_BROADCAST_ENCRYPTION*(x: expr): expr =
+ (GET_BIT(x, 23))
+
+template LMP_ENHANCED_DATA_RATE_ACL_2MBPS_MODE*(x: expr): expr =
+ (GET_BIT(x, 25))
+
+template LMP_ENHANCED_DATA_RATE_ACL_3MBPS_MODE*(x: expr): expr =
+ (GET_BIT(x, 26))
+
+template LMP_ENHANCED_INQUIRY_SCAN*(x: expr): expr =
+ (GET_BIT(x, 27))
+
+template LMP_INTERLACED_INQUIRY_SCAN*(x: expr): expr =
+ (GET_BIT(x, 28))
+
+template LMP_INTERLACED_PAGE_SCAN*(x: expr): expr =
+ (GET_BIT(x, 29))
+
+template LMP_RSSI_WITH_INQUIRY_RESULTS*(x: expr): expr =
+ (GET_BIT(x, 30))
+
+template LMP_ESCO_LINK*(x: expr): expr =
+ (GET_BIT(x, 31))
+
+template LMP_EV4_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 32))
+
+template LMP_EV5_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 33))
+
+template LMP_AFH_CAPABLE_SLAVE*(x: expr): expr =
+ (GET_BIT(x, 35))
+
+template LMP_AFH_CLASSIFICATION_SLAVE*(x: expr): expr =
+ (GET_BIT(x, 36))
+
+template LMP_BR_EDR_NOT_SUPPORTED*(x: expr): expr =
+ (GET_BIT(x, 37))
+
+template LMP_LE_SUPPORTED*(x: expr): expr =
+ (GET_BIT(x, 38))
+
+template LMP_3SLOT_EDR_ACL_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 39))
+
+template LMP_5SLOT_EDR_ACL_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 40))
+
+template LMP_SNIFF_SUBRATING*(x: expr): expr =
+ (GET_BIT(x, 41))
+
+template LMP_PAUSE_ENCRYPTION*(x: expr): expr =
+ (GET_BIT(x, 42))
+
+template LMP_AFH_CAPABLE_MASTER*(x: expr): expr =
+ (GET_BIT(x, 43))
+
+template LMP_AFH_CLASSIFICATION_MASTER*(x: expr): expr =
+ (GET_BIT(x, 44))
+
+template LMP_EDR_ESCO_2MBPS_MODE*(x: expr): expr =
+ (GET_BIT(x, 45))
+
+template LMP_EDR_ESCO_3MBPS_MODE*(x: expr): expr =
+ (GET_BIT(x, 46))
+
+template LMP_3SLOT_EDR_ESCO_PACKETS*(x: expr): expr =
+ (GET_BIT(x, 47))
+
+template LMP_EXTENDED_INQUIRY_RESPONSE*(x: expr): expr =
+ (GET_BIT(x, 48))
+
+template LMP_SIMULT_LE_BR_TO_SAME_DEV*(x: expr): expr =
+ (GET_BIT(x, 49))
+
+template LMP_SECURE_SIMPLE_PAIRING*(x: expr): expr =
+ (GET_BIT(x, 51))
+
+template LMP_ENCAPSULATED_PDU*(x: expr): expr =
+ (GET_BIT(x, 52))
+
+template LMP_ERRONEOUS_DATA_REPORTING*(x: expr): expr =
+ (GET_BIT(x, 53))
+
+template LMP_NON_FLUSHABLE_PACKET_BOUNDARY_FLAG*(x: expr): expr =
+ (GET_BIT(x, 54))
+
+template LMP_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT*(x: expr): expr =
+ (GET_BIT(x, 56))
+
+template LMP_INQUIRY_RESPONSE_TX_POWER_LEVEL*(x: expr): expr =
+ (GET_BIT(x, 57))
+
+template LMP_EXTENDED_FEATURES*(x: expr): expr =
+ (GET_BIT(x, 63))