diff options
Diffstat (limited to 'nimbluez/msbt/ms_bthdef.nim')
| -rw-r--r-- | nimbluez/msbt/ms_bthdef.nim | 1279 |
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)) |
