home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / usbd0906.zip / usb_20020906.zip / usbcalls / USBCALLS.h < prev    next >
C/C++ Source or Header  |  2001-11-24  |  10KB  |  209 lines

  1.  
  2. #ifdef __cplusplus
  3.   extern "C" {
  4. #endif
  5.  
  6. // Put these into an USB.h file
  7.  
  8. #define USB_CLASS_PER_INTERFACE   0 /* for DeviceClass */
  9. #define USB_CLASS_AUDIO     1
  10. #define USB_CLASS_COMM      2
  11. #define USB_CLASS_HID     3
  12. #define USB_CLASS_PRINTER   7
  13. #define USB_CLASS_MASS_STORAGE    8
  14. #define USB_CLASS_HUB     9
  15. #define USB_CLASS_DATA      10
  16. #define USB_CLASS_VENDOR_SPEC   0xff
  17.  
  18. /*
  19.  * USB types
  20.  */
  21. #define USB_TYPE_STANDARD   (0x00 << 5)
  22. #define USB_TYPE_CLASS      (0x01 << 5)
  23. #define USB_TYPE_VENDOR     (0x02 << 5)
  24. #define USB_TYPE_RESERVED   (0x03 << 5)
  25.  
  26. /*
  27.  * USB recipients
  28.  */
  29. #define USB_RECIP_DEVICE    0x00
  30. #define USB_RECIP_INTERFACE   0x01
  31. #define USB_RECIP_ENDPOINT    0x02
  32. #define USB_RECIP_OTHER     0x03
  33.  
  34. /*
  35.  * USB directions
  36.  */
  37. #define USB_DIR_OUT     0
  38. #define USB_DIR_IN      0x80
  39.  
  40.  
  41. typedef ULONG USBHANDLE, *PUSBHANDLE;
  42. typedef ULONG USBNOTIFY, *PUSBNOTIFY;
  43. typedef ULONG ISOHANDLE, *PISOHANDLE;
  44.  
  45. #define USB_NOT_INIT 8000
  46. #define USB_ERROR_NO_MORE_NOTIFICATIONS 8001
  47. #define USB_ERROR_OUTOF_RESOURCES 8002
  48. #define USB_ANY_PRODUCTVERSION 0xFFFF
  49. #define USB_OPEN_FIRST_UNUSED 0
  50.  
  51. #ifdef USB_BIND_DYNAMIC
  52.   typedef APIRET APIENTRY USBREGISTERDEVICENOTIFICATION( PUSBNOTIFY pNotifyID,
  53.                                                  HEV hDeviceAdded,
  54.                                                  HEV hDeviceRemoved,
  55.                                                  USHORT usVendor,
  56.                                                  USHORT usProduct,
  57.                                                  USHORT usBCDVersion);
  58.   typedef USBREGISTERDEVICENOTIFICATION *PUSBREGISTERDEVICENOTIFICATION;
  59.  
  60.   typedef APIRET APIENTRY USBDEREGISTERNOTIFICATION( USBNOTIFY NotifyID);
  61.  
  62.   typedef USBDEREGISTERNOTIFICATION *PUSBDEREGISTERNOTIFICATION;
  63.  
  64.   typedef APIRET APIENTRY USBOPEN( PUSBHANDLE pHandle,
  65.                            USHORT usVendor,
  66.                            USHORT usProduct,
  67.                            USHORT usBCDDevice,
  68.                            USHORT usEnumDevice);
  69.   typedef USBOPEN *PUSBOPEN;
  70.   typedef APIRET APIENTRY USBCLOSE( USBHANDLE Handle);
  71.   typedef USBCLOSE *PUSBCLOSE;
  72.  
  73.   typedef APIRET APIENTRY USBCTRLMESSAGE( USBHANDLE Handle,
  74.                                   UCHAR  ucRequestType,
  75.                                   UCHAR  ucRequest,
  76.                                   USHORT usValue,
  77.                                   USHORT usIndex,
  78.                                   USHORT usLength,
  79.                                   UCHAR  *pData,
  80.                                   ULONG  ulTimeout);
  81.   typedef USBCTRLMESSAGE *PUSBCTRLMESSAGE;
  82. #else
  83.   APIRET APIENTRY UsbQueryNumberDevices( ULONG *pulNumDev);
  84.  
  85.   APIRET APIENTRY UsbQueryDeviceReport( ULONG ulDevNumber,
  86.                                         ULONG *ulBufLen,
  87.                                         CHAR *pData);
  88.   APIRET APIENTRY UsbRegisterChangeNotification( PUSBNOTIFY pNotifyID,
  89.                                                  HEV hDeviceAdded,
  90.                                                  HEV hDeviceRemoved);
  91.  
  92.   APIRET APIENTRY UsbRegisterDeviceNotification( PUSBNOTIFY pNotifyID,
  93.                                                  HEV hDeviceAdded,
  94.                                                  HEV hDeviceRemoved,
  95.                                                  USHORT usVendor,
  96.                                                  USHORT usProduct,
  97.                                                  USHORT usBCDVersion);
  98.  
  99.   APIRET APIENTRY UsbDeregisterNotification( USBNOTIFY NotifyID);
  100.  
  101.   APIRET APIENTRY UsbOpen( PUSBHANDLE pHandle,
  102.                            USHORT usVendor,
  103.                            USHORT usProduct,
  104.                            USHORT usBCDDevice,
  105.                            USHORT usEnumDevice);
  106.  
  107.   APIRET APIENTRY UsbClose( USBHANDLE Handle);
  108.  
  109.   APIRET APIENTRY UsbCtrlMessage( USBHANDLE Handle,
  110.                                   UCHAR  ucRequestType,
  111.                                   UCHAR  ucRequest,
  112.                                   USHORT usValue,
  113.                                   USHORT usIndex,
  114.                                   USHORT usLength,
  115.                                   UCHAR  *pData,
  116.                                   ULONG  ulTimeout);
  117.  
  118.   APIRET APIENTRY UsbBulkRead( USBHANDLE Handle,
  119.                                UCHAR  Endpoint,
  120.                                UCHAR  Interface,
  121.                                USHORT *usNumBytes,
  122.                                UCHAR  *pData,
  123.                                ULONG  ulTimeout);
  124.  
  125.   APIRET APIENTRY UsbBulkWrite( USBHANDLE Handle,
  126.                                 UCHAR  Endpoint,
  127.                                 UCHAR  Interface,
  128.                                 USHORT usNumBytes,
  129.                                 UCHAR  *pData,
  130.                                 ULONG  ulTimeout);
  131.  
  132.   APIRET APIENTRY UsbIrqStart( USBHANDLE Handle,
  133.                                UCHAR  Endpoint,
  134.                                UCHAR  Interface,
  135.                                USHORT usNumBytes,
  136.                                UCHAR  *pData,
  137.                                PHEV   pHevModified);
  138.   APIRET APIENTRY UsbIrqStop(  USBHANDLE Handle,
  139.                                HEV       HevModified);
  140.  
  141.   APIRET APIENTRY UsbIsoStart( USBHANDLE Handle,
  142.                                UCHAR  Endpoint,
  143.                                UCHAR  Interface,
  144.                                ISOHANDLE *phIso);
  145.   APIRET APIENTRY UsbIsoStop( ISOHANDLE hIso);
  146.  
  147.   APIRET APIENTRY UsbIsoDequeue( ISOHANDLE hIso,
  148.                                  UCHAR * pBuffer,
  149.                                  ULONG ulNumBytes);
  150.   APIRET APIENTRY UsbIsoEnqueue( ISOHANDLE hIso,
  151.                                  const UCHAR * pBuffer,
  152.                                  ULONG ulNumBytes);
  153.   APIRET APIENTRY UsbIsoPeekQueue( ISOHANDLE hIso,
  154.                                    UCHAR * pByte,
  155.                                    ULONG ulOffset);
  156.   APIRET APIENTRY UsbIsoGetLength( ISOHANDLE hIso,
  157.                                    ULONG *pulLength);
  158.  
  159.  
  160.   // Standard USB Requests See 9.4. in USB 1.1. spec.
  161.  
  162.   #define UsbDeviceClearFeature(HANDLE, FEAT)             UsbCtrlMessage(HANDLE, 0x00, 0x01, FEAT, 0, 0, NULL, 0)
  163.   #define UsbInterfaceClearFeature(HANDLE, IFACE, FEAT)   UsbCtrlMessage(HANDLE, 0x01, 0x01, FEAT, IFACE, 0, NULL, 0)
  164.   #define UsbEndpointClearFeature(HANDLE, ENDPOINT, FEAT) UsbCtrlMessage(HANDLE, 0x02, 0x01, FEAT, ENDPOINT, 0, NULL, 0)
  165.   #define FEATURE_DEVICE_REMOTE_WAKEUP 1
  166.   #define FEATURE_ENDPOINT_HALT 0
  167.   #define UsbEndpointClearHalt(HANDLE, ENDPOINT) UsbEndpointClearFeature(HANDLE, ENDPOINT, FEATURE_ENDPOINT_HALT)
  168.  
  169.   #define UsbDeviceGetConfiguration(HANDLE, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x08, 0, 0, 1, DATA, 0)
  170.  
  171.   #define UsbDeviceGetDescriptor(HANDLE, INDEX, LID, LEN, DATA)        UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x01FF&INDEX), LID, LEN, DATA, 0)
  172.   #define UsbInterfaceGetDescriptor(HANDLE, INDEX, LID, LEN, DATA)     UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x04FF&INDEX), LID, LEN, DATA, 0)
  173.   #define UsbEndpointGetDescriptor(HANDLE, INDEX, LID, LEN, DATA)      UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x05FF&INDEX), LID, LEN, DATA, 0)
  174.   #define UsbConfigurationGetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x02FF&INDEX), LID, LEN, DATA, 0)
  175.   #define UsbStringGetDescriptor(HANDLE, INDEX, LID, LEN, DATA)        UsbCtrlMessage(HANDLE, 0x80, 0x06, (0x03FF&INDEX), LID, LEND, DATA, 0)
  176.  
  177.   #define UsbInterfaceGetAltSetting(HANDLE, IFACE, SETTING)  UsbCtrlMessage(HANDLE, 0x81, 0x0A, 0, IFACE, 1, SETTING, 0)
  178.  
  179.   #define UsbDeviceGetStatus(HANDLE, STATUS)                UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, 0, 2, STATUS, 0)
  180.   #define UsbInterfaceGetStatus(HANDLE, IFACE, STATUS)      UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, IFACE, 2, STATUS, 0)
  181.   #define UsbEndpointGetStatus(HANDLE, ENDPOINT, STATUS)  UsbCtrlMessage(HANDLE, 0x80, 0x00, 0, ENDPOINT, 2, STATUS, 0)
  182.   #define STATUS_ENDPOINT_HALT       0x0001
  183.   #define STATUS_DEVICE_SELFPOWERD   0x0001
  184.   #define STATUS_DEVICE_REMOTEWAKEUP 0x0002
  185.  
  186.   #define UsbDeviceSetAddress(HANDLE, ADDRESS)      UsbCtrlMessage(HANDLE, 0x80, 0x05, ADDRESS, 0, 0, NULL, 0)
  187.   #define UsbDeviceSetConfiguration(HANDLE, CONFIG) UsbCtrlMessage(HANDLE, 0x00, 0x09, CONFIG, 0, 0, NULL, 0)
  188.  
  189.   #define UsbDeviceSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x01FF&INDEX), LID, LEN, DATA, 0)
  190.   #define UsbInterfaceSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x04FF&INDEX), LID, LEN, DATA, 0)
  191.   #define UsbEndpointSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x05FF&INDEX), LID, LEN, DATA, 0)
  192.   #define UsbConfigurationSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x02FF&INDEX), LID, LEN, DATA, 0)
  193.   #define UsbStringSetDescriptor(HANDLE, INDEX, LID, LEN, DATA) UsbCtrlMessage(HANDLE, 0x80, 0x07, (0x03FF&INDEX), LID, LEN, DATA, 0)
  194.  
  195.   #define UsbDeviceSetFeature(HANDLE, FEAT)             UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, 0, 0, NULL, 0)
  196.   #define UsbInterfaceSetFeature(HANDLE, IFACE, FEAT)   UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, IFACE, 0, NULL, 0)
  197.   #define UsbEndpointSetFeature(HANDLE, ENDPOINT, FEAT) UsbCtrlMessage(HANDLE, 0x80, 0x03, FEAT, ENDPOINT, 0, NULL, 0)
  198.  
  199.   #define UsbInterfaceSetAltSetting(HANDLE, IFACE, ALTSET) UsbCtrlMessage(HANDLE, 0x01, 0x0B, ALTSET, IFACE, 0, NULL, 0)
  200.  
  201.   #define UsbEndpointSynchFrame(HANDLE, ENDPOINT, FRAMENUM) UsbCtrlMessage(HANDLE, 0x82, 0x0B, 0, ENDPOINT, 2, FRAMENUM, 0)
  202. #endif
  203.  
  204.  
  205. #ifdef __cplusplus
  206. }
  207. #endif
  208.  
  209.