Annotation of src/vfx1.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.