59190ecd61435d19ba3515b876272aee7bd12298vboxsync#ifndef _usbcalls_h__
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define _usbcalls_h_
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#ifdef __cplusplus
59190ecd61435d19ba3515b876272aee7bd12298vboxsync extern "C" {
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#endif
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsynctypedef ULONG USBHANDLE, *PUSBHANDLE;
59190ecd61435d19ba3515b876272aee7bd12298vboxsynctypedef ULONG USBNOTIFY, *PUSBNOTIFY;
59190ecd61435d19ba3515b876272aee7bd12298vboxsynctypedef ULONG ISOHANDLE, *PISOHANDLE;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_NOT_INIT 7000
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_ERROR_NO_MORE_NOTIFICATIONS 7001
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_ERROR_OUTOF_RESOURCES 7002
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_ERROR_INVALID_ENDPOINT 7003
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_ERROR_LESSTRANSFERED 7004
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync/* IORB status codes */
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_IORB_DONE 0x0000
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_IORB_FAILED 0x8000
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_ANY_PRODUCTVERSION 0xFFFF
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#define USB_OPEN_FIRST_UNUSED 0
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#ifdef USB_BIND_DYNAMIC
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef APIRET APIENTRY USBREGISTERDEVICENOTIFICATION( PUSBNOTIFY pNotifyID,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceAdded,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceRemoved,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usVendor,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usProduct,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usBCDVersion);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef USBREGISTERDEVICENOTIFICATION *PUSBREGISTERDEVICENOTIFICATION;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef APIRET APIENTRY USBDEREGISTERNOTIFICATION( USBNOTIFY NotifyID);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef USBDEREGISTERNOTIFICATION *PUSBDEREGISTERNOTIFICATION;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef APIRET APIENTRY USBOPEN( PUSBHANDLE pHandle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usVendor,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usProduct,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usBCDDevice,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usEnumDevice);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef USBOPEN *PUSBOPEN;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef APIRET APIENTRY USBCLOSE( USBHANDLE Handle);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef USBCLOSE *PUSBCLOSE;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef APIRET APIENTRY USBCTRLMESSAGE( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR ucRequestType,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR ucRequest,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usValue,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usIndex,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usLength,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync typedef USBCTRLMESSAGE *PUSBCTRLMESSAGE;
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#else
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbQueryNumberDevices( ULONG *pulNumDev);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbQueryDeviceReport( ULONG ulDevNumber,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG *ulBufLen,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbRegisterChangeNotification( PUSBNOTIFY pNotifyID,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceAdded,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceRemoved);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbRegisterDeviceNotification( PUSBNOTIFY pNotifyID,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceAdded,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV hDeviceRemoved,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usVendor,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usProduct,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usBCDVersion);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbDeregisterNotification( USBNOTIFY NotifyID);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbOpen( PUSBHANDLE pHandle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usVendor,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usProduct,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usBCDDevice,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usEnumDevice);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbClose( USBHANDLE Handle);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbCtrlMessage( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR ucRequestType,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR ucRequest,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usValue,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usIndex,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usLength,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbBulkRead( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG *ulNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbBulkRead2( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync BOOL fShortOk,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG *ulNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbBulkWrite( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbBulkWrite2( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR AltInterface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync BOOL fShortOk,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIrqStart( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync USHORT usNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PHEV pHevModified);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIrqStop( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync HEV HevModified);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoStart( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ISOHANDLE *phIso);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoStop( ISOHANDLE hIso);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoDequeue( ISOHANDLE hIso,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pBuffer,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulNumBytes);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoEnqueue( ISOHANDLE hIso,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync const UCHAR * pBuffer,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulNumBytes);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoPeekQueue( ISOHANDLE hIso,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR * pByte,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulOffset);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIsoGetLength( ISOHANDLE hIso,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG *pulLength);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbIrqRead( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Endpoint,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR Interface,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG *ulNumBytes,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync PVOID pvData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulTimeout);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY UsbFixupDevice( USBHANDLE Handle,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR ucConfiguration,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UCHAR *pucConfigurationData,
59190ecd61435d19ba3515b876272aee7bd12298vboxsync ULONG ulConfigurationLen );
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY InitUsbCalls(void);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync APIRET APIENTRY TermUsbCalls(void);
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync /* Standard USB Requests See 9.4. in USB 1.1. spec. */
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync /* 09 01 2003 - KIEWITZ */
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceClearFeature(HANDLE, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x00, 0x01, FEAT, 0, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceSetFeature(HANDLE, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, 0, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceClearFeature(HANDLE, IFACE, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x01, 0x01, FEAT, IFACE, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceSetFeature(HANDLE, IFACE, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, IFACE, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointClearFeature(HANDLE, ENDPOINT, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x02, 0x01, FEAT, ENDPOINT, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointSetFeature(HANDLE, ENDPOINT, FEAT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, ENDPOINT, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define FEATURE_DEVICE_REMOTE_WAKEUP 1
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define FEATURE_ENDPOINT_HALT 0
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointClearHalt(HANDLE, ENDPOINT) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbEndpointClearFeature(HANDLE, ENDPOINT, FEATURE_ENDPOINT_HALT)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceGetConfiguration(HANDLE, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x08, 0, 0, 1, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceSetConfiguration(HANDLE, CONFIG) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x00, 0x09, CONFIG, 0, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceGetStatus(HANDLE, STATUS) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, 0, 2, STATUS, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceGetStatus(HANDLE, IFACE, STATUS) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, IFACE, 2, STATUS, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointGetStatus(HANDLE, ENDPOINT, STATUS) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, ENDPOINT, 2, STATUS, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define STATUS_ENDPOINT_HALT 0x0001
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define STATUS_DEVICE_SELFPOWERD 0x0001
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define STATUS_DEVICE_REMOTEWAKEUP 0x0002
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceSetAddress(HANDLE, ADDRESS) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x05, ADDRESS, 0, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x0100|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbDeviceSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x0100|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbConfigurationGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x0200|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbConfigurationSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x0200|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbStringGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x0300|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbStringSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x0300|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x0400|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x0400|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x0500|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x0500|INDEX), LID, LEN, DATA, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceGetAltSetting(HANDLE, IFACE, SETTING) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x81, 0x0A, 0, IFACE, 1, SETTING, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbInterfaceSetAltSetting(HANDLE, IFACE, ALTSET) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x01, 0x0B, ALTSET, IFACE, 0, NULL, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync #define UsbEndpointSynchFrame(HANDLE, ENDPOINT, FRAMENUM) \
59190ecd61435d19ba3515b876272aee7bd12298vboxsync UsbCtrlMessage(HANDLE, 0x82, 0x0B, 0, ENDPOINT, 2, FRAMENUM, 0)
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#endif
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#ifdef __cplusplus
59190ecd61435d19ba3515b876272aee7bd12298vboxsync}
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#endif
59190ecd61435d19ba3515b876272aee7bd12298vboxsync
59190ecd61435d19ba3515b876272aee7bd12298vboxsync#endif /* _usbcalls_h_ */