diff options
author | hm <hm@FreeBSD.org> | 2001-10-18 11:58:49 +0000 |
---|---|---|
committer | hm <hm@FreeBSD.org> | 2001-10-18 11:58:49 +0000 |
commit | 49e3567ef7c9c2e6bb7da47b86af7b991b1d1bd1 (patch) | |
tree | dcfe434253eaa1290451be56d7a4ca351036de67 /sys/i4b/driver | |
parent | 4153de7b054229b20a09957ffa86037f696d6da4 (diff) | |
download | FreeBSD-src-49e3567ef7c9c2e6bb7da47b86af7b991b1d1bd1.zip FreeBSD-src-49e3567ef7c9c2e6bb7da47b86af7b991b1d1bd1.tar.gz |
Add experimental support for sending keypad facility messages.
MFC after: 2 months
Diffstat (limited to 'sys/i4b/driver')
-rw-r--r-- | sys/i4b/driver/i4b_tel.c | 107 |
1 files changed, 13 insertions, 94 deletions
diff --git a/sys/i4b/driver/i4b_tel.c b/sys/i4b/driver/i4b_tel.c index c9a195d..877b560 100644 --- a/sys/i4b/driver/i4b_tel.c +++ b/sys/i4b/driver/i4b_tel.c @@ -29,7 +29,7 @@ * * $FreeBSD$ * - * last edit-date: [Tue May 8 10:19:36 2001] + * last edit-date: [Thu Oct 18 13:24:50 2001] * *---------------------------------------------------------------------------*/ @@ -42,13 +42,8 @@ #include <sys/param.h> #include <sys/systm.h> -#if defined(__FreeBSD__) || defined(__NetBSD__) #include <sys/ioccom.h> #include <sys/poll.h> -#else -#include <sys/ioctl.h> -#include <sys/fcntl.h> -#endif #include <sys/conf.h> #include <sys/uio.h> @@ -58,25 +53,13 @@ #include <net/if.h> #include <sys/tty.h> -#ifdef __FreeBSD__ #ifdef DEVFS #include <sys/devfsext.h> #endif -#endif /* __FreeBSD__ */ - -#ifdef __bsdi__ -#include <sys/device.h> -#endif -#ifdef __FreeBSD__ #include <machine/i4b_ioctl.h> #include <machine/i4b_tel_ioctl.h> #include <machine/i4b_debug.h> -#else -#include <i4b/i4b_ioctl.h> -#include <i4b/i4b_tel_ioctl.h> -#include <i4b/i4b_debug.h> -#endif #include <i4b/include/i4b_global.h> #include <i4b/include/i4b_mbuf.h> @@ -151,37 +134,13 @@ static unsigned char u2a_tab[]; static unsigned char bitreverse[]; static u_char sinetab[]; -#ifndef __FreeBSD__ -#define PDEVSTATIC /* - not static - */ -PDEVSTATIC void i4btelattach __P((void)); - -#ifdef __bsdi__ -PDEVSTATIC int i4btelioctl __P((dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)); -#else -PDEVSTATIC int i4btelioctl __P((dev_t dev, int cmd, caddr_t data, int flag, struct thread *td)); -#endif - -int i4btelopen __P((dev_t dev, int flag, int fmt, struct thread *td)); -int i4btelclose __P((dev_t dev, int flag, int fmt, struct thread *td)); -int i4btelread __P((dev_t dev, struct uio *uio, int ioflag)); -int i4btelwrite __P((dev_t dev, struct uio * uio, int ioflag)); - -#ifdef OS_USES_POLL -int i4btelpoll __P((dev_t dev, int events, struct thread *td)); -#else -int i4btelsel __P((dev_t dev, int rw, struct thread *td)); -#endif - -#endif /* ! __FreeBSD__ */ - -#if BSD > 199306 && defined(__FreeBSD__) - #define PDEVSTATIC static + PDEVSTATIC d_open_t i4btelopen; -PDEVSTATIC d_close_t i4btelclose; -PDEVSTATIC d_read_t i4btelread; -PDEVSTATIC d_read_t i4btelwrite; -PDEVSTATIC d_ioctl_t i4btelioctl; +PDEVSTATIC d_close_t i4btelclose; +PDEVSTATIC d_read_t i4btelread; +PDEVSTATIC d_read_t i4btelwrite; +PDEVSTATIC d_ioctl_t i4btelioctl; #ifdef OS_USES_POLL PDEVSTATIC d_poll_t i4btelpoll; @@ -230,50 +189,11 @@ i4btelinit(void *unused) SYSINIT(i4bteldev, SI_SUB_DRIVERS, SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL); -#endif /* BSD > 199306 && defined(__FreeBSD__) */ - -#ifdef __bsdi__ - -int i4btelsel(dev_t dev, int rw, struct thread *td); -int i4btelmatch(struct device *parent, struct cfdata *cf, void *aux); -void dummy_i4btelattach(struct device*, struct device *, void *); - -#define CDEV_MAJOR 62 - -static struct cfdriver i4btelcd = - { NULL, "i4btel", i4btelmatch, dummy_i4btelattach, DV_DULL, - sizeof(struct cfdriver) }; -struct devsw i4btelsw = - { &i4btelcd, - i4btelopen, i4btelclose, i4btelread, i4btelwrite, - i4btelioctl, i4btelsel, nommap, nostrat, - nodump, nopsize, 0, nostop -}; - -int -i4btelmatch(struct device *parent, struct cfdata *cf, void *aux) -{ - NDBGL4(L4_TELDBG, "aux=0x%x", aux); - return 1; -} - -void -dummy_i4btelattach(struct device *parent, struct device *self, void *aux) -{ - NDBGL4(L4_TELDBG, "aux=0x%x", aux); -} - -#endif /* __bsdi__ */ - /*---------------------------------------------------------------------------* * interface attach routine *---------------------------------------------------------------------------*/ PDEVSTATIC void -#ifdef __FreeBSD__ i4btelattach(void *dummy) -#else -i4btelattach() -#endif { int i, j; @@ -289,7 +209,6 @@ i4btelattach() tel_sc[i][j].wcvttab = 0; tel_sc[i][j].result = 0; -#if defined(__FreeBSD__) switch(j) { case FUNCTEL: /* normal i4btel device */ @@ -304,7 +223,6 @@ i4btelattach() 0600, "i4bteld%d", i); break; } -#endif } tel_init_linktab(i); } @@ -386,13 +304,7 @@ i4btelclose(dev_t dev, int flag, int fmt, struct thread *td) * i4btelioctl - device driver ioctl routine *---------------------------------------------------------------------------*/ PDEVSTATIC int -#if defined(__FreeBSD__) -i4btelioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) -#elif defined(__bsdi__) i4btelioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) -#else -i4btelioctl(dev_t dev, int cmd, caddr_t data, int flag, struct thread *td) -#endif { int unit = UNIT(dev); int func = FUNC(dev); @@ -540,6 +452,7 @@ i4btelread(dev_t dev, struct uio *uio, int ioflag) sc->devstate |= ST_RDWAITDATA; NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit); + #if defined (__FreeBSD__) && __FreeBSD__ > 4 if((error = msleep((caddr_t) &sc->isdn_linktab->rx_queue, &sc->isdn_linktab->rx_queue->ifq_mtx, @@ -675,6 +588,7 @@ i4btelwrite(dev_t dev, struct uio * uio, int ioflag) (sc->devstate & ST_ISOPEN)) { sc->devstate |= ST_WRWAITEMPTY; + #if defined (__FreeBSD__) && __FreeBSD__ > 4 if((error = msleep((caddr_t) &sc->isdn_linktab->tx_queue, &sc->isdn_linktab->tx_queue->ifq_mtx, @@ -721,6 +635,7 @@ i4btelwrite(dev_t dev, struct uio * uio, int ioflag) /* always reverse bitorder to line */ mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]]; } + #if defined (__FreeBSD__) && __FreeBSD__ > 4 (void) IF_HANDOFF(sc->isdn_linktab->tx_queue, m, NULL); #else @@ -750,6 +665,10 @@ i4btelwrite(dev_t dev, struct uio * uio, int ioflag) { i4b_l4_drvrdisc(BDRV_TEL, unit); } + else if(cmdbuf[0] == CMD_KEYP) + { + i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]); + } } else { |