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