wanpipe-kernel-sources/kdrivers/include/sdla_pos.h

222 lines
9.8 KiB
C

/*****************************************************************************
* POSAPI.H - Sangoma POS Adapter. Application Program Interface definitions.
* (c) Sangoma Technologies Inc., 1993-1994
* ----------------------------------------------------------------------------
* Date: Revision: By:
* May 25, 1994 2.32 - CONFIGSTRUC has been changed. If half_duplex is
* non-zero then half-duplex ASYNCH mode is
* selected. Zero selects full-duplex mode. Default
* mode is half-duplex (defined as DFT_HALFDUPLEX). EK
*
* Jan.19, 1994 2.10 - POSSETUPSTRUC has been changed to accomodate EK
* 2-byte address field.
*
* Jan.11, 1994 2.00 - Initial. EK
*****************************************************************************/
/****** GENERAL DATA TYPES DEFINITIONS **************************************/
#ifndef __SDLA_POS_H_
#define __SDLA_POS_H_
#pragma pack(1)
/*----- General Purpose Constants ------------------------------------------*/
#define TRUE 1 /* values for BOOL data type */
#define FALSE 0
#ifndef NULL
#define NULL 0
#endif
/*----- POS and ASYNC Mode Definitions -------------------------------------*/
#define SDLC_ALL 0 /* Pass all received frames */
#define SDLC_INFO 1 /* Pass all I-frames (default) */
#define SDLC_SELECT 2 /* Pass only I-frames with matching address */
#define ASYNC_4800 0 /* RS485 line speed: 4800 bps */
#define ASYNC_9600 1 /* RS485 line speed: 9600 bps */
#define ASYNC_19200 2 /* RS485 line speed: 19200 bps */
#define ASYNC_38400 3 /* RS485 line speed: 38400 bps */
#define ASYNC_MAXSPEED ASYNC_38400
#define PRIMARY_ATTR 0 /* frame belongs to primary station */
#define SECONDARY_ATTR 1 /* frame belongs to secondary station */
/*----- Default Configuration and Setup Parameters -------------------------*/
#define WINDOW_SIZE 0x2000 /* size of shared memory window */
#define TIME_OUT 2 /* board response time-out, sec */
#define MAX_DATA 1030 /* maximum I-frame data field length */
#define MIN_DATA 128 /* minimum I-frame data field length */
#define DFT_POSDATA 265 /* default I-frame data field length */
#define DFT_SDLCLINES 1 /* default number of monitored POS lines */
#define DFT_SDLCMODE SDLC_INFO
#define DFT_ASYNCLINES 1 /* default number of monitored asynch lines */
#define DFT_ASYNCSPEED ASYNC_19200
#define DFT_HALFDUPLEX TRUE /* default asynch mode */
/*----- Mailbox interface constants ----------------------------------------*/
#define CLEAR 0x00 /* no activity */
#define EXE_CMD 0x01 /* execute mailbox command flag */
#define SDLC1_RXRDY 0x01 /* bit 0 - POS#1 frames available */
#define SDLC2_RXRDY 0x02 /* bit 1 - POS#2 frames available */
#define ASYNC1_RXRDY 0x01 /* bit 0 - ASYNC#1 data available */
#define ASYNC1_TXRDY 0x02 /* bit 1 - ASYNC#1 transmit buffer empty */
#define ASYNC2_RXRDY 0x04 /* bit 2 - ASYNC#2 data available */
#define ASYNC2_TXRDY 0x08 /* bit 3 - ASYNC#2 transmit buffer empty */
/*----- POS Commands -------------------------------------------------------*/
#define CONFIGURE 0x01 /* Configure POS */
#define SEND_ASYNC 0x02 /* Send block of data through ASYNC port */
#define RECEIVE_ASYNC 0x03 /* Receive block of bata through ASYNC port */
#define ENABLE_POS 0x04 /* Start listening on a POS loop */
#define DISABLE_POS 0x05 /* Stop listening on a POS loop */
#define RECEIVE_POS 0x06 /* Receive a frame buffered from POS loop */
#define READ_ERR_STATS 0x07 /* Retrieve POS communic. error statistics */
#define FLUSH_ERRORS 0x08 /* Reset all error counters */
#define SEND_RECV_STATE 0x09 /* Get transmit/receive buffers state */
#define POS_SETUP 0x0A /* Set POS loop monitoring mode */
#define RESET_CARD 0x0B /* Clear all buffers, set all default modes */
/*----- POS Return Codes ---------------------------------------------------*/
#define POS_OK 0x00 /* Command executed successfully */
#define POS_BADPORT 0x01 /* Invalid port number */
#define POS_WASDONE 0x02 /* Command has already been executed */
#define POS_DISABLED 0x03 /* Port is disabled */
#define POS_DENIED 0x33 /* Board temporarily unaccessable */
#define INVALID_CMD 0x80 /* Unrecognized command code */
#define INVALID_PAR 0x81 /* Invalid parameter value */
#define POS_FAULT 0x0A /* Board hung */
#define POS_INIT_OK 0xF0 /* Board initialized */
#define BYTE unsigned char
#define WORD unsigned short
/****** DATA STRUCTURES *****************************************************/
/*----- Command Control Block ------------------------------------------------
* This structure is used for microcode command execution.
*--------------------------------------------------------------------------*/
typedef struct {
BYTE command; /* disp.00h: Command code */
WORD buf_len; /* disp.01h: Length of data buffer */
BYTE ret_code; /* disp.03h: Result of previous command */
BYTE port_num; /* disp.04h: Port number (0 - general) */
BYTE prim_sec; /* disp.05h: Primary/Secondary attribute */
BYTE reserved [10]; /* disp.06h .. 0Fh: reserved for later use */
BYTE data [MAX_DATA]; /* disp.10h: data transfer buffer */
} PIPCBSTRUC;
/*----- Mailbox Structure ---------------------------------------------------
* This structure is used for microcode application program interface.
*--------------------------------------------------------------------------*/
typedef struct {
BYTE exe_flag; /* disp.00h: '1' - enable command execution */
BYTE sdlc_flags; /* disp.01h: POS SDLC channels status */
BYTE async_flags; /* disp.02h: ASYNC channels status */
BYTE reserved [13]; /* disp.03 .. 0Fh - reserved for later use */
PIPCBSTRUC pipcb; /* disp.10h: PIP Control Block */
} POSMBSTRUC;
/*----- Card Configuration Data Block ----------------------------------------
* Used for CONFIGURE command.
*--------------------------------------------------------------------------*/
typedef struct {
BYTE sdlc_lines; /* disp.00h: number of active SDLC lines */
WORD sdlc_maxdata; /* disp.01h: maximum length of the I-frame */
BYTE async_lines; /* disp.03h: number of active ASYNC lines */
BYTE async_speed; /* disp.04h: asynchronous line(s) speed */
BYTE half_duplex; /* disp.05h: half/full-duplex configuration */
} CONFIGSTRUC;
/*----- SDLC Communications Error Statistics Data Block ----------------------
* Used for READ_ERR_STATS command.
*--------------------------------------------------------------------------*/
typedef struct {
WORD overrun_err; /* disp.00h: receiver overrun error count */
WORD CRC_err; /* disp.02h: receiver CRC error count */
WORD abort_err; /* disp.04h: aborted frames count */
WORD lost_err; /* disp.06h: buffer overflow error count */
WORD excess_err; /* disp.08h: excessive frame length count */
} ERRSTATSTRUC;
/*----- POS Send/Receive State Data Block ------------------------------------
* Used for SEND_RECV_STATE command.
*--------------------------------------------------------------------------*/
typedef struct {
WORD POS1_received; /* disp.00h: POS#1 queued frames count */
WORD POS2_received; /* disp.02h: POS#2 queued frames count */
WORD async1_recvd; /* disp.04h: bytes in ASYNC#1 receive buffer*/
WORD async1_transm; /* disp.06h: free in ASYNC#1 transmit buffer*/
WORD async2_recvd; /* disp.08h: bytes in ASYNC#2 receive buffer*/
WORD async2_transm; /* disp.0Ah: free in ASYNC#2 transmit buffer*/
} POSSTATESTRUC;
/*----- POS Setup Data Block -------------------------------------------------
* Used for POS_SETUP command.
*--------------------------------------------------------------------------*/
typedef struct {
BYTE mode; /* disp.00h: POS operation mode */
WORD addr; /* disp.01h: address to search for */
} POSSETUPSTRUC;
#pragma pack()
/**************************************************************
*
* TEMPLATE
*
*************************************************************/
#define CONFIGURATION_STRUCT CONFIGSTRUC
#define WANCONFIG_FRMW WANCONFIG_ATM
#define OK 0
#define COMMAND_OK OK
enum {
ROUTER_UP_TIME = 0x50,
FT1_READ_STATUS,
ENABLE_TRACING,
FT1_MONITOR_STATUS_CTRL,
ENABLE_READ_FT1_STATUS,
ENABLE_READ_FT1_OP_STATS
};
#define DCD_HIGH 0x08
#define CTS_HIGH 0x20
#define MIN_WP_PRI_MTU 1500
#define MAX_WP_PRI_MTU MIN_WP_PRI_MTU
#define DEFAULT_WP_PRI_MTU MIN_WP_PRI_MTU
#define MIN_WP_SEC_MTU 1500
#define MAX_WP_SEC_MTU MIN_WP_SEC_MTU
#define DEFAULT_WP_SEC_MTU MIN_WP_SEC_MTU
/* reasons for enabling the timer interrupt on the adapter */
#define TMR_INT_ENABLED_UDP 0x01
#define TMR_INT_ENABLED_UPDATE 0x02
#define TMR_INT_ENABLED_CONFIG 0x10
#define TMR_INT_ENABLED_TE 0x20
#define SIOC_WANPIPE_EXEC_CMD SIOC_WANPIPE_DEVPRIVATE
#define SIOC_WANPIPE_POS_STATUS_CMD SIOC_WANPIPE_DEVPRIVATE+1
#ifdef __KERNEL__
#define PRI_BASE_ADDR_MB_STRUCT 0xE000
#endif
#endif