9,9 → 9,7 |
#include <dlfcn.h> |
#define LoadLibrary(x) dlopen( (x), RTLD_NOW ); |
#define GetProcAddress(x,y) dlsym((x),(y)) |
static int GetCurrentPlatform(void ) { |
return 0; |
}; |
static int GetCurrentPlatform(void ){return 0;}; |
#define __stdcall |
#define UCHAR unsigned char |
#define HINSTANCE void * |
24,7 → 22,7 |
|
#include "wienvme_dll.h" |
//----------- DEFINES ----------------------------------------------------- |
#define DEVICENAME_LINUX "/dev/pcivme_0" // a device name 'template' for LINUX |
#define DEVICENAME_LINUX "/dev/pcivme_0" // a device name 'template' for WINNT |
#define DEVICENAME_NT "\\\\.\\PCIVME:\\VMEMMxx" // a device name 'template' for WINNT |
#define DEVICENAME_9X "\\\\.\\C:\\windows\\system\\VWIENVMED.vxd" // the same for WIN95/98 |
#define MODULE_NUMBER 1 // number of connected CC32 module |
44,7 → 42,8 |
int VMEmodule; |
|
static HINSTANCE DLLHandle; |
void WIENVME_load (char* module_path) { |
void WIENVME_load (char* module_path) |
{ |
/* |
int stat; |
|
80,15 → 79,16 |
} |
|
int WIENVME_open (int* hHandle, unsigned char AddMod, char* device_name, |
unsigned short module_number) { |
unsigned short module_number) |
{ |
int result; |
|
/* open a path to a device. */ |
if (device_name == NULL) |
switch (GetCurrentPlatform ()) { |
switch (GetCurrentPlatform ()) |
{ |
case 0: |
device_name = DEVICENAME_LINUX; |
break; |
case 2: |
device_name = DEVICENAME_9X; |
break; |
96,6 → 96,7 |
device_name = DEVICENAME_NT; |
break; |
default: |
|
break; |
} |
result = VMEinit(device_name, module_number, AddMod, hHandle); |
105,15 → 106,18 |
return(result); |
} |
|
int WIENVME_open24 (void) { |
int WIENVME_open24 (void) |
{ |
return (WIENVME_open (&hHandle24, Std_NoPriv_Data, NULL, 1)); |
} |
|
int WIENVME_open32 (void) { |
int WIENVME_open32 (void) |
{ |
return (WIENVME_open (&hHandle32, Ext_NoPriv_Data, NULL, 1)); |
} |
|
int WIENVME_start (char* module_path) { |
int WIENVME_start (char* module_path) |
{ |
WIENVME_load(module_path); |
WIENVME_open24(); |
WIENVME_open32(); |
121,12 → 125,14 |
return 0; |
} |
|
void WIENVME_unload () { |
void WIENVME_unload () |
{ |
//UnloadExternalModule (VMEmodule); |
return; |
} |
|
int WIENVME_close (int hHandle) { |
int WIENVME_close (int hHandle) |
{ |
int result; |
|
/* close the opened path */ |
139,15 → 145,18 |
return (result); |
} |
|
int WIENVME_close24 () { |
int WIENVME_close24 () |
{ |
return (WIENVME_close (hHandle24)); |
} |
|
int WIENVME_close32 () { |
int WIENVME_close32 () |
{ |
return (WIENVME_close (hHandle32)); |
} |
|
int WIENVME_stop () { |
int WIENVME_stop () |
{ |
WIENVME_close24(); |
WIENVME_close32(); |
WIENVME_unload(); |
155,7 → 164,8 |
return 0; |
} |
|
int WIENVME_reset () { |
int WIENVME_reset () |
{ |
int result; |
|
/* close the opened path */ |
166,7 → 176,8 |
return (result); |
} |
|
int WIENVME_read8 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_read8 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D8 read */ |
178,7 → 189,8 |
return (result); |
} |
|
int WIENVME_read16 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_read16 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D16 read */ |
190,7 → 202,8 |
return (result); |
} |
|
int WIENVME_read32 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_read32 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D32 read */ |
202,7 → 215,8 |
return (result); |
} |
|
int WIENVME_write8 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_write8 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D8 write */ |
213,7 → 227,8 |
return (result); |
} |
|
int WIENVME_write16 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_write16 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D16 write */ |
224,7 → 239,8 |
return (result); |
} |
|
int WIENVME_write32 (int hHandle, unsigned long n, unsigned long at, void* buff) { |
int WIENVME_write32 (int hHandle, unsigned long n, unsigned long at, void* buff) |
{ |
int result; |
|
/* D32 write */ |
247,27 → 263,17 |
short __stdcall WIENVME_VME_R( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t *Data) { |
int hHandle=0, nb=0; |
switch (AM) { |
case Ext_NoPriv_Data: |
hHandle = hHandle32; |
break; |
case Std_NoPriv_Data: |
hHandle = hHandle24; |
break; |
default : |
return 0; |
case Ext_NoPriv_Data: hHandle = hHandle32; break; |
case Std_NoPriv_Data: hHandle = hHandle24; break; |
default : return 0; |
} |
|
|
switch (DW) { |
case VME_D16: |
nb= WIENVME_read16 (hHandle, 1, (unsigned long) VME_Address, (void*) Data) ; |
break; |
case VME_D32: |
nb= WIENVME_read32 (hHandle, 1, (unsigned long) VME_Address, (void*) Data) ; |
break; |
case VME_D16: nb= WIENVME_read16 (hHandle, 1, (unsigned long) VME_Address, (void*) Data) ; break; |
case VME_D32: nb= WIENVME_read32 (hHandle, 1, (unsigned long) VME_Address, (void*) Data) ; break; |
|
default: |
return 0; |
default: return 0; |
} |
return nb; |
} |
275,27 → 281,17 |
short __stdcall WIENVME_VME_W( uint16_t AM, uint16_t DW, uint32_t VME_Address, uint32_t Data) { |
int hHandle=0, nb=0; |
switch (AM) { |
case Ext_NoPriv_Data: |
hHandle = hHandle32; |
break; |
case Std_NoPriv_Data: |
hHandle = hHandle24; |
break; |
default : |
return 0; |
case Ext_NoPriv_Data: hHandle = hHandle32; break; |
case Std_NoPriv_Data: hHandle = hHandle24; break; |
default : return 0; |
} |
|
|
switch (DW) { |
case VME_D16: |
nb= WIENVME_write16 (hHandle, 1, (unsigned long) VME_Address, (void*) &Data) ; |
break; |
case VME_D32: |
nb= WIENVME_write32 (hHandle, 1, (unsigned long) VME_Address, (void*) &Data) ; |
break; |
case VME_D16: nb= WIENVME_write16 (hHandle, 1, (unsigned long) VME_Address, (void*) &Data) ; break; |
case VME_D32: nb= WIENVME_write32 (hHandle, 1, (unsigned long) VME_Address, (void*) &Data) ; break; |
|
default: |
return 0; |
default: return 0; |
} |
return nb; |
} |