1/* 2 * hdlcdrv.h -- HDLC packet radio network driver. 3 * The Linux soundcard driver for 1200 baud and 9600 baud packet radio 4 * (C) 1996-1998 by Thomas Sailer, HB9JNX/AE4WA 5 */ 6 7#ifndef _HDLCDRV_H 8#define _HDLCDRV_H 9 10/* -------------------------------------------------------------------- */ 11/* 12 * structs for the IOCTL commands 13 */ 14 15struct hdlcdrv_params { 16 int iobase; 17 int irq; 18 int dma; 19 int dma2; 20 int seriobase; 21 int pariobase; 22 int midiiobase; 23}; 24 25struct hdlcdrv_channel_params { 26 int tx_delay; /* the transmitter keyup delay in 10ms units */ 27 int tx_tail; /* the transmitter keyoff delay in 10ms units */ 28 int slottime; /* the slottime in 10ms; usually 10 = 100ms */ 29 int ppersist; /* the p-persistence 0..255 */ 30 int fulldup; /* some driver do not support full duplex, setting */ 31 /* this just makes them send even if DCD is on */ 32}; 33 34struct hdlcdrv_old_channel_state { 35 int ptt; 36 int dcd; 37 int ptt_keyed; 38}; 39 40struct hdlcdrv_channel_state { 41 int ptt; 42 int dcd; 43 int ptt_keyed; 44 unsigned long tx_packets; 45 unsigned long tx_errors; 46 unsigned long rx_packets; 47 unsigned long rx_errors; 48}; 49 50struct hdlcdrv_ioctl { 51 int cmd; 52 union { 53 struct hdlcdrv_params mp; 54 struct hdlcdrv_channel_params cp; 55 struct hdlcdrv_channel_state cs; 56 struct hdlcdrv_old_channel_state ocs; 57 unsigned int calibrate; 58 unsigned char bits; 59 char modename[128]; 60 char drivername[32]; 61 } data; 62}; 63 64/* -------------------------------------------------------------------- */ 65 66/* 67 * ioctl values 68 */ 69#define HDLCDRVCTL_GETMODEMPAR 0 70#define HDLCDRVCTL_SETMODEMPAR 1 71#define HDLCDRVCTL_MODEMPARMASK 2 /* not handled by hdlcdrv */ 72#define HDLCDRVCTL_GETCHANNELPAR 10 73#define HDLCDRVCTL_SETCHANNELPAR 11 74#define HDLCDRVCTL_OLDGETSTAT 20 75#define HDLCDRVCTL_CALIBRATE 21 76#define HDLCDRVCTL_GETSTAT 22 77 78/* 79 * these are mainly for debugging purposes 80 */ 81#define HDLCDRVCTL_GETSAMPLES 30 82#define HDLCDRVCTL_GETBITS 31 83 84/* 85 * not handled by hdlcdrv, but by its depending drivers 86 */ 87#define HDLCDRVCTL_GETMODE 40 88#define HDLCDRVCTL_SETMODE 41 89#define HDLCDRVCTL_MODELIST 42 90#define HDLCDRVCTL_DRIVERNAME 43 91 92/* 93 * mask of needed modem parameters, returned by HDLCDRVCTL_MODEMPARMASK 94 */ 95#define HDLCDRV_PARMASK_IOBASE (1<<0) 96#define HDLCDRV_PARMASK_IRQ (1<<1) 97#define HDLCDRV_PARMASK_DMA (1<<2) 98#define HDLCDRV_PARMASK_DMA2 (1<<3) 99#define HDLCDRV_PARMASK_SERIOBASE (1<<4) 100#define HDLCDRV_PARMASK_PARIOBASE (1<<5) 101#define HDLCDRV_PARMASK_MIDIIOBASE (1<<6) 102 103/* -------------------------------------------------------------------- */ 104 105 106/* -------------------------------------------------------------------- */ 107 108#endif /* _HDLCDRV_H */ 109 110/* -------------------------------------------------------------------- */ 111