home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 16
/
CD_ASCQ_16_0994.iso
/
news
/
4608
/
en160
/
encom.h
< prev
next >
Wrap
Text File
|
1994-05-01
|
30KB
|
707 lines
/****************************************************************************/
/* */
/* ENCOM.H */
/* */
/* This is the main header for ENCOM, containing all the defines, macros, */
/* typedefs and prototypes for the library. */
/* Kevin Huck */
/* Boyd Gafford */
/* 04/01/94 */
/****************************************************************************/
#ifndef __ENCOM_H
#define __ENCOM_H
#include <stdlib.h>
#include <dos.h>
#include <time.h>
#include <conio.h>
#ifndef WN_POPUP
#ifdef M_I86
#pragma pack(1)
#endif
#if defined(M_I86) || defined(__WATCOMC__)
#include <stddef.h>
#include <sys\types.h>
#define setmem(p,c,v) memset((p),(v),(c))
#define movmem(s,d,c) memmove((d),(s),(c))
#define getvect(i) _dos_getvect(i)
#define setvect(i,hdlr) _dos_setvect(i,hdlr)
#define enable _enable
#define disable _disable
#endif
typedef unsigned char uchar;
typedef short int sint;
typedef unsigned short int usint;
typedef unsigned int uint;
typedef unsigned long ulong;
#endif
/*---------------------- prevents compatibility problems -------------------*/
#if defined(M_I86) || defined(__WATCOMC__)
#define outbyte outp
#define inbyte inp
#define outword outpw
#define inword inpw
#else
#define outbyte outportb
#define inbyte inportb
#define outword outport
#define inword inport
#endif
#ifdef __ZTC__
#include <int.h>
#define interrupt
#define O_TRUNC 0
#define O_BINARY 0
#define enable int_on
#define disable int_off
#endif
/*------------------ Watcom C32/DOS4G compatibility defines ----------------*/
#ifdef __WATCOMC__
#define EN_FAR
#define EN_FP_SEG(p) ((usint) (((ulong) p) >> 4))
#define EN_FP_OFF(p) ((usint) (((ulong) p) & 0x000F))
#define EN_MK_FP(s,o) ((((s) << 4) | (o)))
#else
#define EN_FAR far
#define EN_FP_SEG(fp) ((uint)((ulong)((void far *)(fp)) >> 16))
#define EN_FP_OFF(fp) ((uint)((void far *)(fp)))
#define EN_MK_FP(seg,off) ((void far *)(((ulong)(seg)<<16) | (uint)(off)))
#endif
extern char Pause_char, Clear_rx_char, Clear_tx_char;
extern uchar Encrypt_char, End_flag;
/*---------------------- common globals with UltraWin ----------------------*/
#if defined(WN_POPUP) || defined(ENCOM)
extern int (*Idle_func)(void); /* global function pointer */
extern ulong T_cnt, T_hi;
extern volatile int Uw_timers[4]; /* user timers-decrement to 0 */
extern volatile int Sys_timers[2];
extern volatile int Sound_timer; /* system/sound timers */
extern int Clock_init; /* 1 if we have clock vector */
extern int Sound_on; /* 1 when sound is on */
extern ulong Tics; /* total clock interrupts */
extern int Tics_per_sec;
#else
int (*Idle_func)(void);
ulong T_cnt, T_hi;
volatile int Uw_timers[4];
volatile int Sys_timers[2];
volatile int Sound_timer;
int Clock_init;
int Sound_on;
ulong Tics;
int Tics_per_sec;
#endif
/*-------------------------- crc definitions -------------------------------*/
#define CRC_UNDEF 0
#define CRC_FORWARD 1
#define CRC_REVERSE 2
#define CRCCITT 0x1021
#define CRCCITT_REV 0x8408
#define CRC16 0x8005
#define CRC16_REV 0xa001
#define QUOTE_FLAG 0x88
#define QUOTE_MASK 0x11
#define MAX_MSG_SIZE 512
#define END_FLAG 0x02
/*---------------------- constant definitions ------------------------------*/
#define CNTRL 0x43 /* clock port addresses */
#define TIMER 0x40
#define SEC_1 18 /* number of clock tics in 1 second */
#define ON 1
#define OFF 0
#define CRC_INIT 0xffff
#define CRC_FCS 0xf0b8
#define SOH 0x01
#define STX 0x02
#define ETX 0x03
#define EOT 0x04
#define SYN 0x16
#define CTRL_Z 26
#define XON_CHAR 17
#define XOFF_CHAR 19
#define XON_ANY 256
#define XWAIT 1
#define XRELEASE 0
#define RX_XON 1
#define RX_XOFF 2
#define TX_XON 3
#define TX_XOFF 4
#define NONE 'N'
#define ODD 'O'
#define EVEN 'E'
#define MARK 'M'
#define SPACE 'S'
#define MAX_PORTS 32
enum PORTS
{
COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8,
COM9, COM10, COM11, COM12, COM13, COM14, COM15, COM16,
COM17, COM18, COM19, COM20, COM21, COM22, COM23, COM24,
COM25, COM26, COM27, COM28, COM29, COM30, COM31, COM32
};
#define RX 0x01
#define TX 0x02
#define HALF_DUPLEX 0
#define FULL_DUPLEX 1
#define HS_RTS_CTS 2
/*-------------------------- uart type defines -----------------------------*/
#define NO_UART 0
#define ID_8250 1
#define ID_16450 2
#define ID_16550 3
/*-------------------------- 16650 FIFO control ----------------------------*/
#define FIFO_OFF 0x00 /* 16550 fifo enable bit off */
#define FIFO_ON 0x01 /* 16550 fifo enable bit on */
#define RX_FIFO_RESET 0x02 /* 16550 rx fifo reset */
#define TX_FIFO_RESET 0x04 /* 16550 tx fifo reset */
#define RX_TRIG_1 0x00 /* 16550 rx fifo trigger 1 */
#define RX_TRIG_4 0x40 /* 16550 rx fifo trigger 4 */
#define RX_TRIG_8 0x80 /* 16550 rx fifo trigger 8 */
#define RX_TRIG_14 0xc0 /* 16550 rx fifo trigger 14 */
/*-------------------- line status register bit masks ----------------------*/
#define DR 0x01 /* data ready 0 */
#define OE 0x02 /* overrun error 1 */
#define PE 0x04 /* parity error 2 */
#define FE 0x08 /* framing error 3 */
#define BI 0x10 /* break interrupt 4 */
#define THRE 0x20 /* transmitter holding register empty 5 */
#define TSRE 0x40 /* transmitter shift register empty 6 */
#define F_ERR 0x80 /* FIFO error (only for 16550) 7 */
/*-------------------- modem status register bit masks ---------------------*/
#define DCTS 0x01 /* delta 0 clear to send 0 */
#define DDSR 0x02 /* delta data set ready 1 */
#define TERI 0x04 /* trailing edge ring indicator 2 */
#define DDCD 0x08 /* delta data carrier detect 3 */
#define CTS 0x10 /* clear to send 4 */
#define DSR 0x20 /* data set ready 5 */
#define RI 0x40 /* ring indicator 6 */
#define DCD 0x80 /* data carrier detect 7 */
/*-------------------- modem control register bit masks --------------------*/
#define DTR 0x01 /* data terminal ready 0 */
#define RTS 0x02 /* request to send 1 */
#define OUT1 0x04 /* out 1 2 */
#define OUT2 0x08 /* out 2 3 */
#define LOOP 0x10 /* loop 4 */
/*--------------------- line control register bit masks --------------------*/
#define DATA_BITS_5 0x00 /* data bit control masks */
#define DATA_BITS_6 0x01
#define DATA_BITS_7 0x02
#define DATA_BITS_8 0x03
#define STOP_BITS_1 0x00 /* stop bit control masks */
#define STOP_BITS_2 0x04
#define NO_PARITY 0x00 /* parity control masks */
#define ODD_PARITY 0x08
#define EVEN_PARITY 0x18
#define MARK_PARITY 0x28
#define SPACE_PARITY 0x38
#define BREAK_CTRL 0x40 /* break control bit */
#define DLAB 0x80 /* divisor latch access bit */
/*---------------------- interrupt enable bit masks ------------------------*/
#define DR_IRQ 0x01 /* data ready irq */
#define THRE_IRQ 0x02 /* transmitter holding register empty irq */
#define RLS_IRQ 0x04 /* receiver line status irq */
#define MS_IRQ 0x08 /* modem status irq */
/*-------------------- interrupt identification masks ----------------------*/
#define IIR_LSTAT 0x06 /* serialization error or break */
#define IIR_RX 0x04 /* received data */
#define IIR_TX 0x02 /* Transmit Buffer Empty */
#define IIR_CTRL 0x00 /* RS-232 input */
/*-------------------------- 8250 uart registers ---------------------------*/
/* { 0x3f8, 0x3f8, 0x3f9, 0x3fa, 0x3fb, 0x3fc, 0x3fd, 0x3fe, 0x3f8, 0x3f9, 0x3ff },*/
#define RBR 0 /* receiver buffer register (read only) */
#define THR 1 /* transmitter holding register (write only) */
#define IER 2 /* interrupt enable register */
#define IIR 3 /* interrupt id register (read only) */
#define FCR 3 /* FIFO control for 16550 (write only) */
#define LCR 4 /* line control register */
#define MCR 5 /* modem control register */
#define LSR 6 /* line status register */
#define MSR 7 /* modem status register */
#define DLL 8 /* divisor latch (low - least significant) */
#define DLH 9 /* divisor latch (high - most significant) */
#define SCRATCH 10 /* scratch pad register */
/*---------------------------- com port defines ----------------------------*/
typedef struct port
{
uchar reg_save[12]; /* saves all uart registers before init */
sint rx_on; /* receiver on or off */
usint rx_read; /* receive queue read pointer */
usint rx_write; /* recieve queue write pointer */
usint rx_cnt; /* # of bytes currently in receive queue */
usint rx_size; /* actual size of receive queue */
usint rx_overflow; /* count of byte received when queue full */
ulong rx_chars; /* receive character count */
uchar *rx_data; /* pointer to receive queue data area */
usint parity_errs; /* line status errors */
usint framing_errs;
usint overrun_errs;
usint break_cnt;
sint que_stat_flag; /* if 1, status is queued with each byte */
usint msg_cnt; /* number of messages (match_chars) rx'd */
uchar encrypt_char; /* character to use for XOR encryption */
sint match_char; /* rx match char. When rx'd, msg_cnt incs */
/* Only a call to get_msg decrements */
sint tx_on; /* transmitter on or off */
usint tx_read; /* transmit queue read pointer */
usint tx_write; /* transmit queue write pointer */
usint tx_cnt; /* # of bytes currently in transmit queue */
usint tx_size; /* actual size of transmit queue */
usint tx_overflow; /* count of byte transmit when queue full */
ulong tx_chars; /* transfer character count */
uchar *tx_data; /* pointer to transmit queue data area */
sint uart_type; /* NO_UART, 8250, 16450, 16550 */
sint fifos_enabled; /* are fifos enabled if 16550 */
sint rx_trig_level; /* rx trigger level, 1, 4, 8, or 14 */
sint chan; /* com port channel index (0 - MAX_PORTS-1) */
sint *uart; /* pointer to array of uart i/o addresses */
long baud; /* port baud rate divisor */
sint data_bits; /* number of data bits (5,6,7,8) */
sint stop_bits; /* number of stop bits (1,2) */
sint parity; /* parity (NONE, ODD, EVEN, MARK, SPACE) */
sint status; /* 1 = in use, 0 = not in use */
#if defined(__WATCOMC__)
void (interrupt far *old_vect)();
#else
#if defined(__ZTC__)
int (EN_FAR *(old_vect))();
#else
#if defined(M_I86)
void (interrupt EN_FAR *(old_vect))();
#else
#if defined(__cplusplus)
void interrupt EN_FAR (*old_vect)(...);
#else
#if defined(__POWERC)
void interrupt (EN_FAR *old_vect)(...);
#else
void (interrupt EN_FAR *(old_vect))(void);
#endif
#endif
#endif
#endif
#endif
sint old_mask; /* old com port interrupt mask */
sint old_ier; /* old interrupt id register */
sint vect_no; /* uart com port vector number */
sint mask; /* uart com port interrupt mask */
sint xon_xoff_mode; /* 1 if XON/XOFF handshaking enabled */
sint xon_xoff_state; /* current state of XON/XOFF (On/OFF) */
sint rx_xstate; /* 1 if XOFF sent */
sint tx_xstate; /* 1 if XOFF received */
sint xon_char; /* char to trigger XON, >= 256 if any */
sint xoff_char; /* char to trigger XOFF */
usint highwater; /* point where we send XOFF for rx */
usint lowwater; /* point where we send XON to release */
sint rts_cts_mode; /* 1 if RTS/CTS handshaking enabled */
sint rts_cts_state; /* current RTS/CTS state (ON/OFF) */
sint dcd_mode; /* 1 if CD must be high to rx */
sint dcd_state; /* current DCD state */
sint dsr_mode; /* 1 if DSR must be high to rx */
sint dsr_state; /* current DSR state */
sint sline_status; /* static line status register */
sint smodem_status; /* static modem status register */
sint edge_trigger; /* for rare hardware incompatibility */
void *usr_ptr; /* user expansion pointer */
} PORT;
/*--------------------------------- macros ---------------------------------*/
#define lower(x, y) (((x) < (y)) ? (x) : (y))
#define upper(x, y) (((x) > (y)) ? (x) : (y))
#define lobyte(c) (uchar) ((c) & 0x00ff)
#define hibyte(c) (uchar) ((c) >> 8)
#define range(l,b,h) ((((b) >= (l)) && ((b) <= (h))))
#define swap( a,b,c) ( (c) = (a), (a) = (b), (b) = (c) )
#ifndef min
#define min(x, y) (((x) < (y)) ? (x) : (y))
#define max(x, y) (((x) > (y)) ? (x) : (y))
#endif
#ifndef ENQ_DEBUG
#ifndef SOURCE_TRACE
/*------------------------------- com macros -------------------------------*/
#define com_tx_cnt(cp) ((cp)->tx_cnt)
#define com_rx_cnt(cp) ((cp)->rx_cnt)
#define com_tx_free(cp) ((cp)->tx_size - (cp)->tx_cnt)
#define com_rx_free(cp) ((cp)->rx_size - (cp)->rx_cnt)
#define is_rx_empty(cp) ((cp)->rx_cnt ? 0 : 1)
#define is_rx_full(cp) ((cp)->rx_size == (cp)->rx_cnt)
#define is_tx_empty(cp) ((cp)->tx_cnt ? 0 : 1)
#define is_tx_full(cp) ((cp)->tx_size == (cp)->tx_cnt)
#define set_encrypt(c, cp) ((cp)->encrypt_char = c)
#define set_match(c, cp) ((cp)->match_char = c)
#define init_msg(cp) (End_flag = (uchar)(cp)->match_char, Encrypt_char = (cp)->encrypt_char)
#define msg_cnt(cp) ((cp)->msg_cnt)
#define clear_msg_cnt(cp) ((cp)->msg_cnt = 0)
#define set_que_status(x,cp) ((cp)->que_stat_flag = x)
#define is_que_status(cp) ((cp)->que_stat_flag)
/*----------------------------- flow control -------------------------------*/
#define set_lowwater(l,cp) ((cp)->lowwater = l)
#define set_highwater(h,cp) ((cp)->highwater = h)
#define get_lowwater(cp) ((cp)->lowwater)
#define get_highwater(cp) ((cp)->highwater)
#define set_cts_flow(x,cp) ((cp)->rts_cts_mode = x)
#define is_cts_flow(cp) ((cp)->rts_cts_mode)
#define is_dcd_flow(cp) ((cp)->dcd_mode)
#define is_dsr_flow(cp) ((cp)->dsr_mode)
#define is_xon_flow(cp) ((cp)->xon_xoff_mode)
#define cts_flow_state(cp) ((cp)->rts_cts_state)
#define dcd_flow_state(cp) ((cp)->dcd_state)
#define dsr_flow_state(cp) ((cp)->dsr_state)
#define xon_flow_state(cp) ((cp)->xon_xoff_state)
/*----------------------- 16550 fifo control macro -------------------------*/
#define fifo_enable(cp) (com_fifo_ctrl( ON,FIFO_ON,(cp)),(cp)->fifos_enabled = ON)
#define fifo_disable(cp) (com_fifo_ctrl(OFF,FIFO_ON,(cp)),(cp)->fifos_enabled = OFF)
#define fifo_rx_reset(cp) (com_fifo_ctrl(ON,RX_FIFO_RESET,(cp)))
#define fifo_tx_reset(cp) (com_fifo_ctrl(ON,TX_FIFO_RESET,(cp)))
#define is_fifo_enabled(cp) ((cp)->fifos_enabled)
#define get_trigger_level(cp) ((cp)->rx_trig_level)
/*------------------------------ modem macros ------------------------------*/
#define modem_reset(cp) modem_cmd("ATZ",-1,Tics_per_sec*2,(cp))
#define modem_dial(s,cp) modem_cmd(s,-1,Tics_per_sec*45,(cp))
#define modem_answer(cp) modem_cmd("ATA",-1,Tics_per_sec,(cp))
#define modem_hangup(cp) modem_cmd("+++~~~ATH0",-1,Tics_per_sec*5,(cp))
#define modem_online(cp) modem_cmd("ATO",-1,Tics_per_sec,(cp))
#define modem_repeat(cp) modem_cmd("A/",-1,Tics_per_sec,(cp))
#define modem_speaker(x,cp) modem_cmd("ATM",x,Tics_per_sec,(cp))
#define modem_echo(x,cp) modem_cmd("ATE",x,Tics_per_sec,(cp))
#define modem_word_reply(x,cp) modem_cmd("ATV",x,Tics_per_sec,(cp))
#define modem_extend_reply(x,cp) modem_cmd("ATX",x,Tics_per_sec,(cp))
#define modem_duplex(x,cp) modem_cmd("ATF",x,Tics_per_sec,(cp))
#define modem_quiet(x,cp) modem_cmd("ATQ",x,Tics_per_sec,(cp))
/*-------------------- current modem status macros -------------------------*/
#define is_dcd(cp) ((inbyte((cp)->uart[MSR]) & DCD) ? 1 : 0)
#define is_cts(cp) ((inbyte((cp)->uart[MSR]) & CTS) ? 1 : 0)
#define is_dsr(cp) ((inbyte((cp)->uart[MSR]) & DSR) ? 1 : 0)
#define is_ri(cp) ((inbyte((cp)->uart[MSR]) & RI ) ? 1 : 0)
/*-------------------- static modem status macros --------------------------*/
#define clear_mstatus(cp) ((cp)->smodem_status = 0)
#define is_sdcd(cp) (((cp)->smodem_status & DCD) ? 1 : 0)
#define is_scts(cp) (((cp)->smodem_status & CTS) ? 1 : 0)
#define is_sdsr(cp) (((cp)->smodem_status & DSR) ? 1 : 0)
#define is_sri(cp) (((cp)->smodem_status & RI ) ? 1 : 0)
#define is_sddcd(cp) (((cp)->smodem_status & DDCD) ? 1 : 0)
#define is_sdcts(cp) (((cp)->smodem_status & DCTS) ? 1 : 0)
#define is_sddsr(cp) (((cp)->smodem_status & DDSR) ? 1 : 0)
#define is_sdri(cp) (((cp)->smodem_status & TERI) ? 1 : 0)
/*-------------------- current line status macros --------------------------*/
#define is_overrun_err(cp) ((inbyte((cp)->uart[LSR]) & OE) ? 1 : 0)
#define is_parity_err(cp) ((inbyte((cp)->uart[LSR]) & PE) ? 1 : 0)
#define is_framing_err(cp) ((inbyte((cp)->uart[LSR]) & FE) ? 1 : 0)
#define is_break(cp) ((inbyte((cp)->uart[LSR]) & BI) ? 1 : 0)
/*-------------------- static line status macros ---------------------------*/
#define clear_lstatus(cp) ((cp)->sline_status = 0)
#define is_soverrun_err(cp) (((cp)->sline_status & OE) ? 1 : 0)
#define is_sparity_err(cp) (((cp)->sline_status & PE) ? 1 : 0)
#define is_sframing_err(cp) (((cp)->sline_status & FE) ? 1 : 0)
#define is_sbreak(cp) (((cp)->sline_status & BI) ? 1 : 0)
/*------------------ current modem control macros --------------------------*/
#define is_dtr(cp) ((inbyte((cp)->uart[MCR]) & DTR) ? 1 : 0)
#define is_rts(cp) ((inbyte((cp)->uart[MCR]) & RTS) ? 1 : 0)
#define is_out1(cp) ((inbyte((cp)->uart[MCR]) & OUT1) ? 1 : 0)
#define is_out2(cp) ((inbyte((cp)->uart[MCR]) & OUT2) ? 1 : 0)
#define is_loop(cp) ((inbyte((cp)->uart[MCR]) & LOOP) ? 1 : 0)
#endif
#endif
/*------------------------- en_main.c prototypes ---------------------------*/
void com_isr( register PORT *cp );
#if defined(__WATCOMC__)
void interrupt far com_isra();
void interrupt far com_isrb();
void interrupt far com_isrc();
void interrupt far com_isrd();
void interrupt far com_isrx();
PORT *com_vect_init( void (interrupt far *com_isrp)(), PORT *cp );
#else
#if defined(__ZTC__)
int interrupt EN_FAR com_isra( void );
int interrupt EN_FAR com_isrb( void );
int interrupt EN_FAR com_isrc( void );
int interrupt EN_FAR com_isrd( void );
int interrupt EN_FAR com_isrx( void );
PORT *com_vect_init( int interrupt EN_FAR (*com_isrp)(), PORT *cp );
#else
#if defined(M_I86) || defined(__WATCOMC__)
void interrupt EN_FAR com_isra( void );
void interrupt EN_FAR com_isrb( void );
void interrupt EN_FAR com_isrc( void );
void interrupt EN_FAR com_isrd( void );
void interrupt EN_FAR com_isrx( void );
PORT *com_vect_init( void (interrupt EN_FAR *(com_isrp))(), PORT *cp );
#else
#if defined(__cplusplus)
void interrupt EN_FAR com_isra(...);
void interrupt EN_FAR com_isrb(...);
void interrupt EN_FAR com_isrc(...);
void interrupt EN_FAR com_isrd(...);
void interrupt EN_FAR com_isrx(...);
PORT *com_vect_init( void interrupt EN_FAR (*com_isrp)(...), PORT *cp );
#else
#if defined(__POWERC)
void interrupt EN_FAR com_isra(...);
void interrupt EN_FAR com_isrb(...);
void interrupt EN_FAR com_isrc(...);
void interrupt EN_FAR com_isrd(...);
void interrupt EN_FAR com_isrx(...);
PORT *com_vect_init( void interrupt (EN_FAR *com_isrp)(...), PORT *cp );
#else
void interrupt EN_FAR com_isra( void );
void interrupt EN_FAR com_isrb( void );
void interrupt EN_FAR com_isrc( void );
void interrupt EN_FAR com_isrd( void );
void interrupt EN_FAR com_isrx( void );
PORT *com_vect_init( void interrupt EN_FAR (*com_isrp)(void), PORT *cp );
#endif
#endif
#endif
#endif
#endif
int com_port_create( int chan, long baud, int parity, int data_bits,
int stop_bits, int rx_size, int tx_size, PORT *cp );
int com_port_init( long baud, int parity, int data_bits, int stop_bits,
PORT *cp );
void com_port_destroy( PORT *cp );
void com_clear_que( int mode, PORT *cp );
int com_getc( PORT *cp );
int com_ungetc( int c, PORT *cp );
int com_stuffc( int c, PORT *cp );
int com_putc( int c, PORT *cp );
void prime_tx( PORT *cp );
int force_tx( int c, PORT *cp );
int com_puts( uchar *s, PORT *cp );
int check_rts( PORT *cp );
int com_irq_ctrl( int state, int mask, PORT *cp );
int com_232_ctrl( int state, int mask, PORT *cp );
void read_regs( uchar *s, PORT *cp );
void write_regs( uchar *s, PORT *cp );
int com_config( int chan, int base_addr, int irq );
int init_digi( int base_addr, int irq );
/*------------------------- en_supp.c prototypes ---------------------------*/
int com_getc_qty( uchar *data, uint qty, PORT *cp );
int com_gets( uchar *data, uchar c, uint qty, PORT *cp );
int check_xon( PORT *cp );
int com_putc1( int c, PORT *cp );
int com_putc_qty( uchar *data, uint qty, PORT *cp );
void send_break( int t, PORT *cp );
int set_xon_flow( int state, int xon_char, int xoff_char,
uint highwater, uint lowwater, PORT *cp );
int set_dcd_flow( int state, PORT *cp );
int set_dsr_flow( int state, PORT *cp );
void suspend( int t );
int wait_for_rx( int t, uint cnt, PORT *cp );
int wait_for_no_rx( int t, PORT *cp );
char *modem_cmd( char *cmd_str, int p, int t, PORT *cp );
int com_fifo_ctrl( int state, int mask, PORT *cp );
int com_fifo_trigger( int level, PORT *cp );
/*------------------------- en_supp.c prototypes ---------------------------*/
void encrypt_msg( uchar *msg, uint len );
usint calc_crc( uchar *msg, uint len );
uint fmt_msg( uchar *s, uchar *d, uint len );
uint defmt_msg( uchar *src, uchar *dest );
uint get_msg( uchar *dest, PORT *cp );
void mk_crc_tbl( usint init, usint poly, usint (*crcfn)(usint, usint, usint) );
usint gen_crc(usint data, usint genpoly, usint accum);
usint gen_crc_rev(usint data, usint genpoly, usint accum);
/*-------------------------- en_kbd.c prototypes ---------------------------*/
#ifndef WN_POPUP
void init_ctrlc_hdlr(void);
void end_ctrlc_hdlr(void);
void init_clock( uint speed );
void end_clock(void);
void clock_speed( uint speed );
void tone( uint freq, int dur );
void sound_off(void);
void set_idle_func( int (*func_ptr)(void) );
#endif
/*-------------------------- en_dbg.c prototypes ---------------------------*/
#if defined(ENQ_DEBUG) || defined(SOURCE_TRACE)
void set_dbg_gchar( void (*func_ptr)(int, int, int, char) );
void enc_dbg_cls(void);
void enc_dbg_putc(int x, int y, int att, char c);
void enc_dbg_plst( int x, int y, char *s );
int enc_error( int parm1, int parm2, char *s1, char *s2, void *p );
int enc_cp_vld( char *s, PORT *cp );
int enc_p_vld( char *s, void *gp );
void enc_dbg__log( char *func_name );
void enc_dbg_push( char *func_name );
void enc_dbg_pop( void );
void enc_linearize_log(void);
int com_tx_cnt(PORT *cp);
int com_rx_cnt(PORT *cp);
int com_tx_free(PORT *cp);
int com_rx_free(PORT *cp);
int is_rx_empty(PORT *cp);
int is_rx_full(PORT *cp);
int is_tx_empty(PORT *cp);
int is_tx_full(PORT *cp);
void set_encrypt(uchar c, PORT *cp);
void set_match(uchar c, PORT *cp);
void init_msg(PORT *cp);
int msg_cnt(PORT *cp);
void clear_msg_cnt(PORT *cp);
void set_que_status(int x, PORT *cp);
int is_que_status(PORT *cp);
void set_lowwater(uint l, PORT *cp);
void set_highwater(uint h, PORT *cp);
uint get_lowwater(PORT *cp);
uint get_highwater(PORT *cp);
void set_cts_flow(int x, PORT *cp);
int is_cts_flow(PORT *cp);
int is_dcd_flow(PORT *cp);
int is_dsr_flow(PORT *cp);
int is_xon_flow(PORT *cp);
int cts_flow_state(PORT *cp);
int dcd_flow_state(PORT *cp);
int dsr_flow_state(PORT *cp);
int xon_flow_state(PORT *cp);
void fifo_enable(PORT *cp);
void fifo_disable(PORT *cp);
void fifo_rx_reset(PORT *cp);
void fifo_tx_reset(PORT *cp);
int is_fifo_enabled(PORT *cp);
int get_trigger_level(PORT *cp);
char *modem_reset(PORT *cp);
char *modem_dial(char *s, PORT *cp);
char *modem_answer(PORT *cp);
char *modem_hangup(PORT *cp);
char *modem_online(PORT *cp);
char *modem_repeat(PORT *cp);
char *modem_speaker(int x, PORT *cp);
char *modem_echo(int x, PORT *cp);
char *modem_word_reply(int x, PORT *cp);
char *modem_extend_reply(int x, PORT *cp);
char *modem_duplex(int x, PORT *cp);
char *modem_quiet(int x, PORT *cp);
int is_dcd(PORT *cp);
int is_cts(PORT *cp);
int is_dsr(PORT *cp);
int is_ri(PORT *cp);
void clear_mstatus(PORT *cp);
int is_sdcd(PORT *cp);
int is_scts(PORT *cp);
int is_sdsr(PORT *cp);
int is_sri(PORT *cp);
int is_sddcd(PORT *cp);
int is_sdcts(PORT *cp);
int is_sddsr(PORT *cp);
int is_sdri(PORT *cp);
int is_overrun_err(PORT *cp);
int is_parity_err(PORT *cp);
int is_framing_err(PORT *cp);
int is_break(PORT *cp);
void clear_lstatus(PORT *cp);
int is_soverrun_err(PORT *cp);
int is_sparity_err(PORT *cp);
int is_sframing_err(PORT *cp);
int is_sbreak(PORT *cp);
int is_dtr(PORT *cp);
int is_rts(PORT *cp);
int is_out1(PORT *cp);
int is_out2(PORT *cp);
int is_loop(PORT *cp);
#endif
/*-------------------------- external debug globals ------------------------*/
#ifdef SOURCE_TRACE
extern int Enc_dbg_line;
extern char *Enc_dbg_file;
#endif
/*------------------------------ debug defines -----------------------------*/
#ifdef ENQ_DEBUG
#define ENC_DBG_POP() enc_dbg_pop()
#define ENC_ERROR( p1, p2, s1, s2, p ) enc_error( p1, p2, s1, s2, p )
#define ENC_CP_LEVEL( val ) Cp_check_level = val
#define ENC_CP_VLD( s, cp ) enc_cp_vld( s, cp )
#define ENC_P_VLD( s, gp ) enc_p_vld( s, gp )
#define ENC_DBG_LOG( fname ) enc_dbg__log( fname )
#define ENC_DBG_LOG_STATE( state ) Enc_dbg_log_on = state
#define ENC_DBG_STACK_STATE( state ) Enc_dbg_stack_on = state
#else
#define ENC_DBG_POP()
#define ENC_ERROR( p1, p2, s1, s2, p )
#define ENC_CP_LEVEL( val )
#define ENC_CP_VLD( s, cp )
#define ENC_P_VLD( s, gp )
#define ENC_DBG_LOG( fname )
#define ENC_DBG_LOG_STATE( state )
#define ENC_DBG_STACK_STATE( state )
#endif
#include "en_dbg.h"
#endif /* __ENCOM_H */
/**** END OF FILE ****/