From 05edc1bd789ce8a5c6f4c73e21b5e3b2d9720dc6 Mon Sep 17 00:00:00 2001 From: Austin English Date: Fri, 4 Dec 2015 16:31:12 -0600 Subject: [PATCH] bthprops.cpl: Add BluetoothFindFirstRadio/BluetoothFindRadioClose stubs. Signed-off-by: Austin English Signed-off-by: Alexandre Julliard --- dlls/bthprops.cpl/Makefile.in | 3 + dlls/bthprops.cpl/bthprops.cpl.spec | 4 +- dlls/bthprops.cpl/main.c | 53 ++++++++ dlls/irprops.cpl/irprops.cpl.spec | 4 +- include/Makefile.in | 2 + include/bluetoothapis.h | 204 ++++++++++++++++++++++++++++ include/bthsdpdef.h | 92 +++++++++++++ 7 files changed, 358 insertions(+), 4 deletions(-) create mode 100644 dlls/bthprops.cpl/main.c create mode 100644 include/bluetoothapis.h create mode 100644 include/bthsdpdef.h diff --git a/dlls/bthprops.cpl/Makefile.in b/dlls/bthprops.cpl/Makefile.in index 402ec464c04..41dc9dfdb98 100644 --- a/dlls/bthprops.cpl/Makefile.in +++ b/dlls/bthprops.cpl/Makefile.in @@ -1 +1,4 @@ MODULE = bthprops.cpl + +C_SRCS = \ + main.c diff --git a/dlls/bthprops.cpl/bthprops.cpl.spec b/dlls/bthprops.cpl/bthprops.cpl.spec index 7a9de48733e..3842a36ae5d 100644 --- a/dlls/bthprops.cpl/bthprops.cpl.spec +++ b/dlls/bthprops.cpl/bthprops.cpl.spec @@ -18,7 +18,7 @@ @ stub BluetoothFindFirstProfileDescriptor @ stub BluetoothFindFirstProtocolDescriptorStack @ stub BluetoothFindFirstProtocolEntry -@ stub BluetoothFindFirstRadio +@ stdcall BluetoothFindFirstRadio(ptr ptr) @ stub BluetoothFindFirstService @ stub BluetoothFindFirstServiceEx @ stub BluetoothFindNextBrowseGroup @@ -32,7 +32,7 @@ @ stub BluetoothFindProfileDescriptorClose @ stub BluetoothFindProtocolDescriptorStackClose @ stub BluetoothFindProtocolEntryClose -@ stub BluetoothFindRadioClose +@ stdcall BluetoothFindRadioClose(ptr) @ stub BluetoothFindServiceClose @ stub BluetoothGetDeviceInfo @ stub BluetoothGetRadioInfo diff --git a/dlls/bthprops.cpl/main.c b/dlls/bthprops.cpl/main.c new file mode 100644 index 00000000000..b2613287e03 --- /dev/null +++ b/dlls/bthprops.cpl/main.c @@ -0,0 +1,53 @@ +/* + * Bluetooth properties control panel + * + * Copyright 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 + * + */ + +#define NONAMELESSUNION + +#include +#include +#include + +#include "wine/debug.h" +#include "bthsdpdef.h" +#include "bluetoothapis.h" + +WINE_DEFAULT_DEBUG_CHANNEL(bthpropscpl); + +/********************************************************************* + * BluetoothFindFirstRadio + */ +HBLUETOOTH_RADIO_FIND WINAPI BluetoothFindFirstRadio(BLUETOOTH_FIND_RADIO_PARAMS *params, HANDLE *radio) +{ + FIXME("(%p %p): stub!\n", params, radio); + *radio = NULL; + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return NULL; +} + +/********************************************************************* + * BluetoothFindRadioClose + */ +BOOL WINAPI BluetoothFindRadioClose(HBLUETOOTH_RADIO_FIND find) +{ + FIXME("(%p): stub!\n", find); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff --git a/dlls/irprops.cpl/irprops.cpl.spec b/dlls/irprops.cpl/irprops.cpl.spec index 29828e29af1..083ccf4769f 100644 --- a/dlls/irprops.cpl/irprops.cpl.spec +++ b/dlls/irprops.cpl/irprops.cpl.spec @@ -15,7 +15,7 @@ @ stub BluetoothFindFirstProfileDescriptor @ stub BluetoothFindFirstProtocolDescriptorStack @ stub BluetoothFindFirstProtocolEntry -@ stub BluetoothFindFirstRadio +@ stdcall BluetoothFindFirstRadio(ptr ptr) bthprops.cpl.BluetoothFindFirstRadio @ stub BluetoothFindFirstService @ stub BluetoothFindNextBrowseGroup @ stub BluetoothFindNextClassId @@ -28,7 +28,7 @@ @ stub BluetoothFindProfileDescriptorClose @ stub BluetoothFindProtocolDescriptorStackClose @ stub BluetoothFindProtocolEntryClose -@ stub BluetoothFindRadioClose +@ stdcall BluetoothFindRadioClose(ptr) bthprops.cpl.BluetoothFindRadioClose @ stub BluetoothFindServiceClose @ stub BluetoothGetDeviceInfo @ stub BluetoothGetRadioInfo diff --git a/include/Makefile.in b/include/Makefile.in index ff1f5a66f74..7e0456e4b4e 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -208,6 +208,8 @@ HEADER_SRCS = \ bdaiface_enums.h \ bdatypes.h \ bitsmsg.h \ + bluetoothapis.h \ + bthsdpdef.h \ cderr.h \ cfgmgr32.h \ cguid.h \ diff --git a/include/bluetoothapis.h b/include/bluetoothapis.h new file mode 100644 index 00000000000..fd90b731bf9 --- /dev/null +++ b/include/bluetoothapis.h @@ -0,0 +1,204 @@ +/* + * 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 */ diff --git a/include/bthsdpdef.h b/include/bthsdpdef.h new file mode 100644 index 00000000000..46478506b8f --- /dev/null +++ b/include/bthsdpdef.h @@ -0,0 +1,92 @@ +/* + * 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 __BTHSDPDEF_H__ +#define __BTHSDPDEF_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDP_LARGE_INTEGER_16 { + ULONGLONG LowPart; + LONGLONG HighPart; +} SDP_LARGE_INTEGER_16, *PSDP_LARGE_INTEGER_16, *LPSDP_LARGE_INTEGER_16; + +typedef struct SDP_ULARGE_INTEGER_16 { + ULONGLONG LowPart; + ULONGLONG HighPart; +} SDP_ULARGE_INTEGER_16, *PSDP_ULARGE_INTEGER_16, *LPSDP_ULARGE_INTEGER_16; + +typedef enum NodeContainerType { + NodeContainerTypeSequence, + NodeContainerTypeAlternative +} NodeContainerType; + +typedef USHORT SDP_ERROR, *PSDP_ERROR; + +typedef enum SDP_TYPE { + SDP_TYPE_NIL = 0x00, + SDP_TYPE_UINT = 0x01, + SDP_TYPE_INT = 0x02, + SDP_TYPE_UUID = 0x03, + SDP_TYPE_STRING = 0x04, + SDP_TYPE_BOOLEAN = 0x05, + SDP_TYPE_SEQUENCE = 0x06, + SDP_TYPE_ALTERNATIVE = 0x07, + SDP_TYPE_URL = 0x08, + SDP_TYPE_CONTAINER = 0x20 +} SDP_TYPE; + +typedef enum SDP_SPECIFICTYPE { + SDP_ST_NONE = 0x0000, + SDP_ST_UINT8 = 0x0010, + SDP_ST_UINT16 = 0x0110, + SDP_ST_UINT32 = 0x0210, + SDP_ST_UINT64 = 0x0310, + SDP_ST_UINT128 = 0x0410, + SDP_ST_INT8 = 0x0020, + SDP_ST_INT16 = 0x0120, + SDP_ST_INT32 = 0x0220, + SDP_ST_INT64 = 0x0320, + SDP_ST_INT128 = 0x0420, + SDP_ST_UUID16 = 0x0130, + SDP_ST_UUID32 = 0x0220, + SDP_ST_UUID128 = 0x0430 +} SDP_SPECIFICTYPE; + +typedef struct _SdpAttributeRange { + USHORT minAttribute; + USHORT maxAttribute; +} SdpAttributeRange; + +typedef union SdpQueryUuidUnion { + GUID uuid128; + ULONG uuid32; + USHORT uuid16; +} SdpQueryUuidUnion; + +typedef struct _SdpQueryUuid { + SdpQueryUuidUnion u; + USHORT uuidType; +} SdpQueryUuid; + +#ifdef __cplusplus +} +#endif + +#endif /* __BTHSDPDEF_H__ */