9,7 → 9,9 |
#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 * |
22,7 → 24,7 |
|
#include "wienvme_dll.h" |
//----------- DEFINES ----------------------------------------------------- |
#define DEVICENAME_LINUX "/dev/pcivme_0" // a device name 'template' for WINNT |
#define DEVICENAME_LINUX "/dev/pcivme_0" // a device name 'template' for LINUX |
#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 |
42,8 → 44,7 |
int VMEmodule; |
|
static HINSTANCE DLLHandle; |
void WIENVME_load (char* module_path) |
{ |
void WIENVME_load (char* module_path) { |
/* |
int stat; |
|
79,16 → 80,15 |
} |
|
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,7 → 96,6 |
device_name = DEVICENAME_NT; |
break; |
default: |
|
break; |
} |
result = VMEinit(device_name, module_number, AddMod, hHandle); |
106,18 → 105,15 |
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(); |
125,14 → 121,12 |
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 */ |
145,18 → 139,15 |
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(); |
164,8 → 155,7 |
return 0; |
} |
|
int WIENVME_reset () |
{ |
int WIENVME_reset () { |
int result; |
|
/* close the opened path */ |
176,8 → 166,7 |
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 */ |
189,8 → 178,7 |
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 */ |
202,8 → 190,7 |
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 */ |
215,8 → 202,7 |
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 */ |
227,8 → 213,7 |
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 */ |
239,8 → 224,7 |
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 */ |
263,17 → 247,27 |
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; |
} |
281,17 → 275,27 |
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; |
} |