Return to bsd_audioirig.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / kernel / sys |
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_ */