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>