eagle.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _EAGLE_H
  2. #define _EAGLE_H
  3. #ifndef _GLOBAL_H
  4. #include "global.h"
  5. #endif
  6. #ifndef _MBUF_H
  7. #include "mbuf.h"
  8. #endif
  9. #ifndef _IFACE_H
  10. #include "iface.h"
  11. #endif
  12. /* Hardware-dependent routines for the EAGLE card for the PC
  13.  * This card contains a Zilog 8530 only - no modem!
  14.  */
  15. #define EGMAX 1 /* One card max */
  16. #define AX_MTU 512
  17. #define INTMASK 0x21 /* Intel 8259 interrupt controller mask */
  18. struct EGTAB {
  19. INTERRUPT (*oldvec)(void); /* Original interrupt vector contents */
  20. uint16 addr; /* Base I/O address */
  21. unsigned vec; /* Vector */
  22. long ints; /* Interrupt count */
  23. uint8 chain; /* Interrupt chaining enable */
  24. };
  25. extern struct EGTAB Eagle[];
  26. /* Register offset info, specific to the EAGLE
  27.  * E.g., to read the data port on channel A, use
  28.  * inportb(egchan[dev].base + CHANA + DATA)
  29.  */
  30. #define CHANB 0 /* Base of channel B regs */
  31. #define CHANA 2 /* Base of channel A regs */
  32. /* 8530 ports on each channel */
  33. #define CTL 0
  34. #define DATA 1
  35. #define DMACTRL  4 /* Base of channel + 4 */
  36. /* EAGLE DMA/INTERRUPT CONTROL REGISTER */
  37. #define DMAPORT  0 /* 0 = Data Port */
  38. #define INTPORT  1 /* 1 = Interrupt Port */
  39. #define DMACHANA 0 /* 0 = DMA on CHANNEL A */
  40. #define DMACHANB 2 /* 1 = DMA on Channel B */
  41. #define DMADISABLE 0 /* 0 = DMA disabled */
  42. #define DMAENABLE 4 /* 1 = DMA enabled */
  43. #define INTDISABLE 0 /* 0 = Interrupts disabled */
  44. #define INTENABLE 8 /* 1 = Interrupts enabled */
  45. #define INTACKTOG 10 /* 1 = INT ACK TOGGLE */
  46. struct egchan {
  47. long rxints; /* Receiver interrupts */
  48. long txints; /* Transmitter interrupts */
  49. long exints; /* External/status interrupts */
  50. long spints; /* Special receiver interrupts */
  51. int enqueued; /* Packets actually forwarded */
  52. int rxframes; /* Number of Frames Actally Received */
  53. int toobig; /* Giant receiver packets */
  54. int crcerr; /* CRC Errors */
  55. int aborts; /* Receiver aborts */
  56. int rovers; /* Receiver Overruns */
  57. uint8 status; /* Copy of R0 at last external interrupt */
  58. struct mbuf *rcvbuf; /* Buffer for current rx packet */
  59. uint16 bufsiz; /* Size of rcvbuf */
  60. uint8 *rcp; /* Pointer into rcvbuf */
  61. struct mbuf *sndq; /* Packets awaiting transmission */
  62. uint16 sndcnt; /* Number of packets on sndq */
  63. struct mbuf *sndbuf; /* Current buffer being transmitted */
  64. uint8 tstate; /* Tranmsitter state */
  65. #define IDLE 0 /* Transmitter off, no data pending */
  66. #define ACTIVE 1 /* Transmitter on, sending data */
  67. #define UNDERRUN 2 /* Transmitter on, flushing CRC */
  68. #define FLAGOUT 3 /* CRC sent - attempt to start next frame */
  69. #define DEFER 4  /* Receive Active - DEFER Transmit */
  70. uint8 rstate; /* Set when !DCD goes to 0 (TRUE) */
  71. /* Normal state is ACTIVE if Receive enabled */
  72. #define RXERROR 2 /* Error -- Aborting current Frame */
  73. #define RXABORT 3 /* ABORT sequence detected */
  74. #define TOOBIG 4 /* too large a frame to store */
  75. int dev; /* Device number */
  76. uint16 base; /* Base of I/O registers */
  77. uint16 stata; /* address of Channel A status regs */
  78. uint16 statb; /* address of Channel B status regs */
  79. uint16 dmactrl; /* address of DMA/INTERRUPT reg on card */
  80. uint16 speed; /* Line speed, bps */
  81. uint8 txdelay; /* Transmit Delay 10 ms/cnt */
  82. uint8 persist; /* Persistence (0-255) as a % */
  83. uint8 slotime; /* Delay to wait on persistence hit */
  84. uint8 squeldelay; /* Delay after XMTR OFF for squelch tail */
  85. struct iface *iface; /* Associated interface */
  86. };
  87. extern struct egchan Egchan[];
  88. #define OFF 0
  89. #define ON 1
  90. #define INIT 2
  91. /* 8530 clock speed */
  92. #define XTAL ((long) 3686400/2)  /* 32X clock constant */
  93. /*************************************************************/
  94. /* TEMP FOR DEBUG ONLY - eliminates Divide by zero interrupt */
  95. /*        - preset for 1200 BAUD !!!!!!!!!!!!!! */
  96. /*************************************************************/
  97. #define TXCONST 1534  /* (XTAL/1200L)-2 */
  98. #define RXCONST 46  /* ((XTAL/32)/1200L)-2 */
  99. /* Baud rate generator definitions */
  100. struct baudrate {
  101. uint16 speed;
  102. uint8 val;
  103. };
  104. /* In eagle.c: */
  105. INTERRUPT (far *(egint)(int dev))();
  106. /* In eaglevec.asm: */
  107. INTERRUPT eg0vec(void);
  108. #endif /* _EAGLE_H */