Subversion Repositories f9daq

Rev

Rev 78 | Rev 124 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 78 Rev 100
Line 1... Line 1...
1
#include <ansi_c.h>
1
#include <stdlib.h>
2
#include "wienvme_dll.h"
2
#include <stdio.h>
-
 
3
 
-
 
4
#ifdef _CVI_
3
#include <utility.h>
5
#include <utility.h>
-
 
6
#endif
4
 
7
 
-
 
8
#ifdef LINUX
-
 
9
#include <dlfcn.h>
-
 
10
#define LoadLibrary(x) dlopen( (x), RTLD_NOW );
-
 
11
#define GetProcAddress(x,y) dlsym((x),(y))
-
 
12
static int  GetCurrentPlatform(void ){return 0;};
-
 
13
#define __stdcall
-
 
14
#define UCHAR unsigned char
-
 
15
#define HINSTANCE void *
-
 
16
#define  _VI_FUNC
-
 
17
#include <stdlib.h>
-
 
18
#include <stdio.h>
-
 
19
#include <stdint.h>
-
 
20
#include <string.h>
-
 
21
#endif
-
 
22
 
-
 
23
#include "wienvme_dll.h"
5
//----------- DEFINES -----------------------------------------------------
24
//----------- DEFINES -----------------------------------------------------
-
 
25
#define DEVICENAME_LINUX "/dev/pcivme_0"     // a device name 'template' for WINNT
6
#define DEVICENAME_NT "\\\\.\\PCIVME:\\VMEMMxx"     // a device name 'template' for WINNT
26
#define DEVICENAME_NT "\\\\.\\PCIVME:\\VMEMMxx"     // a device name 'template' for WINNT
7
#define DEVICENAME_9X "\\\\.\\C:\\windows\\system\\VWIENVMED.vxd" // the same for WIN95/98
27
#define DEVICENAME_9X "\\\\.\\C:\\windows\\system\\VWIENVMED.vxd" // the same for WIN95/98
8
#define MODULE_NUMBER     1 // number of connected CC32 module
28
#define MODULE_NUMBER     1 // number of connected CC32 module
9
 
29
 
10
#define VMEinit (*vme_init)
30
#define VMEinit (*vme_init)
Line 19... Line 39...
19
static int VMEclose (int);
39
static int VMEclose (int);
20
 
40
 
21
int hHandle24, hHandle32;
41
int hHandle24, hHandle32;
22
int VMEmodule;
42
int VMEmodule;
23
 
43
 
-
 
44
static HINSTANCE DLLHandle;
24
void WIENVME_load (char* module_path)
45
void WIENVME_load (char* module_path)
25
{
46
{
-
 
47
 /*
26
  int stat;
48
  int stat;
27
 
49
 
28
  if (module_path == NULL)
50
  if (module_path == NULL)
29
    VMEmodule = LoadExternalModule
51
    VMEmodule = LoadExternalModule
30
      ("c:\\home\\CVI\\instr\\WIENVME_DLL\\pcivme_ni.lib");
52
      ("c:\\home\\CVI\\instr\\WIENVME_DLL\\pcivme_ni.lib");
31
   else
53
   else
32
    VMEmodule = LoadExternalModule (module_path);
54
    VMEmodule = LoadExternalModule (module_path);
33
   
55
 
34
  vme_init = GetExternalModuleAddr (VMEmodule, "VMEinit", &stat);
56
  vme_init = GetExternalModuleAddr (VMEmodule, "VMEinit", &stat);
35
  vme_read = GetExternalModuleAddr (VMEmodule, "VMEread", &stat);
57
  vme_read = GetExternalModuleAddr (VMEmodule, "VMEread", &stat);
36
  vme_write = GetExternalModuleAddr (VMEmodule, "VMEwrite", &stat);
58
  vme_write = GetExternalModuleAddr (VMEmodule, "VMEwrite", &stat);
37
  vme_reset = GetExternalModuleAddr (VMEmodule, "VMEreset", &stat);
59
  vme_reset = GetExternalModuleAddr (VMEmodule, "VMEreset", &stat);
38
  vme_close = GetExternalModuleAddr (VMEmodule, "VMEclose", &stat);
60
  vme_close = GetExternalModuleAddr (VMEmodule, "VMEclose", &stat);
-
 
61
*/
-
 
62
  if (module_path == NULL) {
-
 
63
    DLLHandle = LoadLibrary("c:\\home\\CVI\\instr\\WIENVME_DLL\\pcivme_ni.lib");
-
 
64
  } else {
-
 
65
    DLLHandle = LoadLibrary(module_path);
-
 
66
  }
-
 
67
  if (!DLLHandle) {
-
 
68
       printf ("\n\nFailed to Open libxxusb.dll \n");  
-
 
69
       return;
-
 
70
  }
-
 
71
 
-
 
72
  vme_init = (void *) GetProcAddress (DLLHandle , "VMEinit");
-
 
73
  vme_read = (void *) GetProcAddress (DLLHandle , "VMEread");
-
 
74
  vme_write =(void *) GetProcAddress (DLLHandle , "VMEwrite");
-
 
75
  vme_reset =(void *) GetProcAddress (DLLHandle , "VMEreset");
-
 
76
  vme_close =(void *) GetProcAddress (DLLHandle , "VMEclose");
39
 
77
 
40
  return;
78
  return;
41
}
79
}
42
 
80
 
43
int WIENVME_open (int* hHandle, unsigned char AddMod, char* device_name,
81
int WIENVME_open (int* hHandle, unsigned char AddMod, char* device_name,
Line 47... Line 85...
47
 
85
 
48
/* open a path to a device. */
86
/* open a path to a device. */
49
  if (device_name == NULL)
87
  if (device_name == NULL)
50
    switch (GetCurrentPlatform ())
88
    switch (GetCurrentPlatform ())
51
        {
89
        {
-
 
90
        case 0:
-
 
91
        device_name = DEVICENAME_LINUX;
52
        case 2:
92
        case 2:
53
        device_name = DEVICENAME_9X;
93
        device_name = DEVICENAME_9X;
54
                break;
94
                break;
55
        case 3:
95
        case 3:
56
        device_name = DEVICENAME_NT;
96
        device_name = DEVICENAME_NT;
Line 85... Line 125...
85
  return 0;
125
  return 0;
86
}
126
}
87
 
127
 
88
void WIENVME_unload ()
128
void WIENVME_unload ()
89
{
129
{
90
  UnloadExternalModule (VMEmodule);
130
  //UnloadExternalModule (VMEmodule);
91
  return;
131
  return;
92
}
132
}
93
 
133
 
94
int WIENVME_close (int hHandle)
134
int WIENVME_close (int hHandle)
95
{
135
{
Line 141... Line 181...
141
  int result;
181
  int result;
142
 
182
 
143
/* D8 read */
183
/* D8 read */
144
  result = VMEread(hHandle, at, 1, n, buff);
184
  result = VMEread(hHandle, at, 1, n, buff);
145
  if (result) {
185
  if (result) {
146
    printf("D8 read at 0x%X failed!\n", at);
186
    printf("D8 read at 0x%lX failed!\n", at);
147
  }
187
  }
148
//  printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
188
//  printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
149
  return (result);
189
  return (result);
150
}
190
}
151
 
191
 
Line 154... Line 194...
154
  int result;
194
  int result;
155
 
195
 
156
/* D16 read */
196
/* D16 read */
157
  result = VMEread(hHandle, at, 2, n, buff);
197
  result = VMEread(hHandle, at, 2, n, buff);
158
  if (result) {
198
  if (result) {
159
    printf("D16 read at 0x%X failed!\n", at);
199
    printf("D16 read at 0x%lX failed!\n", at);
160
  }
200
  }
161
//  printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
201
//  printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
162
  return (result);
202
  return (result);
163
}
203
}
164
 
204
 
Line 167... Line 207...
167
  int result;
207
  int result;
168
 
208
 
169
/* D32 read */
209
/* D32 read */
170
  result = VMEread(hHandle, at, 4, n, buff);
210
  result = VMEread(hHandle, at, 4, n, buff);
171
  if (result) {
211
  if (result) {
172
    printf("D32 read at 0x%X failed!\n", at);
212
    printf("D32 read at 0x%lX failed!\n", at);
173
  }
213
  }
174
  //printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
214
  //printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
175
  return (result);
215
  return (result);
176
}
216
}
177
 
217
 
Line 180... Line 220...
180
  int result;
220
  int result;
181
 
221
 
182
/* D8 write */
222
/* D8 write */
183
  result = VMEwrite(hHandle, at, 1, n, buff);
223
  result = VMEwrite(hHandle, at, 1, n, buff);
184
  if (result) {
224
  if (result) {
185
    printf("D8 write at 0x%X failed!\n", at);
225
    printf("D8 write at 0x%lX failed!\n", at);
186
  }
226
  }
187
  return (result);
227
  return (result);
188
}
228
}
189
 
229
 
190
int WIENVME_write16 (int hHandle, unsigned long n, unsigned long at, void* buff)
230
int WIENVME_write16 (int hHandle, unsigned long n, unsigned long at, void* buff)
Line 192... Line 232...
192
  int result;
232
  int result;
193
 
233
 
194
/* D16 write */
234
/* D16 write */
195
  result = VMEwrite(hHandle, at, 2, n, buff);
235
  result = VMEwrite(hHandle, at, 2, n, buff);
196
  if (result) {
236
  if (result) {
197
    printf("D16 write at 0x%X failed!\n", at);
237
    printf("D16 write at 0x%lX failed!\n", at);
198
  }
238
  }
199
  return (result);
239
  return (result);
200
}
240
}
201
 
241
 
202
int WIENVME_write32 (int hHandle, unsigned long n, unsigned long at, void* buff)
242
int WIENVME_write32 (int hHandle, unsigned long n, unsigned long at, void* buff)
Line 204... Line 244...
204
  int result;
244
  int result;
205
 
245
 
206
/* D32 write */
246
/* D32 write */
207
  result = VMEwrite(hHandle, at, 4, n, buff);
247
  result = VMEwrite(hHandle, at, 4, n, buff);
208
  if (result) {
248
  if (result) {
209
    printf("D32 write at 0x%X failed!\n", at);
249
    printf("D32 write at 0x%lX failed!\n", at);
210
  }
250
  }
211
  //printf("D32 write at 0x%X buff=0x%X\n", at,((int*) buff)[0]);
251
  //printf("D32 write at 0x%X buff=0x%X\n", at,((int*) buff)[0]);
212
  return (result);
252
  return (result);
213
}
253
}
214
 
254