|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #ifndef _INC_WS2BTH | 
|  | #define _INC_WS2BTH | 
|  | #include <bthdef.h> | 
|  | #include <bthsdpdef.h> | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | /* | 
|  | constants as found on | 
|  | http://www.koders.com/delphi/fid882B076395C727550B1DA378430A79672B587941.aspx | 
|  | */ | 
|  |  | 
|  | #define BT_PORT_ANY       ((ULONG)-1) | 
|  | #define BT_PORT_MIN       0x0001 | 
|  | #define BT_PORT_MAX       0xffff | 
|  | #define BT_PORT_DYN_FIRST 0x1001 | 
|  |  | 
|  | #define BTH_ADDR_STRING_SIZE 12 | 
|  |  | 
|  | #define BTHPROTO_RFCOMM 0x0003 | 
|  | #define BTHPROTO_L2CAP  0x0100 | 
|  |  | 
|  | #define SOL_RFCOMM BTHPROTO_RFCOMM | 
|  | #define SOL_L2CAP  BTHPROTO_L2CAP | 
|  | #define SOL_SDP    0x0101 | 
|  |  | 
|  | #define SO_BTH_AUTHENTICATE 0x80000001 | 
|  | #define SO_BTH_ENCRYPT      0x00000002 | 
|  | #define SO_BTH_MTU          0x80000007 | 
|  | #define SO_BTH_MTU_MAX      0x80000008 | 
|  | #define SO_BTH_MTU_MIN      0x8000000a | 
|  |  | 
|  | #define RFCOMM_MAX_MTU 0x029a | 
|  | #define RFCOMM_MIN_MTU 0x0017 | 
|  |  | 
|  | #define BTH_SDP_VERSION 1 | 
|  |  | 
|  | #define SDP_DEFAULT_INQUIRY_SECONDS       6 | 
|  | #define SDP_MAX_INQUIRY_SECONDS           60 | 
|  | #define SDP_DEFAULT_INQUIRY_MAX_RESPONSES 255 | 
|  |  | 
|  | #define SDP_SERVICE_SEARCH_REQUEST           1 | 
|  | #define SDP_SERVICE_ATTRIBUTE_REQUEST        2 | 
|  | #define SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST 3 | 
|  |  | 
|  | #define BTHNS_RESULT_DEVICE_CONNECTED     0x00010000 | 
|  | #define BTHNS_RESULT_DEVICE_REMEMBERED    0x00020000 | 
|  | #define BTHNS_RESULT_DEVICE_AUTHENTICATED 0x00040000 | 
|  |  | 
|  | #define SIO_BTH_PING                _WSAIORW(IOC_VENDOR, 8) | 
|  | #define SIO_BTH_INFO                _WSAIORW(IOC_VENDOR, 9) | 
|  |  | 
|  | #define SIO_RFCOMM_SEND_COMMAND     _WSAIORW(IOC_VENDOR, 101) | 
|  | #define SIO_RFCOMM_WAIT_COMMAND     _WSAIORW(IOC_VENDOR, 102) | 
|  | #define SIO_RFCOMM_SESSION_FLOW_OFF _WSAIORW(IOC_VENDOR, 103) | 
|  | #define SIO_RFCOMM_TEST             _WSAIORW(IOC_VENDOR, 104) | 
|  | #define SIO_RFCOMM_USECFC           _WSAIORW(IOC_VENDOR, 105) | 
|  |  | 
|  | #define BIT(b) (1 << (b)) | 
|  |  | 
|  | //TODO #define MSC_EA_BIT | 
|  | #define MSC_FC_BIT    BIT(1) | 
|  | #define MSC_RTC_BIT   BIT(2) | 
|  | #define MSC_RTR_BIT   BIT(3) | 
|  | #define MSC_RESERVED  (BIT(4) | BIT(5)) | 
|  | #define MSC_IC_BIT    BIT(6) | 
|  | #define MSC_DV_BIT    BIT(7) | 
|  | #define MSC_BREAK_BIT BIT(1) | 
|  |  | 
|  | #define MSC_SET_BREAK_LENGTH(b, l) ((b) = ((b) & 0x03) | (((l) & 0x0f) << 4)) | 
|  |  | 
|  | #define RLS_ERROR   0x01 | 
|  | #define RLS_OVERRUN 0x02 | 
|  | #define RLS_PARITY  0x04 | 
|  | #define RLS_FRAMING 0x08 | 
|  |  | 
|  | #define RPN_BAUD_2400   0 | 
|  | #define RPN_BAUD_4800   1 | 
|  | #define RPN_BAUD_7200   2 | 
|  | #define RPN_BAUD_9600   3 | 
|  | #define RPN_BAUD_19200  4 | 
|  | #define RPN_BAUD_38400  5 | 
|  | #define RPN_BAUD_57600  6 | 
|  | #define RPN_BAUD_115200 7 | 
|  | #define RPN_BAUD_230400 8 | 
|  |  | 
|  | #define RPN_DATA_5 0 | 
|  | #define RPN_DATA_6 1 | 
|  | #define RPN_DATA_7 2 | 
|  | #define RPN_DATA_8 3 | 
|  |  | 
|  | #define RPN_STOP_1   0 | 
|  | #define RPN_STOP_1_5 4 | 
|  |  | 
|  | #define RPN_PARITY_NONE  0x00 | 
|  | #define RPN_PARITY_ODD   0x08 | 
|  | #define RPN_PARITY_EVEN  0x18 | 
|  | #define RPN_PARITY_MARK  0x28 | 
|  | #define RPN_PARITY_SPACE 0x38 | 
|  |  | 
|  | #define RPN_FLOW_X_IN    0x01 | 
|  | #define RPN_FLOW_X_OUT   0x02 | 
|  | #define RPN_FLOW_RTR_IN  0x04 | 
|  | #define RPN_FLOW_RTR_OUT 0x08 | 
|  | #define RPN_FLOW_RTC_IN  0x10 | 
|  | #define RPN_FLOW_RTC_OUT 0x20 | 
|  |  | 
|  | #define RPN_PARAM_BAUD   0x01 | 
|  | #define RPN_PARAM_DATA   0x02 | 
|  | #define RPN_PARAM_STOP   0x04 | 
|  | #define RPN_PARAM_PARITY 0x08 | 
|  | #define RPN_PARAM_P_TYPE 0x10 | 
|  | #define RPN_PARAM_XON    0x20 | 
|  | #define RPN_PARAM_XOFF   0x40 | 
|  |  | 
|  | #define RPN_PARAM_X_IN    0x01 | 
|  | #define RPN_PARAM_X_OUT   0x02 | 
|  | #define RPN_PARAM_RTR_IN  0x04 | 
|  | #define RPN_PARAM_RTR_OUT 0x08 | 
|  | #define RPN_PARAM_RTC_IN  0x10 | 
|  | #define RPN_PARAM_RTC_OUT 0x20 | 
|  |  | 
|  | #define RFCOMM_CMD_NONE         0 | 
|  | #define RFCOMM_CMD_MSC          1 | 
|  | #define RFCOMM_CMD_RLS          2 | 
|  | #define RFCOMM_CMD_RPN          3 | 
|  | #define RFCOMM_CMD_RPN_REQUEST  4 | 
|  | #define RFCOMM_CMD_RPN_RESPONSE 5 | 
|  |  | 
|  | typedef struct _BTH_QUERY_SERVICE { | 
|  | ULONG             type; | 
|  | ULONG             serviceHandle; | 
|  | SdpQueryUuid      uuids[MAX_UUIDS_IN_QUERY]; | 
|  | ULONG             numRange; | 
|  | SdpAttributeRange pRange[1]; | 
|  | } BTH_QUERY_SERVICE, *PBTH_QUERY_SERVICE; | 
|  |  | 
|  | typedef struct _BTH_QUERY_DEVICE { | 
|  | ULONG LAP; | 
|  | UCHAR length; | 
|  | } BTH_QUERY_DEVICE, *PBTH_QUERY_DEVICE; | 
|  |  | 
|  | typedef struct _BTH_SET_SERVICE { | 
|  | PULONG pSdpVersion; | 
|  | HANDLE *pRecordHandle; | 
|  | ULONG  fCodService; | 
|  | ULONG  Reserved[5]; | 
|  | ULONG  ulRecordLength; | 
|  | UCHAR  pRecord[1]; | 
|  | } BTH_SET_SERVICE, *PBTH_SET_SERVICE; | 
|  |  | 
|  | typedef struct _SOCKADDR_BTH { | 
|  | USHORT   addressFamily; | 
|  | BTH_ADDR btAddr; | 
|  | GUID     serviceClassId; | 
|  | ULONG    port; | 
|  | } SOCKADDR_BTH, *PSOCKADDR_BTH; | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  | #endif /*_INC_WS2BTH*/ |