IPP> OPS - Xerox comments on Set-Printer-Attributes and Set-Job-Attrib utes spec

IPP> OPS - Xerox comments on Set-Printer-Attributes and Set-Job-Attrib utes spec

Hastings, Tom N hastings at cp10.es.xerox.com
Mon Jan 10 21:09:26 EST 2000


A number of us at Xerox considered the issue 01 in the Set spec and have the
following suggestions:

ISSUE 01 - Is there a better way to model the Printer attributes that depend
on the interpreter (that is still compatible with IPP/1.1)?  It should be
clear to the operator whether the Set-Printer-Attributes operation is
affecting all interpreters or just the one specified by the
"document-format" operation attribute (or its default)?  There have been
suggestions to have "xxx-exceptions" (collection) Printer Description
attributes where "xxx" is the document-format that indicate for each
interpreter explicitly which Printer attributes are specialized for it. For
example:  "application-postscript-exceptions" (collection) and
"application-vnd-hp-pcl-exceptions (collection).  Or have a
"set-all-interpreters" (boolean) Set-Printer-Attributes operation attribute
that sets all interpreters.

We think that the Interpreter object is a fine way to model those
implementations that have some Printer attributes whose values depend on the
interpreter.  However, we have the following comments about completing the
mechanism.

0. REQUIREMENT:  It must be clear that the concept of the Interpreter object
is just a way of talking about the semantics at the interface between the
client and the Printer object, i.e., the semantics of the IPP protocol, and
is not placing any requirement on the internal implementation to have an
Interpreter object or not.  So add to the Notes that the introduction of the
Interpreter object is not specifying internal implementation of an IPP
Printer.


1. REQUIREMENT:  It must be clear to the client whether the
Set-Printer-Attributes operation is going to affect an attribute for all
interpreters or just the target interpreter. 


2. REQUIREMENT:  A client must be able to set the attributes for one
interpreter or for all interpreters.


3. REQUIREMENT:  If an implementation doesn't support unique attributes for
different interpreters, then there is no added complexity than in the
current Set spec.


	4. To meet requirement 1, there needs to be added a Printer
Description attribute that contains the names of the Printer attributes
whose values returned differ among interpreters or could differ among
interpreters.  Such a difference of values includes the case when an
attribute is supported by one interpreter and not by another, i.e., when a
value is returned by one interpreter and an attribute is not returned by
another interpreter.  Such a Printer attribute returns different values,
depending on the Interpreter, and so is said to be an Interpreter object
attribute.  Here is the suggested definition for such a Printer Description
attribute:

interpreter-unique-attributes (1setOf type2 keyword)

This READ-ONLY attribute indicates which Printer attributes are represented
as Interpreter object attributes, i.e., potentially return different values
depending on the value of the "document-format" operation attribute supplied
by the client in the Get-Printer-Attributes request (see the
Get-Printer-Attributes "document-format" operation attribute description in
[ipp-mod] section 3.2.5.1).  Any Printer attributes not identified by this
attribute MUST be shared by all interpreters, i.e., always return the same
values no matter what "document-format" is supplied in the
Get-Printer-Attributes request.  If a Printer attribute is not supported by
all interpreters, then such an attribute is considered an Interpreter object
attribute by definition.  For implementations that support the
Set-Printer-Attributes operation, the Printer attributes so identified by
this attribute MAY include attributes that are settable as indicated in the
Printer's "printer-settable-attributes".

This attribute MUST be supported by an implementation that supports Printer
attributes whose values can be returned with different values in a
Get-Printer-Attributes request depending on the value of the
"document-format" operation attribute supplied by the client.  This
attribute, itself, MUST NOT be an Interpreter object attribute, i.e., its
values MUST be the same for all document formats.

Example:  Suppose a Printer supports PostScript, PCL, and text/plain with
the following "xxx-supported" values where "copies" is the shared by all
interpreters, "number-up" is supported by all interpreters but has different
values, and "orientation-requested" is supported only for 'text/plain':

PDL         number-up-supported  copies-supported
orientation-requested-supported
---         -------------------  ------
-------------------------------
PostScript  1                    1-10              <not supported>
PCL         1                    1-10              <not supported>
text/plain  1,2,4                1-10              'portrait', 'landscape' 

The implementation MUST support the "interpreter-unique-attributes"
attribute because several Printer attributes return differing values.  Such
an implementation returns the "interpreter-unique-attributes" attribute
values: 'number-up-supported' and 'orientation-requested-supported' (no
matter what "document-format" is supplied in the Get-Printer-Attributes
request).

The following responses are returned for a request that requests all three
attributes:

"document-format"        Response
-----------------        --------
application/postscript   number-up-supported=1, copies-supported=1-10
application/vnd.hp-PCL   number-up-supported=1, copies-supported=1-10
text/plain               number-up-supported=1,2,4, copies-supported=1-10, 
                         orientation-requested-supported='portrait',
'landscape'


5. To meet requirement 2, there needs to be an operation attribute added to
the Set-Printer-Attributes operation that the client uses to indicate
whether the intent is to set (1) all Interpreter objects and the Printer
object, (2) a single Interpreter object and the Printer object, or (3) just
the Interpreter object.  Here is the description of the
Set-Printer-Attributes operation attribute:

"attribute-scope" (type2 keyword)

The client MAY supply this attribute.  The Printer MUST support this
attribute if it returns Printer attributes with different values in a
Get-Printer-Attributes request depending on the value of the
"document-format" operation attribute supplied by the client.  This value of
this attribute indicates the client's intention with respect to Printer
attributes that are common to all interpreters, i.e., are Printer object
attributes, or are specific to an Interpreter, i.e., are Interpreter object
attributes.

Standard keyword values are:

    'all-interpreters-and-printer' - all attributes supplied either set all
Interpreter object attributes that support the attribute or set the single
Printer object attribute

    'single-interpreter-and-printer' - all attributes supplied either set
the single interpreter or set the single Printer object attribute.  An error
is returned if the attribute supplied isn't either the specified Interpreter
object attribute or a Printer object attribute.

    'single-interpreter-only' - all supplied attributes set the single
Interpreter object only.  An error is returned if the attributes isn't the
specified Interpreter object attribute doesn't support the supplied
attribute or the attribute is a Printer attribute.

Example:  Suppose that the "number-up-supported" attribute could be settable
for the PCL and text/plain interpreters, but not the PostScript interpreter,
the 'copies-supported' attribute could be settable for all interpreters, but
the 'orientation-requested-supported' could not be set for any interpreters.
Then the value of the "printer-settable-attributes" MUST be
'copies-supported' and 'number-up-supported' when the document-format is PCL
and 'text/plain' and 'copies-supported' when the document-format is
'application/postscript'.  Also, since the value of "number-up-supported"
could be different after being set, the "number-up-supported" MUST be a
value in the "interpreter-unique-attributes" attribute (for all
document-formats).  

Pictorially, the Printer object and the Interpreter objects can be drawn as
follows:

Printer object
+---------------------------------+
|"copies-supported"=1-10(settable)|
+---------------------------------+

PostScript Interpreter object
+-------------------------------------+
|"number-up-supported"=1(not-settable)|
+-------------------------------------+

PCL Interpreter object
+---------------------------------+
|"number-up-supported"=1(settable)|
+---------------------------------+

text/plain Interpreter object
+-----------------------------------------------------------------------+
|"number-up-supported"=1(settable)                                      |
|"orientation-requested-supported"='portrait', 'landscape'(not-settable)|
+-----------------------------------------------------------------------+


Set-Printer-Attributes
----------------------
Attempt to set "copies-supported" 

- "attribute-scope"='all-interpreters-and-printer' 
Sets the "copies-supported" Printer object attribute for all
"document-format" values

- "attribute-scope"='single-interpreter-and-printer'
Sets the "copies-supported" Printer object attribute for all
"document-format" values

- "attribute-scope"='single-interpreter-only'
Returns an error and does not change the "copies-supported" Printer object
attribute


Attempt to set "number-up-supported"

- "attribute-scope"='all-interpreters-and-printer' 
Fails for each "document-format" values because not all Interpreter objects
have this attribute as settable.

- "attribute-scope"='single-interpreter-and-printer'
Succeeds for "document-format" = PCL and text/plain, fails for PostScript

- "attribute-scope"='single-interpreter-only'
Succeeds for "document-format" = PCL and text/plain, fails for PostScript


Attempt to set "orientation-requested-supported"

- "attribute-scope"='all-interpreters-and-printer' 
Fails for each "document-format" values because all Interpreter objects
either have this attribute as not-settable or do not support the attribute.

- "attribute-scope"='single-interpreter-and-printer'
Fails for each "document-format" values because all Interpreter objects
either have this attribute as not-settable or do not support the attribute.

- "attribute-scope"='single-interpreter-only'
Fails for each "document-format" values because all Interpreter objects
either have this attribute as not-settable or do not support the attribute.





More information about the Ipp mailing list