//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (770)
//--------------------------------------------------------------------------------
pub const BT_PORT_MIN = @as(u32, 1);
pub const BT_PORT_MAX = @as(u32, 65535);
pub const BT_PORT_DYN_FIRST = @as(u32, 4097);
pub const AF_BTH = @as(u16, 32);
pub const PF_BTH = @as(u16, 32);
pub const NS_BTH = @as(u32, 16);
pub const SVCID_BTH_PROVIDER = Guid.initString("06aa63e0-7d60-41ff-afb2-3ee6d2d9392d");
pub const BTH_ADDR_STRING_SIZE = @as(u32, 12);
pub const BTHPROTO_RFCOMM = @as(u32, 3);
pub const BTHPROTO_L2CAP = @as(u32, 256);
pub const SOL_RFCOMM = @as(u32, 3);
pub const SOL_L2CAP = @as(u32, 256);
pub const SOL_SDP = @as(u32, 257);
pub const SO_BTH_AUTHENTICATE = @as(u32, 2147483649);
pub const SO_BTH_ENCRYPT = @as(u32, 2);
pub const SO_BTH_MTU = @as(u32, 2147483655);
pub const SO_BTH_MTU_MAX = @as(u32, 2147483656);
pub const SO_BTH_MTU_MIN = @as(u32, 2147483658);
pub const RFCOMM_MAX_MTU = @as(u32, 1011);
pub const RFCOMM_MIN_MTU = @as(u32, 23);
pub const BTH_SDP_VERSION = @as(u32, 1);
pub const SDP_DEFAULT_INQUIRY_SECONDS = @as(u32, 6);
pub const SDP_MAX_INQUIRY_SECONDS = @as(u32, 60);
pub const SDP_DEFAULT_INQUIRY_MAX_RESPONSES = @as(u32, 255);
pub const SDP_SERVICE_SEARCH_REQUEST = @as(u32, 1);
pub const SDP_SERVICE_ATTRIBUTE_REQUEST = @as(u32, 2);
pub const SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST = @as(u32, 3);
pub const BTHNS_RESULT_DEVICE_CONNECTED = @as(u32, 65536);
pub const BTHNS_RESULT_DEVICE_REMEMBERED = @as(u32, 131072);
pub const BTHNS_RESULT_DEVICE_AUTHENTICATED = @as(u32, 262144);
pub const RLS_ERROR = @as(u32, 1);
pub const RLS_OVERRUN = @as(u32, 2);
pub const RLS_PARITY = @as(u32, 4);
pub const RLS_FRAMING = @as(u32, 8);
pub const RPN_BAUD_2400 = @as(u32, 0);
pub const RPN_BAUD_4800 = @as(u32, 1);
pub const RPN_BAUD_7200 = @as(u32, 2);
pub const RPN_BAUD_9600 = @as(u32, 3);
pub const RPN_BAUD_19200 = @as(u32, 4);
pub const RPN_BAUD_38400 = @as(u32, 5);
pub const RPN_BAUD_57600 = @as(u32, 6);
pub const RPN_BAUD_115200 = @as(u32, 7);
pub const RPN_BAUD_230400 = @as(u32, 8);
pub const RPN_DATA_5 = @as(u32, 0);
pub const RPN_DATA_6 = @as(u32, 1);
pub const RPN_DATA_7 = @as(u32, 2);
pub const RPN_DATA_8 = @as(u32, 3);
pub const RPN_STOP_1 = @as(u32, 0);
pub const RPN_STOP_1_5 = @as(u32, 4);
pub const RPN_PARITY_NONE = @as(u32, 0);
pub const RPN_PARITY_ODD = @as(u32, 8);
pub const RPN_PARITY_EVEN = @as(u32, 24);
pub const RPN_PARITY_MARK = @as(u32, 40);
pub const RPN_PARITY_SPACE = @as(u32, 56);
pub const RPN_FLOW_X_IN = @as(u32, 1);
pub const RPN_FLOW_X_OUT = @as(u32, 2);
pub const RPN_FLOW_RTR_IN = @as(u32, 4);
pub const RPN_FLOW_RTR_OUT = @as(u32, 8);
pub const RPN_FLOW_RTC_IN = @as(u32, 16);
pub const RPN_FLOW_RTC_OUT = @as(u32, 32);
pub const RPN_PARAM_BAUD = @as(u32, 1);
pub const RPN_PARAM_DATA = @as(u32, 2);
pub const RPN_PARAM_STOP = @as(u32, 4);
pub const RPN_PARAM_PARITY = @as(u32, 8);
pub const RPN_PARAM_P_TYPE = @as(u32, 16);
pub const RPN_PARAM_XON = @as(u32, 32);
pub const RPN_PARAM_XOFF = @as(u32, 64);
pub const RPN_PARAM_X_IN = @as(u32, 1);
pub const RPN_PARAM_X_OUT = @as(u32, 2);
pub const RPN_PARAM_RTR_IN = @as(u32, 4);
pub const RPN_PARAM_RTR_OUT = @as(u32, 8);
pub const RPN_PARAM_RTC_IN = @as(u32, 16);
pub const RPN_PARAM_RTC_OUT = @as(u32, 32);
pub const RFCOMM_CMD_NONE = @as(u32, 0);
pub const RFCOMM_CMD_MSC = @as(u32, 1);
pub const RFCOMM_CMD_RLS = @as(u32, 2);
pub const RFCOMM_CMD_RPN = @as(u32, 3);
pub const RFCOMM_CMD_RPN_REQUEST = @as(u32, 4);
pub const RFCOMM_CMD_RPN_RESPONSE = @as(u32, 5);
pub const BLUETOOTH_MAX_NAME_SIZE = @as(u32, 248);
pub const BLUETOOTH_MAX_PASSKEY_SIZE = @as(u32, 16);
pub const BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE = @as(u32, 17);
pub const BLUETOOTH_MAX_SERVICE_NAME_SIZE = @as(u32, 256);
pub const BLUETOOTH_DEVICE_NAME_SIZE = @as(u32, 256);
pub const BLUETOOTH_SERVICE_DISABLE = @as(u32, 0);
pub const BLUETOOTH_SERVICE_ENABLE = @as(u32, 1);
pub const GUID_BLUETOOTHLE_DEVICE_INTERFACE = Guid.initString("781aee18-7733-4ce4-add0-91f41c67b592");
pub const GUID_BLUETOOTH_GATT_SERVICE_DEVICE_INTERFACE = Guid.initString("6e3bb679-4372-40c8-9eaa-4509df260cd8");
pub const BTH_LE_ATT_BLUETOOTH_BASE_GUID = Guid.initString("00000000-0000-1000-8000-00805f9b34fb");
pub const BTH_LE_SERVICE_GAP = @as(u32, 6144);
pub const BTH_LE_SERVICE_GATT = @as(u32, 6145);
pub const BTH_LE_GATT_ATTRIBUTE_TYPE_PRIMARY_SERVICE = @as(u32, 10240);
pub const BTH_LE_GATT_ATTRIBUTE_TYPE_SECONDARY_SERVICE = @as(u32, 10241);
pub const BTH_LE_GATT_ATTRIBUTE_TYPE_INCLUDE = @as(u32, 10242);
pub const BTH_LE_GATT_ATTRIBUTE_TYPE_CHARACTERISTIC = @as(u32, 10243);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_EXTENDED_PROPERTIES = @as(u32, 10496);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_USER_DESCRIPTION = @as(u32, 10497);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_CLIENT_CONFIGURATION = @as(u32, 10498);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_SERVER_CONFIGURATION = @as(u32, 10499);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_FORMAT = @as(u32, 10500);
pub const BTH_LE_GATT_CHARACTERISTIC_DESCRIPTOR_AGGREGATE_FORMAT = @as(u32, 10501);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_DEVICE_NAME = @as(u32, 10752);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_APPEARANCE = @as(u32, 10753);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_PERIPHERAL_PRIVACY_FLAG = @as(u32, 10754);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_RECONNECTION_ADDRESS = @as(u32, 10755);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_PERIPHERAL_PREFERED_CONNECTION_PARAMETER = @as(u32, 10756);
pub const BTH_LE_GATT_CHARACTERISTIC_TYPE_SERVICE_CHANGED = @as(u32, 10757);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_OFFSET = @as(u32, 6);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_MASK = @as(u32, 1023);
pub const BTH_LE_GAP_APPEARANCE_SUB_CATEGORY_MASK = @as(u32, 63);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_UNCATEGORIZED = @as(u32, 0);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_PHONE = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_COMPUTER = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_WATCH = @as(u32, 3);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_CLOCK = @as(u32, 4);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_DISPLAY = @as(u32, 5);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_REMOTE_CONTROL = @as(u32, 6);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_EYE_GLASSES = @as(u32, 7);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_TAG = @as(u32, 8);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_KEYRING = @as(u32, 9);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_MEDIA_PLAYER = @as(u32, 10);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_BARCODE_SCANNER = @as(u32, 11);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_THERMOMETER = @as(u32, 12);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_HEART_RATE = @as(u32, 13);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_BLOOD_PRESSURE = @as(u32, 14);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_HID = @as(u32, 15);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_GLUCOSE_METER = @as(u32, 16);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_RUNNING_WALKING_SENSOR = @as(u32, 17);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_CYCLING = @as(u32, 18);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_PLUSE_OXIMETER = @as(u32, 49);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_WEIGHT_SCALE = @as(u32, 50);
pub const BTH_LE_GAP_APPEARANCE_CATEGORY_OUTDOOR_SPORTS_ACTIVITY = @as(u32, 81);
pub const BTH_LE_GAP_APPEARANCE_SUBCATEGORY_GENERIC = @as(u32, 0);
pub const BTH_LE_GAP_APPEARANCE_WATCH_SUBCATEGORY_SPORTS_WATCH = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_THERMOMETER_SUBCATEGORY_EAR = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_HEART_RATE_SUBCATEGORY_HEART_RATE_BELT = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_BLOOD_PRESSURE_SUBCATEGORY_ARM = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_BLOOD_PRESSURE_SUBCATEGORY_WRIST = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_KEYBOARD = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_MOUSE = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_JOYSTICK = @as(u32, 3);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_GAMEPAD = @as(u32, 4);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_DIGITIZER_TABLET = @as(u32, 5);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_CARD_READER = @as(u32, 6);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_DIGITAL_PEN = @as(u32, 7);
pub const BTH_LE_GAP_APPEARANCE_HID_SUBCATEGORY_BARCODE_SCANNER = @as(u32, 8);
pub const BTH_LE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_SUBCATEGORY_IN_SHOE = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_SUBCATEGORY_ON_SHOE = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_RUNNING_WALKING_SENSOR_SUBCATEGORY_ON_HIP = @as(u32, 3);
pub const BTH_LE_GAP_APPEARANCE_CYCLING_SUBCATEGORY_CYCLING_COMPUTER = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_CYCLING_SUBCATEGORY_SPEED_SENSOR = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_CYCLING_SUBCATEGORY_CADENCE_SENSOR = @as(u32, 3);
pub const BTH_LE_GAP_APPEARANCE_CYCLING_SUBCATEGORY_POWER_SENSOR = @as(u32, 4);
pub const BTH_LE_GAP_APPEARANCE_CYCLING_SUBCATEGORY_SPEED_AND_CADENCE_SENSOR = @as(u32, 5);
pub const BTH_LE_GAP_APPEARANCE_PULSE_OXIMETER_SUBCATEGORY_FINGERTIP = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_PULSE_OXIMETER_SUBCATEGORY_WRIST_WORN = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACTIVITY_SUBCATEGORY_LOCATION_DISPLAY_DEVICE = @as(u32, 1);
pub const BTH_LE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACTIVITY_SUBCATEGORY_LOCATION_NAVIGATION_DISPLAY_DEVICE = @as(u32, 2);
pub const BTH_LE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACTIVITY_SUBCATEGORY_LOCATION_POD = @as(u32, 3);
pub const BTH_LE_GAP_APPEARANCE_OUTDOOR_SPORTS_ACTIVITY_SUBCATEGORY_LOCATION_NAVIGATION_POD = @as(u32, 4);
pub const BTH_LE_GATT_DEFAULT_MAX_INCLUDED_SERVICES_DEPTH = @as(u32, 3);
pub const BTH_LE_ATT_TRANSACTION_TIMEOUT = @as(u32, 30);
pub const BTH_LE_ATT_MAX_VALUE_SIZE = @as(u32, 512);
pub const BTH_LE_ATT_CID = @as(u32, 4);
pub const BTHLEENUM_ATT_MTU_MIN = @as(u32, 23);
pub const BTHLEENUM_ATT_MTU_MAX = @as(u32, 65535);
pub const BTHLEENUM_ATT_MTU_DEFAULT = @as(u32, 23);
pub const BTHLEENUM_ATT_MTU_INITIAL_NEGOTIATION = @as(u32, 525);
pub const BTH_LE_ERROR_INVALID_HANDLE = @as(u32, 1);
pub const BTH_LE_ERROR_READ_NOT_PERMITTED = @as(u32, 2);
pub const BTH_LE_ERROR_WRITE_NOT_PERMITTED = @as(u32, 3);
pub const BTH_LE_ERROR_INVALID_PDU = @as(u32, 4);
pub const BTH_LE_ERROR_INSUFFICIENT_AUTHENTICATION = @as(u32, 5);
pub const BTH_LE_ERROR_REQUEST_NOT_SUPPORTED = @as(u32, 6);
pub const BTH_LE_ERROR_INVALID_OFFSET = @as(u32, 7);
pub const BTH_LE_ERROR_INSUFFICIENT_AUTHORIZATION = @as(u32, 8);
pub const BTH_LE_ERROR_PREPARE_QUEUE_FULL = @as(u32, 9);
pub const BTH_LE_ERROR_ATTRIBUTE_NOT_FOUND = @as(u32, 10);
pub const BTH_LE_ERROR_ATTRIBUTE_NOT_LONG = @as(u32, 11);
pub const BTH_LE_ERROR_INSUFFICIENT_ENCRYPTION_KEY_SIZE = @as(u32, 12);
pub const BTH_LE_ERROR_INVALID_ATTRIBUTE_VALUE_LENGTH = @as(u32, 13);
pub const BTH_LE_ERROR_UNLIKELY = @as(u32, 14);
pub const BTH_LE_ERROR_INSUFFICIENT_ENCRYPTION = @as(u32, 15);
pub const BTH_LE_ERROR_UNSUPPORTED_GROUP_TYPE = @as(u32, 16);
pub const BTH_LE_ERROR_INSUFFICIENT_RESOURCES = @as(u32, 17);
pub const BTH_LE_ERROR_UNKNOWN = @as(u32, 4096);
pub const BLUETOOTH_GATT_FLAG_NONE = @as(u32, 0);
pub const BLUETOOTH_GATT_FLAG_CONNECTION_ENCRYPTED = @as(u32, 1);
pub const BLUETOOTH_GATT_FLAG_CONNECTION_AUTHENTICATED = @as(u32, 2);
pub const BLUETOOTH_GATT_FLAG_FORCE_READ_FROM_DEVICE = @as(u32, 4);
pub const BLUETOOTH_GATT_FLAG_FORCE_READ_FROM_CACHE = @as(u32, 8);
pub const BLUETOOTH_GATT_FLAG_SIGNED_WRITE = @as(u32, 16);
pub const BLUETOOTH_GATT_FLAG_WRITE_WITHOUT_RESPONSE = @as(u32, 32);
pub const BLUETOOTH_GATT_FLAG_RETURN_ALL = @as(u32, 64);
pub const BTH_MAJORVERSION = @as(u32, 2);
pub const BTH_MINORVERSION = @as(u32, 1);
pub const GUID_BTHPORT_DEVICE_INTERFACE = Guid.initString("0850302a-b344-4fda-9be9-90576b8d46f0");
pub const GUID_BTH_RFCOMM_SERVICE_DEVICE_INTERFACE = Guid.initString("b142fc3e-fa4e-460b-8abc-072b628b3c70");
pub const GUID_BLUETOOTH_RADIO_IN_RANGE = Guid.initString("ea3b5b82-26ee-450e-b0d8-d26fe30a3869");
pub const GUID_BLUETOOTH_RADIO_OUT_OF_RANGE = Guid.initString("e28867c9-c2aa-4ced-b969-4570866037c4");
pub const GUID_BLUETOOTH_L2CAP_EVENT = Guid.initString("7eae4030-b709-4aa8-ac55-e953829c9daa");
pub const GUID_BLUETOOTH_HCI_EVENT = Guid.initString("fc240062-1541-49be-b463-84c4dcd7bf7f");
pub const GUID_BLUETOOTH_AUTHENTICATION_REQUEST = Guid.initString("5dc9136d-996c-46db-84f5-32c0a3f47352");
pub const GUID_BLUETOOTH_KEYPRESS_EVENT = Guid.initString("d668dfcd-0f4e-4efc-bfe0-392eeec5109c");
pub const GUID_BLUETOOTH_HCI_VENDOR_EVENT = Guid.initString("547247e6-45bb-4c33-af8c-c00efe15a71d");
pub const Bluetooth_Base_UUID = Guid.initString("00000000-0000-1000-8000-00805f9b34fb");
pub const SDP_PROTOCOL_UUID16 = @as(u32, 1);
pub const UDP_PROTOCOL_UUID16 = @as(u32, 2);
pub const RFCOMM_PROTOCOL_UUID16 = @as(u32, 3);
pub const TCP_PROTOCOL_UUID16 = @as(u32, 4);
pub const TCSBIN_PROTOCOL_UUID16 = @as(u32, 5);
pub const TCSAT_PROTOCOL_UUID16 = @as(u32, 6);
pub const ATT_PROTOCOL_UUID16 = @as(u32, 7);
pub const OBEX_PROTOCOL_UUID16 = @as(u32, 8);
pub const IP_PROTOCOL_UUID16 = @as(u32, 9);
pub const FTP_PROTOCOL_UUID16 = @as(u32, 10);
pub const HTTP_PROTOCOL_UUID16 = @as(u32, 12);
pub const WSP_PROTOCOL_UUID16 = @as(u32, 14);
pub const BNEP_PROTOCOL_UUID16 = @as(u32, 15);
pub const UPNP_PROTOCOL_UUID16 = @as(u32, 16);
pub const HID_PROTOCOL_UUID16 = @as(u32, 17);
pub const HCCC_PROTOCOL_UUID16 = @as(u32, 18);
pub const HCDC_PROTOCOL_UUID16 = @as(u32, 20);
pub const HCN_PROTOCOL_UUID16 = @as(u32, 22);
pub const AVCTP_PROTOCOL_UUID16 = @as(u32, 23);
pub const AVDTP_PROTOCOL_UUID16 = @as(u32, 25);
pub const CMPT_PROTOCOL_UUID16 = @as(u32, 27);
pub const UDI_C_PLANE_PROTOCOL_UUID16 = @as(u32, 29);
pub const L2CAP_PROTOCOL_UUID16 = @as(u32, 256);
pub const ServiceDiscoveryServerServiceClassID_UUID16 = @as(u32, 4096);
pub const BrowseGroupDescriptorServiceClassID_UUID16 = @as(u32, 4097);
pub const PublicBrowseGroupServiceClassID_UUID16 = @as(u32, 4098);
pub const SerialPortServiceClassID_UUID16 = @as(u32, 4353);
pub const LANAccessUsingPPPServiceClassID_UUID16 = @as(u32, 4354);
pub const DialupNetworkingServiceClassID_UUID16 = @as(u32, 4355);
pub const IrMCSyncServiceClassID_UUID16 = @as(u32, 4356);
pub const OBEXObjectPushServiceClassID_UUID16 = @as(u32, 4357);
pub const OBEXFileTransferServiceClassID_UUID16 = @as(u32, 4358);
pub const IrMcSyncCommandServiceClassID_UUID16 = @as(u32, 4359);
pub const HeadsetServiceClassID_UUID16 = @as(u32, 4360);
pub const CordlessTelephonyServiceClassID_UUID16 = @as(u32, 4361);
pub const AudioSourceServiceClassID_UUID16 = @as(u32, 4362);
pub const AudioSinkServiceClassID_UUID16 = @as(u32, 4363);
pub const AVRemoteControlTargetServiceClassID_UUID16 = @as(u32, 4364);
pub const AVRemoteControlServiceClassID_UUID16 = @as(u32, 4366);
pub const AVRemoteControlControllerServiceClass_UUID16 = @as(u32, 4367);
pub const IntercomServiceClassID_UUID16 = @as(u32, 4368);
pub const FaxServiceClassID_UUID16 = @as(u32, 4369);
pub const HeadsetAudioGatewayServiceClassID_UUID16 = @as(u32, 4370);
pub const WAPServiceClassID_UUID16 = @as(u32, 4371);
pub const WAPClientServiceClassID_UUID16 = @as(u32, 4372);
pub const PANUServiceClassID_UUID16 = @as(u32, 4373);
pub const NAPServiceClassID_UUID16 = @as(u32, 4374);
pub const GNServiceClassID_UUID16 = @as(u32, 4375);
pub const DirectPrintingServiceClassID_UUID16 = @as(u32, 4376);
pub const ReferencePrintingServiceClassID_UUID16 = @as(u32, 4377);
pub const ImagingResponderServiceClassID_UUID16 = @as(u32, 4379);
pub const ImagingAutomaticArchiveServiceClassID_UUID16 = @as(u32, 4380);
pub const ImagingReferenceObjectsServiceClassID_UUID16 = @as(u32, 4381);
pub const HandsfreeServiceClassID_UUID16 = @as(u32, 4382);
pub const HandsfreeAudioGatewayServiceClassID_UUID16 = @as(u32, 4383);
pub const DirectPrintingReferenceObjectsServiceClassID_UUID16 = @as(u32, 4384);
pub const ReflectsUIServiceClassID_UUID16 = @as(u32, 4385);
pub const PrintingStatusServiceClassID_UUID16 = @as(u32, 4387);
pub const HumanInterfaceDeviceServiceClassID_UUID16 = @as(u32, 4388);
pub const HCRPrintServiceClassID_UUID16 = @as(u32, 4390);
pub const HCRScanServiceClassID_UUID16 = @as(u32, 4391);
pub const CommonISDNAccessServiceClassID_UUID16 = @as(u32, 4392);
pub const VideoConferencingGWServiceClassID_UUID16 = @as(u32, 4393);
pub const UDIMTServiceClassID_UUID16 = @as(u32, 4394);
pub const UDITAServiceClassID_UUID16 = @as(u32, 4395);
pub const AudioVideoServiceClassID_UUID16 = @as(u32, 4396);
pub const SimAccessServiceClassID_UUID16 = @as(u32, 4397);
pub const PhonebookAccessPceServiceClassID_UUID16 = @as(u32, 4398);
pub const PhonebookAccessPseServiceClassID_UUID16 = @as(u32, 4399);
pub const HeadsetHSServiceClassID_UUID16 = @as(u32, 4401);
pub const MessageAccessServerServiceClassID_UUID16 = @as(u32, 4402);
pub const MessageNotificationServerServiceClassID_UUID16 = @as(u32, 4403);
pub const GNSSServerServiceClassID_UUID16 = @as(u32, 4406);
pub const ThreeDimensionalDisplayServiceClassID_UUID16 = @as(u32, 4407);
pub const ThreeDimensionalGlassesServiceClassID_UUID16 = @as(u32, 4408);
pub const MPSServiceClassID_UUID16 = @as(u32, 4411);
pub const CTNAccessServiceClassID_UUID16 = @as(u32, 4412);
pub const CTNNotificationServiceClassID_UUID16 = @as(u32, 4413);
pub const PnPInformationServiceClassID_UUID16 = @as(u32, 4608);
pub const GenericNetworkingServiceClassID_UUID16 = @as(u32, 4609);
pub const GenericFileTransferServiceClassID_UUID16 = @as(u32, 4610);
pub const GenericAudioServiceClassID_UUID16 = @as(u32, 4611);
pub const GenericTelephonyServiceClassID_UUID16 = @as(u32, 4612);
pub const UPnpServiceClassID_UUID16 = @as(u32, 4613);
pub const UPnpIpServiceClassID_UUID16 = @as(u32, 4614);
pub const ESdpUpnpIpPanServiceClassID_UUID16 = @as(u32, 4864);
pub const ESdpUpnpIpLapServiceClassID_UUID16 = @as(u32, 4865);
pub const ESdpUpnpL2capServiceClassID_UUID16 = @as(u32, 4866);
pub const VideoSourceServiceClassID_UUID16 = @as(u32, 4867);
pub const VideoSinkServiceClassID_UUID16 = @as(u32, 4868);
pub const HealthDeviceProfileSourceServiceClassID_UUID16 = @as(u32, 5121);
pub const HealthDeviceProfileSinkServiceClassID_UUID16 = @as(u32, 5122);
pub const AdvancedAudioDistributionProfileID_UUID16 = @as(u32, 4365);
pub const ImagingServiceProfileID_UUID16 = @as(u32, 4378);
pub const BasicPrintingProfileID_UUID16 = @as(u32, 4386);
pub const HardcopyCableReplacementProfileID_UUID16 = @as(u32, 4389);
pub const PhonebookAccessProfileID_UUID16 = @as(u32, 4400);
pub const MessageAccessProfileID_UUID16 = @as(u32, 4404);
pub const GNSSProfileID_UUID16 = @as(u32, 4405);
pub const ThreeDimensionalSynchronizationProfileID_UUID16 = @as(u32, 4409);
pub const MPSProfileID_UUID16 = @as(u32, 4410);
pub const CTNProfileID_UUID16 = @as(u32, 4414);
pub const VideoDistributionProfileID_UUID16 = @as(u32, 4869);
pub const HealthDeviceProfileID_UUID16 = @as(u32, 5120);
pub const VideoConferencingServiceClassID_UUID16 = @as(u32, 4367);
pub const CommonISDNAccessServiceClass_UUID16 = @as(u32, 4392);
pub const VideoConferencingGWServiceClass_UUID16 = @as(u32, 4393);
pub const UDIMTServiceClass_UUID16 = @as(u32, 4394);
pub const UDITAServiceClass_UUID16 = @as(u32, 4395);
pub const AudioVideoServiceClass_UUID16 = @as(u32, 4396);
pub const CordlessServiceClassID_UUID16 = @as(u32, 4361);
pub const AudioSinkSourceServiceClassID_UUID16 = @as(u32, 4363);
pub const AdvancedAudioDistributionServiceClassID_UUID16 = @as(u32, 4365);
pub const ImagingServiceClassID_UUID16 = @as(u32, 4378);
pub const BasicPrintingServiceClassID_UUID16 = @as(u32, 4386);
pub const HardcopyCableReplacementServiceClassID_UUID16 = @as(u32, 4389);
pub const BTH_MAX_NAME_SIZE = @as(u32, 248);
pub const BTH_MAX_PIN_SIZE = @as(u32, 16);
pub const BTH_LINK_KEY_LENGTH = @as(u32, 16);
pub const BTH_MFG_ERICSSON = @as(u32, 0);
pub const BTH_MFG_NOKIA = @as(u32, 1);
pub const BTH_MFG_INTEL = @as(u32, 2);
pub const BTH_MFG_IBM = @as(u32, 3);
pub const BTH_MFG_TOSHIBA = @as(u32, 4);
pub const BTH_MFG_3COM = @as(u32, 5);
pub const BTH_MFG_MICROSOFT = @as(u32, 6);
pub const BTH_MFG_LUCENT = @as(u32, 7);
pub const BTH_MFG_MOTOROLA = @as(u32, 8);
pub const BTH_MFG_INFINEON = @as(u32, 9);
pub const BTH_MFG_CSR = @as(u32, 10);
pub const BTH_MFG_SILICONWAVE = @as(u32, 11);
pub const BTH_MFG_DIGIANSWER = @as(u32, 12);
pub const BTH_MFG_TI = @as(u32, 13);
pub const BTH_MFG_PARTHUS = @as(u32, 14);
pub const BTH_MFG_BROADCOM = @as(u32, 15);
pub const BTH_MFG_MITEL = @as(u32, 16);
pub const BTH_MFG_WIDCOMM = @as(u32, 17);
pub const BTH_MFG_ZEEVO = @as(u32, 18);
pub const BTH_MFG_ATMEL = @as(u32, 19);
pub const BTH_MFG_MITSIBUSHI = @as(u32, 20);
pub const BTH_MFG_RTX_TELECOM = @as(u32, 21);
pub const BTH_MFG_KC_TECHNOLOGY = @as(u32, 22);
pub const BTH_MFG_NEWLOGIC = @as(u32, 23);
pub const BTH_MFG_TRANSILICA = @as(u32, 24);
pub const BTH_MFG_ROHDE_SCHWARZ = @as(u32, 25);
pub const BTH_MFG_TTPCOM = @as(u32, 26);
pub const BTH_MFG_SIGNIA = @as(u32, 27);
pub const BTH_MFG_CONEXANT = @as(u32, 28);
pub const BTH_MFG_QUALCOMM = @as(u32, 29);
pub const BTH_MFG_INVENTEL = @as(u32, 30);
pub const BTH_MFG_AVM_BERLIN = @as(u32, 31);
pub const BTH_MFG_BANDSPEED = @as(u32, 32);
pub const BTH_MFG_MANSELLA = @as(u32, 33);
pub const BTH_MFG_NEC = @as(u32, 34);
pub const BTH_MFG_WAVEPLUS_TECHNOLOGY_CO = @as(u32, 35);
pub const BTH_MFG_ALCATEL = @as(u32, 36);
pub const BTH_MFG_PHILIPS_SEMICONDUCTOR = @as(u32, 37);
pub const BTH_MFG_C_TECHNOLOGIES = @as(u32, 38);
pub const BTH_MFG_OPEN_INTERFACE = @as(u32, 39);
pub const BTH_MFG_RF_MICRO_DEVICES = @as(u32, 40);
pub const BTH_MFG_HITACHI = @as(u32, 41);
pub const BTH_MFG_SYMBOL_TECHNOLOGIES = @as(u32, 42);
pub const BTH_MFG_TENOVIS = @as(u32, 43);
pub const BTH_MFG_MACRONIX_INTERNATIONAL = @as(u32, 44);
pub const BTH_MFG_MARVELL = @as(u32, 72);
pub const BTH_MFG_APPLE = @as(u32, 76);
pub const BTH_MFG_NORDIC_SEMICONDUCTORS_ASA = @as(u32, 89);
pub const BTH_MFG_ARUBA_NETWORKS = @as(u32, 283);
pub const BTH_MFG_INTERNAL_USE = @as(u32, 65535);
pub const SAP_BIT_OFFSET = @as(u32, 0);
pub const COD_FORMAT_BIT_OFFSET = @as(u32, 0);
pub const COD_MINOR_BIT_OFFSET = @as(u32, 2);
pub const COD_FORMAT_MASK = @as(u32, 3);
pub const COD_MINOR_MASK = @as(u32, 252);
pub const COD_MAJOR_MASK = @as(u32, 7936);
pub const COD_SERVICE_MASK = @as(u32, 16769024);
pub const COD_VERSION = @as(u32, 0);
pub const COD_SERVICE_LIMITED = @as(u32, 1);
pub const COD_SERVICE_POSITIONING = @as(u32, 8);
pub const COD_SERVICE_NETWORKING = @as(u32, 16);
pub const COD_SERVICE_RENDERING = @as(u32, 32);
pub const COD_SERVICE_CAPTURING = @as(u32, 64);
pub const COD_SERVICE_OBJECT_XFER = @as(u32, 128);
pub const COD_SERVICE_AUDIO = @as(u32, 256);
pub const COD_SERVICE_TELEPHONY = @as(u32, 512);
pub const COD_SERVICE_INFORMATION = @as(u32, 1024);
pub const COD_SERVICE_MAX_COUNT = @as(u32, 9);
pub const COD_MAJOR_MISCELLANEOUS = @as(u32, 0);
pub const COD_MAJOR_COMPUTER = @as(u32, 1);
pub const COD_MAJOR_PHONE = @as(u32, 2);
pub const COD_MAJOR_LAN_ACCESS = @as(u32, 3);
pub const COD_MAJOR_AUDIO = @as(u32, 4);
pub const COD_MAJOR_PERIPHERAL = @as(u32, 5);
pub const COD_MAJOR_IMAGING = @as(u32, 6);
pub const COD_MAJOR_WEARABLE = @as(u32, 7);
pub const COD_MAJOR_TOY = @as(u32, 8);
pub const COD_MAJOR_HEALTH = @as(u32, 9);
pub const COD_MAJOR_UNCLASSIFIED = @as(u32, 31);
pub const COD_COMPUTER_MINOR_UNCLASSIFIED = @as(u32, 0);
pub const COD_COMPUTER_MINOR_DESKTOP = @as(u32, 1);
pub const COD_COMPUTER_MINOR_SERVER = @as(u32, 2);
pub const COD_COMPUTER_MINOR_LAPTOP = @as(u32, 3);
pub const COD_COMPUTER_MINOR_HANDHELD = @as(u32, 4);
pub const COD_COMPUTER_MINOR_PALM = @as(u32, 5);
pub const COD_COMPUTER_MINOR_WEARABLE = @as(u32, 6);
pub const COD_PHONE_MINOR_UNCLASSIFIED = @as(u32, 0);
pub const COD_PHONE_MINOR_CELLULAR = @as(u32, 1);
pub const COD_PHONE_MINOR_CORDLESS = @as(u32, 2);
pub const COD_PHONE_MINOR_SMART = @as(u32, 3);
pub const COD_PHONE_MINOR_WIRED_MODEM = @as(u32, 4);
pub const COD_AUDIO_MINOR_UNCLASSIFIED = @as(u32, 0);
pub const COD_AUDIO_MINOR_HEADSET = @as(u32, 1);
pub const COD_AUDIO_MINOR_HANDS_FREE = @as(u32, 2);
pub const COD_AUDIO_MINOR_HEADSET_HANDS_FREE = @as(u32, 3);
pub const COD_AUDIO_MINOR_MICROPHONE = @as(u32, 4);
pub const COD_AUDIO_MINOR_LOUDSPEAKER = @as(u32, 5);
pub const COD_AUDIO_MINOR_HEADPHONES = @as(u32, 6);
pub const COD_AUDIO_MINOR_PORTABLE_AUDIO = @as(u32, 7);
pub const COD_AUDIO_MINOR_CAR_AUDIO = @as(u32, 8);
pub const COD_AUDIO_MINOR_SET_TOP_BOX = @as(u32, 9);
pub const COD_AUDIO_MINOR_HIFI_AUDIO = @as(u32, 10);
pub const COD_AUDIO_MINOR_VCR = @as(u32, 11);
pub const COD_AUDIO_MINOR_VIDEO_CAMERA = @as(u32, 12);
pub const COD_AUDIO_MINOR_CAMCORDER = @as(u32, 13);
pub const COD_AUDIO_MINOR_VIDEO_MONITOR = @as(u32, 14);
pub const COD_AUDIO_MINOR_VIDEO_DISPLAY_LOUDSPEAKER = @as(u32, 15);
pub const COD_AUDIO_MINOR_VIDEO_DISPLAY_CONFERENCING = @as(u32, 16);
pub const COD_AUDIO_MINOR_GAMING_TOY = @as(u32, 18);
pub const COD_PERIPHERAL_MINOR_KEYBOARD_MASK = @as(u32, 16);
pub const COD_PERIPHERAL_MINOR_POINTER_MASK = @as(u32, 32);
pub const COD_PERIPHERAL_MINOR_NO_CATEGORY = @as(u32, 0);
pub const COD_PERIPHERAL_MINOR_JOYSTICK = @as(u32, 1);
pub const COD_PERIPHERAL_MINOR_GAMEPAD = @as(u32, 2);
pub const COD_PERIPHERAL_MINOR_REMOTE_CONTROL = @as(u32, 3);
pub const COD_PERIPHERAL_MINOR_SENSING = @as(u32, 4);
pub const COD_IMAGING_MINOR_DISPLAY_MASK = @as(u32, 4);
pub const COD_IMAGING_MINOR_CAMERA_MASK = @as(u32, 8);
pub const COD_IMAGING_MINOR_SCANNER_MASK = @as(u32, 16);
pub const COD_IMAGING_MINOR_PRINTER_MASK = @as(u32, 32);
pub const COD_WEARABLE_MINOR_WRIST_WATCH = @as(u32, 1);
pub const COD_WEARABLE_MINOR_PAGER = @as(u32, 2);
pub const COD_WEARABLE_MINOR_JACKET = @as(u32, 3);
pub const COD_WEARABLE_MINOR_HELMET = @as(u32, 4);
pub const COD_WEARABLE_MINOR_GLASSES = @as(u32, 5);
pub const COD_TOY_MINOR_ROBOT = @as(u32, 1);
pub const COD_TOY_MINOR_VEHICLE = @as(u32, 2);
pub const COD_TOY_MINOR_DOLL_ACTION_FIGURE = @as(u32, 3);
pub const COD_TOY_MINOR_CONTROLLER = @as(u32, 4);
pub const COD_TOY_MINOR_GAME = @as(u32, 5);
pub const COD_HEALTH_MINOR_BLOOD_PRESSURE_MONITOR = @as(u32, 1);
pub const COD_HEALTH_MINOR_THERMOMETER = @as(u32, 2);
pub const COD_HEALTH_MINOR_WEIGHING_SCALE = @as(u32, 3);
pub const COD_HEALTH_MINOR_GLUCOSE_METER = @as(u32, 4);
pub const COD_HEALTH_MINOR_PULSE_OXIMETER = @as(u32, 5);
pub const COD_HEALTH_MINOR_HEART_PULSE_MONITOR = @as(u32, 6);
pub const COD_HEALTH_MINOR_HEALTH_DATA_DISPLAY = @as(u32, 7);
pub const COD_HEALTH_MINOR_STEP_COUNTER = @as(u32, 8);
pub const COD_LAN_ACCESS_BIT_OFFSET = @as(u32, 5);
pub const COD_LAN_MINOR_MASK = @as(u32, 28);
pub const COD_LAN_ACCESS_MASK = @as(u32, 224);
pub const COD_LAN_MINOR_UNCLASSIFIED = @as(u32, 0);
pub const COD_LAN_ACCESS_0_USED = @as(u32, 0);
pub const COD_LAN_ACCESS_17_USED = @as(u32, 1);
pub const COD_LAN_ACCESS_33_USED = @as(u32, 2);
pub const COD_LAN_ACCESS_50_USED = @as(u32, 3);
pub const COD_LAN_ACCESS_67_USED = @as(u32, 4);
pub const COD_LAN_ACCESS_83_USED = @as(u32, 5);
pub const COD_LAN_ACCESS_99_USED = @as(u32, 6);
pub const COD_LAN_ACCESS_FULL = @as(u32, 7);
pub const BTH_EIR_FLAGS_ID = @as(u32, 1);
pub const BTH_EIR_16_UUIDS_PARTIAL_ID = @as(u32, 2);
pub const BTH_EIR_16_UUIDS_COMPLETE_ID = @as(u32, 3);
pub const BTH_EIR_32_UUIDS_PARTIAL_ID = @as(u32, 4);
pub const BTH_EIR_32_UUIDS_COMPLETE_ID = @as(u32, 5);
pub const BTH_EIR_128_UUIDS_PARTIAL_ID = @as(u32, 6);
pub const BTH_EIR_128_UUIDS_COMPLETE_ID = @as(u32, 7);
pub const BTH_EIR_LOCAL_NAME_PARTIAL_ID = @as(u32, 8);
pub const BTH_EIR_LOCAL_NAME_COMPLETE_ID = @as(u32, 9);
pub const BTH_EIR_TX_POWER_LEVEL_ID = @as(u32, 10);
pub const BTH_EIR_OOB_OPT_DATA_LEN_ID = @as(u32, 11);
pub const BTH_EIR_OOB_BD_ADDR_ID = @as(u32, 12);
pub const BTH_EIR_OOB_COD_ID = @as(u32, 13);
pub const BTH_EIR_OOB_SP_HASH_ID = @as(u32, 14);
pub const BTH_EIR_OOB_SP_RANDOMIZER_ID = @as(u32, 15);
pub const BTH_EIR_MANUFACTURER_ID = @as(u32, 255);
pub const BTH_EIR_SIZE = @as(u32, 240);
pub const LAP_GIAC_VALUE = @as(u32, 10390323);
pub const LAP_LIAC_VALUE = @as(u32, 10390272);
pub const BTH_ADDR_IAC_FIRST = @as(u32, 10390272);
pub const BTH_ADDR_IAC_LAST = @as(u32, 10390335);
pub const BTH_ADDR_LIAC = @as(u32, 10390272);
pub const BTH_ADDR_GIAC = @as(u32, 10390323);
pub const BTH_ERROR_SUCCESS = @as(u32, 0);
pub const BTH_ERROR_UNKNOWN_HCI_COMMAND = @as(u32, 1);
pub const BTH_ERROR_NO_CONNECTION = @as(u32, 2);
pub const BTH_ERROR_HARDWARE_FAILURE = @as(u32, 3);
pub const BTH_ERROR_PAGE_TIMEOUT = @as(u32, 4);
pub const BTH_ERROR_AUTHENTICATION_FAILURE = @as(u32, 5);
pub const BTH_ERROR_KEY_MISSING = @as(u32, 6);
pub const BTH_ERROR_MEMORY_FULL = @as(u32, 7);
pub const BTH_ERROR_CONNECTION_TIMEOUT = @as(u32, 8);
pub const BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS = @as(u32, 9);
pub const BTH_ERROR_MAX_NUMBER_OF_SCO_CONNECTIONS = @as(u32, 10);
pub const BTH_ERROR_ACL_CONNECTION_ALREADY_EXISTS = @as(u32, 11);
pub const BTH_ERROR_COMMAND_DISALLOWED = @as(u32, 12);
pub const BTH_ERROR_HOST_REJECTED_LIMITED_RESOURCES = @as(u32, 13);
pub const BTH_ERROR_HOST_REJECTED_SECURITY_REASONS = @as(u32, 14);
pub const BTH_ERROR_HOST_REJECTED_PERSONAL_DEVICE = @as(u32, 15);
pub const BTH_ERROR_HOST_TIMEOUT = @as(u32, 16);
pub const BTH_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER = @as(u32, 17);
pub const BTH_ERROR_INVALID_HCI_PARAMETER = @as(u32, 18);
pub const BTH_ERROR_REMOTE_USER_ENDED_CONNECTION = @as(u32, 19);
pub const BTH_ERROR_REMOTE_LOW_RESOURCES = @as(u32, 20);
pub const BTH_ERROR_REMOTE_POWERING_OFF = @as(u32, 21);
pub const BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION = @as(u32, 22);
pub const BTH_ERROR_REPEATED_ATTEMPTS = @as(u32, 23);
pub const BTH_ERROR_PAIRING_NOT_ALLOWED = @as(u32, 24);
pub const BTH_ERROR_UKNOWN_LMP_PDU = @as(u32, 25);
pub const BTH_ERROR_UNSUPPORTED_REMOTE_FEATURE = @as(u32, 26);
pub const BTH_ERROR_SCO_OFFSET_REJECTED = @as(u32, 27);
pub const BTH_ERROR_SCO_INTERVAL_REJECTED = @as(u32, 28);
pub const BTH_ERROR_SCO_AIRMODE_REJECTED = @as(u32, 29);
pub const BTH_ERROR_INVALID_LMP_PARAMETERS = @as(u32, 30);
pub const BTH_ERROR_UNSPECIFIED_ERROR = @as(u32, 31);
pub const BTH_ERROR_UNSUPPORTED_LMP_PARM_VALUE = @as(u32, 32);
pub const BTH_ERROR_ROLE_CHANGE_NOT_ALLOWED = @as(u32, 33);
pub const BTH_ERROR_LMP_RESPONSE_TIMEOUT = @as(u32, 34);
pub const BTH_ERROR_LMP_TRANSACTION_COLLISION = @as(u32, 35);
pub const BTH_ERROR_LMP_PDU_NOT_ALLOWED = @as(u32, 36);
pub const BTH_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE = @as(u32, 37);
pub const BTH_ERROR_UNIT_KEY_NOT_USED = @as(u32, 38);
pub const BTH_ERROR_QOS_IS_NOT_SUPPORTED = @as(u32, 39);
pub const BTH_ERROR_INSTANT_PASSED = @as(u32, 40);
pub const BTH_ERROR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = @as(u32, 41);
pub const BTH_ERROR_DIFFERENT_TRANSACTION_COLLISION = @as(u32, 42);
pub const BTH_ERROR_QOS_UNACCEPTABLE_PARAMETER = @as(u32, 44);
pub const BTH_ERROR_QOS_REJECTED = @as(u32, 45);
pub const BTH_ERROR_CHANNEL_CLASSIFICATION_NOT_SUPPORTED = @as(u32, 46);
pub const BTH_ERROR_INSUFFICIENT_SECURITY = @as(u32, 47);
pub const BTH_ERROR_PARAMETER_OUT_OF_MANDATORY_RANGE = @as(u32, 48);
pub const BTH_ERROR_ROLE_SWITCH_PENDING = @as(u32, 50);
pub const BTH_ERROR_RESERVED_SLOT_VIOLATION = @as(u32, 52);
pub const BTH_ERROR_ROLE_SWITCH_FAILED = @as(u32, 53);
pub const BTH_ERROR_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE = @as(u32, 54);
pub const BTH_ERROR_SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = @as(u32, 55);
pub const BTH_ERROR_HOST_BUSY_PAIRING = @as(u32, 56);
pub const BTH_ERROR_CONNECTION_REJECTED_DUE_TO_NO_SUITABLE_CHANNEL_FOUND = @as(u32, 57);
pub const BTH_ERROR_CONTROLLER_BUSY = @as(u32, 58);
pub const BTH_ERROR_UNACCEPTABLE_CONNECTION_INTERVAL = @as(u32, 59);
pub const BTH_ERROR_DIRECTED_ADVERTISING_TIMEOUT = @as(u32, 60);
pub const BTH_ERROR_CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE = @as(u32, 61);
pub const BTH_ERROR_CONNECTION_FAILED_TO_BE_ESTABLISHED = @as(u32, 62);
pub const BTH_ERROR_MAC_CONNECTION_FAILED = @as(u32, 63);
pub const BTH_ERROR_COARSE_CLOCK_ADJUSTMENT_REJECTED = @as(u32, 64);
pub const BTH_ERROR_TYPE_0_SUBMAP_NOT_DEFINED = @as(u32, 65);
pub const BTH_ERROR_UNKNOWN_ADVERTISING_IDENTIFIER = @as(u32, 66);
pub const BTH_ERROR_LIMIT_REACHED = @as(u32, 67);
pub const BTH_ERROR_OPERATION_CANCELLED_BY_HOST = @as(u32, 68);
pub const BTH_ERROR_PACKET_TOO_LONG = @as(u32, 69);
pub const BTH_ERROR_UNSPECIFIED = @as(u32, 255);
pub const L2CAP_MIN_MTU = @as(u32, 48);
pub const L2CAP_MAX_MTU = @as(u32, 65535);
pub const L2CAP_DEFAULT_MTU = @as(u32, 672);
pub const MAX_L2CAP_PING_DATA_LENGTH = @as(u32, 44);
pub const MAX_L2CAP_INFO_DATA_LENGTH = @as(u32, 44);
pub const BDIF_ADDRESS = @as(u32, 1);
pub const BDIF_COD = @as(u32, 2);
pub const BDIF_NAME = @as(u32, 4);
pub const BDIF_PAIRED = @as(u32, 8);
pub const BDIF_PERSONAL = @as(u32, 16);
pub const BDIF_CONNECTED = @as(u32, 32);
pub const BDIF_SHORT_NAME = @as(u32, 64);
pub const BDIF_VISIBLE = @as(u32, 128);
pub const BDIF_SSP_SUPPORTED = @as(u32, 256);
pub const BDIF_SSP_PAIRED = @as(u32, 512);
pub const BDIF_SSP_MITM_PROTECTED = @as(u32, 1024);
pub const BDIF_RSSI = @as(u32, 4096);
pub const BDIF_EIR = @as(u32, 8192);
pub const BDIF_BR = @as(u32, 16384);
pub const BDIF_LE = @as(u32, 32768);
pub const BDIF_LE_PAIRED = @as(u32, 65536);
pub const BDIF_LE_PERSONAL = @as(u32, 131072);
pub const BDIF_LE_MITM_PROTECTED = @as(u32, 262144);
pub const BDIF_LE_PRIVACY_ENABLED = @as(u32, 524288);
pub const BDIF_LE_RANDOM_ADDRESS_TYPE = @as(u32, 1048576);
pub const BDIF_LE_DISCOVERABLE = @as(u32, 2097152);
pub const BDIF_LE_NAME = @as(u32, 4194304);
pub const BDIF_LE_VISIBLE = @as(u32, 8388608);
pub const BDIF_LE_CONNECTED = @as(u32, 16777216);
pub const BDIF_LE_CONNECTABLE = @as(u32, 33554432);
pub const BDIF_CONNECTION_INBOUND = @as(u32, 67108864);
pub const BDIF_BR_SECURE_CONNECTION_PAIRED = @as(u32, 134217728);
pub const BDIF_LE_SECURE_CONNECTION_PAIRED = @as(u32, 268435456);
pub const BDIF_DEBUGKEY = @as(u32, 536870912);
pub const BDIF_LE_DEBUGKEY = @as(u32, 1073741824);
pub const BDIF_TX_POWER = @as(u32, 2147483648);
pub const HCI_CONNECTION_TYPE_ACL = @as(u32, 1);
pub const HCI_CONNECTION_TYPE_SCO = @as(u32, 2);
pub const HCI_CONNECTION_TYPE_LE = @as(u32, 3);
pub const HCI_CONNNECTION_TYPE_ACL = @as(u32, 1);
pub const HCI_CONNNECTION_TYPE_SCO = @as(u32, 2);
pub const BTH_MAX_SERVICE_NAME_SIZE = @as(u32, 256);
pub const MAX_UUIDS_IN_QUERY = @as(u32, 12);
pub const BTH_VID_DEFAULT_VALUE = @as(u32, 65535);
pub const SDP_ERROR_INVALID_SDP_VERSION = @as(u32, 1);
pub const SDP_ERROR_INVALID_RECORD_HANDLE = @as(u32, 2);
pub const SDP_ERROR_INVALID_REQUEST_SYNTAX = @as(u32, 3);
pub const SDP_ERROR_INVALID_PDU_SIZE = @as(u32, 4);
pub const SDP_ERROR_INVALID_CONTINUATION_STATE = @as(u32, 5);
pub const SDP_ERROR_INSUFFICIENT_RESOURCES = @as(u32, 6);
pub const SDP_ATTRIB_RECORD_HANDLE = @as(u32, 0);
pub const SDP_ATTRIB_CLASS_ID_LIST = @as(u32, 1);
pub const SDP_ATTRIB_RECORD_STATE = @as(u32, 2);
pub const SDP_ATTRIB_SERVICE_ID = @as(u32, 3);
pub const SDP_ATTRIB_PROTOCOL_DESCRIPTOR_LIST = @as(u32, 4);
pub const SDP_ATTRIB_BROWSE_GROUP_LIST = @as(u32, 5);
pub const SDP_ATTRIB_LANG_BASE_ATTRIB_ID_LIST = @as(u32, 6);
pub const SDP_ATTRIB_INFO_TIME_TO_LIVE = @as(u32, 7);
pub const SDP_ATTRIB_AVAILABILITY = @as(u32, 8);
pub const SDP_ATTRIB_PROFILE_DESCRIPTOR_LIST = @as(u32, 9);
pub const SDP_ATTRIB_DOCUMENTATION_URL = @as(u32, 10);
pub const SDP_ATTRIB_CLIENT_EXECUTABLE_URL = @as(u32, 11);
pub const SDP_ATTRIB_ICON_URL = @as(u32, 12);
pub const SDP_ATTRIB_ADDITIONAL_PROTOCOL_DESCRIPTOR_LIST = @as(u32, 13);
pub const SDP_ATTRIB_PROFILE_SPECIFIC = @as(u32, 512);
pub const LANG_BASE_LANGUAGE_INDEX = @as(u32, 0);
pub const LANG_BASE_ENCODING_INDEX = @as(u32, 1);
pub const LANG_BASE_OFFSET_INDEX = @as(u32, 2);
pub const LANG_DEFAULT_ID = @as(u32, 256);
pub const LANGUAGE_EN_US = @as(u32, 25966);
pub const ENCODING_UTF_8 = @as(u32, 106);
pub const STRING_NAME_OFFSET = @as(u32, 0);
pub const STRING_DESCRIPTION_OFFSET = @as(u32, 1);
pub const STRING_PROVIDER_NAME_OFFSET = @as(u32, 2);
pub const SDP_ATTRIB_SDP_VERSION_NUMBER_LIST = @as(u32, 512);
pub const SDP_ATTRIB_SDP_DATABASE_STATE = @as(u32, 513);
pub const SDP_ATTRIB_BROWSE_GROUP_ID = @as(u32, 512);
pub const SDP_ATTRIB_CORDLESS_EXTERNAL_NETWORK = @as(u32, 769);
pub const SDP_ATTRIB_FAX_CLASS_1_SUPPORT = @as(u32, 770);
pub const SDP_ATTRIB_FAX_CLASS_2_0_SUPPORT = @as(u32, 771);
pub const SDP_ATTRIB_FAX_CLASS_2_SUPPORT = @as(u32, 772);
pub const SDP_ATTRIB_FAX_AUDIO_FEEDBACK_SUPPORT = @as(u32, 773);
pub const SDP_ATTRIB_HEADSET_REMOTE_AUDIO_VOLUME_CONTROL = @as(u32, 770);
pub const SDP_ATTRIB_LAN_LPSUBNET = @as(u32, 512);
pub const SDP_ATTRIB_OBJECT_PUSH_SUPPORTED_FORMATS_LIST = @as(u32, 771);
pub const SDP_ATTRIB_SYNCH_SUPPORTED_DATA_STORES_LIST = @as(u32, 769);
pub const SDP_ATTRIB_SERVICE_VERSION = @as(u32, 768);
pub const SDP_ATTRIB_PAN_NETWORK_ADDRESS = @as(u32, 774);
pub const SDP_ATTRIB_PAN_WAP_GATEWAY = @as(u32, 775);
pub const SDP_ATTRIB_PAN_HOME_PAGE_URL = @as(u32, 776);
pub const SDP_ATTRIB_PAN_WAP_STACK_TYPE = @as(u32, 777);
pub const SDP_ATTRIB_PAN_SECURITY_DESCRIPTION = @as(u32, 778);
pub const SDP_ATTRIB_PAN_NET_ACCESS_TYPE = @as(u32, 779);
pub const SDP_ATTRIB_PAN_MAX_NET_ACCESS_RATE = @as(u32, 780);
pub const SDP_ATTRIB_IMAGING_SUPPORTED_CAPABILITIES = @as(u32, 784);
pub const SDP_ATTRIB_IMAGING_SUPPORTED_FEATURES = @as(u32, 785);
pub const SDP_ATTRIB_IMAGING_SUPPORTED_FUNCTIONS = @as(u32, 786);
pub const SDP_ATTRIB_IMAGING_TOTAL_DATA_CAPACITY = @as(u32, 787);
pub const SDP_ATTRIB_DI_SPECIFICATION_ID = @as(u32, 512);
pub const SDP_ATTRIB_DI_VENDOR_ID = @as(u32, 513);
pub const SDP_ATTRIB_DI_PRODUCT_ID = @as(u32, 514);
pub const SDP_ATTRIB_DI_VERSION = @as(u32, 515);
pub const SDP_ATTRIB_DI_PRIMARY_RECORD = @as(u32, 516);
pub const SDP_ATTRIB_DI_VENDOR_ID_SOURCE = @as(u32, 517);
pub const SDP_ATTRIB_HID_DEVICE_RELEASE_NUMBER = @as(u32, 512);
pub const SDP_ATTRIB_HID_PARSER_VERSION = @as(u32, 513);
pub const SDP_ATTRIB_HID_DEVICE_SUBCLASS = @as(u32, 514);
pub const SDP_ATTRIB_HID_COUNTRY_CODE = @as(u32, 515);
pub const SDP_ATTRIB_HID_VIRTUAL_CABLE = @as(u32, 516);
pub const SDP_ATTRIB_HID_RECONNECT_INITIATE = @as(u32, 517);
pub const SDP_ATTRIB_HID_DESCRIPTOR_LIST = @as(u32, 518);
pub const SDP_ATTRIB_HID_LANG_ID_BASE_LIST = @as(u32, 519);
pub const SDP_ATTRIB_HID_SDP_DISABLE = @as(u32, 520);
pub const SDP_ATTRIB_HID_BATTERY_POWER = @as(u32, 521);
pub const SDP_ATTRIB_HID_REMOTE_WAKE = @as(u32, 522);
pub const SDP_ATTRIB_HID_PROFILE_VERSION = @as(u32, 523);
pub const SDP_ATTRIB_HID_SUPERVISION_TIMEOUT = @as(u32, 524);
pub const SDP_ATTRIB_HID_NORMALLY_CONNECTABLE = @as(u32, 525);
pub const SDP_ATTRIB_HID_BOOT_DEVICE = @as(u32, 526);
pub const SDP_ATTRIB_HID_SSR_HOST_MAX_LATENCY = @as(u32, 527);
pub const SDP_ATTRIB_HID_SSR_HOST_MIN_TIMEOUT = @as(u32, 528);
pub const SDP_ATTRIB_A2DP_SUPPORTED_FEATURES = @as(u32, 785);
pub const SDP_ATTRIB_AVRCP_SUPPORTED_FEATURES = @as(u32, 785);
pub const SDP_ATTRIB_HFP_SUPPORTED_FEATURES = @as(u32, 785);
pub const AVRCP_SUPPORTED_FEATURES_CATEGORY_1 = @as(u32, 1);
pub const AVRCP_SUPPORTED_FEATURES_CATEGORY_2 = @as(u32, 2);
pub const AVRCP_SUPPORTED_FEATURES_CATEGORY_3 = @as(u32, 4);
pub const AVRCP_SUPPORTED_FEATURES_CATEGORY_4 = @as(u32, 8);
pub const AVRCP_SUPPORTED_FEATURES_CT_BROWSING = @as(u32, 64);
pub const AVRCP_SUPPORTED_FEATURES_CT_COVER_ART_IMAGE_PROPERTIES = @as(u32, 128);
pub const AVRCP_SUPPORTED_FEATURES_CT_COVER_ART_IMAGE = @as(u32, 256);
pub const AVRCP_SUPPORTED_FEATURES_CT_COVER_ART_LINKED_THUMBNAIL = @as(u32, 512);
pub const AVRCP_SUPPORTED_FEATURES_TG_PLAYER_APPLICATION_SETTINGS = @as(u32, 16);
pub const AVRCP_SUPPORTED_FEATURES_TG_GROUP_NAVIGATION = @as(u32, 32);
pub const AVRCP_SUPPORTED_FEATURES_TG_BROWSING = @as(u32, 64);
pub const AVRCP_SUPPORTED_FEATURES_TG_MULTIPLE_PLAYER_APPLICATIONS = @as(u32, 128);
pub const AVRCP_SUPPORTED_FEATURES_TG_COVER_ART = @as(u32, 256);
pub const A2DP_SINK_SUPPORTED_FEATURES_HEADPHONE = @as(u32, 1);
pub const A2DP_SINK_SUPPORTED_FEATURES_SPEAKER = @as(u32, 2);
pub const A2DP_SINK_SUPPORTED_FEATURES_RECORDER = @as(u32, 4);
pub const A2DP_SINK_SUPPORTED_FEATURES_AMPLIFIER = @as(u32, 8);
pub const A2DP_SOURCE_SUPPORTED_FEATURES_PLAYER = @as(u32, 1);
pub const A2DP_SOURCE_SUPPORTED_FEATURES_MICROPHONE = @as(u32, 2);
pub const A2DP_SOURCE_SUPPORTED_FEATURES_TUNER = @as(u32, 4);
pub const A2DP_SOURCE_SUPPORTED_FEATURES_MIXER = @as(u32, 8);
pub const CORDLESS_EXTERNAL_NETWORK_PSTN = @as(u32, 1);
pub const CORDLESS_EXTERNAL_NETWORK_ISDN = @as(u32, 2);
pub const CORDLESS_EXTERNAL_NETWORK_GSM = @as(u32, 3);
pub const CORDLESS_EXTERNAL_NETWORK_CDMA = @as(u32, 4);
pub const CORDLESS_EXTERNAL_NETWORK_ANALOG_CELLULAR = @as(u32, 5);
pub const CORDLESS_EXTERNAL_NETWORK_PACKET_SWITCHED = @as(u32, 6);
pub const CORDLESS_EXTERNAL_NETWORK_OTHER = @as(u32, 7);
pub const OBJECT_PUSH_FORMAT_VCARD_2_1 = @as(u32, 1);
pub const OBJECT_PUSH_FORMAT_VCARD_3_0 = @as(u32, 2);
pub const OBJECT_PUSH_FORMAT_VCAL_1_0 = @as(u32, 3);
pub const OBJECT_PUSH_FORMAT_ICAL_2_0 = @as(u32, 4);
pub const OBJECT_PUSH_FORMAT_VNOTE = @as(u32, 5);
pub const OBJECT_PUSH_FORMAT_VMESSAGE = @as(u32, 6);
pub const OBJECT_PUSH_FORMAT_ANY = @as(u32, 255);
pub const SYNCH_DATA_STORE_PHONEBOOK = @as(u32, 1);
pub const SYNCH_DATA_STORE_CALENDAR = @as(u32, 3);
pub const SYNCH_DATA_STORE_NOTES = @as(u32, 5);
pub const SYNCH_DATA_STORE_MESSAGES = @as(u32, 6);
pub const DI_VENDOR_ID_SOURCE_BLUETOOTH_SIG = @as(u32, 1);
pub const DI_VENDOR_ID_SOURCE_USB_IF = @as(u32, 2);
pub const PSM_SDP = @as(u32, 1);
pub const PSM_RFCOMM = @as(u32, 3);
pub const PSM_TCS_BIN = @as(u32, 5);
pub const PSM_TCS_BIN_CORDLESS = @as(u32, 7);
pub const PSM_BNEP = @as(u32, 15);
pub const PSM_HID_CONTROL = @as(u32, 17);
pub const PSM_HID_INTERRUPT = @as(u32, 19);
pub const PSM_UPNP = @as(u32, 21);
pub const PSM_AVCTP = @as(u32, 23);
pub const PSM_AVDTP = @as(u32, 25);
pub const PSM_AVCTP_BROWSE = @as(u32, 27);
pub const PSM_UDI_C_PLANE = @as(u32, 29);
pub const PSM_ATT = @as(u32, 31);
pub const PSM_3DSP = @as(u32, 33);
pub const PSM_LE_IPSP = @as(u32, 35);
pub const BTH_IOCTL_BASE = @as(u32, 0);
pub const SDP_CONNECT_CACHE = @as(u32, 1);
pub const SDP_CONNECT_ALLOW_PIN = @as(u32, 2);
pub const SDP_REQUEST_TO_DEFAULT = @as(u32, 0);
pub const SDP_REQUEST_TO_MIN = @as(u32, 10);
pub const SDP_REQUEST_TO_MAX = @as(u32, 45);
pub const SERVICE_OPTION_DO_NOT_PUBLISH = @as(u32, 2);
pub const SERVICE_OPTION_NO_PUBLIC_BROWSE = @as(u32, 4);
pub const SERVICE_OPTION_DO_NOT_PUBLISH_EIR = @as(u32, 8);
pub const SERVICE_SECURITY_USE_DEFAULTS = @as(u32, 0);
pub const SERVICE_SECURITY_NONE = @as(u32, 1);
pub const SERVICE_SECURITY_AUTHORIZE = @as(u32, 2);
pub const SERVICE_SECURITY_AUTHENTICATE = @as(u32, 4);
pub const SERVICE_SECURITY_ENCRYPT_REQUIRED = @as(u32, 16);
pub const SERVICE_SECURITY_ENCRYPT_OPTIONAL = @as(u32, 32);
pub const SERVICE_SECURITY_DISABLED = @as(u32, 268435456);
pub const SERVICE_SECURITY_NO_ASK = @as(u32, 536870912);
pub const SDP_SEARCH_NO_PARSE_CHECK = @as(u32, 1);
pub const SDP_SEARCH_NO_FORMAT_CHECK = @as(u32, 2);
pub const BTH_HOST_FEATURE_ENHANCED_RETRANSMISSION_MODE = @as(u64, 1);
pub const BTH_HOST_FEATURE_STREAMING_MODE = @as(u64, 2);
pub const BTH_HOST_FEATURE_LOW_ENERGY = @as(u64, 4);
pub const BTH_HOST_FEATURE_SCO_HCI = @as(u64, 8);
pub const BTH_HOST_FEATURE_SCO_HCIBYPASS = @as(u64, 16);

//--------------------------------------------------------------------------------
// Section: Types (50)
//--------------------------------------------------------------------------------
pub const HANDLE_SDP_TYPE = u64;

pub const SDP_LARGE_INTEGER_16 = extern struct {
    LowPart: u64,
    HighPart: i64,
};

pub const SDP_ULARGE_INTEGER_16 = extern struct {
    LowPart: u64,
    HighPart: u64,
};

pub const NodeContainerType = enum(i32) {
    Sequence = 0,
    Alternative = 1,
};
pub const NodeContainerTypeSequence = NodeContainerType.Sequence;
pub const NodeContainerTypeAlternative = NodeContainerType.Alternative;

pub const SDP_TYPE = enum(i32) {
    NIL = 0,
    UINT = 1,
    INT = 2,
    UUID = 3,
    STRING = 4,
    BOOLEAN = 5,
    SEQUENCE = 6,
    ALTERNATIVE = 7,
    URL = 8,
    CONTAINER = 32,
};
pub const SDP_TYPE_NIL = SDP_TYPE.NIL;
pub const SDP_TYPE_UINT = SDP_TYPE.UINT;
pub const SDP_TYPE_INT = SDP_TYPE.INT;
pub const SDP_TYPE_UUID = SDP_TYPE.UUID;
pub const SDP_TYPE_STRING = SDP_TYPE.STRING;
pub const SDP_TYPE_BOOLEAN = SDP_TYPE.BOOLEAN;
pub const SDP_TYPE_SEQUENCE = SDP_TYPE.SEQUENCE;
pub const SDP_TYPE_ALTERNATIVE = SDP_TYPE.ALTERNATIVE;
pub const SDP_TYPE_URL = SDP_TYPE.URL;
pub const SDP_TYPE_CONTAINER = SDP_TYPE.CONTAINER;

pub const SDP_SPECIFICTYPE = enum(i32) {
    NONE = 0,
    UINT8 = 16,
    UINT16 = 272,
    UINT32 = 528,
    UINT64 = 784,
    UINT128 = 1040,
    INT8 = 32,
    INT16 = 288,
    INT32 = 544,
    INT64 = 800,
    INT128 = 1056,
    UUID16 = 304,
    // UUID32 = 544, this enum value conflicts with INT32
    UUID128 = 1072,
};
pub const SDP_ST_NONE = SDP_SPECIFICTYPE.NONE;
pub const SDP_ST_UINT8 = SDP_SPECIFICTYPE.UINT8;
pub const SDP_ST_UINT16 = SDP_SPECIFICTYPE.UINT16;
pub const SDP_ST_UINT32 = SDP_SPECIFICTYPE.UINT32;
pub const SDP_ST_UINT64 = SDP_SPECIFICTYPE.UINT64;
pub const SDP_ST_UINT128 = SDP_SPECIFICTYPE.UINT128;
pub const SDP_ST_INT8 = SDP_SPECIFICTYPE.INT8;
pub const SDP_ST_INT16 = SDP_SPECIFICTYPE.INT16;
pub const SDP_ST_INT32 = SDP_SPECIFICTYPE.INT32;
pub const SDP_ST_INT64 = SDP_SPECIFICTYPE.INT64;
pub const SDP_ST_INT128 = SDP_SPECIFICTYPE.INT128;
pub const SDP_ST_UUID16 = SDP_SPECIFICTYPE.UUID16;
pub const SDP_ST_UUID32 = SDP_SPECIFICTYPE.INT32;
pub const SDP_ST_UUID128 = SDP_SPECIFICTYPE.UUID128;

pub const SdpAttributeRange = extern struct {
    minAttribute: u16,
    maxAttribute: u16,
};

pub const SdpQueryUuidUnion = extern union {
    uuid128: Guid,
    uuid32: u32,
    uuid16: u16,
};

pub const SdpQueryUuid = extern struct {
    u: SdpQueryUuidUnion,
    uuidType: u16,
};

pub const BTH_DEVICE_INFO = extern struct {
    flags: u32,
    address: u64,
    classOfDevice: u32,
    name: [248]CHAR,
};

pub const BTH_RADIO_IN_RANGE = extern struct {
    deviceInfo: BTH_DEVICE_INFO,
    previousDeviceFlags: u32,
};

pub const BTH_L2CAP_EVENT_INFO = extern struct {
    bthAddress: u64,
    psm: u16,
    connected: u8,
    initiated: u8,
};

pub const BTH_HCI_EVENT_INFO = extern struct {
    bthAddress: u64,
    connectionType: u8,
    connected: u8,
};

pub const IO_CAPABILITY = enum(i32) {
    DisplayOnly = 0,
    DisplayYesNo = 1,
    KeyboardOnly = 2,
    NoInputNoOutput = 3,
    Undefined = 255,
};
pub const IoCaps_DisplayOnly = IO_CAPABILITY.DisplayOnly;
pub const IoCaps_DisplayYesNo = IO_CAPABILITY.DisplayYesNo;
pub const IoCaps_KeyboardOnly = IO_CAPABILITY.KeyboardOnly;
pub const IoCaps_NoInputNoOutput = IO_CAPABILITY.NoInputNoOutput;
pub const IoCaps_Undefined = IO_CAPABILITY.Undefined;

pub const AUTHENTICATION_REQUIREMENTS = enum(i32) {
    NotRequired = 0,
    Required = 1,
    NotRequiredBonding = 2,
    RequiredBonding = 3,
    NotRequiredGeneralBonding = 4,
    RequiredGeneralBonding = 5,
    NotDefined = 255,
};
pub const MITMProtectionNotRequired = AUTHENTICATION_REQUIREMENTS.NotRequired;
pub const MITMProtectionRequired = AUTHENTICATION_REQUIREMENTS.Required;
pub const MITMProtectionNotRequiredBonding = AUTHENTICATION_REQUIREMENTS.NotRequiredBonding;
pub const MITMProtectionRequiredBonding = AUTHENTICATION_REQUIREMENTS.RequiredBonding;
pub const MITMProtectionNotRequiredGeneralBonding = AUTHENTICATION_REQUIREMENTS.NotRequiredGeneralBonding;
pub const MITMProtectionRequiredGeneralBonding = AUTHENTICATION_REQUIREMENTS.RequiredGeneralBonding;
pub const MITMProtectionNotDefined = AUTHENTICATION_REQUIREMENTS.NotDefined;

pub const BLUETOOTH_ADDRESS = extern struct {
    Anonymous: extern union {
        ullLong: u64,
        rgBytes: [6]u8,
    },
};

pub const BLUETOOTH_LOCAL_SERVICE_INFO = extern struct {
    Enabled: BOOL,
    btAddr: BLUETOOTH_ADDRESS,
    szName: [256]u16,
    szDeviceString: [256]u16,
};

pub const BLUETOOTH_FIND_RADIO_PARAMS = extern struct {
    dwSize: u32,
};

pub const BLUETOOTH_RADIO_INFO = extern struct {
    dwSize: u32,
    address: BLUETOOTH_ADDRESS,
    szName: [248]u16,
    ulClassofDevice: u32,
    lmpSubversion: u16,
    manufacturer: u16,
};

pub const BLUETOOTH_DEVICE_INFO = extern struct {
    dwSize: u32,
    Address: BLUETOOTH_ADDRESS,
    ulClassofDevice: u32,
    fConnected: BOOL,
    fRemembered: BOOL,
    fAuthenticated: BOOL,
    stLastSeen: SYSTEMTIME,
    stLastUsed: SYSTEMTIME,
    szName: [248]u16,
};

pub const BLUETOOTH_AUTHENTICATION_METHOD = enum(i32) {
    LEGACY = 1,
    OOB = 2,
    NUMERIC_COMPARISON = 3,
    PASSKEY_NOTIFICATION = 4,
    PASSKEY = 5,
};
pub const BLUETOOTH_AUTHENTICATION_METHOD_LEGACY = BLUETOOTH_AUTHENTICATION_METHOD.LEGACY;
pub const BLUETOOTH_AUTHENTICATION_METHOD_OOB = BLUETOOTH_AUTHENTICATION_METHOD.OOB;
pub const BLUETOOTH_AUTHENTICATION_METHOD_NUMERIC_COMPARISON = BLUETOOTH_AUTHENTICATION_METHOD.NUMERIC_COMPARISON;
pub const BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY_NOTIFICATION = BLUETOOTH_AUTHENTICATION_METHOD.PASSKEY_NOTIFICATION;
pub const BLUETOOTH_AUTHENTICATION_METHOD_PASSKEY = BLUETOOTH_AUTHENTICATION_METHOD.PASSKEY;

pub const BLUETOOTH_IO_CAPABILITY = enum(i32) {
    DISPLAYONLY = 0,
    DISPLAYYESNO = 1,
    KEYBOARDONLY = 2,
    NOINPUTNOOUTPUT = 3,
    UNDEFINED = 255,
};
pub const BLUETOOTH_IO_CAPABILITY_DISPLAYONLY = BLUETOOTH_IO_CAPABILITY.DISPLAYONLY;
pub const BLUETOOTH_IO_CAPABILITY_DISPLAYYESNO = BLUETOOTH_IO_CAPABILITY.DISPLAYYESNO;
pub const BLUETOOTH_IO_CAPABILITY_KEYBOARDONLY = BLUETOOTH_IO_CAPABILITY.KEYBOARDONLY;
pub const BLUETOOTH_IO_CAPABILITY_NOINPUTNOOUTPUT = BLUETOOTH_IO_CAPABILITY.NOINPUTNOOUTPUT;
pub const BLUETOOTH_IO_CAPABILITY_UNDEFINED = BLUETOOTH_IO_CAPABILITY.UNDEFINED;

pub const BLUETOOTH_AUTHENTICATION_REQUIREMENTS = enum(i32) {
    NotRequired = 0,
    Required = 1,
    NotRequiredBonding = 2,
    RequiredBonding = 3,
    NotRequiredGeneralBonding = 4,
    RequiredGeneralBonding = 5,
    NotDefined = 255,
};
pub const BLUETOOTH_MITM_ProtectionNotRequired = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.NotRequired;
pub const BLUETOOTH_MITM_ProtectionRequired = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.Required;
pub const BLUETOOTH_MITM_ProtectionNotRequiredBonding = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.NotRequiredBonding;
pub const BLUETOOTH_MITM_ProtectionRequiredBonding = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.RequiredBonding;
pub const BLUETOOTH_MITM_ProtectionNotRequiredGeneralBonding = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.NotRequiredGeneralBonding;
pub const BLUETOOTH_MITM_ProtectionRequiredGeneralBonding = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.RequiredGeneralBonding;
pub const BLUETOOTH_MITM_ProtectionNotDefined = BLUETOOTH_AUTHENTICATION_REQUIREMENTS.NotDefined;

pub const BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS = extern struct {
    deviceInfo: BLUETOOTH_DEVICE_INFO,
    authenticationMethod: BLUETOOTH_AUTHENTICATION_METHOD,
    ioCapability: BLUETOOTH_IO_CAPABILITY,
    authenticationRequirements: BLUETOOTH_AUTHENTICATION_REQUIREMENTS,
    Anonymous: extern union {
        Numeric_Value: u32,
        Passkey: u32,
    },
};

pub const BLUETOOTH_DEVICE_SEARCH_PARAMS = extern struct {
    dwSize: u32,
    fReturnAuthenticated: BOOL,
    fReturnRemembered: BOOL,
    fReturnUnknown: BOOL,
    fReturnConnected: BOOL,
    fIssueInquiry: BOOL,
    cTimeoutMultiplier: u8,
    hRadio: ?HANDLE,
};

pub const BLUETOOTH_COD_PAIRS = extern struct {
    ulCODMask: u32,
    pcszDescription: ?[*:0]const u16,
};

pub const PFN_DEVICE_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pvParam: ?*anyopaque,
        pDevice: ?*const BLUETOOTH_DEVICE_INFO,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        pvParam: ?*anyopaque,
        pDevice: ?*const BLUETOOTH_DEVICE_INFO,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const BLUETOOTH_SELECT_DEVICE_PARAMS = extern struct {
    dwSize: u32,
    cNumOfClasses: u32,
    prgClassOfDevices: ?*BLUETOOTH_COD_PAIRS,
    pszInfo: ?PWSTR,
    hwndParent: ?HWND,
    fForceAuthentication: BOOL,
    fShowAuthenticated: BOOL,
    fShowRemembered: BOOL,
    fShowUnknown: BOOL,
    fAddNewDeviceWizard: BOOL,
    fSkipServicesPage: BOOL,
    pfnDeviceCallback: ?PFN_DEVICE_CALLBACK,
    pvParam: ?*anyopaque,
    cNumDevices: u32,
    pDevices: ?*BLUETOOTH_DEVICE_INFO,
};

pub const BLUETOOTH_PIN_INFO = extern struct {
    pin: [16]u8,
    pinLength: u8,
};

pub const BLUETOOTH_OOB_DATA_INFO = extern struct {
    C: [16]u8,
    R: [16]u8,
};

pub const BLUETOOTH_NUMERIC_COMPARISON_INFO = extern struct {
    NumericValue: u32,
};

pub const BLUETOOTH_PASSKEY_INFO = extern struct {
    passkey: u32,
};

pub const PFN_AUTHENTICATION_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pvParam: ?*anyopaque,
        pDevice: ?*BLUETOOTH_DEVICE_INFO,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        pvParam: ?*anyopaque,
        pDevice: ?*BLUETOOTH_DEVICE_INFO,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_AUTHENTICATION_CALLBACK_EX = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pvParam: ?*anyopaque,
        pAuthCallbackParams: ?*BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        pvParam: ?*anyopaque,
        pAuthCallbackParams: ?*BLUETOOTH_AUTHENTICATION_CALLBACK_PARAMS,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const BLUETOOTH_AUTHENTICATE_RESPONSE = extern struct {
    bthAddressRemote: BLUETOOTH_ADDRESS,
    authMethod: BLUETOOTH_AUTHENTICATION_METHOD,
    Anonymous: extern union {
        pinInfo: BLUETOOTH_PIN_INFO,
        oobInfo: BLUETOOTH_OOB_DATA_INFO,
        numericCompInfo: BLUETOOTH_NUMERIC_COMPARISON_INFO,
        passkeyInfo: BLUETOOTH_PASSKEY_INFO,
    },
    negativeResponse: u8,
};

pub const SDP_ELEMENT_DATA = extern struct {
    type: SDP_TYPE,
    specificType: SDP_SPECIFICTYPE,
    data: extern union {
        int128: SDP_LARGE_INTEGER_16,
        int64: i64,
        int32: i32,
        int16: i16,
        int8: CHAR,
        uint128: SDP_ULARGE_INTEGER_16,
        uint64: u64,
        uint32: u32,
        uint16: u16,
        uint8: u8,
        booleanVal: u8,
        uuid128: Guid,
        uuid32: u32,
        uuid16: u16,
        string: extern struct {
            value: ?*u8,
            length: u32,
        },
        url: extern struct {
            value: ?*u8,
            length: u32,
        },
        sequence: extern struct {
            value: ?*u8,
            length: u32,
        },
        alternative: extern struct {
            value: ?*u8,
            length: u32,
        },
    },
};

pub const SDP_STRING_TYPE_DATA = extern struct {
    encoding: u16,
    mibeNum: u16,
    attributeId: u16,
};

pub const PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        uAttribId: u32,
        // TODO: what to do with BytesParamIndex 2?
        pValueStream: ?*u8,
        cbStreamSize: u32,
        pvParam: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        uAttribId: u32,
        // TODO: what to do with BytesParamIndex 2?
        pValueStream: ?*u8,
        cbStreamSize: u32,
        pvParam: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const SOCKADDR_BTH = extern struct {
    addressFamily: u16 align(1),
    btAddr: u64 align(1),
    serviceClassId: Guid align(1),
    port: u32 align(1),
};

pub const BTH_SET_SERVICE = extern struct {
    pSdpVersion: ?*u32 align(1),
    pRecordHandle: ?*?HANDLE align(1),
    fCodService: u32 align(1),
    Reserved: [5]u32 align(1),
    ulRecordLength: u32 align(1),
    pRecord: [1]u8 align(1),
};

pub const BTH_QUERY_DEVICE = extern struct {
    LAP: u32 align(1),
    length: u8 align(1),
};

pub const BTH_QUERY_SERVICE = extern struct {
    type: u32 align(1),
    serviceHandle: u32 align(1),
    uuids: [12]SdpQueryUuid align(1),
    numRange: u32 align(1),
    pRange: [1]SdpAttributeRange align(1),
};

pub const RFCOMM_MSC_DATA = extern struct {
    Signals: u8,
    Break: u8,
};

pub const RFCOMM_RLS_DATA = extern struct {
    LineStatus: u8,
};

pub const RFCOMM_RPN_DATA = extern struct {
    Baud: u8,
    Data: u8,
    FlowControl: u8,
    XonChar: u8,
    XoffChar: u8,
    ParameterMask1: u8,
    ParameterMask2: u8,
};

pub const RFCOMM_COMMAND = extern struct {
    CmdType: u32 align(1),
    Data: extern union {
        MSC: RFCOMM_MSC_DATA,
        RLS: RFCOMM_RLS_DATA,
        RPN: RFCOMM_RPN_DATA,
    } align(1),
};

pub const BTH_PING_REQ = extern struct {
    btAddr: u64 align(1),
    dataLen: u8 align(1),
    data: [44]u8 align(1),
};

pub const BTH_PING_RSP = extern struct {
    dataLen: u8,
    data: [44]u8,
};

pub const BTH_INFO_REQ = extern struct {
    btAddr: u64 align(1),
    infoType: u16 align(1),
};

pub const BTH_INFO_RSP = extern struct {
    result: u16 align(1),
    dataLen: u8 align(1),
    Anonymous: extern union {
        connectionlessMTU: u16 align(1),
        data: [44]u8 align(1),
    } align(1),
};

//--------------------------------------------------------------------------------
// Section: Functions (34)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindFirstRadio(
    pbtfrp: ?*const BLUETOOTH_FIND_RADIO_PARAMS,
    phRadio: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindNextRadio(
    hFind: isize,
    phRadio: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindRadioClose(
    hFind: isize,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothGetRadioInfo(
    hRadio: ?HANDLE,
    pRadioInfo: ?*BLUETOOTH_RADIO_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindFirstDevice(
    pbtsp: ?*const BLUETOOTH_DEVICE_SEARCH_PARAMS,
    pbtdi: ?*BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) isize;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindNextDevice(
    hFind: isize,
    pbtdi: ?*BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothFindDeviceClose(
    hFind: isize,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothGetDeviceInfo(
    hRadio: ?HANDLE,
    pbtdi: ?*BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothUpdateDeviceRecord(
    pbtdi: ?*const BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothRemoveDevice(
    pAddress: ?*const BLUETOOTH_ADDRESS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bthprops" fn BluetoothSelectDevices(
    pbtsdp: ?*BLUETOOTH_SELECT_DEVICE_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bthprops" fn BluetoothSelectDevicesFree(
    pbtsdp: ?*BLUETOOTH_SELECT_DEVICE_PARAMS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bthprops" fn BluetoothDisplayDeviceProperties(
    hwndParent: ?HWND,
    pbtdi: ?*BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bthprops" fn BluetoothAuthenticateDevice(
    hwndParent: ?HWND,
    hRadio: ?HANDLE,
    pbtbi: ?*BLUETOOTH_DEVICE_INFO,
    pszPasskey: ?[*:0]u16,
    ulPasskeyLength: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "bthprops" fn BluetoothAuthenticateDeviceEx(
    hwndParentIn: ?HWND,
    hRadioIn: ?HANDLE,
    pbtdiInout: ?*BLUETOOTH_DEVICE_INFO,
    pbtOobData: ?*BLUETOOTH_OOB_DATA_INFO,
    authenticationRequirement: AUTHENTICATION_REQUIREMENTS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bthprops" fn BluetoothAuthenticateMultipleDevices(
    hwndParent: ?HWND,
    hRadio: ?HANDLE,
    cDevices: u32,
    rgbtdi: [*]BLUETOOTH_DEVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSetServiceState(
    hRadio: ?HANDLE,
    pbtdi: ?*const BLUETOOTH_DEVICE_INFO,
    pGuidService: ?*const Guid,
    dwServiceFlags: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothEnumerateInstalledServices(
    hRadio: ?HANDLE,
    pbtdi: ?*const BLUETOOTH_DEVICE_INFO,
    pcServiceInout: ?*u32,
    pGuidServices: ?[*]Guid,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothEnableDiscovery(
    hRadio: ?HANDLE,
    fEnabled: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothIsDiscoverable(
    hRadio: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothEnableIncomingConnections(
    hRadio: ?HANDLE,
    fEnabled: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothIsConnectable(
    hRadio: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothRegisterForAuthentication(
    pbtdi: ?*const BLUETOOTH_DEVICE_INFO,
    phRegHandle: ?*isize,
    pfnCallback: ?PFN_AUTHENTICATION_CALLBACK,
    pvParam: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothRegisterForAuthenticationEx(
    pbtdiIn: ?*const BLUETOOTH_DEVICE_INFO,
    phRegHandleOut: ?*isize,
    pfnCallbackIn: ?PFN_AUTHENTICATION_CALLBACK_EX,
    pvParam: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothUnregisterAuthentication(
    hRegHandle: isize,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSendAuthenticationResponse(
    hRadio: ?HANDLE,
    pbtdi: ?*const BLUETOOTH_DEVICE_INFO,
    pszPasskey: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSendAuthenticationResponseEx(
    hRadioIn: ?HANDLE,
    pauthResponse: ?*BLUETOOTH_AUTHENTICATE_RESPONSE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSdpGetElementData(
    // TODO: what to do with BytesParamIndex 1?
    pSdpStream: ?*u8,
    cbSdpStreamLength: u32,
    pData: ?*SDP_ELEMENT_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSdpGetContainerElementData(
    // TODO: what to do with BytesParamIndex 1?
    pContainerStream: ?*u8,
    cbContainerLength: u32,
    pElement: ?*isize,
    pData: ?*SDP_ELEMENT_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSdpGetAttributeValue(
    // TODO: what to do with BytesParamIndex 1?
    pRecordStream: ?*u8,
    cbRecordLength: u32,
    usAttributeId: u16,
    pAttributeData: ?*SDP_ELEMENT_DATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSdpGetString(
    // TODO: what to do with BytesParamIndex 1?
    pRecordStream: ?*u8,
    cbRecordLength: u32,
    pStringData: ?*const SDP_STRING_TYPE_DATA,
    usStringOffset: u16,
    pszString: [*:0]u16,
    pcchStringLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothSdpEnumAttributes(
    // TODO: what to do with BytesParamIndex 1?
    pSDPStream: ?*u8,
    cbStreamSize: u32,
    pfnCallback: ?PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK,
    pvParam: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'Windows Vista'
pub extern "bluetoothapis" fn BluetoothSetLocalServiceInfo(
    hRadioIn: ?HANDLE,
    pClassGuid: ?*const Guid,
    ulInstance: u32,
    pServiceInfoIn: ?*const BLUETOOTH_LOCAL_SERVICE_INFO,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "bluetoothapis" fn BluetoothIsVersionAvailable(
    MajorVersion: u8,
    MinorVersion: u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (7)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const CHAR = @import("../foundation.zig").CHAR;
const HANDLE = @import("../foundation.zig").HANDLE;
const HWND = @import("../foundation.zig").HWND;
const PWSTR = @import("../foundation.zig").PWSTR;
const SYSTEMTIME = @import("../foundation.zig").SYSTEMTIME;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "PFN_DEVICE_CALLBACK")) {
        _ = PFN_DEVICE_CALLBACK;
    }
    if (@hasDecl(@This(), "PFN_AUTHENTICATION_CALLBACK")) {
        _ = PFN_AUTHENTICATION_CALLBACK;
    }
    if (@hasDecl(@This(), "PFN_AUTHENTICATION_CALLBACK_EX")) {
        _ = PFN_AUTHENTICATION_CALLBACK_EX;
    }
    if (@hasDecl(@This(), "PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK")) {
        _ = PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
