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