Subject: [IPP] RFC: printer-finisher attribute

From: Michael Sweet <[email-masked]>
Date: Fri, 20 Jun 2014 14:25:57 -0400

All,

One of the common issues we've run into are finisher limits - maximum capacity in particular.

Currently the only want to get this information is via the Finishing MIB.  The following is a proposal for inclusion in the Finishings 2.0 specification to add a "printer-finisher" Printer Description attribute that exposes the Finishing MIB, much as we already do for the various Printer MIB properties.

If there are no objections, I will issue one more prototype draft of the Finishings 2.0 spec so we can review this and the finishings-col-database addition in the next WG concall.

...

6.15 printer-finisher (1setOf octetString(MAX))

The REQUIRED "printer-finisher" Printer attribute provides current finisher details mapped from the SNMP finDeviceTable defined in IETF Finishing MIB [RFC3806].

This attribute MUST be supported if the "printer-finisher-description" (section 6.16) Printer attribute is supported. If supported, this attribute MUST have the same cardinality (contain the same number of values) as the "printer-finisher-description" attribute. The ith value in the "printer-finisher" attribute corresponds to the ith value in the "printer-finisher-description" attribute.

6.15.1 Keywords for printer-finisher

Table 2 defines the IPP datatypes and keywords for encoding "printer-finisher" from all of the machine-readable (non-localized) columnar objects in finDeviceTable [RFC3806].

6.15.2 Encoding of printer-finisher

Values of "printer-finisher" MUST be encoded using a visible subset of the [US-ASCII] charset. Control codes (0x00 to 0x1F and 0x7F) MUST NOT be used. The ABNF [STD68] in Figure 2 defines the standard encoding in "printer-finisher" for all the machine-readable (non-localized) columnar objects in finDeviceTable [RFC3806].

6.15.3 Examples of printer-input-tray

The following example shows two rows of the machine-readable (non-localized) columnar objects from finDeviceTable encoded into corresponding values of "printer-finisher".

Note: Line breaks are shown below for readability of this example. Line breaks MUST NOT be encoded into actual values of "printer-finisher".

printer-finisher[1] =
    type=stitcher;unit=sheets;maxcapacity=500;capacity=100;
printer-input-tray[2] =
    type=puncher;unit=sheets;maxcapacity=100;capacity=20;
 
Table 2 - Keywords for "printer-finisher"

Finishing MIB Object    IPP Data-type  IPP Keyword    PWG SM Keyword    Conformance
----------------------  -------------  -------------  ----------------  -----------
finDevice...
Index (note 1)          Integer        index          Id                OPTIONAL
Type                    String         type           FinisherType      REQUIRED
CapacityUnit            String         unit           FinisherCapacity  REQUIRED
                                                      Unit
MaxCapacity             Integer        maxcapacity    FinisherMax       REQUIRED
                                                      Capacity
CurrentCapacity         Integer        capacity       FinisherCurrent   REQUIRED
                                                      Capacity
PresentOnOff            String         presentonoff   FinisherPresent   OPTIONAL
                                                      OnOff
AssociatedMediaPaths    ---            ---            FinisherAssociated ---
                                                      MediaPaths
AssociatedOutputs       ---            ---            FinisherAssociated ---
                                                      Outputs
Status                  Integer        status         SubunitStates     OPTIONAL

Notes:
1.    finDeviceIndex is OPTIONAL in "printer-finisher", because correlation with the original MIB order is considered unimportant.

Figure 2 - ABNF for "printer-finisher" Values

printer-finisher = *finisher-required *[finisher-optional]
    ; set of finisher elements encoded into one value
 
finisher-required = finisher-req ";"
finisher-req = finisher-type / finisher-unit /
                 finisher-max-capacity /
                 finisher-capacity
finisher-optional = finisher-opt ";"
finisher-opt = finisher-index / finisher-presentonoff /
                 finisher-status / finisher-ext
 
finisher-type = "type" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g.,
    ; 'stitcher') of finDeviceType in [RFC3806] mapped
    ; indirectly from the *label* in FinDeviceTypeTC
 
finisher-unit = "unit" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'other') of
    ; finDeviceCapacityUnit in [RFC3806] mapped indirectly from
    ; the *label* in PrtCapacityUnitTC in [RFC3805]
 
finisher-max-capacity = "maxcapacity" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; finDeviceMaxCapacity in [RFC3806]
 
finisher-capacity = "capacity" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; finDeviceCurrentCapacity in [RFC3806]
 
finisher-index = "index" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; finDeviceIndex in [RFC3806]
 
finisher-presentonoff = "presentonoff" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; PresentOnOff in [RFC3805]
 
finisher-status = "status" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; finDeviceStatus in [RFC3806]
 
finisher-ext   = 1*ALPHA "=" 1*ALPHA
    ; extension point for other MIB values not mapped

6.16 printer-finisher-description (1setOf text(MAX))

The REQUIRED "printer-finisher-description" READ-ONLY Printer attribute provides current supply descriptions mapped from the SNMP finDeviceDescription object in the finDeviceTable defined in IETF Finishing MIB [RFC3806].

This attribute MUST be supported if the "printer-finisher" (section 6.15) Printer attribute is supported. If supported, this attribute MUST have the same cardinality (contain the same number of values) as the "printer-finisher" attribute. The ith value in the "printer-finisher-description" attribute corresponds to the ith value in the "printer-finisher" attribute.

6.16.1 Encoding of printer-finisher-description

Values of the "printer-finisher-description" attribute MUST be mapped from the corresponding human-readable (localized) values of finDeviceDescription, exactly as follows:

1.    Each value of finDeviceDescription MUST be converted from the character set [RFC3808] specified by prtGeneralCurrentLocalization and prtLocalizationCharacterSet into the charset specified by "charset-configured" and then copied into a text value of "printer-finisher-description"; and
2.    Each value of "printer-finisher-description" MUST be tagged with the natural language [RFC5646] specified by prtGeneralCurrentLocalization, prtLocalizationLanguage, and prtLocalizationCountry.

6.16.2 Example of printer-finisher-description

The following example shows two instances of the human-readable (localized) columnar object finDeviceDescription in the finDeviceTable encoded into corresponding values of "printer-finisher-description":

printer-finisher-description[1] = "Stapler S/N:EXAMPLE-12345"
printer-finisher-description[2] = "Hole Punch S/N:EXAMPLE-67890"

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair

_______________________________________________
ipp mailing list
[email-masked]
https://www.pwg.org/mailman/listinfo/ipp

---

From: Ira McDonald <[email-masked]>
Date: Fri, 20 Jun 2014 14:59:50 -0400

Hi Mike,

I like this "printer-finisher" proposal for exposing the Finisher MIB info.

A few comments:

(1) TYPO - Section 6.15.3 in title and second example says
"printer-input-tray"

(2) TECHNICAL - Section 16.5 should also reference finDeviceAttributeTable
and later sections should reference a (flattened) "finisher-detail" member
that
is a simple key/value mapping for all defined finisher-specific attributes,
e.g.,

- general: deviceModel, finReferenceEdge, numberOfPositions, etc.
- subunit types: stitching (staple,stitch,saddle,dual), folding, binding,
etc.
- subunit details for stitching and punching

WDYT?

Cheers,
- Ira

Ira McDonald (Musician / Software Architect)
Co-Chair - TCG Trusted Mobility Solutions WG
Chair - Linux Foundation Open Printing WG
Secretary - IEEE-ISTO Printer Working Group
Co-Chair - IEEE-ISTO PWG Internet Printing Protocol WG
IETF Designated Expert - IPP & Printer MIB
Blue Roof Music / High North Inc
http://sites.google.com/site/blueroofmusic
http://sites.google.com/site/highnorthinc
mailto: [email-masked]
Winter  579 Park Place  Saline, MI  48176  734-944-0094
Summer  PO Box 221  Grand Marais, MI 49839  906-494-2434

On Fri, Jun 20, 2014 at 2:25 PM, Michael Sweet <[email-masked]> wrote:

> Currently the only want to get this information is via the Finishing MIB.
>  The following is a proposal for inclusion in the Finishings 2.0
> specification to add a "printer-finisher" Printer Description attribute
> that exposes the Finishing MIB, much as we already do for the various
> Printer MIB properties.
>
> If there are no objections, I will issue one more prototype draft of the
> Finishings 2.0 spec so we can review this and the finishings-col-database
> addition in the next WG concall.
>
> ...
>
> The REQUIRED "printer-finisher" Printer attribute provides current
> finisher details mapped from the SNMP finDeviceTable defined in IETF
> Finishing MIB [RFC3806].
>
> This attribute MUST be supported if the "printer-finisher-description"
> (section 6.16) Printer attribute is supported. If supported, this attribute
> MUST have the same cardinality (contain the same number of values) as the
> "printer-finisher-description" attribute. The ith value in the
> "printer-finisher" attribute corresponds to the ith value in the
> "printer-finisher-description" attribute.
>
> Table 2 defines the IPP datatypes and keywords for encoding
> "printer-finisher" from all of the machine-readable (non-localized)
> columnar objects in finDeviceTable [RFC3806].
>
> Values of "printer-finisher" MUST be encoded using a visible subset of the
> [US-ASCII] charset. Control codes (0x00 to 0x1F and 0x7F) MUST NOT be used.
> The ABNF [STD68] in Figure 2 defines the standard encoding in
> "printer-finisher" for all the machine-readable (non-localized) columnar
> objects in finDeviceTable [RFC3806].
>
> The following example shows two rows of the machine-readable
> (non-localized) columnar objects from finDeviceTable encoded into
> corresponding values of "printer-finisher".
>
> Note: Line breaks are shown below for readability of this example. Line
> breaks MUST NOT be encoded into actual values of "printer-finisher".
>
> printer-finisher[1] =
> 1.    finDeviceIndex is OPTIONAL in "printer-finisher", because
> correlation with the original MIB order is considered unimportant.
>
>
> The REQUIRED "printer-finisher-description" READ-ONLY Printer attribute
> provides current supply descriptions mapped from the SNMP
> finDeviceDescription object in the finDeviceTable defined in IETF Finishing
> MIB [RFC3806].
>
> This attribute MUST be supported if the "printer-finisher" (section 6.15)
> Printer attribute is supported. If supported, this attribute MUST have the
> same cardinality (contain the same number of values) as the
> "printer-finisher" attribute. The ith value in the
> "printer-finisher-description" attribute corresponds to the ith value in
> the "printer-finisher" attribute.
>
> Values of the "printer-finisher-description" attribute MUST be mapped from
> the corresponding human-readable (localized) values of
> finDeviceDescription, exactly as follows:
>
> 1.    Each value of finDeviceDescription MUST be converted from the
> character set [RFC3808] specified by prtGeneralCurrentLocalization and
> prtLocalizationCharacterSet into the charset specified by
> "charset-configured" and then copied into a text value of
> "printer-finisher-description"; and
> 2.    Each value of "printer-finisher-description" MUST be tagged with the
> natural language [RFC5646] specified by prtGeneralCurrentLocalization,
> prtLocalizationLanguage, and prtLocalizationCountry.
>
> The following example shows two instances of the human-readable
> (localized) columnar object finDeviceDescription in the finDeviceTable
> encoded into corresponding values of "printer-finisher-description":
>

---

From: Michael Sweet <[email-masked]>
Date: Fri, 20 Jun 2014 15:09:09 -0400

Ira,

On Jun 20, 2014, at 2:59 PM, Ira McDonald <[email-masked]> wrote:
> (1) TYPO - Section 6.15.3 in title and second example says "printer-input-tray"

Oops, will fix that on the next pass... :/

> and later sections should reference a (flattened) "finisher-detail" member that
> is a simple key/value mapping for all defined finisher-specific attributes, e.g.,
> 
> - subunit types: stitching (staple,stitch,saddle,dual), folding, binding, etc.

I'd actually like to defer these - the finishing intent attributes (finishings-supported, finishings-col-database/ready, etc.) already expose most of this information in a way that can be used by the Client.  The only information we didn't have a way to get via IPP was the capacity of the finisher subunits - how many sheets can be stapled, etc.

Longer term (probably in System Control) we can expose things like deviceModel for use by management applications.  But anything regarding capabilities should already be exposed by the new finishings-col stuff (and if not then we should add it there and not using the octetString key/value syntax).

---

From: Ira McDonald <[email-masked]>
Date: Fri, 20 Jun 2014 15:16:24 -0400

Hi Mike,

Right - it's reasonable to defer the finisher details for now.

As you say, if there's a significant finisher detail that doesn't show up
in
"finishings-col", we should add it during our IPP WG final review.

Cheers,
- Ira

On Fri, Jun 20, 2014 at 3:09 PM, Michael Sweet <[email-masked]> wrote:

> I'd actually like to defer these - the finishing intent attributes
> (finishings-supported, finishings-col-database/ready, etc.) already expose
> most of this information in a way that can be used by the Client.  The only
> information we didn't have a way to get via IPP was the capacity of the
> finisher subunits - how many sheets can be stapled, etc.
>
> Longer term (probably in System Control) we can expose things like
> deviceModel for use by management applications.  But anything regarding
> capabilities should already be exposed by the new finishings-col stuff (and
> if not then we should add it there and not using the octetString key/value
> syntax).
>