]> git.ipfire.org Git - thirdparty/cups.git/blob - backend/easysw-firewire-design.txt
Load cups into easysw/current.
[thirdparty/cups.git] / backend / easysw-firewire-design.txt
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.