Subversion Repositories f9daq

Rev

Rev 21 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21 f9daq 1
#ifndef __VPCIC32D_H__
2
#define __VPCIC32D_H__
3
//-------------------------------------------------------------------------
4
// WIN95 driver for PCICC32 CAMAC interface from ARW Elektronik, Germany --
5
//
6
// vpcic32d.h - the general header file to share information between driver
7
// and application
8
//
9
// (c) 2000,2001 ARW Elektronik
10
//
11
// this source code is published under GPL (Open Source). You can use, redistrubute and 
12
// modify it unless this header   is not modified or deleted. No warranty is given that 
13
// this software will work like expected.
14
// This product is not authorized for use as critical component in life support systems
15
// without the express written approval of ARW Elektronik Germany.
16
//
17
// Please announce changes and hints to ARW Elektronik
18
//
19
// what                                            who          when
20
// first steps                                     AR           07.03.2000
21
// added AUTOREAD                                  AR           17.03.2001
22
// added VPCIC32_ACCESS_LCR                        AR           30.03.2001
23
//
24
 
25
// the action codes for ioctl calls
26
#define VPCIC32_ATTACH_CC32        0x00220000  // METHOD_BUFFERED + FILE_ANY_ACCESS +
27
#define VPCIC32_DETACH_CC32        0x00220004  // FILE_DEVICE_UNKNOWN
28
#define VPCIC32_GET_STATUS         0x00220008
29
#define VPCIC32_CLEAR_STATUS       0x0022000C
30
#define VPCIC32_SET_ACCESS_PARA    0x00220010
31
#define VPCIC32_CONTROL_INTERRUPTS 0x00220014
32
#define VPCIC32_INSTALL_IRQ_HANDLER 0x00220018
33
#define VPCIC32_ACCESS_LCR             0x00220020  // access tp PLX LCR space
34
 
35
// switches for VPCIC32_ACCESS_COMMAND.wAccessType
36
#define WORD_ACCESS (UCHAR)2   //            word
37
#define LONG_ACCESS (UCHAR)4   //            long
38
 
39
// VPCIC32_ACCESS_LCR access constants
40
#define LCR_READ       0       // read only access
41
#define LCR_WRITE      1       // write and read back access
42
#define LCR_OR         2       // read, bitwise 'or' content and read back access
43
#define LCR_AND        3       // read, bitwise 'and' content and read back access
44
#define LCR_WRITE_ONLY 4       // do not read back after write
45
 
46
// define bits for VPCIC32D_ACCESS_COMMAND.wBlockTransfer 
47
#define UNTIL_NOT_Q         0x0001      // read/write unttil 'not Q' switch
48
#define AUTOREAD            0x0002      // PCIADA data pipelining access tuner switch
49
 
50
// mask bits for interrupt status provided by the user interrupt handler
51
#define LAM_IRQ             0x00FFFFFF  // LAM was responsible for interrupt
52
#define CONNECTION_TIMEOUT  0x08000000  // irq raised through a connection timeout
53
#define LAM_BUS_OR          0x10000000  // a LAM-BUS-OR is pending
54
#define LAM_NOT_OR          0x20000000  // a LAM-NOT-OR is pending
55
#define LAM_AND_OR          0x40000000  // a LAM-AND-OR is pending
56
#define LAM_FF              0x80000000  // the LAM-Flip-Flop was set
57
 
58
// this structure is input in all ioctl calls except VPCIC32_SET_ACCESS_PARA
59
typedef struct
60
{
61
        DWORD dwInterface;          // CC32 module number
62
} VPCIC32D_DEVICE;
63
 
64
// this structure is output from VPCIC32_ATTACH_CC32 call
65
typedef struct
66
{
67
        DWORD dwInterface;          // CC32 module number
68
        void  *pvWindowBase;        // the base address into the 32 kbyte Window of CC32
69
} VPCIC32D_WINDOW;
70
 
71
// this structure is output from VPCIC32_GET_STATUS call
72
typedef struct
73
{
74
        DWORD dwInterface;          // CC32 module number
75
        WORD  bTimeout;             // denotes PCIADA timeout
76
        WORD  bInterrupt;           // denotes a pending LAM interrupt
77
} VPCIC32D_STATUS;    
78
 
79
// this structure is input to the VPCIC32_SET_ACCESS_PARA call
80
typedef struct
81
{
82
        DWORD dwInterface;         // CC32 module number
83
        WORD  wAccessType;                 // set the current access type , for compatibilty to NT, not used @ WIN95/98
84
        WORD  wBlockTransfer;      // set to AUTOREAD or 0
85
} VPCIC32D_ACCESS_COMMAND;
86
 
87
// this structure is used to control the interrupts
88
typedef struct
89
{
90
        DWORD  dwInterface;        // CC32 module number
91
        WORD   wEnable;            // a 1 allows, a 0 inhibits interrupt requests
92
} VPCIC32D_IRQ_CONTROL;
93
 
94
// this structure is used to (de)install a irqhandler to a interface
95
typedef struct
96
{
97
        DWORD  dwInterface;        // CC32 module number
98
        DWORD  dwIrqHandler;       // void (*IrqHandler)(DWORD)
99
} VPCIC32D_IRQ_HANLDER;
100
 
101
// structure to access the local configuration space of PLX chip (test / debug only) with VPCIC32_ACCESS_LCR
102
typedef struct
103
{
104
  DWORD  dwInterface;         // CC32 module number
105
  DWORD  dwContent;           // content to write, and, or
106
  WORD   wRegisterAddress;    // address offset of LCR register
107
  UCHAR  bAccessMode;         // LCR_READ, write, or, and
108
  UCHAR  bBytesLane;          // the data access width
109
} VPCIC32D_LCR_ACCESS;
110
 
111
#endif // __VPCIC32D_H__