URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [char/] [ip2/] [i2cmd.c] - Rev 1765
Compare with Previous | Blame | View Log
/******************************************************************************* * * (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; }