2005-04-17 02:20:36 +04:00
/*
* Linux driver for HYSDN cards
* common definitions for both sides of the bus :
* - conventions both spoolers must know
* - channel numbers agreed upon
*
* Author M . Steinkopf
* Copyright 1999 by M . Steinkopf
*
* This software may be used and distributed according to the terms
* of the GNU General Public License , incorporated herein by reference .
*
*/
# ifndef __INCE1PC_H__
# define __INCE1PC_H__
/* basic scalar definitions have same meanning,
* but their declaration location depends on environment
*/
/*--------------------------------------channel numbers---------------------*/
# define CHAN_SYSTEM 0x0001 /* system channel (spooler to spooler) */
# define CHAN_ERRLOG 0x0005 /* error logger */
# define CHAN_CAPI 0x0064 /* CAPI interface */
# define CHAN_NDIS_DATA 0x1001 /* NDIS data transfer */
/*--------------------------------------POF ready msg-----------------------*/
/* NOTE: after booting POF sends system ready message to PC: */
# define RDY_MAGIC 0x52535953UL /* 'SYSR' reversed */
# define RDY_MAGIC_SIZE 4 /* size in bytes */
# define MAX_N_TOK_BYTES 255
# define MIN_RDY_MSG_SIZE RDY_MAGIC_SIZE
# define MAX_RDY_MSG_SIZE (RDY_MAGIC_SIZE+MAX_N_TOK_BYTES)
# define SYSR_TOK_END 0
# define SYSR_TOK_B_CHAN 1 /* nr. of B-Channels; DataLen=1; def: 2 */
# define SYSR_TOK_FAX_CHAN 2 /* nr. of FAX Channels; DataLen=1; def: 0 */
# define SYSR_TOK_MAC_ADDR 3 /* MAC-Address; DataLen=6; def: auto */
# define SYSR_TOK_ESC 255 /* undefined data size yet */
/* default values, if not corrected by token: */
# define SYSR_TOK_B_CHAN_DEF 2 /* assume 2 B-Channels */
# define SYSR_TOK_FAX_CHAN_DEF 1 /* assume 1 FAX Channel */
/* syntax of new SYSR token stream:
* channel : CHAN_SYSTEM
* msgsize : MIN_RDY_MSG_SIZE < = x < = MAX_RDY_MSG_SIZE
* RDY_MAGIC_SIZE < = x < = ( RDY_MAGIC_SIZE + MAX_N_TOK_BYTES )
* msg : 0 1 2 3 { 4 5 6 . . }
* S Y S R MAX_N_TOK_BYTES bytes of TokenStream
*
* TokenStream : = empty
* | { NonEndTokenChunk } EndToken RotlCRC
* NonEndTokenChunk : = NonEndTokenId DataLen [ Data ]
* NonEndTokenId : = 0x01 . . 0xFE 1 BYTE
* DataLen : = 0x00 . . 0xFF 1 BYTE
* Data : = DataLen bytes
* EndToken : = 0x00
* RotlCRC : = special 1 byte CRC over all NonEndTokenChunk bytes
* s . RotlCRC algorithm
*
* RotlCRC algorithm :
2006-03-25 14:07:04 +03:00
* ucSum = 0 1 unsigned char
2005-04-17 02:20:36 +04:00
* for all NonEndTokenChunk bytes :
* ROTL ( ucSum , 1 ) rotate left by 1
* ucSum + = Char ; add current byte with swap around
* RotlCRC = ~ ucSum ; invert all bits for result
*
* note :
* - for 16 - bit FIFO add padding 0 byte to achieve even token data bytes !
*/
/*--------------------------------------error logger------------------------*/
/* note: pof needs final 0 ! */
# define ERRLOG_CMD_REQ "ERRLOG ON"
# define ERRLOG_CMD_REQ_SIZE 10 /* with final 0 byte ! */
# define ERRLOG_CMD_STOP "ERRLOG OFF"
# define ERRLOG_CMD_STOP_SIZE 11 /* with final 0 byte ! */
# define ERRLOG_ENTRY_SIZE 64 /* sizeof(tErrLogEntry) */
/* remaining text size = 55 */
# define ERRLOG_TEXT_SIZE (ERRLOG_ENTRY_SIZE-2*4-1)
typedef struct ErrLogEntry_tag {
2006-03-25 14:07:04 +03:00
/*00 */ unsigned long ulErrType ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*04 */ unsigned long ulErrSubtype ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*08 */ unsigned char ucTextSize ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*09 */ unsigned char ucText [ ERRLOG_TEXT_SIZE ] ;
2005-04-17 02:20:36 +04:00
/* ASCIIZ of len ucTextSize-1 */
/*40 */
} tErrLogEntry ;
# if defined(__TURBOC__)
# if sizeof(tErrLogEntry) != ERRLOG_ENTRY_SIZE
# error size of tErrLogEntry != ERRLOG_ENTRY_SIZE
# endif /* */
# endif /* */
/*--------------------------------------DPRAM boot spooler------------------*/
/* this is the struture used between pc and
* hyperstone to exchange boot data
*/
# define DPRAM_SPOOLER_DATA_SIZE 0x20
typedef struct DpramBootSpooler_tag {
2006-03-25 14:07:04 +03:00
/*00 */ unsigned char Len ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*01 */ volatile unsigned char RdPtr ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*02 */ unsigned char WrPtr ;
2005-04-17 02:20:36 +04:00
2006-03-25 14:07:04 +03:00
/*03 */ unsigned char Data [ DPRAM_SPOOLER_DATA_SIZE ] ;
2005-04-17 02:20:36 +04:00
/*23 */
} tDpramBootSpooler ;
# define DPRAM_SPOOLER_MIN_SIZE 5 /* Len+RdPtr+Wrptr+2*data */
# define DPRAM_SPOOLER_DEF_SIZE 0x23 /* current default size */
/*--------------------------------------HYCARD/ERGO DPRAM SoftUart----------*/
/* at DPRAM offset 0x1C00: */
# define SIZE_RSV_SOFT_UART 0x1B0 /* 432 bytes reserved for SoftUart */
# endif /* __INCE1PC_H__ */