Linux-2.6.12-rc2
[cascardo/linux.git] / drivers / char / ip2 / i2cmd.h
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