#include <stdlib.h>
 
#include <stdio.h>
 
#include "pcivme_ni.h"
 
#include "wienvme_dll.h"
 
//----------- DEFINES -----------------------------------------------------
 
#define DEVICENAME_LINUX "/dev/vmemm_1"     // a device name 'template' for WINNT
 
 
 
usb_dev_handle *udev;
 
 
 
 
 
 
 
 
 
int VME_start (char* serial)
 
{
 
 
 
 char serial_default[100];
 
 if (serial != NULL)
 
        udev = xxusb_serial_open(serial);
 
 else 
 
         udev =  xxusb_serial_open(serial_default);
 
   printf(" VME_start %s--->udev!=NULL ==>%d\n", serial
, udev
!=NULL
);  
   if (!udev) {
 
      printf(" Check usb udev permissions and restart!  Exiting .....\n", serial
, udev
!=NULL
);  
   }
 
  return 0;
 
}
 
 
 
 
 
 
 
int VME_stop ()
 
{ 
 
  if (udev) xxusb_device_close(udev);
 
  
 
  
 
  return 0;
 
}
 
 
 
short Address_Modifier= Std_NoPriv_Data;
 
 
 
int VME_read16 (Uint32_t at, void* buff)
 
{
 
  int result;
 
 
 
/* D16 read */
 
 
 
  result = VME_read_16(udev, Address_Modifier, at , (Uint32_t *) buff);
 
  if (result <0) {
 
    printf("D16 read at 0x%X failed!  err=%d\n", at
,result
);  
  }
 
//  printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
 
  return (result);
 
}
 
 
 
int VME_read32 (Uint32_t at, void* buff)
 
{
 
  int result;
 
 
 
/* D32 read */
 
 
 
  result = VME_read_32(udev, Address_Modifier, at , (Uint32_t *) buff);
 
  if (result < 0) {
 
    printf("D32 read at 0x%X failed err=%d!\n", at
,result
);  
  }
 
  //printf("0x%X, 0x%X, 0x%X, 0x%X\n", hHandle, at, n, * (unsigned short *) buff);
 
  return (result);
 
}
 
 
 
int VME_write16 (Uint32_t at, void* buff)
 
{
 
  int result;
 
  Uint32_t data= *((short *)buff); 
 
 
 
/* D16 write */
 
 
 
        result = VME_write_16(udev, Address_Modifier, at, data );
 
  if (result<0) {
 
    printf("D16 write at 0x%X failed! err=%d\n", at
,result
);  
  }
 
  return (result);
 
}
 
 
 
int VME_write32 ( Uint32_t at, void* buff)
 
{
 
  int result;
 
  Uint32_t data= *((Uint32_t *)buff); 
 
 
 
/* D32 write */
 
 
 
        result = VME_write_32(udev, Address_Modifier, at, data );
 
 
 
  if (result<0) {
 
    printf("D32 write at 0x%X failed!  err=%d\n", at
,result
);  
  }
 
  //printf("D32 write at 0x%lX buff=0x%X\n", at,((int*) buff)[0]);
 
  return (result);
 
}