- Move winsplp.h to PSDK and improve it.
[reactos.git] / include / psdk / af_irda.h
1 /*
2 * af_irda.h
3 *
4 * IrDa ports interface
5 *
6 * This file is part of the MinGW package.
7 *
8 * Contributors:
9 * Created by Robert Dickenson <robd@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23 #ifndef __AF_IRDA_H
24 #define __AF_IRDA_H
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 #pragma pack(push,4)
31
32
33 /* GUIDs */
34
35 #ifdef DEFINE_GUID
36 DEFINE_GUID(GUID_DEVINTERFACE_IRDAPORT,
37 0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x74);
38 DEFINE_GUID(GUID_DEVINTERFACE_IRDAENUM_BUS_ENUMERATOR,
39 0x4D36E978L, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x19);
40 #endif /* DEFINE_GUID */
41
42 #define WINDOWS_AF_IRDA 26
43 #define WINDOWS_PF_IRDA WINDOWS_AF_IRDA
44
45 #ifndef AF_IRDA
46 #define AF_IRDA WINDOWS_AF_IRDA
47 #endif
48
49 #define IRDA_PROTO_SOCK_STREAM 1
50 #define PF_IRDA AF_IRDA
51 #define SOL_IRLMP 0x00FF
52 #define SIO_LAZY_DISCOVERY _IOR('t', 127, ULONG)
53
54
55 #define IAS_MAX_USER_STRING 256
56 #define IAS_MAX_OCTET_STRING 1024
57 #define IAS_MAX_CLASSNAME 64
58 #define IAS_MAX_ATTRIBNAME 256
59
60 #define IAS_ATTRIB_NO_CLASS ((ULONG)0x10)
61 #define IAS_ATTRIB_NO_ATTRIB ((ULONG)0x00)
62 #define IAS_ATTRIB_INT ((ULONG)0x01)
63 #define IAS_ATTRIB_OCTETSEQ ((ULONG)0x02)
64 #define IAS_ATTRIB_STR ((ULONG)0x03)
65
66 #define IRLMP_ENUMDEVICES ((ULONG)0x10)
67 #define IRLMP_IAS_SET ((ULONG)0x11)
68 #define IRLMP_IAS_QUERY ((ULONG)0x12)
69 #define IRLMP_SEND_PDU_LEN ((ULONG)0x13)
70 #define IRLMP_EXCLUSIVE_MODE ((ULONG)0x14)
71 #define IRLMP_IRLPT_MODE ((ULONG)0x15)
72 #define IRLMP_9WIRE_MODE ((ULONG)0x16)
73
74 #if 0
75 /* Available/Used on Windows 98 only ??? */
76 #define IRLMP_TINYTP_MODE ((ULONG)0x17)
77 #define IRLMP_PARAMETERS ((ULONG)0x18)
78 #define IRLMP_DISCOVERY_MODE ((ULONG)0x19)
79 /* Available/Used on Windows CE only ??? */
80 #define IRLMP_SHARP_MODE ((ULONG)0x20)
81 #endif
82
83 enum {
84 /* First hint byte */
85 LM_HB1_PnP = 0x01,
86 LM_HB1_PDA_Palmtop = 0x02,
87 LM_HB1_Computer = 0x04,
88 LM_HB1_Printer = 0x08,
89 LM_HB1_Modem = 0x10,
90 LM_HB1_Fax = 0x20,
91 LM_HB1_LANAccess = 0x40,
92 /* Second hint byte */
93 LM_HB2_Telephony = 0x01,
94 LM_HB2_FileServer = 0x02,
95 /* Any hint byte */
96 LM_HB_Extension = 0x80,
97 };
98
99 #define LmCharSetASCII 0x00
100 #define LmCharSetISO_8859_1 0x01
101 #define LmCharSetISO_8859_2 0x02
102 #define LmCharSetISO_8859_3 0x03
103 #define LmCharSetISO_8859_4 0x04
104 #define LmCharSetISO_8859_5 0x05
105 #define LmCharSetISO_8859_6 0x06
106 #define LmCharSetISO_8859_7 0x07
107 #define LmCharSetISO_8859_8 0x08
108 #define LmCharSetISO_8859_9 0x09
109 #define LmCharSetUNICODE 0xFF
110
111 #define LM_BAUD_1200 1200
112 #define LM_BAUD_2400 2400
113 #define LM_BAUD_9600 9600
114 #define LM_BAUD_19200 19200
115 #define LM_BAUD_38400 38400
116 #define LM_BAUD_57600 57600
117 #define LM_BAUD_115200 115200
118 #define LM_BAUD_576K 576000
119 #define LM_BAUD_1152K 1152000
120 #define LM_BAUD_4M 4000000
121
122 #if 0 /* Available/Used on Windows 98 only ??? */
123 typedef ULONG LM_BAUD_RATE;
124 typedef struct {
125 ULONG nTXDataBytes; /* packet transmit receive bytes */
126 ULONG nRXDataBytes; /* packet maximum receive bytes */
127 LM_BAUD_RATE nBaudRate; /* link negotiated baud */
128 ULONG thresholdTime; /* milliseconds for threshold time */
129 ULONG discTime; /* milliseconds for disconnect time
130 USHORT nMSLinkTurn; /* milliseconds for link turn around time */
131 UCHAR nTXPackets; /* transmit window packets */
132 UCHAR nRXPackets; /* receive window packets */
133 } LM_IRPARMS;
134 typedef LM_IRPARMS *PLM_IRPARMS;
135 #endif
136
137 typedef struct _SOCKADDR_IRDA {
138 USHORT irdaAddressFamily;
139 UCHAR irdaDeviceID[4];
140 char irdaServiceName[25];
141 } SOCKADDR_IRDA;
142
143 typedef struct _WINDOWS_IRDA_DEVICE_INFO {
144 UCHAR irdaDeviceID[4];
145 char irdaDeviceName[22];
146 UCHAR irdaDeviceHints1;
147 UCHAR irdaDeviceHints2;
148 UCHAR irdaCharSet;
149 } WINDOWS_IRDA_DEVICE_INFO;
150
151 typedef struct _WINDOWS_IAS_SET {
152 char irdaClassName[IAS_MAX_CLASSNAME];
153 char irdaAttribName[IAS_MAX_ATTRIBNAME];
154 ULONG irdaAttribType;
155 union {
156 LONG irdaAttribInt;
157 struct {
158 USHORT Len;
159 UCHAR OctetSeq[IAS_MAX_OCTET_STRING];
160 } irdaAttribOctetSeq;
161 struct {
162 UCHAR Len;
163 UCHAR CharSet;
164 UCHAR UsrStr[IAS_MAX_USER_STRING];
165 } irdaAttribUsrStr;
166 } irdaAttribute;
167 } WINDOWS_IAS_SET;
168
169 typedef struct _WINDOWS_IAS_QUERY {
170 UCHAR irdaDeviceID[4];
171 char irdaClassName[IAS_MAX_CLASSNAME];
172 char irdaAttribName[IAS_MAX_ATTRIBNAME];
173 ULONG irdaAttribType;
174 union {
175 LONG irdaAttribInt;
176 struct {
177 ULONG Len;
178 UCHAR OctetSeq[IAS_MAX_OCTET_STRING];
179 } irdaAttribOctetSeq;
180 struct {
181 ULONG Len;
182 ULONG CharSet;
183 UCHAR UsrStr[IAS_MAX_USER_STRING];
184 } irdaAttribUsrStr;
185 } irdaAttribute;
186 } WINDOWS_IAS_QUERY;
187
188 typedef struct _WINDOWS_DEVICELIST {
189 ULONG numDevice;
190 WINDOWS_IRDA_DEVICE_INFO Device[1];
191 } WINDOWS_DEVICELIST;
192
193 typedef WINDOWS_DEVICELIST DEVICELIST;
194 typedef WINDOWS_DEVICELIST *PDEVICELIST;
195 typedef WINDOWS_DEVICELIST *PWINDOWS_DEVICELIST;
196
197 typedef WINDOWS_IRDA_DEVICE_INFO IRDA_DEVICE_INFO;
198 typedef WINDOWS_IRDA_DEVICE_INFO *PIRDA_DEVICE_INFO;
199 typedef WINDOWS_IRDA_DEVICE_INFO *PWINDOWS_IRDA_DEVICE_INFO;
200
201 typedef WINDOWS_IAS_SET IAS_SET;
202 typedef WINDOWS_IAS_SET *PIAS_SET;
203 typedef WINDOWS_IAS_SET *PWINDOWS_IAS_SET;
204
205 typedef WINDOWS_IAS_QUERY IAS_QUERY;
206 typedef WINDOWS_IAS_QUERY *PIAS_QUERY;
207 typedef WINDOWS_IAS_QUERY *PWINDOWS_IAS_QUERY;
208
209 typedef SOCKADDR_IRDA *PSOCKADDR_IRDA;
210
211 #pragma pack(pop)
212
213 #ifdef __cplusplus
214 }
215 #endif
216
217 #endif /* __AF_IRDA_H */