1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6 #include <winapifamily.h> 7 8 #ifndef __WS2BTH__H 9 #define __WS2BTH__H 10 11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 12 13 #include <bthdef.h> 14 #include <bthsdpdef.h> 15 #include <pshpack1.h> 16 17 #define BT_PORT_ANY ((ULONG)-1) 18 #define BT_PORT_MIN 0x1 19 #define BT_PORT_MAX 0xffff 20 #define BT_PORT_DYN_FIRST 0x1001 21 22 #ifndef AF_BTH 23 #define AF_BTH 32 24 #endif 25 26 #ifndef PF_BTH 27 #define PF_BTH AF_BTH 28 #endif 29 30 #ifndef NS_BTH 31 #define NS_BTH 16 32 #endif 33 34 typedef struct _SOCKADDR_BTH { 35 USHORT addressFamily; 36 BTH_ADDR btAddr; 37 GUID serviceClassId; 38 ULONG port; 39 } SOCKADDR_BTH,*PSOCKADDR_BTH; 40 41 DEFINE_GUID (SVCID_BTH_PROVIDER, 0x6aa63e0, 0x7d60, 0x41ff, 0xaf, 0xb2, 0x3e, 0xe6, 0xd2, 0xd9, 0x39, 0x2d); 42 43 #define BTH_ADDR_STRING_SIZE 12 44 45 #define BTHPROTO_RFCOMM 0x0003 46 #define BTHPROTO_L2CAP 0x0100 47 48 #define SOL_RFCOMM BTHPROTO_RFCOMM 49 #define SOL_L2CAP BTHPROTO_L2CAP 50 #define SOL_SDP 0x0101 51 52 #define SO_BTH_AUTHENTICATE 0x80000001 53 #define SO_BTH_ENCRYPT 0x00000002 54 #define SO_BTH_MTU 0x80000007 55 #define SO_BTH_MTU_MAX 0x80000008 56 #define SO_BTH_MTU_MIN 0x8000000a 57 58 #define RFCOMM_MAX_MTU 0x000003f3 59 #define RFCOMM_MIN_MTU 0x00000017 60 61 #define BTH_SDP_VERSION 1 62 63 typedef struct _BTH_SET_SERVICE { 64 PULONG pSdpVersion; 65 HANDLE *pRecordHandle; 66 ULONG fCodService; 67 ULONG Reserved[5]; 68 ULONG ulRecordLength; 69 UCHAR pRecord[1]; 70 } BTH_SET_SERVICE,*PBTH_SET_SERVICE; 71 72 #define SDP_DEFAULT_INQUIRY_SECONDS 6 73 #define SDP_MAX_INQUIRY_SECONDS 60 74 75 #define SDP_DEFAULT_INQUIRY_MAX_RESPONSES 255 76 77 #define SDP_SERVICE_SEARCH_REQUEST 1 78 #define SDP_SERVICE_ATTRIBUTE_REQUEST 2 79 #define SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST 3 80 81 typedef struct _BTH_QUERY_DEVICE { 82 ULONG LAP; 83 UCHAR length; 84 } BTH_QUERY_DEVICE,*PBTH_QUERY_DEVICE; 85 typedef struct _BTH_QUERY_SERVICE { 86 ULONG type; 87 ULONG serviceHandle; 88 SdpQueryUuid uuids[MAX_UUIDS_IN_QUERY]; 89 ULONG numRange; 90 SdpAttributeRange pRange[1]; 91 } BTH_QUERY_SERVICE,*PBTH_QUERY_SERVICE; 92 93 #define BTHNS_RESULT_DEVICE_CONNECTED 0x00010000 94 #define BTHNS_RESULT_DEVICE_REMEMBERED 0x00020000 95 #define BTHNS_RESULT_DEVICE_AUTHENTICATED 0x00040000 96 97 #define SIO_RFCOMM_SEND_COMMAND _WSAIORW (IOC_VENDOR, 101) 98 #define SIO_RFCOMM_WAIT_COMMAND _WSAIORW (IOC_VENDOR, 102) 99 100 #define SIO_BTH_PING _WSAIORW (IOC_VENDOR, 8) 101 #define SIO_BTH_INFO _WSAIORW (IOC_VENDOR, 9) 102 #define SIO_RFCOMM_SESSION_FLOW_OFF _WSAIORW (IOC_VENDOR, 103) 103 #define SIO_RFCOMM_TEST _WSAIORW (IOC_VENDOR, 104) 104 #define SIO_RFCOMM_USECFC _WSAIORW (IOC_VENDOR, 105) 105 106 #ifndef BIT 107 #define BIT(b) (1 << (b)) 108 #endif 109 110 #define MSC_EA_BIT EA_BIT 111 #define MSC_FC_BIT BIT (1) 112 #define MSC_RTC_BIT BIT (2) 113 #define MSC_RTR_BIT BIT (3) 114 #define MSC_RESERVED (BIT (4)|BIT (5)) 115 #define MSC_IC_BIT BIT (6) 116 #define MSC_DV_BIT BIT (7) 117 118 #define MSC_BREAK_BIT BIT (1) 119 #define MSC_SET_BREAK_LENGTH (b, l) ((b) = ((b) &0x3) | (((l) &0xf) << 4)) 120 121 #define RLS_ERROR 0x01 122 #define RLS_OVERRUN 0x02 123 #define RLS_PARITY 0x04 124 #define RLS_FRAMING 0x08 125 126 #define RPN_BAUD_2400 0 127 #define RPN_BAUD_4800 1 128 #define RPN_BAUD_7200 2 129 #define RPN_BAUD_9600 3 130 #define RPN_BAUD_19200 4 131 #define RPN_BAUD_38400 5 132 #define RPN_BAUD_57600 6 133 #define RPN_BAUD_115200 7 134 #define RPN_BAUD_230400 8 135 136 #define RPN_DATA_5 0x0 137 #define RPN_DATA_6 0x1 138 #define RPN_DATA_7 0x2 139 #define RPN_DATA_8 0x3 140 141 #define RPN_STOP_1 0x0 142 #define RPN_STOP_1_5 0x4 143 144 #define RPN_PARITY_NONE 0x00 145 #define RPN_PARITY_ODD 0x08 146 #define RPN_PARITY_EVEN 0x18 147 #define RPN_PARITY_MARK 0x28 148 #define RPN_PARITY_SPACE 0x38 149 150 #define RPN_FLOW_X_IN 0x01 151 #define RPN_FLOW_X_OUT 0x02 152 #define RPN_FLOW_RTR_IN 0x04 153 #define RPN_FLOW_RTR_OUT 0x08 154 #define RPN_FLOW_RTC_IN 0x10 155 #define RPN_FLOW_RTC_OUT 0x20 156 157 #define RPN_PARAM_BAUD 0x01 158 #define RPN_PARAM_DATA 0x02 159 #define RPN_PARAM_STOP 0x04 160 #define RPN_PARAM_PARITY 0x08 161 #define RPN_PARAM_P_TYPE 0x10 162 #define RPN_PARAM_XON 0x20 163 #define RPN_PARAM_XOFF 0x40 164 165 #define RPN_PARAM_X_IN 0x01 166 #define RPN_PARAM_X_OUT 0x02 167 #define RPN_PARAM_RTR_IN 0x04 168 #define RPN_PARAM_RTR_OUT 0x08 169 #define RPN_PARAM_RTC_IN 0x10 170 #define RPN_PARAM_RTC_OUT 0x20 171 172 #define RFCOMM_CMD_NONE 0 173 #define RFCOMM_CMD_MSC 1 174 #define RFCOMM_CMD_RLS 2 175 #define RFCOMM_CMD_RPN 3 176 #define RFCOMM_CMD_RPN_REQUEST 4 177 #define RFCOMM_CMD_RPN_RESPONSE 5 178 179 typedef struct _RFCOMM_MSC_DATA { 180 UCHAR Signals; 181 UCHAR Break; 182 } RFCOMM_MSC_DATA,*PRFCOMM_MSC_DATA; 183 184 typedef struct _RFCOMM_RLS_DATA { 185 UCHAR LineStatus; 186 } RFCOMM_RLS_DATA,*PRFCOMM_RLS_DATA; 187 188 typedef struct _RFCOMM_RPN_DATA { 189 UCHAR Baud; 190 UCHAR Data; 191 UCHAR FlowControl; 192 UCHAR XonChar; 193 UCHAR XoffChar; 194 UCHAR ParameterMask1; 195 UCHAR ParameterMask2; 196 } RFCOMM_RPN_DATA,*PRFCOMM_RPN_DATA; 197 198 typedef struct _RFCOMM_COMMAND { 199 ULONG CmdType; 200 union { 201 RFCOMM_MSC_DATA MSC; 202 RFCOMM_RLS_DATA RLS; 203 RFCOMM_RPN_DATA RPN; 204 } Data; 205 } RFCOMM_COMMAND,*PRFCOMM_COMMAND; 206 207 typedef struct _BTH_PING_REQ { 208 BTH_ADDR btAddr; 209 UCHAR dataLen; 210 UCHAR data[MAX_L2CAP_PING_DATA_LENGTH]; 211 } BTH_PING_REQ,*PBTH_PING_REQ; 212 213 typedef struct _BTH_PING_RSP { 214 UCHAR dataLen; 215 UCHAR data[MAX_L2CAP_PING_DATA_LENGTH]; 216 } BTH_PING_RSP,*PBTH_PING_RSP; 217 218 typedef struct _BTH_INFO_REQ { 219 BTH_ADDR btAddr; 220 USHORT infoType; 221 } BTH_INFO_REQ,*PBTH_INFO_REQ; 222 223 typedef struct _BTH_INFO_RSP { 224 USHORT result; 225 UCHAR dataLen; 226 __C89_NAMELESS union { 227 USHORT connectionlessMTU; 228 UCHAR data[MAX_L2CAP_INFO_DATA_LENGTH]; 229 }; 230 } BTH_INFO_RSP,*PBTH_INFO_RSP; 231 232 typedef struct _BTH_SET_SERVICE BTHNS_SETBLOB,*PBTHNS_SETBLOB; 233 typedef struct _BTH_QUERY_DEVICE BTHNS_INQUIRYBLOB,*PBTHNS_INQUIRYBLOB; 234 typedef struct _BTH_QUERY_SERVICE BTHNS_RESTRICTIONBLOB,*PBTHNS_RESTRICTIONBLOB; 235 236 #include <poppack.h> 237 238 #endif 239 240 #endif 241