diff options
Diffstat (limited to 'drivers/char/ip2/i2cmd.h')
-rw-r--r-- | drivers/char/ip2/i2cmd.h | 643 |
1 files changed, 643 insertions, 0 deletions
diff --git a/drivers/char/ip2/i2cmd.h b/drivers/char/ip2/i2cmd.h new file mode 100644 index 000000000000..c41728a85710 --- /dev/null +++ b/drivers/char/ip2/i2cmd.h | |||
@@ -0,0 +1,643 @@ | |||
1 | /******************************************************************************* | ||
2 | * | ||
3 | * (c) 1999 by Computone Corporation | ||
4 | * | ||
5 | ******************************************************************************** | ||
6 | * | ||
7 | * | ||
8 | * PACKAGE: Linux tty Device Driver for IntelliPort II family of multiport | ||
9 | * serial I/O controllers. | ||
10 | * | ||
11 | * DESCRIPTION: Definitions and support for In-line and Bypass commands. | ||
12 | * Applicable only when the standard loadware is active. | ||
13 | * | ||
14 | *******************************************************************************/ | ||
15 | //------------------------------------------------------------------------------ | ||
16 | // Revision History: | ||
17 | // | ||
18 | // 10 October 1991 MAG First Draft | ||
19 | // 7 November 1991 MAG Reflects some new commands | ||
20 | // 20 February 1992 MAG CMD_HOTACK corrected: no argument. | ||
21 | // 24 February 1992 MAG Support added for new commands for 1.4.x loadware. | ||
22 | // 11 March 1992 MAG Additional commands. | ||
23 | // 16 March 1992 MAG Additional commands. | ||
24 | // 30 March 1992 MAG Additional command: CMD_DSS_NOW | ||
25 | // 18 May 1992 MAG Changed CMD_OPOST | ||
26 | // | ||
27 | //------------------------------------------------------------------------------ | ||
28 | #ifndef I2CMD_H // To prevent multiple includes | ||
29 | #define I2CMD_H 1 | ||
30 | |||
31 | #include "ip2types.h" | ||
32 | |||
33 | // This module is designed to provide a uniform method of sending commands to | ||
34 | // the board through command packets. The difficulty is, some commands take | ||
35 | // parameters, others do not. Furthermore, it is often useful to send several | ||
36 | // commands to the same channel as part of the same packet. (See also i2pack.h.) | ||
37 | // | ||
38 | // This module is designed so that the caller should not be responsible for | ||
39 | // remembering the exact syntax of each command, or at least so that the | ||
40 | // compiler could check things somewhat. I'll explain as we go... | ||
41 | // | ||
42 | // First, a structure which can embody the syntax of each type of command. | ||
43 | // | ||
44 | typedef struct _cmdSyntax | ||
45 | { | ||
46 | UCHAR length; // Number of bytes in the command | ||
47 | UCHAR flags; // Information about the command (see below) | ||
48 | |||
49 | // The command and its parameters, which may be of arbitrary length. Don't | ||
50 | // worry yet how the parameters will be initialized; macros later take care | ||
51 | // of it. Also, don't worry about the arbitrary length issue; this structure | ||
52 | // is never used to allocate space (see i2cmd.c). | ||
53 | UCHAR cmd[2]; | ||
54 | } cmdSyntax, *cmdSyntaxPtr; | ||
55 | |||
56 | // Bit assignments for flags | ||
57 | |||
58 | #define INL 1 // Set if suitable for inline commands | ||
59 | #define BYP 2 // Set if suitable for bypass commands | ||
60 | #define BTH (INL|BYP) // suitable for either! | ||
61 | #define END 4 // Set if this must be the last command in a block | ||
62 | #define VIP 8 // Set if this command is special in some way and really | ||
63 | // should only be sent from the library-level and not | ||
64 | // directly from user-level | ||
65 | #define VAR 0x10 // This command is of variable length! | ||
66 | |||
67 | //----------------------------------- | ||
68 | // External declarations for i2cmd.c | ||
69 | //----------------------------------- | ||
70 | // Routine to set up parameters for the "define hot-key sequence" command. Since | ||
71 | // there is more than one parameter to assign, we must use a function rather | ||
72 | // than a macro (used usually). | ||
73 | // | ||
74 | extern cmdSyntaxPtr i2cmdUnixFlags(USHORT iflag,USHORT cflag,USHORT lflag); | ||
75 | extern cmdSyntaxPtr i2cmdBaudDef(int which, USHORT rate); | ||
76 | |||
77 | // Declarations for the global arrays used to bear the commands and their | ||
78 | // arguments. | ||
79 | // | ||
80 | // Note: Since these are globals and the arguments might change, it is important | ||
81 | // that the library routine COPY these into buffers from whence they would be | ||
82 | // sent, rather than merely storing the pointers. In multi-threaded | ||
83 | // environments, important that the copy should obtain before any context switch | ||
84 | // is allowed. Also, for parameterized commands, DO NOT ISSUE THE SAME COMMAND | ||
85 | // MORE THAN ONCE WITH THE SAME PARAMETERS in the same call. | ||
86 | // | ||
87 | static UCHAR ct02[]; | ||
88 | static UCHAR ct03[]; | ||
89 | static UCHAR ct04[]; | ||
90 | static UCHAR ct05[]; | ||
91 | static UCHAR ct06[]; | ||
92 | static UCHAR ct07[]; | ||
93 | static UCHAR ct08[]; | ||
94 | static UCHAR ct09[]; | ||
95 | static UCHAR ct10[]; | ||
96 | static UCHAR ct11[]; | ||
97 | static UCHAR ct12[]; | ||
98 | static UCHAR ct13[]; | ||
99 | static UCHAR ct14[]; | ||
100 | static UCHAR ct15[]; | ||
101 | static UCHAR ct16[]; | ||
102 | static UCHAR ct17[]; | ||
103 | static UCHAR ct18[]; | ||
104 | static UCHAR ct19[]; | ||
105 | static UCHAR ct20[]; | ||
106 | static UCHAR ct21[]; | ||
107 | static UCHAR ct22[]; | ||
108 | static UCHAR ct23[]; | ||
109 | static UCHAR ct24[]; | ||
110 | static UCHAR ct25[]; | ||
111 | static UCHAR ct26[]; | ||
112 | static UCHAR ct27[]; | ||
113 | static UCHAR ct28[]; | ||
114 | static UCHAR ct29[]; | ||
115 | static UCHAR ct30[]; | ||
116 | static UCHAR ct31[]; | ||
117 | static UCHAR ct32[]; | ||
118 | static UCHAR ct33[]; | ||
119 | static UCHAR ct34[]; | ||
120 | static UCHAR ct35[]; | ||
121 | static UCHAR ct36[]; | ||
122 | static UCHAR ct36a[]; | ||
123 | static UCHAR ct41[]; | ||
124 | static UCHAR ct42[]; | ||
125 | static UCHAR ct43[]; | ||
126 | static UCHAR ct44[]; | ||
127 | static UCHAR ct45[]; | ||
128 | static UCHAR ct46[]; | ||
129 | static UCHAR ct48[]; | ||
130 | static UCHAR ct49[]; | ||
131 | static UCHAR ct50[]; | ||
132 | static UCHAR ct51[]; | ||
133 | static UCHAR ct52[]; | ||
134 | static UCHAR ct56[]; | ||
135 | static UCHAR ct57[]; | ||
136 | static UCHAR ct58[]; | ||
137 | static UCHAR ct59[]; | ||
138 | static UCHAR ct60[]; | ||
139 | static UCHAR ct61[]; | ||
140 | static UCHAR ct62[]; | ||
141 | static UCHAR ct63[]; | ||
142 | static UCHAR ct64[]; | ||
143 | static UCHAR ct65[]; | ||
144 | static UCHAR ct66[]; | ||
145 | static UCHAR ct67[]; | ||
146 | static UCHAR ct68[]; | ||
147 | static UCHAR ct69[]; | ||
148 | static UCHAR ct70[]; | ||
149 | static UCHAR ct71[]; | ||
150 | static UCHAR ct72[]; | ||
151 | static UCHAR ct73[]; | ||
152 | static UCHAR ct74[]; | ||
153 | static UCHAR ct75[]; | ||
154 | static UCHAR ct76[]; | ||
155 | static UCHAR ct77[]; | ||
156 | static UCHAR ct78[]; | ||
157 | static UCHAR ct79[]; | ||
158 | static UCHAR ct80[]; | ||
159 | static UCHAR ct81[]; | ||
160 | static UCHAR ct82[]; | ||
161 | static UCHAR ct83[]; | ||
162 | static UCHAR ct84[]; | ||
163 | static UCHAR ct85[]; | ||
164 | static UCHAR ct86[]; | ||
165 | static UCHAR ct87[]; | ||
166 | static UCHAR ct88[]; | ||
167 | static UCHAR ct89[]; | ||
168 | static UCHAR ct90[]; | ||
169 | static UCHAR ct91[]; | ||
170 | static UCHAR cc01[]; | ||
171 | static UCHAR cc02[]; | ||
172 | |||
173 | // Now, refer to i2cmd.c, and see the character arrays defined there. They are | ||
174 | // cast here to cmdSyntaxPtr. | ||
175 | // | ||
176 | // There are library functions for issuing bypass or inline commands. These | ||
177 | // functions take one or more arguments of the type cmdSyntaxPtr. The routine | ||
178 | // then can figure out how long each command is supposed to be and easily add it | ||
179 | // to the list. | ||
180 | // | ||
181 | // For ease of use, we define manifests which return pointers to appropriate | ||
182 | // cmdSyntaxPtr things. But some commands also take arguments. If a single | ||
183 | // argument is used, we define a macro which performs the single assignment and | ||
184 | // (through the expedient of a comma expression) references the appropriate | ||
185 | // pointer. For commands requiring several arguments, we actually define a | ||
186 | // function to perform the assignments. | ||
187 | |||
188 | #define CMD_DTRUP (cmdSyntaxPtr)(ct02) // Raise DTR | ||
189 | #define CMD_DTRDN (cmdSyntaxPtr)(ct03) // Lower DTR | ||
190 | #define CMD_RTSUP (cmdSyntaxPtr)(ct04) // Raise RTS | ||
191 | #define CMD_RTSDN (cmdSyntaxPtr)(ct05) // Lower RTS | ||
192 | #define CMD_STARTFL (cmdSyntaxPtr)(ct06) // Start Flushing Data | ||
193 | |||
194 | #define CMD_DTRRTS_UP (cmdSyntaxPtr)(cc01) // Raise DTR and RTS | ||
195 | #define CMD_DTRRTS_DN (cmdSyntaxPtr)(cc02) // Lower DTR and RTS | ||
196 | |||
197 | // Set Baud Rate for transmit and receive | ||
198 | #define CMD_SETBAUD(arg) \ | ||
199 | (((cmdSyntaxPtr)(ct07))->cmd[1] = (arg),(cmdSyntaxPtr)(ct07)) | ||
200 | |||
201 | #define CBR_50 1 | ||
202 | #define CBR_75 2 | ||
203 | #define CBR_110 3 | ||
204 | #define CBR_134 4 | ||
205 | #define CBR_150 5 | ||
206 | #define CBR_200 6 | ||
207 | #define CBR_300 7 | ||
208 | #define CBR_600 8 | ||
209 | #define CBR_1200 9 | ||
210 | #define CBR_1800 10 | ||
211 | #define CBR_2400 11 | ||
212 | #define CBR_4800 12 | ||
213 | #define CBR_9600 13 | ||
214 | #define CBR_19200 14 | ||
215 | #define CBR_38400 15 | ||
216 | #define CBR_2000 16 | ||
217 | #define CBR_3600 17 | ||
218 | #define CBR_7200 18 | ||
219 | #define CBR_56000 19 | ||
220 | #define CBR_57600 20 | ||
221 | #define CBR_64000 21 | ||
222 | #define CBR_76800 22 | ||
223 | #define CBR_115200 23 | ||
224 | #define CBR_C1 24 // Custom baud rate 1 | ||
225 | #define CBR_C2 25 // Custom baud rate 2 | ||
226 | #define CBR_153600 26 | ||
227 | #define CBR_230400 27 | ||
228 | #define CBR_307200 28 | ||
229 | #define CBR_460800 29 | ||
230 | #define CBR_921600 30 | ||
231 | |||
232 | // Set Character size | ||
233 | // | ||
234 | #define CMD_SETBITS(arg) \ | ||
235 | (((cmdSyntaxPtr)(ct08))->cmd[1] = (arg),(cmdSyntaxPtr)(ct08)) | ||
236 | |||
237 | #define CSZ_5 0 | ||
238 | #define CSZ_6 1 | ||
239 | #define CSZ_7 2 | ||
240 | #define CSZ_8 3 | ||
241 | |||
242 | // Set number of stop bits | ||
243 | // | ||
244 | #define CMD_SETSTOP(arg) \ | ||
245 | (((cmdSyntaxPtr)(ct09))->cmd[1] = (arg),(cmdSyntaxPtr)(ct09)) | ||
246 | |||
247 | #define CST_1 0 | ||
248 | #define CST_15 1 // 1.5 stop bits | ||
249 | #define CST_2 2 | ||
250 | |||
251 | // Set parity option | ||
252 | // | ||
253 | #define CMD_SETPAR(arg) \ | ||
254 | (((cmdSyntaxPtr)(ct10))->cmd[1] = (arg),(cmdSyntaxPtr)(ct10)) | ||
255 | |||
256 | #define CSP_NP 0 // no parity | ||
257 | #define CSP_OD 1 // odd parity | ||
258 | #define CSP_EV 2 // Even parity | ||
259 | #define CSP_SP 3 // Space parity | ||
260 | #define CSP_MK 4 // Mark parity | ||
261 | |||
262 | // Define xon char for transmitter flow control | ||
263 | // | ||
264 | #define CMD_DEF_IXON(arg) \ | ||
265 | (((cmdSyntaxPtr)(ct11))->cmd[1] = (arg),(cmdSyntaxPtr)(ct11)) | ||
266 | |||
267 | // Define xoff char for transmitter flow control | ||
268 | // | ||
269 | #define CMD_DEF_IXOFF(arg) \ | ||
270 | (((cmdSyntaxPtr)(ct12))->cmd[1] = (arg),(cmdSyntaxPtr)(ct12)) | ||
271 | |||
272 | #define CMD_STOPFL (cmdSyntaxPtr)(ct13) // Stop Flushing data | ||
273 | |||
274 | // Acknowledge receipt of hotkey signal | ||
275 | // | ||
276 | #define CMD_HOTACK (cmdSyntaxPtr)(ct14) | ||
277 | |||
278 | // Define irq level to use. Should actually be sent by library-level code, not | ||
279 | // directly from user... | ||
280 | // | ||
281 | #define CMDVALUE_IRQ 15 // For library use at initialization. Until this command | ||
282 | // is sent, board processing doesn't really start. | ||
283 | #define CMD_SET_IRQ(arg) \ | ||
284 | (((cmdSyntaxPtr)(ct15))->cmd[1] = (arg),(cmdSyntaxPtr)(ct15)) | ||
285 | |||
286 | #define CIR_POLL 0 // No IRQ - Poll | ||
287 | #define CIR_3 3 // IRQ 3 | ||
288 | #define CIR_4 4 // IRQ 4 | ||
289 | #define CIR_5 5 // IRQ 5 | ||
290 | #define CIR_7 7 // IRQ 7 | ||
291 | #define CIR_10 10 // IRQ 10 | ||
292 | #define CIR_11 11 // IRQ 11 | ||
293 | #define CIR_12 12 // IRQ 12 | ||
294 | #define CIR_15 15 // IRQ 15 | ||
295 | |||
296 | // Select transmit flow xon/xoff options | ||
297 | // | ||
298 | #define CMD_IXON_OPT(arg) \ | ||
299 | (((cmdSyntaxPtr)(ct16))->cmd[1] = (arg),(cmdSyntaxPtr)(ct16)) | ||
300 | |||
301 | #define CIX_NONE 0 // Incoming Xon/Xoff characters not special | ||
302 | #define CIX_XON 1 // Xoff disable, Xon enable | ||
303 | #define CIX_XANY 2 // Xoff disable, any key enable | ||
304 | |||
305 | // Select receive flow xon/xoff options | ||
306 | // | ||
307 | #define CMD_OXON_OPT(arg) \ | ||
308 | (((cmdSyntaxPtr)(ct17))->cmd[1] = (arg),(cmdSyntaxPtr)(ct17)) | ||
309 | |||
310 | #define COX_NONE 0 // Don't send Xon/Xoff | ||
311 | #define COX_XON 1 // Send xon/xoff to start/stop incoming data | ||
312 | |||
313 | |||
314 | #define CMD_CTS_REP (cmdSyntaxPtr)(ct18) // Enable CTS reporting | ||
315 | #define CMD_CTS_NREP (cmdSyntaxPtr)(ct19) // Disable CTS reporting | ||
316 | |||
317 | #define CMD_DCD_REP (cmdSyntaxPtr)(ct20) // Enable DCD reporting | ||
318 | #define CMD_DCD_NREP (cmdSyntaxPtr)(ct21) // Disable DCD reporting | ||
319 | |||
320 | #define CMD_DSR_REP (cmdSyntaxPtr)(ct22) // Enable DSR reporting | ||
321 | #define CMD_DSR_NREP (cmdSyntaxPtr)(ct23) // Disable DSR reporting | ||
322 | |||
323 | #define CMD_RI_REP (cmdSyntaxPtr)(ct24) // Enable RI reporting | ||
324 | #define CMD_RI_NREP (cmdSyntaxPtr)(ct25) // Disable RI reporting | ||
325 | |||
326 | // Enable break reporting and select style | ||
327 | // | ||
328 | #define CMD_BRK_REP(arg) \ | ||
329 | (((cmdSyntaxPtr)(ct26))->cmd[1] = (arg),(cmdSyntaxPtr)(ct26)) | ||
330 | |||
331 | #define CBK_STAT 0x00 // Report breaks as a status (exception,irq) | ||
332 | #define CBK_NULL 0x01 // Report breaks as a good null | ||
333 | #define CBK_STAT_SEQ 0x02 // Report breaks as a status AND as in-band character | ||
334 | // sequence FFh, 01h, 10h | ||
335 | #define CBK_SEQ 0x03 // Report breaks as the in-band | ||
336 | //sequence FFh, 01h, 10h ONLY. | ||
337 | #define CBK_FLSH 0x04 // if this bit set also flush input data | ||
338 | #define CBK_POSIX 0x08 // if this bit set report as FF,0,0 sequence | ||
339 | #define CBK_SINGLE 0x10 // if this bit set with CBK_SEQ or CBK_STAT_SEQ | ||
340 | //then reports single null instead of triple | ||
341 | |||
342 | #define CMD_BRK_NREP (cmdSyntaxPtr)(ct27) // Disable break reporting | ||
343 | |||
344 | // Specify maximum block size for received data | ||
345 | // | ||
346 | #define CMD_MAX_BLOCK(arg) \ | ||
347 | (((cmdSyntaxPtr)(ct28))->cmd[1] = (arg),(cmdSyntaxPtr)(ct28)) | ||
348 | |||
349 | // -- COMMAND 29 is reserved -- | ||
350 | |||
351 | #define CMD_CTSFL_ENAB (cmdSyntaxPtr)(ct30) // Enable CTS flow control | ||
352 | #define CMD_CTSFL_DSAB (cmdSyntaxPtr)(ct31) // Disable CTS flow control | ||
353 | #define CMD_RTSFL_ENAB (cmdSyntaxPtr)(ct32) // Enable RTS flow control | ||
354 | #define CMD_RTSFL_DSAB (cmdSyntaxPtr)(ct33) // Disable RTS flow control | ||
355 | |||
356 | // Specify istrip option | ||
357 | // | ||
358 | #define CMD_ISTRIP_OPT(arg) \ | ||
359 | (((cmdSyntaxPtr)(ct34))->cmd[1] = (arg),(cmdSyntaxPtr)(ct34)) | ||
360 | |||
361 | #define CIS_NOSTRIP 0 // Strip characters to character size | ||
362 | #define CIS_STRIP 1 // Strip any 8-bit characters to 7 bits | ||
363 | |||
364 | // Send a break of arg milliseconds | ||
365 | // | ||
366 | #define CMD_SEND_BRK(arg) \ | ||
367 | (((cmdSyntaxPtr)(ct35))->cmd[1] = (arg),(cmdSyntaxPtr)(ct35)) | ||
368 | |||
369 | // Set error reporting mode | ||
370 | // | ||
371 | #define CMD_SET_ERROR(arg) \ | ||
372 | (((cmdSyntaxPtr)(ct36))->cmd[1] = (arg),(cmdSyntaxPtr)(ct36)) | ||
373 | |||
374 | #define CSE_ESTAT 0 // Report error in a status packet | ||
375 | #define CSE_NOREP 1 // Treat character as though it were good | ||
376 | #define CSE_DROP 2 // Discard the character | ||
377 | #define CSE_NULL 3 // Replace with a null | ||
378 | #define CSE_MARK 4 // Replace with a 3-character sequence (as Unix) | ||
379 | |||
380 | #define CMD_SET_REPLACEMENT(arg,ch) \ | ||
381 | (((cmdSyntaxPtr)(ct36a))->cmd[1] = (arg), \ | ||
382 | (((cmdSyntaxPtr)(ct36a))->cmd[2] = (ch), \ | ||
383 | (cmdSyntaxPtr)(ct36a)) | ||
384 | |||
385 | #define CSE_REPLACE 0x8 // Replace the errored character with the | ||
386 | // replacement character defined here | ||
387 | |||
388 | #define CSE_STAT_REPLACE 0x18 // Replace the errored character with the | ||
389 | // replacement character defined here AND | ||
390 | // report the error as a status packet (as in | ||
391 | // CSE_ESTAT). | ||
392 | |||
393 | |||
394 | // COMMAND 37, to send flow control packets, is handled only by low-level | ||
395 | // library code in response to data movement and shouldn't ever be sent by the | ||
396 | // user code. See i2pack.h and the body of i2lib.c for details. | ||
397 | |||
398 | // Enable on-board post-processing, using options given in oflag argument. | ||
399 | // Formerly, this command was automatically preceded by a CMD_OPOST_OFF command | ||
400 | // because the loadware does not permit sending back-to-back CMD_OPOST_ON | ||
401 | // commands without an intervening CMD_OPOST_OFF. BUT, WE LEARN 18 MAY 92, that | ||
402 | // CMD_OPOST_ON and CMD_OPOST_OFF must each be at the end of a packet (or in a | ||
403 | // solo packet). This means the caller must specify separately CMD_OPOST_OFF, | ||
404 | // CMD_OPOST_ON(parm) when he calls i2QueueCommands(). That function will ensure | ||
405 | // each gets a separate packet. Extra CMD_OPOST_OFF's are always ok. | ||
406 | // | ||
407 | #define CMD_OPOST_ON(oflag) \ | ||
408 | (*(USHORT *)(((cmdSyntaxPtr)(ct39))->cmd[1]) = (oflag), \ | ||
409 | (cmdSyntaxPtr)(ct39)) | ||
410 | |||
411 | #define CMD_OPOST_OFF (cmdSyntaxPtr)(ct40) // Disable on-board post-proc | ||
412 | |||
413 | #define CMD_RESUME (cmdSyntaxPtr)(ct41) // Resume: behave as though an XON | ||
414 | // were received; | ||
415 | |||
416 | // Set Transmit baud rate (see command 7 for arguments) | ||
417 | // | ||
418 | #define CMD_SETBAUD_TX(arg) \ | ||
419 | (((cmdSyntaxPtr)(ct42))->cmd[1] = (arg),(cmdSyntaxPtr)(ct42)) | ||
420 | |||
421 | // Set Receive baud rate (see command 7 for arguments) | ||
422 | // | ||
423 | #define CMD_SETBAUD_RX(arg) \ | ||
424 | (((cmdSyntaxPtr)(ct43))->cmd[1] = (arg),(cmdSyntaxPtr)(ct43)) | ||
425 | |||
426 | // Request interrupt from board each arg milliseconds. Interrupt will specify | ||
427 | // "received data", even though there may be no data present. If arg == 0, | ||
428 | // disables any such interrupts. | ||
429 | // | ||
430 | #define CMD_PING_REQ(arg) \ | ||
431 | (((cmdSyntaxPtr)(ct44))->cmd[1] = (arg),(cmdSyntaxPtr)(ct44)) | ||
432 | |||
433 | #define CMD_HOT_ENAB (cmdSyntaxPtr)(ct45) // Enable Hot-key checking | ||
434 | #define CMD_HOT_DSAB (cmdSyntaxPtr)(ct46) // Disable Hot-key checking | ||
435 | |||
436 | // COMMAND 47: Send Protocol info via Unix flags: | ||
437 | // iflag = Unix tty t_iflag | ||
438 | // cflag = Unix tty t_cflag | ||
439 | // lflag = Unix tty t_lflag | ||
440 | // See System V Unix/Xenix documentation for the meanings of the bit fields | ||
441 | // within these flags | ||
442 | // | ||
443 | #define CMD_UNIX_FLAGS(iflag,cflag,lflag) i2cmdUnixFlags(iflag,cflag,lflag) | ||
444 | |||
445 | #define CMD_DSRFL_ENAB (cmdSyntaxPtr)(ct48) // Enable DSR receiver ctrl | ||
446 | #define CMD_DSRFL_DSAB (cmdSyntaxPtr)(ct49) // Disable DSR receiver ctrl | ||
447 | #define CMD_DTRFL_ENAB (cmdSyntaxPtr)(ct50) // Enable DTR flow control | ||
448 | #define CMD_DTRFL_DSAB (cmdSyntaxPtr)(ct51) // Disable DTR flow control | ||
449 | #define CMD_BAUD_RESET (cmdSyntaxPtr)(ct52) // Reset baudrate table | ||
450 | |||
451 | // COMMAND 54: Define custom rate #1 | ||
452 | // rate = (short) 1/10 of the desired baud rate | ||
453 | // | ||
454 | #define CMD_BAUD_DEF1(rate) i2cmdBaudDef(1,rate) | ||
455 | |||
456 | // COMMAND 55: Define custom rate #2 | ||
457 | // rate = (short) 1/10 of the desired baud rate | ||
458 | // | ||
459 | #define CMD_BAUD_DEF2(rate) i2cmdBaudDef(2,rate) | ||
460 | |||
461 | // Pause arg hundredths of seconds. (Note, this is NOT milliseconds.) | ||
462 | // | ||
463 | #define CMD_PAUSE(arg) \ | ||
464 | (((cmdSyntaxPtr)(ct56))->cmd[1] = (arg),(cmdSyntaxPtr)(ct56)) | ||
465 | |||
466 | #define CMD_SUSPEND (cmdSyntaxPtr)(ct57) // Suspend output | ||
467 | #define CMD_UNSUSPEND (cmdSyntaxPtr)(ct58) // Un-Suspend output | ||
468 | |||
469 | // Set parity-checking options | ||
470 | // | ||
471 | #define CMD_PARCHK(arg) \ | ||
472 | (((cmdSyntaxPtr)(ct59))->cmd[1] = (arg),(cmdSyntaxPtr)(ct59)) | ||
473 | |||
474 | #define CPK_ENAB 0 // Enable parity checking on input | ||
475 | #define CPK_DSAB 1 // Disable parity checking on input | ||
476 | |||
477 | #define CMD_BMARK_REQ (cmdSyntaxPtr)(ct60) // Bookmark request | ||
478 | |||
479 | |||
480 | // Enable/Disable internal loopback mode | ||
481 | // | ||
482 | #define CMD_INLOOP(arg) \ | ||
483 | (((cmdSyntaxPtr)(ct61))->cmd[1] = (arg),(cmdSyntaxPtr)(ct61)) | ||
484 | |||
485 | #define CIN_DISABLE 0 // Normal operation (default) | ||
486 | #define CIN_ENABLE 1 // Internal (local) loopback | ||
487 | #define CIN_REMOTE 2 // Remote loopback | ||
488 | |||
489 | // Specify timeout for hotkeys: Delay will be (arg x 10) milliseconds, arg == 0 | ||
490 | // --> no timeout: wait forever. | ||
491 | // | ||
492 | #define CMD_HOT_TIME(arg) \ | ||
493 | (((cmdSyntaxPtr)(ct62))->cmd[1] = (arg),(cmdSyntaxPtr)(ct62)) | ||
494 | |||
495 | |||
496 | // Define (outgoing) xon for receive flow control | ||
497 | // | ||
498 | #define CMD_DEF_OXON(arg) \ | ||
499 | (((cmdSyntaxPtr)(ct63))->cmd[1] = (arg),(cmdSyntaxPtr)(ct63)) | ||
500 | |||
501 | // Define (outgoing) xoff for receiver flow control | ||
502 | // | ||
503 | #define CMD_DEF_OXOFF(arg) \ | ||
504 | (((cmdSyntaxPtr)(ct64))->cmd[1] = (arg),(cmdSyntaxPtr)(ct64)) | ||
505 | |||
506 | // Enable/Disable RTS on transmit (1/2 duplex-style) | ||
507 | // | ||
508 | #define CMD_RTS_XMIT(arg) \ | ||
509 | (((cmdSyntaxPtr)(ct65))->cmd[1] = (arg),(cmdSyntaxPtr)(ct65)) | ||
510 | |||
511 | #define CHD_DISABLE 0 | ||
512 | #define CHD_ENABLE 1 | ||
513 | |||
514 | // Set high-water-mark level (debugging use only) | ||
515 | // | ||
516 | #define CMD_SETHIGHWAT(arg) \ | ||
517 | (((cmdSyntaxPtr)(ct66))->cmd[1] = (arg),(cmdSyntaxPtr)(ct66)) | ||
518 | |||
519 | // Start flushing tagged data (tag = 0-14) | ||
520 | // | ||
521 | #define CMD_START_SELFL(tag) \ | ||
522 | (((cmdSyntaxPtr)(ct67))->cmd[1] = (tag),(cmdSyntaxPtr)(ct67)) | ||
523 | |||
524 | // End flushing tagged data (tag = 0-14) | ||
525 | // | ||
526 | #define CMD_END_SELFL(tag) \ | ||
527 | (((cmdSyntaxPtr)(ct68))->cmd[1] = (tag),(cmdSyntaxPtr)(ct68)) | ||
528 | |||
529 | #define CMD_HWFLOW_OFF (cmdSyntaxPtr)(ct69) // Disable HW TX flow control | ||
530 | #define CMD_ODSRFL_ENAB (cmdSyntaxPtr)(ct70) // Enable DSR output f/c | ||
531 | #define CMD_ODSRFL_DSAB (cmdSyntaxPtr)(ct71) // Disable DSR output f/c | ||
532 | #define CMD_ODCDFL_ENAB (cmdSyntaxPtr)(ct72) // Enable DCD output f/c | ||
533 | #define CMD_ODCDFL_DSAB (cmdSyntaxPtr)(ct73) // Disable DCD output f/c | ||
534 | |||
535 | // Set transmit interrupt load level. Count should be an even value 2-12 | ||
536 | // | ||
537 | #define CMD_LOADLEVEL(count) \ | ||
538 | (((cmdSyntaxPtr)(ct74))->cmd[1] = (count),(cmdSyntaxPtr)(ct74)) | ||
539 | |||
540 | // If reporting DSS changes, map to character sequence FFh, 2, MSR | ||
541 | // | ||
542 | #define CMD_STATDATA(arg) \ | ||
543 | (((cmdSyntaxPtr)(ct75))->cmd[1] = (arg),(cmdSyntaxPtr)(ct75)) | ||
544 | |||
545 | #define CSTD_DISABLE// Report DSS changes as status packets only (default) | ||
546 | #define CSTD_ENABLE // Report DSS changes as in-band data sequence as well as | ||
547 | // by status packet. | ||
548 | |||
549 | #define CMD_BREAK_ON (cmdSyntaxPtr)(ct76)// Set break and stop xmit | ||
550 | #define CMD_BREAK_OFF (cmdSyntaxPtr)(ct77)// End break and restart xmit | ||
551 | #define CMD_GETFC (cmdSyntaxPtr)(ct78)// Request for flow control packet | ||
552 | // from board. | ||
553 | |||
554 | // Transmit this character immediately | ||
555 | // | ||
556 | #define CMD_XMIT_NOW(ch) \ | ||
557 | (((cmdSyntaxPtr)(ct79))->cmd[1] = (ch),(cmdSyntaxPtr)(ct79)) | ||
558 | |||
559 | // Set baud rate via "divisor latch" | ||
560 | // | ||
561 | #define CMD_DIVISOR_LATCH(which,value) \ | ||
562 | (((cmdSyntaxPtr)(ct80))->cmd[1] = (which), \ | ||
563 | *(USHORT *)(((cmdSyntaxPtr)(ct80))->cmd[2]) = (value), \ | ||
564 | (cmdSyntaxPtr)(ct80)) | ||
565 | |||
566 | #define CDL_RX 1 // Set receiver rate | ||
567 | #define CDL_TX 2 // Set transmit rate | ||
568 | // (CDL_TX | CDL_RX) Set both rates | ||
569 | |||
570 | // Request for special diagnostic status pkt from the board. | ||
571 | // | ||
572 | #define CMD_GET_STATUS (cmdSyntaxPtr)(ct81) | ||
573 | |||
574 | // Request time-stamped transmit character count packet. | ||
575 | // | ||
576 | #define CMD_GET_TXCNT (cmdSyntaxPtr)(ct82) | ||
577 | |||
578 | // Request time-stamped receive character count packet. | ||
579 | // | ||
580 | #define CMD_GET_RXCNT (cmdSyntaxPtr)(ct83) | ||
581 | |||
582 | // Request for box/board I.D. packet. | ||
583 | #define CMD_GET_BOXIDS (cmdSyntaxPtr)(ct84) | ||
584 | |||
585 | // Enable or disable multiple channels according to bit-mapped ushorts box 1-4 | ||
586 | // | ||
587 | #define CMD_ENAB_MULT(enable, box1, box2, box3, box4) \ | ||
588 | (((cmdSytaxPtr)(ct85))->cmd[1] = (enable), \ | ||
589 | *(USHORT *)(((cmdSyntaxPtr)(ct85))->cmd[2]) = (box1), \ | ||
590 | *(USHORT *)(((cmdSyntaxPtr)(ct85))->cmd[4]) = (box2), \ | ||
591 | *(USHORT *)(((cmdSyntaxPtr)(ct85))->cmd[6]) = (box3), \ | ||
592 | *(USHORT *)(((cmdSyntaxPtr)(ct85))->cmd[8]) = (box4), \ | ||
593 | (cmdSyntaxPtr)(ct85)) | ||
594 | |||
595 | #define CEM_DISABLE 0 | ||
596 | #define CEM_ENABLE 1 | ||
597 | |||
598 | // Enable or disable receiver or receiver interrupts (default both enabled) | ||
599 | // | ||
600 | #define CMD_RCV_ENABLE(ch) \ | ||
601 | (((cmdSyntaxPtr)(ct86))->cmd[1] = (ch),(cmdSyntaxPtr)(ct86)) | ||
602 | |||
603 | #define CRE_OFF 0 // Disable the receiver | ||
604 | #define CRE_ON 1 // Enable the receiver | ||
605 | #define CRE_INTOFF 2 // Disable receiver interrupts (to loadware) | ||
606 | #define CRE_INTON 3 // Enable receiver interrupts (to loadware) | ||
607 | |||
608 | // Starts up a hardware test process, which runs transparently, and sends a | ||
609 | // STAT_HWFAIL packet in case a hardware failure is detected. | ||
610 | // | ||
611 | #define CMD_HW_TEST (cmdSyntaxPtr)(ct87) | ||
612 | |||
613 | // Change receiver threshold and timeout value: | ||
614 | // Defaults: timeout = 20mS | ||
615 | // threshold count = 8 when DTRflow not in use, | ||
616 | // threshold count = 5 when DTRflow in use. | ||
617 | // | ||
618 | #define CMD_RCV_THRESHOLD(count,ms) \ | ||
619 | (((cmdSyntaxPtr)(ct88))->cmd[1] = (count), \ | ||
620 | ((cmdSyntaxPtr)(ct88))->cmd[2] = (ms), \ | ||
621 | (cmdSyntaxPtr)(ct88)) | ||
622 | |||
623 | // Makes the loadware report DSS signals for this channel immediately. | ||
624 | // | ||
625 | #define CMD_DSS_NOW (cmdSyntaxPtr)(ct89) | ||
626 | |||
627 | // Set the receive silo parameters | ||
628 | // timeout is ms idle wait until delivery (~VTIME) | ||
629 | // threshold is max characters cause interrupt (~VMIN) | ||
630 | // | ||
631 | #define CMD_SET_SILO(timeout,threshold) \ | ||
632 | (((cmdSyntaxPtr)(ct90))->cmd[1] = (timeout), \ | ||
633 | ((cmdSyntaxPtr)(ct90))->cmd[2] = (threshold), \ | ||
634 | (cmdSyntaxPtr)(ct90)) | ||
635 | |||
636 | // Set timed break in decisecond (1/10s) | ||
637 | // | ||
638 | #define CMD_LBREAK(ds) \ | ||
639 | (((cmdSyntaxPtr)(ct91))->cmd[1] = (ds),(cmdSyntaxPtr)(ct66)) | ||
640 | |||
641 | |||
642 | |||
643 | #endif // I2CMD_H | ||