]>
Commit | Line | Data |
---|---|---|
f7deaa1a | 1 | Preliminary Design for CUPS Firewire Printer Backend - 03/19/2002 |
2 | ----------------------------------------------------------------- | |
3 | ||
4 | OVERVIEW | |
5 | ||
6 | Easy Software Products will develop an IEEE-1394, a.k.a. | |
7 | Firewire, printing interface for its Common UNIX Printing | |
8 | System ("CUPS") for initial use under the Linux operating | |
9 | system. A follow-on implementation for MacOS X is | |
10 | anticipated as well. | |
11 | ||
12 | The operating system interfaces for IEEE-1394 ports vary | |
13 | widely; the CUPS printing interface will abstract the OS | |
14 | layer to a simpler interface geared towards discovering, | |
15 | opening, reading from, writing to, and closing IEEE-1394 | |
16 | printers. | |
17 | ||
18 | The initial development of the CUPS backend will be targeted | |
19 | at the EPSON Stylus Pro 10000 large format printer, which | |
20 | requires the bandwidth provided by Firewire in order to | |
21 | print at full speed. This printer supports printing via | |
22 | Serial Bus Protocol 2 (SBP-2) using the SCSI and PWG command | |
23 | sets. The CUPS backend will implement the PWG command set on | |
24 | LUN 0 only. | |
25 | ||
26 | ||
27 | OS ABSTRACTION LAYER | |
28 | ||
29 | The OS abstraction layer will be a thin client library that | |
30 | implements the following functions: | |
31 | ||
32 | ieee1394_list | |
33 | ieee1394_open | |
34 | ieee1394_close | |
35 | ieee1394_read | |
36 | ieee1394_write | |
37 | ieee1394_error | |
38 | ||
39 | The "ieee1394_list" function will list all of the available | |
40 | printer devices on the bus. The device information will | |
41 | consist of the device URI (ieee1394:/something) used to | |
42 | access the device and the make and model information, if | |
43 | available, for the device ("EPSON Stylus Printer"). | |
44 | ||
45 | The "ieee1394_open" and "ieee1394_close" functions will open | |
46 | and close a connection to the printer, respectively. | |
47 | ||
48 | The "ieee1394_read" and "ieee1394_write" functions will read | |
49 | and write data to and from the printer, respectively. The | |
50 | read function will be non-blocking, returning data only if | |
51 | there is data coming back from the printer. | |
52 | ||
53 | The "ieee1394_error" function will return a string | |
54 | describing the last error or NULL if no error occurred. | |
55 | ||
56 | The library will be responsible for creating any background | |
57 | threads that are needed to monitor the connection to the | |
58 | printer. | |
59 | ||
60 | ||
61 | CUPS BACKEND | |
62 | ||
63 | The CUPS backend will use the OS abstraction layer to list | |
64 | and access the Firewire printers. The "main" function will | |
65 | read and write printer data, while the "list_devices" | |
66 | function will be called as necessary to identify the | |
67 | available devices. | |
68 | ||
69 | The CUPS 1.1 backend will record any status information in | |
70 | the error log file, while the 1.2 backend will supply it to | |
71 | the printer driver process. |