Hewlett-Packard Appliance Printing Development Kit

# Hewlett-Packard Appliance Printing Software Development Kit

#

# F A Q's

#

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.

# Introduction

The following are questions that have been asked about the Hewlett-Packard Appliance Printing Software Development Kit (SDK). Hewlett-Packard strongly encourages developers to submit additional questions for consideration via email on the SPP Program Assistance Web Page.

# Frequently Asked Questions

##

## Printers & Features

> What printers does the SDK support?

> What printers are not supported?

> How do I know which printers I want?

> What features does my printer support?

> What features does my printer not support?

> How come I can't use all the features that come with my printer?

> What levels of PCL do DeskJet printers support?

> What makes DeskJet 600, 842c, 932c, and 952c printers "ITV Compatible"?

> For devices being deployed outside the US, is there support for built-in character sets other than Latin 1?

> What is the difference between fonts and character sets?

## Data Flow & Hardware Functionality

> What is Raster Data as it relates to printing?

> Is it okay that a bunch of NULL bytes went to the printer as soon as the job was instantiated??

> Can you describe the supported IO protocols for Hewlett-Packard printers?

> I have the 1284 IEEE specs, but I am looking for more specific information for each printer, such as sample timing diagrams and optional capabilities such as ECP and RLE compression. Where can I find them?

> We don’t have a USB port on our device and are instead using a parallel port to connect to the printer. Which of the IEEE-1284 modes do we need to support? Also, how is printer status returned back from the printer? For example, how do you report an out of paper condition?

## Compiling

> What defines are usually turned on when you compile?

> I need the platform.h file to compile, but I can't find it. Where is it?

## Additional Required Reading Materials

> Why do I need the IEEE Specifications?

> How do I get them?

## Communicating with Hewlett-Packard

> How do I submit questions, and when will I hear back?

> Is there a cost?

> How do I submit my print output script files for review and when will I hear back?

#

## Printers & Features

What printers does the SDK support?

> A complete list of SDK-supported Hewlett-Packard DeskJet printers is located in the Printing document's Printers Family / Functionality Table. Any printers not listed in this table are most likely not supported.

What printers are not supported?

> Any Hewlett-Packard DeskJet printers not listed in the Printing document's Printers Family / Functionality Table should be considered not supported. Specifically, printers in the 400 and 700 DeskJet families are not supported. Printers introduced to the market after the latest SDK release should also be considered not supported. Naturally, printers that are not Hewlett-Packard printers, or are not Hewlett-Packard DeskJet printers (such as Hewlett-Packard Laser Jets, Office Jets or InkJets,) are also not supported.

How do I know which printers I want?

> If code size is not a factor, Hewlett-Packard recommends developers utilize the monolithic SDK code set which implements all SDK-supported DeskJet printers. However, if code size is a factor, developers should choose a printer that takes into account the host system hardware environment and end-user requirements. If your host system has USB, be sure to choose a printer that has USB capabilities. Conceptualize your customers' printing requirements including color and image quality. Determine the price your customers will be willing to pay for a printer. Refer to the Printers Family / Functionality Table to determine which printers meet the needs of your host system and your end users.

What features does my printer support?

> A list of features supported by printer is included in the Printers Family / Functionality Table in the Printing document.

What features does my printer not support?

> Any features not listed for a specific printer in the Printers Family / Functionality Table are not supported for that printer type. Again, not all features that come with a specific printer are included in the SDK code, in order to keep the printer driver code size small.

How come I can't use all the features that come with my printer?

> While this SDK code does contain space-optimized versions of many of the same factors as full-featured HP windows drivers, not all printer features c75ould be included and still meet the small footprint required by many non-pc host systems. Hewlett-Packard has slim-lined this driver to meet all the needs of standard printing functions, while foregoing printer "options" not included with all printers.

What levels of PCL do DeskJet printers support?

> DeskJets support PCL level 3 plus extensions

What makes DeskJet 600, 842c, 932c, and 952c printers "ITV Compatible"?

> These four printers are being launched in conjunction with the AT&T interactive digital cable service which means the AT&T platform (O/S and Software) supports the printers. In general, the majority of currently shipping DeskJet printers are capable of being supported by this SDK. For a complete list of SDK-supported Hewlett-Packard DeskJet printers refer to the Printing document's Printer Family / Functionality Table.

For devices being deployed outside the US, is there support for built-in character sets other than Latin 1?

> There is currently no support for built-in character sets other than Latin 1. (Latin 1 is not designed to contain every European accented character.) Hewlett-Packard may look into adding support for other one-byte character sets in the future.

What is the difference between fonts and character sets?

> Character sets define the character mappings, whereas fonts define the look of the character.

## Data Flow & Hardware Functionality

What is Raster data as it relates to printing?

> Images are represented digitally as two-dimensional grids of colored dots or pixels. Each pixel is represented by some combination of color values. The representational pixel format accepted by the SDK code is RGB, meaning one byte (a value from 0 to 255) for the red component, followed by one byte (again, a value from 0 to 255) for the green component and one byte for the blue component -- thus 3 bytes represent a pixel in RGB format. Example: a shade of green could be written as (00,00,11).

> A raster is a single row of pixels. If there are N pixels in a row, then one unit of raster data is 3*N bytes, starting with 3 bytes for the leftmost pixel, 3 for the next pixel, and so on. (Refer to the Glossary for a global definition of "raster".)

Is it okay that a bunch of NULL bytes went to the printer as soon as the job was instantiated?

> Yes, this is used to flush any data that may have been in the printer buffer.

Can you describe the supported IO protocols for Hewlett-Packard printers?

> A discussion surrounding supported IO protocols is included in the Low Level I/O Support document.

I have the 1284 IEEE specs, but I am looking for more specific information for each printer, such as sample timing diagrams and optional capabilities such as ECP and RLE compression. Where can I find them?

> Hewlett-Packard DeskJets conform to the 1284 IEEE Specifications. We do everything that is mandatory to meet the 1284 IEEE Specifications, and do not violate any of the timing specs. As such, we do not have any additional diagrams or documentation. We do support ECP and compatibility mode for the forward direction, and nibble mode for the reverse direction. (In Hewlett-Packard terms, forward means from host system to printer; Reverse means from printer to host system.) We do not support RLE. (See Glossary for further explanations of these terms.)

> Sample timing diagrams are in the 1284 IEEE Specifications. For example, nibble mode is on page 32 of the 1284 IEEE Specification.

We don’t have a USB port on our device and are instead using a parallel port to connect to the printer. Which of the IEEE-1284 modes do we need to support? Also, how is printer status returned back from the printer? For example, how do you report an out of paper condition?

> The current version of the driver assumes that 1284 Compatibility mode is used to send all data to the printer, (even though for some printers in the future ECP/forward mode may be used for better performance). Status information is returned from the printer in two different ways. Limited status information (Out of paper, Paper jam,) is obtained via the parallel port status byte while in compatibility mode. At times, the printer driver will poll the printer for additional status information via the 1284 Device ID string (for issues such as top cover open, pen identification, wrong or missing pens, etc.)

> A 1284 Device ID string is typically returned to a host using nibble mode. When the printer driver requests the device ID string, the system should in turn query the printer for it so that the printer driver can parse the string for various information. If a printer exception occurs, (such as out of paper) the printer driver will call the DisplayPrinterStatus API with the corresponding error code so that the system can display the appropriate message and allow the user to take the necessary action.

> The following is not required but is strongly encouraged for 1284 support:

> When connecting to many of the newer / faster printers (even some low-end models), ECP/forward mode may be necessary in order to achieve reasonable print speeds. (This is because data throughput is much higher in this mode than in Compatibility mode.) Even if the device does not ship with this capability enabled, it should at least be software upgradeable at some point in the future. In the future when ECP/forward mode may be an option, the system will need to be able to toggle in and out of Compatibility, ECP/forward and Nibble/reverse modes (at the direction of a future printer driver). That will allow status and pacing information to be obtained using the existing mechanisms. Since these mode transitions will be occurring throughout the print job, it is important that these transitions be as efficient as possible in order to minimize overhead.

## Compiling

What defines are usually turned on when you compile?

> The defines are covered in Building Your Driver in the Getting Started document.

I need the platform.h file to compile, but I can't find it. Where is it?

> The platform.h file must be created by you, the developer. A platform.h.readme file with further instructions has been included in the zipped source code portion of the SDK.

## Additional Required Reading Materials

Why do I need the IEEE Specifications??

> IEEE Specifications describe the method for implementing low-level I/O operations. Some examples of low-level I/O are requesting a device ID, and requesting a 1284 status byte, both of which are needed and expected by the printer driver. The document also describes negotiation into different modes, such as NIBBLE, COMPATIBILITY, and ECP.

How do I get them?

> Due to copyright laws, developers will need to purchase their own copies of the IEEE Specifications. The phone number for ordering IEEE publications is (800)678-IEEE (US), 8AM-4:30PM (EST). Outside of the US and Canada, the number is (908)981-1393. To order by fax, dial (908)981-9667.

> The online store is located at shop.ieee.org/store. The user can also search on any part of the title, which is "IEEE Standard Signaling Method for a Bi-directional Parallel Peripheral Interface for Personal Computers." A search for "bi-directional" will achieve the same results.

## Communicating with Hewlett-Packard

How do I submit questions, and when will I hear back?

> Questions regarding the Hewlett-Packard Printer Driver SDK should be submitted via email on the SPP Program Assistance Web Page. Developers will receive a response from Hewlett-Packard within 2 working business days. (Verify)

Is there a cost?

> At this time, there is no cost to submit questions and receive answers related to the Hewlett-Packard Printer Driver SDK.

How do I submit my print output script files for review and when will I hear back?

> Printed output in the form of script files can be submitted via email on the SPP Program Assistance Web Page. To submit the script files, log on to the SPP website (http://www.hp-developer-solutions.com/) using your assigned login name and password, and send an email titled "Script Files", with the attached script files. Be sure to include your name, email and phone number in the email, should Hewlett-Packard need to make direct contact.

> In an effort to control costs associated with this program, Hewlett-Packard may not be able to test or debug every script file submitted for review. (Hewlett-Packard charges no fees for the SDK or associated costs such as script file review, in an effort to keep this product available to as many developers and platforms as possible.) Developers are still strongly encouraged to submit their script files, and Hewlett-Packard will make every effort to review them. Developers will be notified within five (5) business days as to whether or not Hewlett-Packard will be able to review and return their script files.

[Back to top]