2005-04-17 02:20:36 +04:00
/*******************************************************************************
*
* ( c ) 1999 by Computone Corporation
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
* PACKAGE : Linux tty Device Driver for IntelliPort II family of multiport
* serial I / O controllers .
*
* DESCRIPTION : Definitions and support for In - line and Bypass commands .
* Applicable only when the standard loadware is active .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//------------------------------------------------------------------------------
// Revision History:
//
// 10 October 1991 MAG First Draft
// 7 November 1991 MAG Reflects some new commands
// 20 February 1992 MAG CMD_HOTACK corrected: no argument.
// 24 February 1992 MAG Support added for new commands for 1.4.x loadware.
// 11 March 1992 MAG Additional commands.
// 16 March 1992 MAG Additional commands.
// 30 March 1992 MAG Additional command: CMD_DSS_NOW
// 18 May 1992 MAG Changed CMD_OPOST
//
//------------------------------------------------------------------------------
# ifndef I2CMD_H // To prevent multiple includes
# define I2CMD_H 1
# include "ip2types.h"
// This module is designed to provide a uniform method of sending commands to
// the board through command packets. The difficulty is, some commands take
// parameters, others do not. Furthermore, it is often useful to send several
// commands to the same channel as part of the same packet. (See also i2pack.h.)
//
// This module is designed so that the caller should not be responsible for
// remembering the exact syntax of each command, or at least so that the
// compiler could check things somewhat. I'll explain as we go...
//
// First, a structure which can embody the syntax of each type of command.
//
typedef struct _cmdSyntax
{
UCHAR length ; // Number of bytes in the command
UCHAR flags ; // Information about the command (see below)
// The command and its parameters, which may be of arbitrary length. Don't
// worry yet how the parameters will be initialized; macros later take care
// of it. Also, don't worry about the arbitrary length issue; this structure
// is never used to allocate space (see i2cmd.c).
UCHAR cmd [ 2 ] ;
} cmdSyntax , * cmdSyntaxPtr ;
// Bit assignments for flags
# define INL 1 // Set if suitable for inline commands
# define BYP 2 // Set if suitable for bypass commands
# define BTH (INL|BYP) // suitable for either!
# define END 4 // Set if this must be the last command in a block
# define VIP 8 // Set if this command is special in some way and really
// should only be sent from the library-level and not
// directly from user-level
# define VAR 0x10 // This command is of variable length!
// Declarations for the global arrays used to bear the commands and their
// arguments.
//
// Note: Since these are globals and the arguments might change, it is important
// that the library routine COPY these into buffers from whence they would be
// sent, rather than merely storing the pointers. In multi-threaded
// environments, important that the copy should obtain before any context switch
// is allowed. Also, for parameterized commands, DO NOT ISSUE THE SAME COMMAND
// MORE THAN ONCE WITH THE SAME PARAMETERS in the same call.
//
static UCHAR ct02 [ ] ;
static UCHAR ct03 [ ] ;
static UCHAR ct04 [ ] ;
static UCHAR ct05 [ ] ;
static UCHAR ct06 [ ] ;
static UCHAR ct07 [ ] ;
static UCHAR ct08 [ ] ;
static UCHAR ct09 [ ] ;
static UCHAR ct10 [ ] ;
static UCHAR ct11 [ ] ;
static UCHAR ct12 [ ] ;
static UCHAR ct13 [ ] ;
static UCHAR ct14 [ ] ;
static UCHAR ct15 [ ] ;
static UCHAR ct16 [ ] ;
static UCHAR ct17 [ ] ;
static UCHAR ct18 [ ] ;
static UCHAR ct19 [ ] ;
static UCHAR ct20 [ ] ;
static UCHAR ct21 [ ] ;
static UCHAR ct22 [ ] ;
static UCHAR ct23 [ ] ;
static UCHAR ct24 [ ] ;
static UCHAR ct25 [ ] ;
static UCHAR ct26 [ ] ;
static UCHAR ct27 [ ] ;
static UCHAR ct28 [ ] ;
static UCHAR ct29 [ ] ;
static UCHAR ct30 [ ] ;
static UCHAR ct31 [ ] ;
static UCHAR ct32 [ ] ;
static UCHAR ct33 [ ] ;
static UCHAR ct34 [ ] ;
static UCHAR ct35 [ ] ;
static UCHAR ct36 [ ] ;
static UCHAR ct36a [ ] ;
static UCHAR ct41 [ ] ;
static UCHAR ct42 [ ] ;
static UCHAR ct43 [ ] ;
static UCHAR ct44 [ ] ;
static UCHAR ct45 [ ] ;
static UCHAR ct46 [ ] ;
static UCHAR ct48 [ ] ;
static UCHAR ct49 [ ] ;
static UCHAR ct50 [ ] ;
static UCHAR ct51 [ ] ;
static UCHAR ct52 [ ] ;
static UCHAR ct56 [ ] ;
static UCHAR ct57 [ ] ;
static UCHAR ct58 [ ] ;
static UCHAR ct59 [ ] ;
static UCHAR ct60 [ ] ;
static UCHAR ct61 [ ] ;
static UCHAR ct62 [ ] ;
static UCHAR ct63 [ ] ;
static UCHAR ct64 [ ] ;
static UCHAR ct65 [ ] ;
static UCHAR ct66 [ ] ;
static UCHAR ct67 [ ] ;
static UCHAR ct68 [ ] ;
static UCHAR ct69 [ ] ;
static UCHAR ct70 [ ] ;
static UCHAR ct71 [ ] ;
static UCHAR ct72 [ ] ;
static UCHAR ct73 [ ] ;
static UCHAR ct74 [ ] ;
static UCHAR ct75 [ ] ;
static UCHAR ct76 [ ] ;
static UCHAR ct77 [ ] ;
static UCHAR ct78 [ ] ;
static UCHAR ct79 [ ] ;
static UCHAR ct80 [ ] ;
static UCHAR ct81 [ ] ;
static UCHAR ct82 [ ] ;
static UCHAR ct83 [ ] ;
static UCHAR ct84 [ ] ;
static UCHAR ct85 [ ] ;
static UCHAR ct86 [ ] ;
static UCHAR ct87 [ ] ;
static UCHAR ct88 [ ] ;
static UCHAR ct89 [ ] ;
static UCHAR ct90 [ ] ;
static UCHAR ct91 [ ] ;
static UCHAR cc01 [ ] ;
static UCHAR cc02 [ ] ;
// Now, refer to i2cmd.c, and see the character arrays defined there. They are
// cast here to cmdSyntaxPtr.
//
// There are library functions for issuing bypass or inline commands. These
// functions take one or more arguments of the type cmdSyntaxPtr. The routine
// then can figure out how long each command is supposed to be and easily add it
// to the list.
//
// For ease of use, we define manifests which return pointers to appropriate
// cmdSyntaxPtr things. But some commands also take arguments. If a single
// argument is used, we define a macro which performs the single assignment and
// (through the expedient of a comma expression) references the appropriate
// pointer. For commands requiring several arguments, we actually define a
// function to perform the assignments.
# define CMD_DTRUP (cmdSyntaxPtr)(ct02) // Raise DTR
# define CMD_DTRDN (cmdSyntaxPtr)(ct03) // Lower DTR
# define CMD_RTSUP (cmdSyntaxPtr)(ct04) // Raise RTS
# define CMD_RTSDN (cmdSyntaxPtr)(ct05) // Lower RTS
# define CMD_STARTFL (cmdSyntaxPtr)(ct06) // Start Flushing Data
# define CMD_DTRRTS_UP (cmdSyntaxPtr)(cc01) // Raise DTR and RTS
# define CMD_DTRRTS_DN (cmdSyntaxPtr)(cc02) // Lower DTR and RTS
// Set Baud Rate for transmit and receive
# define CMD_SETBAUD(arg) \
( ( ( cmdSyntaxPtr ) ( ct07 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct07 ) )
# define CBR_50 1
# define CBR_75 2
# define CBR_110 3
# define CBR_134 4
# define CBR_150 5
# define CBR_200 6
# define CBR_300 7
# define CBR_600 8
# define CBR_1200 9
# define CBR_1800 10
# define CBR_2400 11
# define CBR_4800 12
# define CBR_9600 13
# define CBR_19200 14
# define CBR_38400 15
# define CBR_2000 16
# define CBR_3600 17
# define CBR_7200 18
# define CBR_56000 19
# define CBR_57600 20
# define CBR_64000 21
# define CBR_76800 22
# define CBR_115200 23
# define CBR_C1 24 // Custom baud rate 1
# define CBR_C2 25 // Custom baud rate 2
# define CBR_153600 26
# define CBR_230400 27
# define CBR_307200 28
# define CBR_460800 29
# define CBR_921600 30
// Set Character size
//
# define CMD_SETBITS(arg) \
( ( ( cmdSyntaxPtr ) ( ct08 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct08 ) )
# define CSZ_5 0
# define CSZ_6 1
# define CSZ_7 2
# define CSZ_8 3
// Set number of stop bits
//
# define CMD_SETSTOP(arg) \
( ( ( cmdSyntaxPtr ) ( ct09 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct09 ) )
# define CST_1 0
# define CST_15 1 // 1.5 stop bits
# define CST_2 2
// Set parity option
//
# define CMD_SETPAR(arg) \
( ( ( cmdSyntaxPtr ) ( ct10 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct10 ) )
# define CSP_NP 0 // no parity
# define CSP_OD 1 // odd parity
# define CSP_EV 2 // Even parity
# define CSP_SP 3 // Space parity
# define CSP_MK 4 // Mark parity
// Define xon char for transmitter flow control
//
# define CMD_DEF_IXON(arg) \
( ( ( cmdSyntaxPtr ) ( ct11 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct11 ) )
// Define xoff char for transmitter flow control
//
# define CMD_DEF_IXOFF(arg) \
( ( ( cmdSyntaxPtr ) ( ct12 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct12 ) )
# define CMD_STOPFL (cmdSyntaxPtr)(ct13) // Stop Flushing data
// Acknowledge receipt of hotkey signal
//
# define CMD_HOTACK (cmdSyntaxPtr)(ct14)
// Define irq level to use. Should actually be sent by library-level code, not
// directly from user...
//
# define CMDVALUE_IRQ 15 // For library use at initialization. Until this command
// is sent, board processing doesn't really start.
# define CMD_SET_IRQ(arg) \
( ( ( cmdSyntaxPtr ) ( ct15 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct15 ) )
# define CIR_POLL 0 // No IRQ - Poll
# define CIR_3 3 // IRQ 3
# define CIR_4 4 // IRQ 4
# define CIR_5 5 // IRQ 5
# define CIR_7 7 // IRQ 7
# define CIR_10 10 // IRQ 10
# define CIR_11 11 // IRQ 11
# define CIR_12 12 // IRQ 12
# define CIR_15 15 // IRQ 15
// Select transmit flow xon/xoff options
//
# define CMD_IXON_OPT(arg) \
( ( ( cmdSyntaxPtr ) ( ct16 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct16 ) )
# define CIX_NONE 0 // Incoming Xon/Xoff characters not special
# define CIX_XON 1 // Xoff disable, Xon enable
# define CIX_XANY 2 // Xoff disable, any key enable
// Select receive flow xon/xoff options
//
# define CMD_OXON_OPT(arg) \
( ( ( cmdSyntaxPtr ) ( ct17 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct17 ) )
# define COX_NONE 0 // Don't send Xon/Xoff
# define COX_XON 1 // Send xon/xoff to start/stop incoming data
# define CMD_CTS_REP (cmdSyntaxPtr)(ct18) // Enable CTS reporting
# define CMD_CTS_NREP (cmdSyntaxPtr)(ct19) // Disable CTS reporting
# define CMD_DCD_REP (cmdSyntaxPtr)(ct20) // Enable DCD reporting
# define CMD_DCD_NREP (cmdSyntaxPtr)(ct21) // Disable DCD reporting
# define CMD_DSR_REP (cmdSyntaxPtr)(ct22) // Enable DSR reporting
# define CMD_DSR_NREP (cmdSyntaxPtr)(ct23) // Disable DSR reporting
# define CMD_RI_REP (cmdSyntaxPtr)(ct24) // Enable RI reporting
# define CMD_RI_NREP (cmdSyntaxPtr)(ct25) // Disable RI reporting
// Enable break reporting and select style
//
# define CMD_BRK_REP(arg) \
( ( ( cmdSyntaxPtr ) ( ct26 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct26 ) )
# define CBK_STAT 0x00 // Report breaks as a status (exception,irq)
# define CBK_NULL 0x01 // Report breaks as a good null
# define CBK_STAT_SEQ 0x02 // Report breaks as a status AND as in-band character
// sequence FFh, 01h, 10h
# define CBK_SEQ 0x03 // Report breaks as the in-band
//sequence FFh, 01h, 10h ONLY.
# define CBK_FLSH 0x04 // if this bit set also flush input data
# define CBK_POSIX 0x08 // if this bit set report as FF,0,0 sequence
# define CBK_SINGLE 0x10 // if this bit set with CBK_SEQ or CBK_STAT_SEQ
//then reports single null instead of triple
# define CMD_BRK_NREP (cmdSyntaxPtr)(ct27) // Disable break reporting
// Specify maximum block size for received data
//
# define CMD_MAX_BLOCK(arg) \
( ( ( cmdSyntaxPtr ) ( ct28 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct28 ) )
// -- COMMAND 29 is reserved --
# define CMD_CTSFL_ENAB (cmdSyntaxPtr)(ct30) // Enable CTS flow control
# define CMD_CTSFL_DSAB (cmdSyntaxPtr)(ct31) // Disable CTS flow control
# define CMD_RTSFL_ENAB (cmdSyntaxPtr)(ct32) // Enable RTS flow control
# define CMD_RTSFL_DSAB (cmdSyntaxPtr)(ct33) // Disable RTS flow control
// Specify istrip option
//
# define CMD_ISTRIP_OPT(arg) \
( ( ( cmdSyntaxPtr ) ( ct34 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct34 ) )
# define CIS_NOSTRIP 0 // Strip characters to character size
# define CIS_STRIP 1 // Strip any 8-bit characters to 7 bits
// Send a break of arg milliseconds
//
# define CMD_SEND_BRK(arg) \
( ( ( cmdSyntaxPtr ) ( ct35 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct35 ) )
// Set error reporting mode
//
# define CMD_SET_ERROR(arg) \
( ( ( cmdSyntaxPtr ) ( ct36 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct36 ) )
# define CSE_ESTAT 0 // Report error in a status packet
# define CSE_NOREP 1 // Treat character as though it were good
# define CSE_DROP 2 // Discard the character
# define CSE_NULL 3 // Replace with a null
# define CSE_MARK 4 // Replace with a 3-character sequence (as Unix)
# define CMD_SET_REPLACEMENT(arg,ch) \
( ( ( cmdSyntaxPtr ) ( ct36a ) ) - > cmd [ 1 ] = ( arg ) , \
( ( ( cmdSyntaxPtr ) ( ct36a ) ) - > cmd [ 2 ] = ( ch ) , \
( cmdSyntaxPtr ) ( ct36a ) )
# define CSE_REPLACE 0x8 // Replace the errored character with the
// replacement character defined here
# define CSE_STAT_REPLACE 0x18 // Replace the errored character with the
// replacement character defined here AND
// report the error as a status packet (as in
// CSE_ESTAT).
// COMMAND 37, to send flow control packets, is handled only by low-level
// library code in response to data movement and shouldn't ever be sent by the
// user code. See i2pack.h and the body of i2lib.c for details.
// Enable on-board post-processing, using options given in oflag argument.
// Formerly, this command was automatically preceded by a CMD_OPOST_OFF command
// because the loadware does not permit sending back-to-back CMD_OPOST_ON
// commands without an intervening CMD_OPOST_OFF. BUT, WE LEARN 18 MAY 92, that
// CMD_OPOST_ON and CMD_OPOST_OFF must each be at the end of a packet (or in a
// solo packet). This means the caller must specify separately CMD_OPOST_OFF,
// CMD_OPOST_ON(parm) when he calls i2QueueCommands(). That function will ensure
// each gets a separate packet. Extra CMD_OPOST_OFF's are always ok.
//
# define CMD_OPOST_ON(oflag) \
( * ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct39 ) ) - > cmd [ 1 ] ) = ( oflag ) , \
( cmdSyntaxPtr ) ( ct39 ) )
# define CMD_OPOST_OFF (cmdSyntaxPtr)(ct40) // Disable on-board post-proc
# define CMD_RESUME (cmdSyntaxPtr)(ct41) // Resume: behave as though an XON
// were received;
// Set Transmit baud rate (see command 7 for arguments)
//
# define CMD_SETBAUD_TX(arg) \
( ( ( cmdSyntaxPtr ) ( ct42 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct42 ) )
// Set Receive baud rate (see command 7 for arguments)
//
# define CMD_SETBAUD_RX(arg) \
( ( ( cmdSyntaxPtr ) ( ct43 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct43 ) )
// Request interrupt from board each arg milliseconds. Interrupt will specify
// "received data", even though there may be no data present. If arg == 0,
// disables any such interrupts.
//
# define CMD_PING_REQ(arg) \
( ( ( cmdSyntaxPtr ) ( ct44 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct44 ) )
# define CMD_HOT_ENAB (cmdSyntaxPtr)(ct45) // Enable Hot-key checking
# define CMD_HOT_DSAB (cmdSyntaxPtr)(ct46) // Disable Hot-key checking
2005-06-26 01:59:16 +04:00
#if 0
2005-04-17 02:20:36 +04:00
// COMMAND 47: Send Protocol info via Unix flags:
// iflag = Unix tty t_iflag
// cflag = Unix tty t_cflag
// lflag = Unix tty t_lflag
// See System V Unix/Xenix documentation for the meanings of the bit fields
// within these flags
//
# define CMD_UNIX_FLAGS(iflag,cflag,lflag) i2cmdUnixFlags(iflag,cflag,lflag)
2005-06-26 01:59:16 +04:00
# endif /* 0 */
2005-04-17 02:20:36 +04:00
# define CMD_DSRFL_ENAB (cmdSyntaxPtr)(ct48) // Enable DSR receiver ctrl
# define CMD_DSRFL_DSAB (cmdSyntaxPtr)(ct49) // Disable DSR receiver ctrl
# define CMD_DTRFL_ENAB (cmdSyntaxPtr)(ct50) // Enable DTR flow control
# define CMD_DTRFL_DSAB (cmdSyntaxPtr)(ct51) // Disable DTR flow control
# define CMD_BAUD_RESET (cmdSyntaxPtr)(ct52) // Reset baudrate table
// COMMAND 54: Define custom rate #1
// rate = (short) 1/10 of the desired baud rate
//
# define CMD_BAUD_DEF1(rate) i2cmdBaudDef(1,rate)
// COMMAND 55: Define custom rate #2
// rate = (short) 1/10 of the desired baud rate
//
# define CMD_BAUD_DEF2(rate) i2cmdBaudDef(2,rate)
// Pause arg hundredths of seconds. (Note, this is NOT milliseconds.)
//
# define CMD_PAUSE(arg) \
( ( ( cmdSyntaxPtr ) ( ct56 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct56 ) )
# define CMD_SUSPEND (cmdSyntaxPtr)(ct57) // Suspend output
# define CMD_UNSUSPEND (cmdSyntaxPtr)(ct58) // Un-Suspend output
// Set parity-checking options
//
# define CMD_PARCHK(arg) \
( ( ( cmdSyntaxPtr ) ( ct59 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct59 ) )
# define CPK_ENAB 0 // Enable parity checking on input
# define CPK_DSAB 1 // Disable parity checking on input
# define CMD_BMARK_REQ (cmdSyntaxPtr)(ct60) // Bookmark request
// Enable/Disable internal loopback mode
//
# define CMD_INLOOP(arg) \
( ( ( cmdSyntaxPtr ) ( ct61 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct61 ) )
# define CIN_DISABLE 0 // Normal operation (default)
# define CIN_ENABLE 1 // Internal (local) loopback
# define CIN_REMOTE 2 // Remote loopback
// Specify timeout for hotkeys: Delay will be (arg x 10) milliseconds, arg == 0
// --> no timeout: wait forever.
//
# define CMD_HOT_TIME(arg) \
( ( ( cmdSyntaxPtr ) ( ct62 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct62 ) )
// Define (outgoing) xon for receive flow control
//
# define CMD_DEF_OXON(arg) \
( ( ( cmdSyntaxPtr ) ( ct63 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct63 ) )
// Define (outgoing) xoff for receiver flow control
//
# define CMD_DEF_OXOFF(arg) \
( ( ( cmdSyntaxPtr ) ( ct64 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct64 ) )
// Enable/Disable RTS on transmit (1/2 duplex-style)
//
# define CMD_RTS_XMIT(arg) \
( ( ( cmdSyntaxPtr ) ( ct65 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct65 ) )
# define CHD_DISABLE 0
# define CHD_ENABLE 1
// Set high-water-mark level (debugging use only)
//
# define CMD_SETHIGHWAT(arg) \
( ( ( cmdSyntaxPtr ) ( ct66 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct66 ) )
// Start flushing tagged data (tag = 0-14)
//
# define CMD_START_SELFL(tag) \
( ( ( cmdSyntaxPtr ) ( ct67 ) ) - > cmd [ 1 ] = ( tag ) , ( cmdSyntaxPtr ) ( ct67 ) )
// End flushing tagged data (tag = 0-14)
//
# define CMD_END_SELFL(tag) \
( ( ( cmdSyntaxPtr ) ( ct68 ) ) - > cmd [ 1 ] = ( tag ) , ( cmdSyntaxPtr ) ( ct68 ) )
# define CMD_HWFLOW_OFF (cmdSyntaxPtr)(ct69) // Disable HW TX flow control
# define CMD_ODSRFL_ENAB (cmdSyntaxPtr)(ct70) // Enable DSR output f/c
# define CMD_ODSRFL_DSAB (cmdSyntaxPtr)(ct71) // Disable DSR output f/c
# define CMD_ODCDFL_ENAB (cmdSyntaxPtr)(ct72) // Enable DCD output f/c
# define CMD_ODCDFL_DSAB (cmdSyntaxPtr)(ct73) // Disable DCD output f/c
// Set transmit interrupt load level. Count should be an even value 2-12
//
# define CMD_LOADLEVEL(count) \
( ( ( cmdSyntaxPtr ) ( ct74 ) ) - > cmd [ 1 ] = ( count ) , ( cmdSyntaxPtr ) ( ct74 ) )
// If reporting DSS changes, map to character sequence FFh, 2, MSR
//
# define CMD_STATDATA(arg) \
( ( ( cmdSyntaxPtr ) ( ct75 ) ) - > cmd [ 1 ] = ( arg ) , ( cmdSyntaxPtr ) ( ct75 ) )
# define CSTD_DISABLE // Report DSS changes as status packets only (default)
# define CSTD_ENABLE // Report DSS changes as in-band data sequence as well as
// by status packet.
# define CMD_BREAK_ON (cmdSyntaxPtr)(ct76) // Set break and stop xmit
# define CMD_BREAK_OFF (cmdSyntaxPtr)(ct77) // End break and restart xmit
# define CMD_GETFC (cmdSyntaxPtr)(ct78) // Request for flow control packet
// from board.
// Transmit this character immediately
//
# define CMD_XMIT_NOW(ch) \
( ( ( cmdSyntaxPtr ) ( ct79 ) ) - > cmd [ 1 ] = ( ch ) , ( cmdSyntaxPtr ) ( ct79 ) )
// Set baud rate via "divisor latch"
//
# define CMD_DIVISOR_LATCH(which,value) \
( ( ( cmdSyntaxPtr ) ( ct80 ) ) - > cmd [ 1 ] = ( which ) , \
* ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct80 ) ) - > cmd [ 2 ] ) = ( value ) , \
( cmdSyntaxPtr ) ( ct80 ) )
# define CDL_RX 1 // Set receiver rate
# define CDL_TX 2 // Set transmit rate
// (CDL_TX | CDL_RX) Set both rates
// Request for special diagnostic status pkt from the board.
//
# define CMD_GET_STATUS (cmdSyntaxPtr)(ct81)
// Request time-stamped transmit character count packet.
//
# define CMD_GET_TXCNT (cmdSyntaxPtr)(ct82)
// Request time-stamped receive character count packet.
//
# define CMD_GET_RXCNT (cmdSyntaxPtr)(ct83)
// Request for box/board I.D. packet.
# define CMD_GET_BOXIDS (cmdSyntaxPtr)(ct84)
// Enable or disable multiple channels according to bit-mapped ushorts box 1-4
//
# define CMD_ENAB_MULT(enable, box1, box2, box3, box4) \
( ( ( cmdSytaxPtr ) ( ct85 ) ) - > cmd [ 1 ] = ( enable ) , \
* ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct85 ) ) - > cmd [ 2 ] ) = ( box1 ) , \
* ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct85 ) ) - > cmd [ 4 ] ) = ( box2 ) , \
* ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct85 ) ) - > cmd [ 6 ] ) = ( box3 ) , \
* ( USHORT * ) ( ( ( cmdSyntaxPtr ) ( ct85 ) ) - > cmd [ 8 ] ) = ( box4 ) , \
( cmdSyntaxPtr ) ( ct85 ) )
# define CEM_DISABLE 0
# define CEM_ENABLE 1
// Enable or disable receiver or receiver interrupts (default both enabled)
//
# define CMD_RCV_ENABLE(ch) \
( ( ( cmdSyntaxPtr ) ( ct86 ) ) - > cmd [ 1 ] = ( ch ) , ( cmdSyntaxPtr ) ( ct86 ) )
# define CRE_OFF 0 // Disable the receiver
# define CRE_ON 1 // Enable the receiver
# define CRE_INTOFF 2 // Disable receiver interrupts (to loadware)
# define CRE_INTON 3 // Enable receiver interrupts (to loadware)
// Starts up a hardware test process, which runs transparently, and sends a
// STAT_HWFAIL packet in case a hardware failure is detected.
//
# define CMD_HW_TEST (cmdSyntaxPtr)(ct87)
// Change receiver threshold and timeout value:
// Defaults: timeout = 20mS
// threshold count = 8 when DTRflow not in use,
// threshold count = 5 when DTRflow in use.
//
# define CMD_RCV_THRESHOLD(count,ms) \
( ( ( cmdSyntaxPtr ) ( ct88 ) ) - > cmd [ 1 ] = ( count ) , \
( ( cmdSyntaxPtr ) ( ct88 ) ) - > cmd [ 2 ] = ( ms ) , \
( cmdSyntaxPtr ) ( ct88 ) )
// Makes the loadware report DSS signals for this channel immediately.
//
# define CMD_DSS_NOW (cmdSyntaxPtr)(ct89)
// Set the receive silo parameters
// timeout is ms idle wait until delivery (~VTIME)
// threshold is max characters cause interrupt (~VMIN)
//
# define CMD_SET_SILO(timeout,threshold) \
( ( ( cmdSyntaxPtr ) ( ct90 ) ) - > cmd [ 1 ] = ( timeout ) , \
( ( cmdSyntaxPtr ) ( ct90 ) ) - > cmd [ 2 ] = ( threshold ) , \
( cmdSyntaxPtr ) ( ct90 ) )
// Set timed break in decisecond (1/10s)
//
# define CMD_LBREAK(ds) \
( ( ( cmdSyntaxPtr ) ( ct91 ) ) - > cmd [ 1 ] = ( ds ) , ( cmdSyntaxPtr ) ( ct66 ) )
# endif // I2CMD_H