1 /*******************************************************************************
3 * (c) 1998 by Computone Corporation
5 ********************************************************************************
8 * PACKAGE: Linux tty Device Driver for IntelliPort family of multiport
9 * serial I/O controllers.
11 * DESCRIPTION: Definition table for In-line and Bypass commands. Applicable
12 * only when the standard loadware is active. (This is included
13 * source code, not a separate compilation module.)
15 *******************************************************************************/
17 //------------------------------------------------------------------------------
21 // 10 October 1991 MAG First Draft
22 // 7 November 1991 MAG Reflects additional commands.
23 // 24 February 1992 MAG Additional commands for 1.4.x loadware
24 // 11 March 1992 MAG Additional commands
25 // 30 March 1992 MAG Additional command: CMD_DSS_NOW
26 // 18 May 1992 MAG Discovered commands 39 & 40 must be at the end of a
27 // packet: affects implementation.
28 //------------------------------------------------------------------------------
34 #include "i2cmd.h" /* To get some bit-defines */
36 //------------------------------------------------------------------------------
37 // Here is the table of global arrays which represent each type of command
38 // supported in the IntelliPort standard loadware. See also i2cmd.h
39 // for a more complete explanation of what is going on.
40 //------------------------------------------------------------------------------
42 // Here are the various globals: note that the names are not used except through
43 // the macros defined in i2cmd.h. Also note that although they are character
44 // arrays here (for extendability) they are cast to structure pointers in the
45 // i2cmd.h macros. See i2cmd.h for flags definitions.
47 // Length Flags Command
48 static UCHAR ct02
[] = { 1, BTH
, 0x02 }; // DTR UP
49 static UCHAR ct03
[] = { 1, BTH
, 0x03 }; // DTR DN
50 static UCHAR ct04
[] = { 1, BTH
, 0x04 }; // RTS UP
51 static UCHAR ct05
[] = { 1, BTH
, 0x05 }; // RTS DN
52 static UCHAR ct06
[] = { 1, BYP
, 0x06 }; // START FL
53 static UCHAR ct07
[] = { 2, BTH
, 0x07,0 }; // BAUD
54 static UCHAR ct08
[] = { 2, BTH
, 0x08,0 }; // BITS
55 static UCHAR ct09
[] = { 2, BTH
, 0x09,0 }; // STOP
56 static UCHAR ct10
[] = { 2, BTH
, 0x0A,0 }; // PARITY
57 static UCHAR ct11
[] = { 2, BTH
, 0x0B,0 }; // XON
58 static UCHAR ct12
[] = { 2, BTH
, 0x0C,0 }; // XOFF
59 static UCHAR ct13
[] = { 1, BTH
, 0x0D }; // STOP FL
60 static UCHAR ct14
[] = { 1, BYP
|VIP
, 0x0E }; // ACK HOTK
61 //static UCHAR ct15[]={ 2, BTH|VIP, 0x0F,0 }; // IRQ SET
62 static UCHAR ct16
[] = { 2, INL
, 0x10,0 }; // IXONOPTS
63 static UCHAR ct17
[] = { 2, INL
, 0x11,0 }; // OXONOPTS
64 static UCHAR ct18
[] = { 1, INL
, 0x12 }; // CTSENAB
65 static UCHAR ct19
[] = { 1, BTH
, 0x13 }; // CTSDSAB
66 static UCHAR ct20
[] = { 1, INL
, 0x14 }; // DCDENAB
67 static UCHAR ct21
[] = { 1, BTH
, 0x15 }; // DCDDSAB
68 static UCHAR ct22
[] = { 1, BTH
, 0x16 }; // DSRENAB
69 static UCHAR ct23
[] = { 1, BTH
, 0x17 }; // DSRDSAB
70 static UCHAR ct24
[] = { 1, BTH
, 0x18 }; // RIENAB
71 static UCHAR ct25
[] = { 1, BTH
, 0x19 }; // RIDSAB
72 static UCHAR ct26
[] = { 2, BTH
, 0x1A,0 }; // BRKENAB
73 static UCHAR ct27
[] = { 1, BTH
, 0x1B }; // BRKDSAB
74 //static UCHAR ct28[]={ 2, BTH, 0x1C,0 }; // MAXBLOKSIZE
75 //static UCHAR ct29[]={ 2, 0, 0x1D,0 }; // reserved
76 static UCHAR ct30
[] = { 1, INL
, 0x1E }; // CTSFLOWENAB
77 static UCHAR ct31
[] = { 1, INL
, 0x1F }; // CTSFLOWDSAB
78 static UCHAR ct32
[] = { 1, INL
, 0x20 }; // RTSFLOWENAB
79 static UCHAR ct33
[] = { 1, INL
, 0x21 }; // RTSFLOWDSAB
80 static UCHAR ct34
[] = { 2, BTH
, 0x22,0 }; // ISTRIPMODE
81 static UCHAR ct35
[] = { 2, BTH
|END
, 0x23,0 }; // SENDBREAK
82 static UCHAR ct36
[] = { 2, BTH
, 0x24,0 }; // SETERRMODE
83 //static UCHAR ct36a[]={ 3, INL, 0x24,0,0 }; // SET_REPLACE
85 // The following is listed for completeness, but should never be sent directly
86 // by user-level code. It is sent only by library routines in response to data
88 //static UCHAR ct37[]={ 5, BYP|VIP, 0x25,0,0,0,0 }; // FLOW PACKET
91 static UCHAR ct38
[] = {11, BTH
|VAR
, 0x26,0,0,0,0,0,0,0,0,0,0 }; // DEF KEY SEQ
92 //static UCHAR ct39[]={ 3, BTH|END, 0x27,0,0 }; // OPOSTON
93 //static UCHAR ct40[]={ 1, BTH|END, 0x28 }; // OPOSTOFF
94 static UCHAR ct41
[] = { 1, BYP
, 0x29 }; // RESUME
95 //static UCHAR ct42[]={ 2, BTH, 0x2A,0 }; // TXBAUD
96 //static UCHAR ct43[]={ 2, BTH, 0x2B,0 }; // RXBAUD
97 //static UCHAR ct44[]={ 2, BTH, 0x2C,0 }; // MS PING
98 //static UCHAR ct45[]={ 1, BTH, 0x2D }; // HOTENAB
99 //static UCHAR ct46[]={ 1, BTH, 0x2E }; // HOTDSAB
100 static UCHAR ct47
[] = { 7, BTH
, 0x2F,0,0,0,0,0,0 }; // UNIX FLAGS
101 //static UCHAR ct48[]={ 1, BTH, 0x30 }; // DSRFLOWENAB
102 //static UCHAR ct49[]={ 1, BTH, 0x31 }; // DSRFLOWDSAB
103 //static UCHAR ct50[]={ 1, BTH, 0x32 }; // DTRFLOWENAB
104 //static UCHAR ct51[]={ 1, BTH, 0x33 }; // DTRFLOWDSAB
105 //static UCHAR ct52[]={ 1, BTH, 0x34 }; // BAUDTABRESET
106 static UCHAR ct53
[] = { 3, BTH
, 0x35,0,0 }; // BAUDREMAP
107 static UCHAR ct54
[] = { 3, BTH
, 0x36,0,0 }; // CUSTOMBAUD1
108 static UCHAR ct55
[] = { 3, BTH
, 0x37,0,0 }; // CUSTOMBAUD2
109 static UCHAR ct56
[] = { 2, BTH
|END
, 0x38,0 }; // PAUSE
110 static UCHAR ct57
[] = { 1, BYP
, 0x39 }; // SUSPEND
111 static UCHAR ct58
[] = { 1, BYP
, 0x3A }; // UNSUSPEND
112 static UCHAR ct59
[] = { 2, BTH
, 0x3B,0 }; // PARITYCHK
113 static UCHAR ct60
[] = { 1, INL
|VIP
, 0x3C }; // BOOKMARKREQ
114 //static UCHAR ct61[]={ 2, BTH, 0x3D,0 }; // INTERNALLOOP
115 //static UCHAR ct62[]={ 2, BTH, 0x3E,0 }; // HOTKTIMEOUT
116 static UCHAR ct63
[] = { 2, INL
, 0x3F,0 }; // SETTXON
117 static UCHAR ct64
[] = { 2, INL
, 0x40,0 }; // SETTXOFF
118 //static UCHAR ct65[]={ 2, BTH, 0x41,0 }; // SETAUTORTS
119 //static UCHAR ct66[]={ 2, BTH, 0x42,0 }; // SETHIGHWAT
120 //static UCHAR ct67[]={ 2, BYP, 0x43,0 }; // STARTSELFL
121 //static UCHAR ct68[]={ 2, INL, 0x44,0 }; // ENDSELFL
122 //static UCHAR ct69[]={ 1, BYP, 0x45 }; // HWFLOW_OFF
123 //static UCHAR ct70[]={ 1, BTH, 0x46 }; // ODSRFL_ENAB
124 //static UCHAR ct71[]={ 1, BTH, 0x47 }; // ODSRFL_DSAB
125 //static UCHAR ct72[]={ 1, BTH, 0x48 }; // ODCDFL_ENAB
126 //static UCHAR ct73[]={ 1, BTH, 0x49 }; // ODCDFL_DSAB
127 //static UCHAR ct74[]={ 2, BTH, 0x4A,0 }; // LOADLEVEL
128 //static UCHAR ct75[]={ 2, BTH, 0x4B,0 }; // STATDATA
129 //static UCHAR ct76[]={ 1, BYP, 0x4C }; // BREAK_ON
130 //static UCHAR ct77[]={ 1, BYP, 0x4D }; // BREAK_OFF
131 //static UCHAR ct78[]={ 1, BYP, 0x4E }; // GETFC
132 static UCHAR ct79
[] = { 2, BYP
, 0x4F,0 }; // XMIT_NOW
133 //static UCHAR ct80[]={ 4, BTH, 0x50,0,0,0 }; // DIVISOR_LATCH
134 //static UCHAR ct81[]={ 1, BYP, 0x51 }; // GET_STATUS
135 //static UCHAR ct82[]={ 1, BYP, 0x52 }; // GET_TXCNT
136 //static UCHAR ct83[]={ 1, BYP, 0x53 }; // GET_RXCNT
137 //static UCHAR ct84[]={ 1, BYP, 0x54 }; // GET_BOXIDS
138 //static UCHAR ct85[]={10, BYP, 0x55,0,0,0,0,0,0,0,0,0 }; // ENAB_MULT
139 //static UCHAR ct86[]={ 2, BTH, 0x56,0 }; // RCV_ENABLE
140 static UCHAR ct87
[] = { 1, BYP
, 0x57 }; // HW_TEST
141 //static UCHAR ct88[]={ 3, BTH, 0x58,0,0 }; // RCV_THRESHOLD
142 //static UCHAR ct89[]={ 1, BYP, 0x59 }; // DSS_NOW
143 //static UCHAR ct90[]={ 3, BYP, 0x5A,0,0 }; // Set SILO
144 //static UCHAR ct91[]={ 2, BYP, 0x5B,0 }; // timed break
146 // Some composite commands as well
147 //static UCHAR cc01[]={ 2, BTH, 0x02,0x04 }; // DTR & RTS UP
148 //static UCHAR cc02[]={ 2, BTH, 0x03,0x05 }; // DTR & RTS DN
154 //******************************************************************************
155 // Function: i2cmdSetSeq(type, size, string)
156 // Parameters: type - sequence number
157 // size - length of sequence
158 // string - substitution string
160 // Returns: Pointer to command structure
164 // This routine sets the parameters of command 38 Define Hot Key sequence (alias
165 // "special receive sequence"). Returns a pointer to the structure. Endeavours
166 // to be bullet-proof in that the sequence number is forced in range, and any
167 // out-of-range sizes are forced to zero.
168 //******************************************************************************
170 i2cmdSetSeq(unsigned char type
, unsigned char size
, unsigned char *string
)
172 cmdSyntaxPtr pCM
= (cmdSyntaxPtr
) ct38
;
175 pCM
->cmd
[1] = ((type
> 0xf) ? 0xf : type
); // Sequence number
176 size
= ((size
> 0x8) ? 0 : size
); // size
178 pCM
->length
= 3 + size
; // UPDATES THE LENGTH!
188 //******************************************************************************
189 // Function: i2cmdUnixFlags(iflag, cflag, lflag)
190 // Parameters: Unix tty flags
192 // Returns: Pointer to command structure
196 // This routine sets the parameters of command 47 and returns a pointer to the
197 // appropriate structure.
198 //******************************************************************************
200 i2cmdUnixFlags(unsigned short iflag
,unsigned short cflag
,unsigned short lflag
)
202 cmdSyntaxPtr pCM
= (cmdSyntaxPtr
) ct47
;
204 pCM
->cmd
[1] = (unsigned char) iflag
;
205 pCM
->cmd
[2] = (unsigned char) (iflag
>> 8);
206 pCM
->cmd
[3] = (unsigned char) cflag
;
207 pCM
->cmd
[4] = (unsigned char) (cflag
>> 8);
208 pCM
->cmd
[5] = (unsigned char) lflag
;
209 pCM
->cmd
[6] = (unsigned char) (lflag
>> 8);
213 //******************************************************************************
214 // Function: i2cmdBaudRemap(dest,src)
217 // Returns: Pointer to command structure
221 // This routine sets the parameters of command 53 and returns a pointer to the
222 // appropriate structure.
223 //******************************************************************************
225 i2cmdBaudRemap(unsigned char dest
, unsigned char src
)
227 cmdSyntaxPtr pCM
= (cmdSyntaxPtr
) ct53
;
234 //******************************************************************************
235 // Function: i2cmdBaudDef(which, rate)
238 // Returns: Pointer to command structure
242 // This routine sets the parameters of commands 54 or 55 (according to the
243 // argument which), and returns a pointer to the appropriate structure.
244 //******************************************************************************
246 i2cmdBaudDef(int which
, unsigned short rate
)
253 pCM
= (cmdSyntaxPtr
) ct54
;
257 pCM
= (cmdSyntaxPtr
) ct55
;
260 pCM
->cmd
[1] = (unsigned char) rate
;
261 pCM
->cmd
[2] = (unsigned char) (rate
>> 8);