/********************************************************************\
Name: musbstd.h
Created by: Konstantin Olchanski, Stefan Ritt
Contents: Midas USB access
$Id$
\********************************************************************/
#ifndef MUSBSTD_H
#define MUSBSTD_H
#if defined(HAVE_LIBUSB)
#include "usb.h"
typedef struct {
usb_dev_handle *dev;
int usb_configuration;
int usb_interface;
int usb_type;
} MUSB_INTERFACE;
#elif defined(HAVE_LIBUSB10)
#include <libusb-1.0/libusb.h>
typedef struct {
libusb_device_handle *dev;
int usb_configuration;
int usb_interface;
int usb_type;
} MUSB_INTERFACE;
#elif defined(_MSC_VER)
#include <windows.h>
typedef struct {
HANDLE rhandle;
HANDLE whandle;
int usb_type;
} MUSB_INTERFACE;
#elif defined(OS_DARWIN)
typedef struct {
void *device;
void *interface;
int usb_configuration;
int usb_interface;
int usb_type;
} MUSB_INTERFACE;
#else
#error Do not know how to access USB devices
#endif
/*---- status codes ------------------------------------------------*/
#define MUSB_SUCCESS 1
#define MUSB_NOT_FOUND 2
#define MUSB_INVALID_PARAM 3
#define MUSB_NO_MEM 4
#define MUSB_ACCESS_ERROR 5
/* make functions callable from a C++ program */
#ifdef __cplusplus
extern "C" {
#endif
/* make functions under WinNT dll exportable */
#ifndef EXPRT
#if defined(_MSC_VER) && defined(_USRDLL)
#define EXPRT __declspec(dllexport)
#else
#define EXPRT
#endif
#endif
int EXPRT musb_open(MUSB_INTERFACE **musb_interface, int vendor, int product, int instance, int configuration, int usbinterface);
int EXPRT musb_close(MUSB_INTERFACE *musb_interface);
int EXPRT musb_write(MUSB_INTERFACE *musb_interface,int endpoint,const void *buf,int count,int timeout_ms);
int EXPRT musb_read(MUSB_INTERFACE *musb_interface,int endpoint,void *buf,int count,int timeout_ms);
int EXPRT musb_reset(MUSB_INTERFACE *musb_interface);
int EXPRT musb_set_altinterface(MUSB_INTERFACE *musb_interface, int index);
int EXPRT musb_get_device(MUSB_INTERFACE *musb_interface);
#ifdef __cplusplus
}
#endif
#endif // MUSBSTD_H