1/*****************************************************************************/ 2/* 3 * auerisdn.h -- Auerswald PBX/System Telephone ISDN interface. 4 * 5 * Copyright (C) 2002 Wolfgang Mües (wolfgang@iksw-muees.de) 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 */ 21 /*****************************************************************************/ 22 23#ifndef AUERISDN_H 24#define AUERISDN_H 25 26#if (CONFIG_USB_AUERISDN || CONFIG_USB_AUERISDN_MODULE) 27 28#include <linux/timer.h> 29#include "auerserv.h" 30#include "auerisdn_b.h" 31 32#define AUISDN_IPTIMEOUT (HZ * 60) /* IP Timeout is 40s */ 33 34struct auerswald; 35struct auerhisax; 36 37struct auerisdn { 38 struct auerscon dchannelservice; /* serving the D channel */ 39 struct auerhisax *ahp; /* Reference to hisax interface */ 40 unsigned int dc_activated; /* 1 if D-Channel is activated */ 41 struct auerisdnbc bc[AUISDN_BCHANNELS]; /* B channel data */ 42 unsigned int insize; /* Max. Block Size of Input INT */ 43 unsigned int outsize; /* Max. Block Size of Output INT */ 44 unsigned int outInterval; /* nr. of ms between INT OUT transfers */ 45 struct urb *intbi_urbp; /* B channel Input Interrupt urb */ 46 unsigned char *intbi_bufp; /* B channel Input data buffer */ 47 unsigned int paketsize; /* Data size of the INT OUT pakets */ 48 struct usb_device *usbdev; /* USB device handle */ 49 unsigned int intbo_state; /* Status of INT OUT urb */ 50 struct urb *intbo_urbp; /* B channel Output Interrupt urb */ 51 unsigned char *intbo_bufp; /* B channel Output data buffer */ 52 unsigned int intbo_index; /* Index of last served B channel */ 53 unsigned int intbo_toggletimer; /* data toggle timer for 2 b channels */ 54 unsigned int intbo_endp; /* grrr.. different on some devices */ 55 struct timer_list dcopen_timer; /* Open D-channel once more later... */ 56}; 57 58struct auerhisax { 59 struct hisax_d_if hisax_d_if; /* Hisax D-Channel interface */ 60 struct hisax_b_if hisax_b_if[AUISDN_BCHANNELS]; /* Hisax B-channel interfaces */ 61 struct auerswald *cp; /* Context to usb device */ 62 unsigned int hisax_registered; /* 1 if registered at hisax interface */ 63 unsigned char txseq; /* L2 emulation: tx sequence byte */ 64 unsigned char rxseq; /* L2 emulation: rx sequence byte */ 65 spinlock_t seq_lock; /* Lock sequence numbers */ 66 unsigned long last_close; /* Time of last close in jiffies */ 67}; 68 69/* Function Prototypes */ 70void auerisdn_init_dev(struct auerswald *cp); 71 72int auerisdn_probe(struct auerswald *cp); 73 74void auerisdn_disconnect(struct auerswald *cp); 75 76void auerisdn_init(void); 77 78void auerisdn_cleanup(void); 79 80#else /* no CONFIG_USB_AUERISDN */ 81 82struct auerisdn { 83 int dummy; 84}; 85 86/* Dummy ISDN functions */ 87#define auerisdn_init_dev( cp) 88#define auerisdn_probe( cp) 0 89#define auerisdn_disconnect( cp) 90#define auerisdn_init() 91#define auerisdn_cleanup() 92#endif /* CONFIG_USB_AUERISDN */ 93 94#endif /* AUERISDN_H */ 95

