| /* |
| * Copyright (C) 2016 Austin English |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| #ifndef __BLUETOOTHAPIS_H |
| #define __BLUETOOTHAPIS_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef ULONGLONG BTH_ADDR; |
| |
| typedef struct _BLUETOOTH_ADDRESS { |
| union { |
| BTH_ADDR ullLong; |
| BYTE rgBytes[6]; |
| } DUMMYUNIONNAME; |
| } BLUETOOTH_ADDRESS_STRUCT; |
| |
| #define BLUETOOTH_ADDRESS BLUETOOTH_ADDRESS_STRUCT |
| #define BLUETOOTH_NULL_ADDRESS ((ULONGLONG) 0x0) |
| |
| #define BLUETOOTH_MAX_NAME_SIZE (248) |
| #define BLUETOOTH_MAX_PASSKEY_SIZE (16) |
| #define BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE (BLUETOOTH_MAX_PASSKEY_SIZE + 1) |
| |
| #define BLUETOOTH_SERVICE_DISABLE 0x00 |
| #define BLUETOOTH_SERVICE_ENABLE 0x01 |
| #define BLUETOOTH_SERVICE_MASK (BLUETOOTH_ENABLE_SERVICE | BLUETOOTH_DISABLE_SERVICE) |
| |
| typedef struct _BLUETOOTH_FIND_RADIO_PARAMS { |
| DWORD dwSize; |
| } BLUETOOTH_FIND_RADIO_PARAMS; |
| |
| typedef struct _BLUETOOTH_RADIO_INFO { |
| DWORD dwSize; |
| BLUETOOTH_ADDRESS address; |
| WCHAR szName[BLUETOOTH_MAX_NAME_SIZE]; |
| ULONG ulClassofDevice; |
| USHORT lmpSubversion; |
| USHORT manufacturer; |
| } BLUETOOTH_RADIO_INFO, *PBLUETOOTH_RADIO_INFO; |
| |
| typedef struct _BLUETOOTH_DEVICE_INFO { |
| DWORD dwSize; |
| BLUETOOTH_ADDRESS Address; |
| ULONG ulClassofDevice; |
| BOOL fConnected; |
| BOOL fRemembered; |
| BOOL fAuthenticated; |
| SYSTEMTIME stLastSeen; |
| SYSTEMTIME stLastUsed; |
| WCHAR szName[BLUETOOTH_MAX_NAME_SIZE]; |
| } BLUETOOTH_DEVICE_INFO, BLUETOOTH_DEVICE_INFO_STRUCT, *PBLUETOOTH_DEVICE_INFO; |
| |
| typedef struct _BLUETOOTH_DEVICE_SEARCH_PARAMS { |
| DWORD dwSize; |
| BOOL fReturnAuthenticated; |
| BOOL fReturnRemembered; |
| BOOL fReturnUnknown; |
| BOOL fReturnConnected; |
| BOOL fIssueInquiry; |
| UCHAR cTimeoutMultiplier; |
| HANDLE hRadio; |
| } BLUETOOTH_DEVICE_SEARCH_PARAMS; |
| |
| typedef HANDLE HBLUETOOTH_AUTHENTICATION_REGISTRATION; |
| typedef HANDLE HBLUETOOTH_CONTAINER_ELEMENT; |
| typedef HANDLE HBLUETOOTH_DEVICE_FIND; |
| typedef HANDLE HBLUETOOTH_RADIO_FIND; |
| |
| typedef struct _BLUETOOTH_COD_PAIRS { |
| ULONG ulCODMask; |
| const WCHAR *pcszDescription; |
| } BLUETOOTH_COD_PAIRS; |
| |
| typedef BOOL (WINAPI *PFN_DEVICE_CALLBACK)(void *pvParam, const BLUETOOTH_DEVICE_INFO *pDevice); |
| |
| typedef struct _BLUETOOTH_SELECT_DEVICE_PARAMS { |
| DWORD dwSize; |
| ULONG cNumOfClasses; |
| BLUETOOTH_COD_PAIRS *prgClassOfDevices; |
| WCHAR *pszInfo; |
| HWND hwndParent; |
| BOOL fForceAuthentication; |
| BOOL fShowAuthenticated; |
| BOOL fShowRemembered; |
| BOOL fShowUnknown; |
| BOOL fAddNewDeviceWizard; |
| BOOL fSkipServicesPage; |
| PFN_DEVICE_CALLBACK pfnDeviceCallback; |
| void *pvParam; |
| DWORD cNumDevices; |
| PBLUETOOTH_DEVICE_INFO pDevices; |
| } BLUETOOTH_SELECT_DEVICE_PARAMS; |
| |
| typedef BOOL (WINAPI *PFN_AUTHENTICATION_CALLBACK)(void *, PBLUETOOTH_DEVICE_INFO); |
| |
| typedef struct _SDP_ELEMENT_DATA { |
| SDP_TYPE type; |
| SDP_SPECIFICTYPE specificType; |
| union { |
| SDP_LARGE_INTEGER_16 int128; |
| LONGLONG int64; |
| LONG int32; |
| SHORT int16; |
| CHAR int8; |
| |
| SDP_ULARGE_INTEGER_16 uint128; |
| ULONGLONG uint64; |
| ULONG uint32; |
| USHORT uint16; |
| UCHAR uint8; |
| |
| UCHAR booleanVal; |
| |
| GUID uuid128; |
| ULONG uuid32; |
| USHORT uuid16; |
| |
| struct { |
| BYTE *value; |
| ULONG length; |
| } string; |
| |
| struct { |
| BYTE *value; |
| ULONG length; |
| } url; |
| |
| struct { |
| BYTE *value; |
| ULONG length; |
| } sequence; |
| |
| struct { |
| BYTE *value; |
| ULONG length; |
| } alternative; |
| } data; |
| } SDP_ELEMENT_DATA, *PSDP_ELEMENT_DATA; |
| |
| typedef struct _SDP_STRING_TYPE_DATA { |
| USHORT encoding; |
| USHORT mibeNum; |
| USHORT attributeId; |
| } SDP_STRING_TYPE_DATA, *PSDP_STRING_TYPE_DATA; |
| |
| typedef BOOL (CALLBACK *PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK)( |
| ULONG uAttribId, |
| BYTE *pValueStream, |
| ULONG cbStreamSize, |
| void *pvParam); |
| |
| DWORD WINAPI BluetoothAuthenticateDevice(HWND, HANDLE, BLUETOOTH_DEVICE_INFO *, WCHAR *, ULONG); |
| DWORD WINAPI BluetoothAuthenticateMultipleDevices(HWND, HANDLE, DWORD, BLUETOOTH_DEVICE_INFO *); |
| BOOL WINAPI BluetoothDisplayDeviceProperties(HWND, BLUETOOTH_DEVICE_INFO *); |
| BOOL WINAPI BluetoothEnableDiscovery(HANDLE, BOOL); |
| BOOL WINAPI BluetoothEnableIncomingConnections(HANDLE, BOOL); |
| DWORD WINAPI BluetoothEnumerateInstalledServices(HANDLE, BLUETOOTH_DEVICE_INFO *, DWORD *, GUID *); |
| BOOL WINAPI BluetoothFindDeviceClose(HBLUETOOTH_DEVICE_FIND); |
| HBLUETOOTH_DEVICE_FIND WINAPI BluetoothFindFirstDevice(BLUETOOTH_DEVICE_SEARCH_PARAMS *, BLUETOOTH_DEVICE_INFO *); |
| HBLUETOOTH_RADIO_FIND WINAPI BluetoothFindFirstRadio(BLUETOOTH_FIND_RADIO_PARAMS *, HANDLE *); |
| BOOL WINAPI BluetoothFindNextDevice(HBLUETOOTH_DEVICE_FIND, BLUETOOTH_DEVICE_INFO *); |
| BOOL WINAPI BluetoothFindNextRadio(HBLUETOOTH_RADIO_FIND, HANDLE *); |
| BOOL WINAPI BluetoothFindRadioClose(HBLUETOOTH_RADIO_FIND); |
| DWORD WINAPI BluetoothGetDeviceInfo(HANDLE, BLUETOOTH_DEVICE_INFO *); |
| DWORD WINAPI BluetoothGetRadioInfo(HANDLE, PBLUETOOTH_RADIO_INFO); |
| BOOL WINAPI BluetoothIsConnectable(HANDLE); |
| BOOL WINAPI BluetoothIsDiscoverable(HANDLE); |
| DWORD WINAPI BluetoothRegisterForAuthentication(BLUETOOTH_DEVICE_INFO *, HBLUETOOTH_AUTHENTICATION_REGISTRATION *, PFN_AUTHENTICATION_CALLBACK, void *); |
| DWORD WINAPI BluetoothRemoveDevice(BLUETOOTH_ADDRESS *); |
| #define BluetoothEnumAttributes BluetoothSdpEnumAttributes |
| BOOL WINAPI BluetoothSdpEnumAttributes(BYTE *, ULONG, PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK, void *); |
| DWORD WINAPI BluetoothSdpGetAttributeValue(BYTE *, ULONG, USHORT, PSDP_ELEMENT_DATA); |
| DWORD WINAPI BluetoothSdpGetContainerElementData(BYTE *, ULONG, HBLUETOOTH_CONTAINER_ELEMENT *, PSDP_ELEMENT_DATA); |
| DWORD WINAPI BluetoothSdpGetElementData(BYTE *, ULONG, PSDP_ELEMENT_DATA); |
| DWORD WINAPI BluetoothSdpGetString(BYTE *, ULONG, PSDP_STRING_TYPE_DATA, USHORT, WCHAR *, ULONG *); |
| BOOL WINAPI BluetoothSelectDevices(BLUETOOTH_SELECT_DEVICE_PARAMS *); |
| BOOL WINAPI BluetoothSelectDevicesFree(BLUETOOTH_SELECT_DEVICE_PARAMS *); |
| DWORD WINAPI BluetoothSendAuthenticationResponse(HANDLE, BLUETOOTH_DEVICE_INFO *, WCHAR *); |
| DWORD WINAPI BluetoothSetServiceState(HANDLE, BLUETOOTH_DEVICE_INFO *, GUID *, DWORD); |
| BOOL WINAPI BluetoothUnregisterAuthentication(HBLUETOOTH_AUTHENTICATION_REGISTRATION); |
| DWORD WINAPI BluetoothUpdateDeviceRecord(BLUETOOTH_DEVICE_INFO *); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __BLUETOOTHAPIS_H */ |