Home | History | Annotate | Download | only in linux
      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 
     15 struct 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 
     25 struct 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 
     34 struct hdlcdrv_old_channel_state {
     35   	int ptt;
     36   	int dcd;
     37   	int ptt_keyed;
     38 };
     39 
     40 struct 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 
     50 struct 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