📄 isdn.h
字号:
* variables. Of course, we need to check skb_headroom prior to * any access. */typedef struct isdn_audio_skb { unsigned short dle_count; unsigned char lock;} isdn_audio_skb;#define ISDN_AUDIO_SKB_DLECOUNT(skb) (((isdn_audio_skb*)skb->head)->dle_count)#define ISDN_AUDIO_SKB_LOCK(skb) (((isdn_audio_skb*)skb->head)->lock)#endif/* Private data of AT-command-interpreter */typedef struct atemu { u_char profile[ISDN_MODEM_NUMREG]; /* Modem-Regs. Profile 0 */ u_char mdmreg[ISDN_MODEM_NUMREG]; /* Modem-Registers */ char pmsn[ISDN_MSNLEN]; /* EAZ/MSNs Profile 0 */ char msn[ISDN_MSNLEN]; /* EAZ/MSN */ char plmsn[ISDN_LMSNLEN]; /* Listening MSNs Profile 0 */ char lmsn[ISDN_LMSNLEN]; /* Listening MSNs */ char cpn[ISDN_MSNLEN]; /* CalledPartyNumber on incoming call */ char connmsg[ISDN_CMSGLEN]; /* CONNECT-Msg from HL-Driver */#ifdef CONFIG_ISDN_AUDIO u_char vpar[10]; /* Voice-parameters */ int lastDLE; /* Flag for voice-coding: DLE seen */#endif int mdmcmdl; /* Length of Modem-Commandbuffer */ int pluscount; /* Counter for +++ sequence */ int lastplus; /* Timestamp of last + */ int carrierwait; /* Seconds of carrier waiting */ char mdmcmd[255]; /* Modem-Commandbuffer */ unsigned int charge; /* Charge units of current connection */} atemu;/* Private data (similar to async_struct in <linux/serial.h>) */typedef struct modem_info { int magic; int flags; /* defined in tty.h */ int x_char; /* xon/xoff character */ int mcr; /* Modem control register */ int msr; /* Modem status register */ int lsr; /* Line status register */ int line; int count; /* # of fd on device */ int blocked_open; /* # of blocked opens */ long session; /* Session of opening process */ long pgrp; /* pgrp of opening process */ int online; /* 1 = B-Channel is up, drop data */ /* 2 = B-Channel is up, deliver d.*/ int dialing; /* Dial in progress or ATA */ int rcvsched; /* Receive needs schedule */ int isdn_driver; /* Index to isdn-driver */ int isdn_channel; /* Index to isdn-channel */ int drv_index; /* Index to dev->usage */ int ncarrier; /* Flag: schedule NO CARRIER */ unsigned char last_cause[8]; /* Last cause message */ unsigned char last_num[ISDN_MSNLEN]; /* Last phone-number */ unsigned char last_l2; /* Last layer-2 protocol */ unsigned char last_si; /* Last service */ unsigned char last_lhup; /* Last hangup local? */ unsigned char last_dir; /* Last direction (in or out) */ struct timer_list nc_timer; /* Timer for delayed NO CARRIER */ int send_outstanding;/* # of outstanding send-requests */ int xmit_size; /* max. # of chars in xmit_buf */ int xmit_count; /* # of chars in xmit_buf */ unsigned char *xmit_buf; /* transmit buffer */ struct sk_buff_head xmit_queue; /* transmit queue */ atomic_t xmit_lock; /* Semaphore for isdn_tty_write */#ifdef CONFIG_ISDN_AUDIO int vonline; /* Voice-channel status */ /* Bit 0 = recording */ /* Bit 1 = playback */ /* Bit 2 = playback, DLE-ETX seen */ struct sk_buff_head dtmf_queue; /* queue for dtmf results */ void *adpcms; /* state for adpcm decompression */ void *adpcmr; /* state for adpcm compression */ void *dtmf_state; /* state for dtmf decoder */ void *silence_state; /* state for silence detection */#endif#ifdef CONFIG_ISDN_TTY_FAX struct T30_s *fax; /* T30 Fax Group 3 data/interface */ int faxonline; /* Fax-channel status */#endif struct tty_struct *tty; /* Pointer to corresponding tty */ atemu emu; /* AT-emulator data */ struct termios normal_termios; /* For saving termios structs */ struct termios callout_termios; wait_queue_head_t open_wait, close_wait; struct semaphore write_sem;} modem_info;#define ISDN_MODEM_WINSIZE 8/* Description of one ISDN-tty */typedef struct { int refcount; /* Number of opens */ struct tty_driver tty_modem; /* tty-device */ struct tty_driver cua_modem; /* cua-device */ struct tty_struct *modem_table[ISDN_MAX_CHANNELS]; /* ?? copied from Orig */ struct termios *modem_termios[ISDN_MAX_CHANNELS]; struct termios *modem_termios_locked[ISDN_MAX_CHANNELS]; modem_info info[ISDN_MAX_CHANNELS]; /* Private data */} modem;/*======================= End of ISDN-tty stuff ============================*//*======================== Start of V.110 stuff ============================*/#define V110_BUFSIZE 1024typedef struct { int nbytes; /* 1 Matrixbyte -> nbytes in stream */ int nbits; /* Number of used bits in streambyte */ unsigned char key; /* Bitmask in stream eg. 11 (nbits=2) */ int decodelen; /* Amount of data in decodebuf */ int SyncInit; /* Number of sync frames to send */ unsigned char *OnlineFrame; /* Precalculated V110 idle frame */ unsigned char *OfflineFrame; /* Precalculated V110 sync Frame */ int framelen; /* Length of frames */ int skbuser; /* Number of unacked userdata skbs */ int skbidle; /* Number of unacked idle/sync skbs */ int introducer; /* Local vars for decoder */ int dbit; unsigned char b; int skbres; /* space to reserve in outgoing skb */ int maxsize; /* maxbufsize of lowlevel driver */ unsigned char *encodebuf; /* temporary buffer for encoding */ unsigned char decodebuf[V110_BUFSIZE]; /* incomplete V110 matrices */} isdn_v110_stream;/*========================= End of V.110 stuff =============================*//*======================= Start of general stuff ===========================*/typedef struct { char *next; char *private;} infostruct;#define DRV_FLAG_RUNNING 1#define DRV_FLAG_REJBUS 2#define DRV_FLAG_LOADED 4/* Description of hardware-level-driver */typedef struct { ulong online; /* Channel-Online flags */ ulong flags; /* Misc driver Flags */ int locks; /* Number of locks for this driver */ int channels; /* Number of channels */ wait_queue_head_t st_waitq; /* Wait-Queue for status-read's */ int maxbufsize; /* Maximum Buffersize supported */ unsigned long pktcount; /* Until now: unused */ int stavail; /* Chars avail on Status-device */ isdn_if *interface; /* Interface to driver */ int *rcverr; /* Error-counters for B-Ch.-receive */ int *rcvcount; /* Byte-counters for B-Ch.-receive */#ifdef CONFIG_ISDN_AUDIO unsigned long DLEflag; /* Flags: Insert DLE at next read */#endif struct sk_buff_head *rpqueue; /* Pointers to start of Rcv-Queue */ wait_queue_head_t *rcv_waitq; /* Wait-Queues for B-Channel-Reads */ wait_queue_head_t *snd_waitq; /* Wait-Queue for B-Channel-Send's */ char msn2eaz[10][ISDN_MSNLEN]; /* Mapping-Table MSN->EAZ */} driver;/* Main driver-data */typedef struct isdn_devt { unsigned short flags; /* Bitmapped Flags: */ /* */ int drivers; /* Current number of drivers */ int channels; /* Current number of channels */ int net_verbose; /* Verbose-Flag */ int modempoll; /* Flag: tty-read active */ int tflags; /* Timer-Flags: */ /* see ISDN_TIMER_..defines */ int global_flags; infostruct *infochain; /* List of open info-devs. */ wait_queue_head_t info_waitq; /* Wait-Queue for isdninfo */ struct timer_list timer; /* Misc.-function Timer */ int chanmap[ISDN_MAX_CHANNELS];/* Map minor->device-channel */ int drvmap[ISDN_MAX_CHANNELS]; /* Map minor->driver-index */ int usage[ISDN_MAX_CHANNELS]; /* Used by tty/ip/voice */ char num[ISDN_MAX_CHANNELS][ISDN_MSNLEN]; /* Remote number of active ch.*/ int m_idx[ISDN_MAX_CHANNELS]; /* Index for mdm.... */ driver *drv[ISDN_MAX_DRIVERS]; /* Array of drivers */ isdn_net_dev *netdev; /* Linked list of net-if's */ char drvid[ISDN_MAX_DRIVERS][20];/* Driver-ID */ struct task_struct *profd; /* For iprofd */ modem mdm; /* tty-driver-data */ isdn_net_dev *rx_netdev[ISDN_MAX_CHANNELS]; /* rx netdev-pointers */ isdn_net_dev *st_netdev[ISDN_MAX_CHANNELS]; /* stat netdev-pointers */ ulong ibytes[ISDN_MAX_CHANNELS]; /* Statistics incoming bytes */ ulong obytes[ISDN_MAX_CHANNELS]; /* Statistics outgoing bytes */ int v110emu[ISDN_MAX_CHANNELS];/* V.110 emulator-mode 0=none */ atomic_t v110use[ISDN_MAX_CHANNELS];/* Usage-Semaphore for stream */ isdn_v110_stream *v110[ISDN_MAX_CHANNELS]; /* V.110 private data */ struct semaphore sem; /* serialize list access*/ unsigned long global_features;#ifdef CONFIG_DEVFS_FS devfs_handle_t devfs_handle_isdninfo; devfs_handle_t devfs_handle_isdnctrl; devfs_handle_t devfs_handle_isdnX[ISDN_MAX_CHANNELS]; devfs_handle_t devfs_handle_isdnctrlX[ISDN_MAX_CHANNELS];#ifdef CONFIG_ISDN_PPP devfs_handle_t devfs_handle_ipppX[ISDN_MAX_CHANNELS];#endif#endif /* CONFIG_DEVFS_FS */} isdn_dev;extern isdn_dev *dev;#endif /* __KERNEL__ */#endif /* __ISDN_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -