AlcapDAQ  1
mvmestd.h
Go to the documentation of this file.
1 /*********************************************************************
2 
3  Name: mvmestd.h
4  Created by: Stefan Ritt
5 
6  Cotents: Midas VME standard routines (MVMESTD) supplying an
7  abstract layer to all supported VME interfaces.
8 
9  $Id: mvmestd.h 4575 2009-10-02 07:07:23Z ritt $
10 
11 *********************************************************************/
12 
13 #ifndef MVMESTD_H
14 #define MVMESTD_H
15 
32 #ifndef DOXYGEN_SHOULD_SKIP_THIS
33 
34 /*---- replacements if not running under MIDAS ---------------------*/
35 
36 #ifndef MIDAS_TYPE_DEFINED
37 #define MIDAS_TYPE_DEFINED
38 
39 typedef unsigned short int WORD;
40 
41 #ifndef _MSC_VER
42 typedef unsigned int DWORD;
43 #endif
44 
45 #define SUCCESS 1
46 
47 #endif /* MIDAS_TYPE_DEFINED */
48 
49 /* make functions under WinNT dll exportable */
50 #if defined(_MSC_VER) && defined(MIDAS_DLL)
51 #define EXPRT __declspec(dllexport)
52 #else
53 #define EXPRT
54 #endif
55 
57 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
58 
59 /*---- status codes ------------------------------------------------*/
60 
61 #define MVME_SUCCESS 1
62 #define MVME_NO_INTERFACE 2
63 #define MVME_NO_CRATE 3
64 #define MVME_UNSUPPORTED 4
65 #define MVME_INVALID_PARAM 5
66 #define MVME_NO_MEM 6
67 #define MVME_ACCESS_ERROR 7
68 
69 /*---- types -------------------------------------------------------*/
70 
71 typedef unsigned int mvme_addr_t;
72 typedef unsigned int mvme_locaddr_t;
73 typedef unsigned int mvme_size_t;
74 
75 /*---- constants ---------------------------------------------------*/
76 
80 #define MVME_DMODE_D8 1
81 #define MVME_DMODE_D16 2
82 #define MVME_DMODE_D32 3
83 #define MVME_DMODE_D64 4
84 #define MVME_DMODE_RAMD16 5
85 #define MVME_DMODE_RAMD32 6
86 #define MVME_DMODE_LM 7
88 #define MVME_DMODE_DEFAULT MVME_DMODE_D32
89 
90 /* block transfer modes */
91 
92 #define MVME_BLT_NONE 1
93 #define MVME_BLT_BLT32 2
94 #define MVME_BLT_MBLT64 3
95 #define MVME_BLT_2EVME 4
96 #define MVME_BLT_2ESST 5
97 #define MVME_BLT_BLT32FIFO 6
98 #define MVME_BLT_MBLT64FIFO 7
99 #define MVME_BLT_2EVMEFIFO 8
101 /* vme bus address modifiers */
102 
103 #define MVME_AM_A32_SB (0x0F)
104 #define MVME_AM_A32_SP (0x0E)
105 #define MVME_AM_A32_SD (0x0D)
106 #define MVME_AM_A32_NB (0x0B)
107 #define MVME_AM_A32_NP (0x0A)
108 #define MVME_AM_A32_ND (0x09)
109 #define MVME_AM_A32_SMBLT (0x0C)
110 #define MVME_AM_A32_NMBLT (0x08)
112 #define MVME_AM_A32 MVME_AM_A32_SD
113 #define MVME_AM_A32_D64 MVME_AM_A32_SMBLT
114 
115 #define MVME_AM_A24_SB (0x3F)
116 #define MVME_AM_A24_SP (0x3E)
117 #define MVME_AM_A24_SD (0x3D)
118 #define MVME_AM_A24_NB (0x3B)
119 #define MVME_AM_A24_NP (0x3A)
120 #define MVME_AM_A24_ND (0x39)
121 #define MVME_AM_A24_SMBLT (0x3C)
122 #define MVME_AM_A24_NMBLT (0x38)
124 #define MVME_AM_A24 MVME_AM_A24_SD
125 #define MVME_AM_A24_D64 MVME_AM_A24_SMBLT
126 
127 #define MVME_AM_A16_SD (0x2D)
128 #define MVME_AM_A16_ND (0x29)
130 #define MVME_AM_A16 MVME_AM_A16_SD
131 
132 #define MVME_AM_DEFAULT MVME_AM_A32
133 
134 /*---- interface structure -----------------------------------------*/
135 typedef struct {
137  int handle;
138  int index;
139  void *info;
140  int am;
141  int dmode;
142  int blt_mode;
143  void *table;
145 
146 /*---- function declarations ---------------------------------------*/
147 
148 /* make functions callable from a C++ program */
149 #ifdef __cplusplus
150 extern "C" {
151 #endif
152 
158 /********************************************************************/
210 int EXPRT mvme_open(MVME_INTERFACE **vme, int idx);
211 
212 /********************************************************************/
220 
221 /********************************************************************/
230 
231 /********************************************************************/
242 int EXPRT mvme_read(MVME_INTERFACE *vme, void *dst, mvme_addr_t vme_addr, mvme_size_t n_bytes);
243 
244 /********************************************************************/
252 unsigned int EXPRT mvme_read_value(MVME_INTERFACE *vme, mvme_addr_t vme_addr);
253 
254 /********************************************************************/
265 int EXPRT mvme_write(MVME_INTERFACE *vme, mvme_addr_t vme_addr, void *src, mvme_size_t n_bytes);
266 
267 /********************************************************************/
276 int EXPRT mvme_write_value(MVME_INTERFACE *vme, mvme_addr_t vme_addr, unsigned int value);
277 
278 /********************************************************************/
285 int EXPRT mvme_set_am(MVME_INTERFACE *vme, int am);
286 
287 /********************************************************************/
294 int EXPRT mvme_get_am(MVME_INTERFACE *vme, int *am);
295 
296 /********************************************************************/
303 int EXPRT mvme_set_dmode(MVME_INTERFACE *vme, int dmode);
304 
305 /********************************************************************/
312 int EXPRT mvme_get_dmode(MVME_INTERFACE *vme, int *dmode);
313 
314 /********************************************************************/
321 int EXPRT mvme_set_blt(MVME_INTERFACE *vme, int mode);
322 
323 /********************************************************************/
330  int EXPRT mvme_get_blt(MVME_INTERFACE *vme, int *mode);
331  int EXPRT mvme_interrupt_generate(MVME_INTERFACE *mvme, int level, int vector, void *info);
332  int EXPRT mvme_interrupt_attach(MVME_INTERFACE *mvme, int level, int vector,
333  void (*isr)(int, void*, void *), void *info);
334  int EXPRT mvme_interrupt_detach(MVME_INTERFACE *mvme, int level, int vector, void *info);
335  int EXPRT mvme_interrupt_enable(MVME_INTERFACE *mvme, int level, int vector, void *info);
336  int EXPRT mvme_interrupt_disable(MVME_INTERFACE *mvme, int level, int vector, void *info);
337 
338 #ifdef __cplusplus
339 }
340 #endif
341  /* end of mvmestdfunctionh */ /* end of mvmestdinclude */
346 
347 #endif // MVMESTD_H