USBCALLS toolkit

This package contains the pieces necessary for applications to use the
USBCALLS abstraction layer for limited access to USB devices without
writing a driver.

Package Contents
----------------
  Kit Directory
    usbcalls.txt   - This file.
    usbcalls.dll   - The DLL interface to the usbcalls driver.
    usbcalls.lib   - An import library for usbcalls.dll
    usbtype.h      - A header file with type definitions for usbcalls.
    usbcalls.h     - A header file for usbcalls functions.
  Sample Directory
    sample.c       - A simple application to demonstrate the use of the
                     usbcalls interface.
    makefile       - The makefile for building the sample application.


Copyrights and Licensing
========================

Copyright (c) 2011-2024 David Azarewicz <david@88watts.net>
All rights reserved.

Copyright (C) 1992, 2000-2001 IBM Corporation.
All rights reserved.

Portions of the code may also contain modifications from the contributors
to this code such as Lars Erdmann, Wim Brul, and others, to whom we
are very grateful for their work.

Binary programs and documentation for the USB drivers are licensed to
and distributed by Arca Noae, LLC.

Important! By downloading or using this software, you acknowledge that
you have read and consent to the license agreement contained in the
separate License.txt file, that you understand it, and that you agree
to be bound by its terms.


Requirements
============

Applications built using this USBCALLS toolkit will only work if a compatible
USBCALLS.DLL and USBRESMG.SYS are installed and running. The USBCALLS DLL
and the companion USBRESMG.SYS driver are a matched set. Mixing different
versions of these files is unsupported and may not work.

The USBCALLS toolkit is intended for the OS/2 environment and OS/2 tools,
OS/2 formats, and OS/2 file types. The interface may work with other tools,
however any adaptation needed for those tools is the responsibility of the
developer.

The sample program and makefile are written for OpenWatcom C for OS/2.
OpenWatcom C for OS/2 can be found here:
  https://www.arcanoae.com/wiki/information-for-developers/


Additional Information
======================

The USBCALLS interface is appropriate for applications to access USB devices
in limited ways. The interface necessarily adds significant overhead to every
transaction which may vary from transaction to transaction. There is also an
inherent and unavoidable high and inconsistently variable latency, and which
can lead to inconsistent performance. High intensity, real-time, and/or
complex operations through this interface may not work as expected. Also,
repeatedly cancelling and restarting transfers may cause problems and may not
work as expected. Any application using the USBCALLS interface must accept
these characteristics and is responsible for dealing with them at the
application level.

More information for USB developers is availabe at:
  https://www.arcanoae.com/wiki/usb/information-for-usb-class-driver-developers/

