Hewlett-Packard Appliance Printing Development Kit

# Hewlett-Packard Appliance Printing Software Development Kit

#

# Low Level

# I/O Support

#

Version | Date | Comments
2.0.0 | 11.29.00 | Version 2.0.0 documentation reflects code changes from code Version 1.1.0. (Note: Documentation and code version numbers are designed to be independent of each other, and may not agree.)

Notice

The information contained in this document is subject to change without notice.

Hewlett-Packard makes no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. Hewlett-Packard shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material.

All SDK documentation included in this list, received with the Hewlett-Packard Appliance Printing Software Development Kit, or received at a later date as a result of communication with any Hewlett-Packard employee regarding the Hewlett-Packard Appliance Printing Software Development Kit, is Hewlett-Packard "confidential" information.

Licensee shall not export or re-export the Hewlett-Packard documentation, or copies or variations thereof. Licensee may use Hewlett-Packard documentation only to develop Licensee Printer Drivers for exclusive use only on Hewlett-Packard printers.

Licensee shall assure that all Hewlett-Packard Software and all documentation based on Hewlett-Packard Documentation include the following notice:

"Copyright © [year]

Hewlett-Packard Company.

All Rights Reserved."

Hewlett-Packard Documentation has been developed entirely at private expense and is provided as "Commercial Computer Software" or "restricted computer software." Use, duplication or disclosure by the US Government or a US Government subcontractor is subject to the restrictions set forth in subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clauses in DFARS 252.227-7013 or as set forth in subparagraph (c) (1) and (2) of the Commercial Computer Software-Restricted Rights clauses in FAR 52.227-19, as applicable. The Contractor is Hewlett-Packard Company, 3000 Hanover Street, Palo Alto, California 94304.

Copyright ã 2000

Hewlett-Packard Company.

All rights reserved.

# Low Level I/O Support

##

## Introduction

This section provides information to begin understanding low-level I/O support and the Hewlett-Packard Appliance Printing Software Development Kit (SDK). The following are topics discussed in this document:

> Low-Level I/O Support

> Adding Parallel or USB Hardware

> USB Documentation Sources

##

## Low-Level I/O Support

Creating a customized printer driver for a specific device or platform does not necessarily require any detailed knowledge of the underlying I/O (IEEE 1284 or USB). The printer driver depends on the underlying Operating System (OS) to provide basic access to whatever I/O port is connected to the printer.

One of the first steps in porting the printer driver code is to create the derived SystemServices object for a specific device or environment. Once in place, the printer driver simply calls the SystemServices object for access to the I/O. If other printers are already supported by the printer driver, the necessary services that the new OS requires should be readily available.

If no printing port currently exists for the host system, additional work will be required by the developer. The details required to add the necessary I/O hardware and I/O driver support are beyond the scope of this SDK, and are not included; some basic information has been included that should help the developer begin the process.

[Back to top]

## Adding Parallel or USB Hardware

If third party chipsets are being considered for adding I/O capability, remember that not all chipsets are of equal quality. Be sure to choose a reputable vendor and always make certain that adequate testing occurs early between the host system and as many different peripherals as possible.

If the host system already has USB support but it has not been used for printing, make sure to test the ‘bulk transfer’ capability, which is required for printing. (Many USB peripherals (such as mice, keyboards, joysticks, etc.) do not use the bulk transfer method and therefore prior testing might not have been adequate.) In addition, some older USB controller chipsets produce an error when a high-speed device such as a printer or a scanner, and a low speed device such as a keyboard or a mouse are used at the same time. Hopefully, the low-level I/O drivers will be available from either the chip vendor or from your OS vendor. If this is not the case, then obtain the necessary industry standards documents and implement the I/O driver(s).

[Back to top]

## USB Documentation Sources

Additional documentation on USB may be accessed at http://www.usb.org/developers/docs.html , in which the official "USB Specification Document" can be found. The official "Printer Device Class Document" is located at http://www.usb.org/developers/devclass_docs.html#approved. As of this writing, the current "USB Specification" is version 2.0 and the "Printer Device Class Document" is 1.082. Implementing USB will rely on both of these documents, with cover-to-cover knowledge of the Printer Device Class Document, and with reference to the much larger and more generic "USB Specification Document" as necessary to implement the USB protocol stack.

## Parallel / IEEE 1284-1994 Documentation

HP printers work off the 1284 IEEE Specifications. No additional specifications beyond these have been added. As such, there is no document describing what features of the 1284 spec are implemented for each Hewlett-Packard printer model. Regardless of price and performance, all Hewlett-Packard DeskJet printers use the same 1284 capabilities, and do not utilize RLE. In the future ECP/forward mode may be an option in the SDK code. (See Glossary for further explanations of these two terms.) Therefore, ECP/forward mode requirements should be taken into account when adding 1284 hardware.

Centronics compatibility mode is required for output to the printer. "Nibble" mode is required to retrieve the printer's DeviceID. See http://www.ieee.org for official documentation.

[Back to top]