|
|
1.1 root 1: /*######################################################################
2: Type Declaration Section
3: ########################################################################*/
4:
5: /* VIP I/O Bus Register offsets */
6: #define VIP_AIR 0x0
7: #define VIP_CSR 0x1
8: #define VIP_DFIN 0x2
9: #define VIP_DFOUT 0x4
10:
11: /* VIP Internal registers */
12: #define VIP_SCR 0
13: #define VIP_SSR 1
14: #define VIP_ICR 2
15: #define VIP_ISR 3
16: #define VIP_PSR 4
17: #define VIP_VRR 5
18: #define VIP_PCR 6
19: #define VIP_PPMR 7
20: #define VIP_PRAR 8
21: #define VIP_PWAR 9
22: #define VIP_PCRR 10
23:
24: // T.S.R. related type defs.
25: #define SENSE_VECTOR 0x33
26:
27: #define RESET_DEVICE 0x00
28: #define GET_DATA_SIZES 0x01
29: #define SET_DATA_SIZE 0x02
30: #define GET_CONFIGURATION 0x03
31: #define SET_CONFIGURATION 0x04
32: #define REPORT 0x05
33: #define CONTINUE 0x06
34: #define RESET_ZERO 0x07
35: #define SET_ZERO 0x08
36: #define TEST_DEVICES 0x09
37: #define GET_DEVICE_DATA 0x70;
38: #define SET_DEVICE_DATA 0x71;
39: #define SENSE_DRIVER_STATUS 0x7F
40: #define SET_VIDEO_PAGE 0x80
41:
42: #define MIN_SENSE_FUNCTION 0x60
43: #define MAX_SENSE_FUNCTION 0x70
44:
45: #define DCHMS 2
46: #define DCHTD 3
47: #define DCHPD 4
48: #define DCALL 0xFF
49:
50: #define PRDM "Forte Technologies, Inc.\0"
51: #define PRDN "VFX1 CyberPuck\0"
52:
53: //Address index values for registers.
54: enum air_enum { SCR, SSR, ICR, ISR, PSR, VRR, PCR, PPRR, PRAR, PWAR, PCRA,
55: NOREG };
56: typedef enum air_enum AIRVAL;
57:
58: //Software Command Register codes.
59: #define CPND 128 //Determines command pending bit mask.
60: #define CCHK 64 //Determines command check bit mask.
61: enum cmdcode_enum { NOP, CSTRT, CCONT, RSTRT, RTERM, GSTAT, RSTAT, NOCMD };
62: typedef enum cmdcode_enum CMDCODE;
63:
64: //Software Status Register codes.
65: enum statcode_enum { SDOK, SDCNC, SDCFL, SDDNR, SDDNE, SDDFL, SDNOR, SDCNV,
66: SDSERR };
67: typedef enum statcode_enum STATCODE;
68:
69: //Data fifo selection values (IN = data into the VIP, OUT = data out from VIP)
70: enum fifodir_enum {IN, OUT, NODIR};
71: typedef enum fifodir_enum FIFODIR;
72:
73: //Packet type values.
74: enum packtyp_enum {NULLP, SYSI, VNDI, SYSC, HMS, SVM, HTD, HPD};
75: typedef enum packtyp_enum PACKTYP;
76:
77: //Null packet type.
78: struct cfpack0_struct
79: {
80: unsigned char psiz;
81: unsigned char ptyp;
82: };
83: typedef struct cfpack0_struct NULL_CPKT;
84:
85: //System info configuration packet type.
86: struct cfpack1_struct
87: {
88: unsigned char psiz;
89: unsigned char ptyp;
90: unsigned char dcls;
91: unsigned char dnum;
92: unsigned char sstat;
93: unsigned char vmin;
94: unsigned char vmaj;
95: char vipid[4];
96: unsigned short dfsz;
97: unsigned short dummy;
98: };
99: typedef struct cfpack1_struct SYSTEM_CPKT;
100:
101: // Vendor sizes
102: #define MN_SIZE 32
103: #define SNRL_SIZE 16
104: //Vendor info configuration packet type.
105: struct cfpack2_struct
106: {
107: unsigned char psiz;
108: unsigned char ptyp;
109: unsigned char prdm[ MN_SIZE ];
110: unsigned char prdn[ MN_SIZE ];
111: unsigned char prdsn[ SNRL_SIZE ];
112: unsigned char prdrl[ SNRL_SIZE ];
113: };
114: typedef struct cfpack2_struct VENDOR_CPKT;
115:
116: //Head Mounted System Capabilities structure.
117: struct hmsc_struct
118: {
119: unsigned char aoc : 1; //Audio out capable if set.
120: unsigned char aic : 1; //Audio in capable if set.
121: unsigned char sac : 1; //Stereo audio capable if set.
122: unsigned char cic : 1; //Color image capable if set.
123: unsigned char sic : 1; //Stereo image capable if set.
124: unsigned char hti : 1; //Head Tracker installed.
125: unsigned char dum : 2; //Not used.
126: };
127: typedef struct hmsc_struct HMSC;
128:
129: //Head Mounted System flags structure.
130: struct hmsf_struct
131: {
132: unsigned char dps : 1; //Disable palette snooping.
133: unsigned char aic : 1; //Delayed flip.
134: unsigned char dum : 5; //Not used
135: unsigned char ddsbl: 1; //Disable device.
136: };
137: typedef struct hmsf_struct HMSF;
138:
139: //Head Mounted System configuration packet type.
140: #define VMODSIZE 10
141: struct cfpack3_struct
142: {
143: unsigned char psiz; //Number of bytes in packet.
144: unsigned char ptyp; //Packet type.
145: unsigned char dcls; // Device class
146: unsigned char dnum; // Device number
147: HMSF hmsf; //Head mounted system flags.
148: unsigned char hmss; //Head mounted system status.
149: unsigned char vmin; //Minor version for device.
150: unsigned char vmaj; //Major version for device.
151: HMSC hmsc; //Head mounted system capabilities.
152: unsigned char dtyp; //Display type.
153: unsigned short vmag; //Visual magnification in units of 0.001.
154: unsigned short hfov; //Horizontal full FOV in units of 0.25 deg.
155: unsigned short vfov; //Vertical full FOV in units of 0.25 deg.
156: unsigned char ipd; //Interpupillary distance in units of 0.5 mm.
157: signed char hoao; //Horizontal optical axis offset in units of .1 mm.
158: signed char voao; //Vertical optical axis offset in units of .1 mm.
159: signed char oar; //Optical axis rotation in units of 0.25 deg.
160: unsigned char mrr; //Max refresh rate in Hz.
161: unsigned char cvm; //Current video mode.
162: unsigned char reserved;
163: unsigned char vmsp; //Number of Vesa modes supported.
164: unsigned short vmod[VMODSIZE]; //Supported VESA modes. Field currently
165: //allows up to 10 supported modes. Packet in fifo
166: //may have any number of supported modes present.
167: };
168: typedef struct cfpack3_struct HMS_CPKT;
169:
170: //Rotational Coordinate Flags structure.
171: struct rtcf_struct
172: {
173: unsigned char rtc : 1; //Return to center device (1=yes).
174: unsigned char wrp : 1; //Coordiante values wrap (1=yes).
175: unsigned char zpsr : 1; //Zero position resetable (1=yes).
176: unsigned char rdg : 1; //Rotational data generated (1=yes).
177: unsigned char dum : 3; //Not used.
178: unsigned char den : 1; //Data reporting enabled (1=yes).
179: };
180: typedef struct rtcf_struct RTCF;
181:
182: //Rotation Coordinate Descriptor structure.
183: struct rtcd_struct
184: {
185: signed short maxv;
186: signed short minv;
187: unsigned short steps;
188: RTCF rcf;
189: unsigned char dum;
190: };
191: typedef struct rtcd_struct RTCD;
192:
193: //Head tracker flags structure.
194: struct htf_struct
195: {
196: unsigned char dum : 7; //Not used.
197: unsigned char ddsbl: 1; //Data reporting enabled (1=yes).
198: };
199: typedef struct htf_struct HTF;
200:
201: //Head Tracker Device configuration packet.
202: struct cfpack4_struct
203: {
204: unsigned char psiz;
205: unsigned char ptyp;
206: unsigned char dcls;
207: unsigned char dnum;
208: HTF htf; //Head tracker flag (disable device if set).
209: unsigned char hts; //Head tracker status.
210: unsigned char vmin; //Minor version for tracker.
211: unsigned char vmaj; //Major version for tracker.
212: RTCD ywcd;
213: RTCD ptcd;
214: RTCD rlcd;
215: };
216: typedef struct cfpack4_struct HTD_CPKT;
217:
218: //Button Descriptor structure.
219: struct btds_struct
220: {
221: unsigned char nbtn; //Number of buttons/switches on device.
222: unsigned char cnck : 1; //Counts clicks (1=yes).
223: unsigned char dum : 6; //Not used.
224: unsigned char den : 1; //Data reporting enabled (1=yes).
225: };
226: typedef struct btds_struct BTDS;
227:
228: //Hand held device Flags structure.
229: struct hhpf_struct
230: {
231: unsigned char hhpp : 2; //Hand held pointer prority (0=highest).
232: unsigned char dum : 4; //Not used.
233: unsigned char ddsbl: 1; //Data reporting enabled (1=yes).
234: };
235: typedef struct hhpf_struct HHPF;
236:
237: //Hand-held Pointing Device configuration packet.
238: struct cfpack5_struct
239: {
240: unsigned char psiz;
241: unsigned char ptyp;
242: unsigned char dcls;
243: unsigned char dnum;
244: HHPF hhpf; //Hand held flag (disable device if set).
245: unsigned char hhps; //Head tracker status.
246: unsigned char vmin; //Minor version for tracker.
247: unsigned char vmaj; //Major version for tracker.
248: RTCD ywcd;
249: RTCD ptcd;
250: RTCD rlcd;
251: BTDS btcd;
252: };
253: typedef struct cfpack5_struct HPD_CPKT;
254:
255: struct cfpack6_struct
256: {
257: unsigned char psiz; //Number of bytes in packet.
258: unsigned char ptyp; //Packet type.
259: unsigned char dcls; // Device class
260: unsigned char dnum; // Device number
261: HMSF hmsf; //Head mounted system flags.
262: unsigned char vmod; //Head mounted video mode.
263: };
264: typedef struct cfpack6_struct SVM_CPKT;
265:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.