Annotation of embedaddon/ntp/kernel/sys/bsd_audioirig.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  *     $Header: bsd_audioirig.h,v 1.0 93/08/02 12:42:00
                      3:  */
                      4: 
                      5: #ifndef _BSD_AUDIOIRIG_H_
                      6: #define _BSD_AUDIOIRIG_H_
                      7: 
                      8: #include <sys/time.h>
                      9: 
                     10: /********************************************************************/
                     11: /* user interface */
                     12: 
                     13: /*
                     14:  * irig ioctls
                     15:  */
                     16: #if defined(__STDC__) || (!defined(sun) && !defined(ibm032) && !defined(__GNUC))
                     17: #define AUDIO_IRIG_OPEN         _IO('A', 50)
                     18: #define AUDIO_IRIG_CLOSE        _IO('A', 51)
                     19: #define AUDIO_IRIG_SETFORMAT    _IOWR('A', 52, int)
                     20: #else
                     21: #define AUDIO_IRIG_OPEN         _IO(A, 50)
                     22: #define AUDIO_IRIG_CLOSE        _IO(A, 51)
                     23: #define AUDIO_IRIG_SETFORMAT    _IOWR(A, 52, int)
                     24: #endif
                     25: 
                     26: /*
                     27:  * irig error codes
                     28:  */
                     29: #define AUDIO_IRIG_BADSIGNAL   0x01
                     30: #define AUDIO_IRIG_BADDATA     0x02
                     31: #define AUDIO_IRIG_BADSYNC     0x04
                     32: #define AUDIO_IRIG_BADCLOCK    0x08
                     33: #define AUDIO_IRIG_OLDDATA     0x10
                     34: 
                     35: /********************************************************************/
                     36: 
                     37: /*
                     38:  * auib definitions
                     39:  */
                     40: #define AUIB_SIZE      (0x0040)
                     41: #define AUIB_INC       (0x0008)
                     42: #define AUIB_MOD(k)    ((k) & 0x0038)
                     43: #define AUIB_INIT(ib)  ((ib)->ib_head = (ib)->ib_tail = (ib)->ib_lock = \
                     44:                         (ib)->phase = (ib)->shi = (ib)->slo = (ib)->high = \
                     45:                         (ib)->level0 = (ib)->level1 = \
                     46:                         (ib)->shift[0] = (ib)->shift[1] = (ib)->shift[2] = \
                     47:                         (ib)->shift[3] = (ib)->sdata[0] = (ib)->sdata[1] = \
                     48:                         (ib)->sdata[2] = (ib)->sdata[3] = (ib)->err = 0)
                     49: #define AUIB_EMPTY(ib) ((ib)->ib_head == (ib)->ib_tail)
                     50: #define AUIB_LEN(ib)   (AUIB_MOD((ib)->ib_tail - (ib)->ib_head))
                     51: #define AUIB_LEFT(ib)  (AUIB_MOD((ib)->ib_head - (ib)->ib_tail - 1))
                     52: #define IRIGDELAY 3
                     53: #define IRIGLEVEL 1355
                     54: 
                     55: #ifndef LOCORE
                     56: /*
                     57:  * irig_time holds IRIG data for one second
                     58:  */
                     59: struct irig_time {
                     60:         struct timeval  stamp;          /* timestamp */
                     61:         u_char  bits[13];               /* 100 irig data bits */
                     62:        u_char  status;                 /* status byte */
                     63:         char    time[14];               /* time string */
                     64: };
                     65: 
                     66: /*
                     67:  * auib's are used for IRIG data communication between the trap
                     68:  * handler and the software interrupt.
                     69:  */
                     70: struct auib {
                     71:        /* driver variables */
                     72:        u_short active;                 /* 0=inactive, else=active */
                     73:        u_short format;                 /* time output format */
                     74:        struct  irig_time timestr;      /* time structure */
                     75:        char    buffer[14];             /* output formation buffer */
                     76: 
                     77:        /* hardware interrupt variables */
                     78:        struct  timeval tv1,tv2,tv3;    /* time stamps (median filter) */
                     79:        int     level0,level1;          /* lo/hi input levels */
                     80:        int     level;                  /* decision level */
                     81:        int     high;                   /* recent largest sample */
                     82:        int     sl0,sl1;                /* recent sample levels */
                     83:        int     lasts;                  /* last sample value */
                     84:        u_short scount;                 /* sample count */
                     85:        u_long  eacc;                   /* 10-bit element accumulator */
                     86:        u_long  ebit;                   /* current bit in element */
                     87:        u_char  r_level,mmr1;           /* recording level 0-255 */
                     88:        int     shi,slo,phase;          /* AGC variables */
                     89:        u_long  err;                    /* error status bits */
                     90:        int     ecount;                 /* count of elements this second */
                     91:        long    shift[4];               /* shift register of pos ident */
                     92:        long    sdata[4];               /* shift register of symbols */
                     93: 
                     94:        int     ib_head;                /* queue head */
                     95:        int     ib_tail;                /* queue tail */
                     96:        u_short ib_lock;                /* queue head lock */
                     97:        u_long  ib_data[AUIB_SIZE];     /* data buffer */
                     98: };
                     99: #endif
                    100: 
                    101: #endif /* _BSD_AUDIOIRIG_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>