isdnloop.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* $Id: isdnloop.h,v 1.1.4.1 2001/11/20 14:19:37 kai Exp $
  2.  *
  3.  * Loopback lowlevel module for testing of linklevel.
  4.  *
  5.  * Copyright 1997 by Fritz Elfert (fritz@isdn4linux.de)
  6.  *
  7.  * This software may be used and distributed according to the terms
  8.  * of the GNU General Public License, incorporated herein by reference.
  9.  *
  10.  */
  11. #ifndef isdnloop_h
  12. #define isdnloop_h
  13. #define ISDNLOOP_IOCTL_DEBUGVAR  0
  14. #define ISDNLOOP_IOCTL_ADDCARD   1
  15. #define ISDNLOOP_IOCTL_LEASEDCFG 2
  16. #define ISDNLOOP_IOCTL_STARTUP   3
  17. /* Struct for adding new cards */
  18. typedef struct isdnloop_cdef {
  19. char id1[10];
  20. } isdnloop_cdef;
  21. /* Struct for configuring cards */
  22. typedef struct isdnloop_sdef {
  23. int ptype;
  24. char num[3][20];
  25. } isdnloop_sdef;
  26. #if defined(__KERNEL__) || defined(__DEBUGVAR__)
  27. #ifdef __KERNEL__
  28. /* Kernel includes */
  29. #include <linux/version.h>
  30. #include <linux/errno.h>
  31. #include <linux/fs.h>
  32. #include <linux/major.h>
  33. #include <asm/segment.h>
  34. #include <asm/io.h>
  35. #include <linux/kernel.h>
  36. #include <linux/signal.h>
  37. #include <linux/slab.h>
  38. #include <linux/mm.h>
  39. #include <linux/mman.h>
  40. #include <linux/ioport.h>
  41. #include <linux/timer.h>
  42. #include <linux/wait.h>
  43. #include <linux/isdnif.h>
  44. #endif                          /* __KERNEL__ */
  45. #define ISDNLOOP_FLAGS_B1ACTIVE 1 /* B-Channel-1 is open           */
  46. #define ISDNLOOP_FLAGS_B2ACTIVE 2 /* B-Channel-2 is open           */
  47. #define ISDNLOOP_FLAGS_RUNNING  4 /* Cards driver activated        */
  48. #define ISDNLOOP_FLAGS_RBTIMER  8 /* scheduling of B-Channel-poll  */
  49. #define ISDNLOOP_TIMER_BCREAD 1 /* B-Channel poll-cycle          */
  50. #define ISDNLOOP_TIMER_DCREAD (HZ/2) /* D-Channel poll-cycle          */
  51. #define ISDNLOOP_TIMER_ALERTWAIT (10*HZ) /* Alert timeout                 */
  52. #define ISDNLOOP_MAX_SQUEUE 65536 /* Max. outstanding send-data    */
  53. #define ISDNLOOP_BCH 2          /* channels per card             */
  54. /*
  55.  * Per card driver data
  56.  */
  57. typedef struct isdnloop_card {
  58. struct isdnloop_card *next; /* Pointer to next device struct    */
  59. struct isdnloop_card
  60. *rcard[ISDNLOOP_BCH];   /* Pointer to 'remote' card         */
  61. int rch[ISDNLOOP_BCH];  /* 'remote' channel                 */
  62. int myid;               /* Driver-Nr. assigned by linklevel */
  63. int leased;             /* Flag: This Adapter is connected  */
  64. /*       to a leased line           */
  65. int sil[ISDNLOOP_BCH];  /* SI's to listen for               */
  66. char eazlist[ISDNLOOP_BCH][11];
  67. /* EAZ's to listen for              */
  68. char s0num[3][20];      /* 1TR6 base-number or MSN's        */
  69. unsigned short flags;   /* Statusflags                      */
  70. int ptype;              /* Protocol type (1TR6 or Euro)     */
  71. struct timer_list st_timer; /* Timer for Status-Polls           */
  72. struct timer_list rb_timer; /* Timer for B-Channel-Polls        */
  73. struct timer_list
  74.  c_timer[ISDNLOOP_BCH]; /* Timer for Alerting               */
  75. int l2_proto[ISDNLOOP_BCH]; /* Current layer-2-protocol         */
  76. isdn_if interface;      /* Interface to upper layer         */
  77. int iptr;               /* Index to imsg-buffer             */
  78. char imsg[60];          /* Internal buf for status-parsing  */
  79. int optr;               /* Index to omsg-buffer             */
  80. char omsg[60];          /* Internal buf for cmd-parsing     */
  81. char msg_buf[2048];     /* Buffer for status-messages       */
  82. char *msg_buf_write;    /* Writepointer for statusbuffer    */
  83. char *msg_buf_read;     /* Readpointer for statusbuffer     */
  84. char *msg_buf_end;      /* Pointer to end of statusbuffer   */
  85. int sndcount[ISDNLOOP_BCH]; /* Byte-counters for B-Ch.-send     */
  86. struct sk_buff_head
  87.  bqueue[ISDNLOOP_BCH];  /* B-Channel queues                 */
  88. struct sk_buff_head dqueue; /* D-Channel queue                  */
  89. } isdnloop_card;
  90. /*
  91.  * Main driver data
  92.  */
  93. #ifdef __KERNEL__
  94. static isdnloop_card *cards = (isdnloop_card *) 0;
  95. #endif                          /* __KERNEL__ */
  96. /* Utility-Macros */
  97. #define CID (card->interface.id)
  98. #endif                          /* defined(__KERNEL__) || defined(__DEBUGVAR__) */
  99. #endif                          /* isdnloop_h */