Subject: [IPP] ABNF for printer-[input/output]-tray

From: Ira McDonald <[email-masked]>
Date: Sun, 6 Nov 2011 17:31:23 -0500

Hi Mike,                                       Sunday (6 November 2011)

Below is ABNF for new "printer-input-tray" and "printer-output-tray"
string attributes (i.e., 1setOf (octetString) since they're fixed in
UTF-8 only and not variable charset).

They are based on Printer MIB v2 conformance requirements, media source
key properties, and DMTF CIM ranking activity by WIMS WG in 2006.  The
reference for that activity (I think we should add as an Informative
reference) is:

DMTF CIM Ranking of Printer MIB v2 Objects, WIMS WG, September 2006,
ftp://ftp.pwg.org/pub/pwg/wims/cim/
    PrinterMibObjectsToAdd_conclusions_20060921_F.pdf

Mike - note the attribute conformance tables have been included.  Also
note I fixed the table headers to more accurate "Printer MIB Object".

Comments?

Cheers,
- Ira

------------------------------------------------------------------------

Notes:

(1) prtInputIndex is OPTIONAL in "printer-input-tray", because
correlation with the original MIB order is considered unimportant.

(2) prtInputMediaName, prtInputMediaType, and prtInputMediaColor are
RECOMMENDED in "printer-input-tray", because they are important but
often unknown to the printer (while loaded media dimensions are usually
known).

(3) prtInputMediaWeight is OPTIONAL in "printer-input-tray", because
because most Printers can't sense loaded media weight.

(4) Printer MIB objects without corresponding IPP keywords are *not*
mapped, per DMTF CIM ranking activity in WIMS WG in 2006.

            Table X - Keywords for printer-input-tray

Printer MIB Object      IPP Datatype    IPP Keyword         Conformance
------------------      ------------    -----------         -----------
prtInput...
Index (note 1)          Integer         index               OPTIONAL
Type                    String          type                REQUIRED
DimUnit                 String          dimunit             RECOMMENDED
MediaDimFeedDirDeclared Integer         mediafeed           REQUIRED
MediaDimXFeedDirDeclared Integer        mediaxfeed          REQUIRED
MediaDimFeedDirChosen   ---             ---                 ---
MediaDimXFeedDirChosen  ---             ---                 ---
CapacityUnit            String          unit                RECOMMENDED
MaxCapacity             Integer         maxcapacity         REQUIRED
CurrentLevel            Integer         level               REQUIRED
Status                  Integer         status              REQUIRED
MediaName (note 2)      String          medianame           RECOMMENDED
Name                    String          name                REQUIRED
VendorName              ---             ---                 ---
Model                   ---             ---                 ---
Version                 ---             ---                 ---
SerialNumber            ---             ---                 ---
Security                ---             ---                 ---
MediaWeight (note 3)    Integer         mediaweight         OPTIONAL
MediaType (note 2)      String          mediatype           RECOMMENDED
MediaColor (note 2)     String          mediacolor          RECOMMENDED
MediaFormParts          ---             ---                 ---
MediaLoadTimeout        ---             ---                 ---
NextIndex               ---             ---                 ---

                    Examples of printer-input-tray

printer-input-tray[1] =
    type=sheetFeedAutoRemovableTray;
    mediafeed=110000;mediaxfeed=85000;
    maxcapacity=500;level=100;status=8;name=Tray1;
    index=1;dimunit=tenThousandthsOfInches;unit=sheets;
    medianame=na-letter;mediaweight=-2;
    mediatype=stationery;mediacolor=blue;

printer-input-tray[2] =
    type=sheetFeedAutoRemovableTray;
    mediafeed=110000;mediaxfeed=85000;
    maxcapacity=100;level=20;status=8;name=Tray2;
    index=2;dimunit=tenThousandthsOfInches;unit=sheets;
    medianame=na-letter;mediaweight=-2;
    mediatype=photographic;mediacolor=white;

            Figure X - ABNF for "printer-input-tray" values

printer-input-tray  = *input-required *[input-optional]
    ; set of input elements encoded into one value

input-required      = input-req ";"
input-req           = input-type /
                      input-media-feed /
                      input-media-xfeed /
                      input-max-capacity /
                      input-level /
                      input-status /
                      input-name

input-optional      = input-opt ";"
input-opt           = input-index /
                      input-dim-unit /
                      input-unit /
                      input-media-name /
                      input-media-weight /
                      input-media-type /
                      input-media-color

input-type          = "type" "=" 1*ALPHA
    ; enumerated value as an alpha string
    ; (e.g., 'sheetFeedAutoRemovableTray') of prtInputType
    ; in [RFC3805] mapped indirectly from
    ; the *label* in PrtInputTypeTC in [IANAPRT]

input-media-feed    = "mediafeed" "="  1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtInputMediaDimFeedDirDeclared in [RFC3805]

input-media-xfeed   = "mediaxfeed" "="  1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtInputMediaDimXFeedDirDeclared in [RFC3805]

input-max-capacity  = "maxcapacity" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtInputMaxCapacity in [RFC3805]

input-level         = "level" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtInputCurrentLevel in [RFC3805]

input-status        = "status" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; prtInputStatus in [RFC3805]

input-name          = "name" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; prtInputName in [RFC3805]

input-index         = "index" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; prtInputIndex in [RFC3805]

input-dim-unit      = "dimunit" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'other') of
    ; prtInputDimUnit in [RFC3805] mapped indirectly from
    ; the *label* in PrtMediaUnitTC in [RFC3805]

input-unit          = "unit" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'other') of
    ; prtInputCapacityUnit in [RFC3805] mapped indirectly from
    ; the *label* in PrtCapacityUnitTC in [RFC3805]

input-media-name    = "medianame" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; prtInputMediaName in [RFC3805]

input-media-weight  = "mediaweight" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtInputMediaWeight in [RFC3805]

input-media-type    = "mediatype" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; prtInputMediaType in [RFC3805]

input-media-color   = "mediacolor" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; prtInputMediaColor in [RFC3805]

------------------------------------------------------------------------

Notes:

(1) prtOutputIndex is OPTIONAL in "printer-output-tray", because
correlation with the original MIB order is considered unimportant.

(2) prtOutputDimUnit, prtOutputMaxDimFeedDir, prtOutputMaxDimXFeedDir,
prtOutputMinDimFeedDir, and prtOutputMinDimXFeedDir are *not* mapped,
because they were rated "C" (low priority) in the DMTF CIM ranking
activity in WIMS WG in 2006.

(3) prtOutputStackingOrder, prtOututPageDeliveryOrientation, and
prtOutputOffsetStacking are OPTIONAL in "printer-output-tray", because
they were rated "B" (medium priority) in the DMTF CIM ranking activity
in WIMS WG in 2006.

(4) Printer MIB objects without corresponding IPP keywords are *not*
mapped, per DMTF CIM ranking activity in WIMS WG in 2006.

            Table Y - Keywords for printer-output-tray

Printer MIB Object      IPP Datatype    IPP Keyword         Conformance
------------------      ------------    -----------         -----------
prtOutput...
Index (note 1)          Integer         index               OPTIONAL
Type                    String          type                REQUIRED
CapacityUnit            String          unit                RECOMMENDED
MaxCapacity             Integer         maxcapacity         REQUIRED
RemainingCapacity       Integer         remaining           REQUIRED
Status                  Integer         status              REQUIRED
Name                    String          name                REQUIRED
VendorName              ---             ---                 ---
Model                   ---             ---                 ---
Version                 ---             ---                 ---
SerialNumber            ---             ---                 ---
Security                ---             ---                 ---
DimUnit (note 2)        ---             ---                 ---
MaxDimFeedDir (note 2)  ---             ---                 ---
MaxDimXFeedDir (note 2) ---             ---                 ---
MinDimFeedDir (note 2)  ---             ---                 ---
MinDimXFeedDir (note 2) ---             ---                 ---
StackingOrder (note 3)  String          stackingorder       OPTIONAL
PageDeliveryOrientation String          pagedelivery        OPTIONAL
    (note 3)
Bursting                ---             ---                 ---
Decollating             ---             ---                 ---
PageCollated            ---             ---                 ---
OffsetStacking (note 3) String          offsetstacking      OPTIONAL

                    Examples of printer-output-tray

printer-output-tray[1] =
    type=removableBin;
    maxcapacity=500;remaining=-3;status=12;name=LeftOutputBin;
    index=1;unit=sheets;stackingorder=firstToLast;
    pagedelivery=faceDown;offsetstacking=notPresent;

printer-output-tray[2] =
    type=removableBin;
    maxcapacity=300;remaining=-3;status=0;name=RightOutputBin;
    index=2;unit=sheets;stackingorder=firstToLast;
    pagedelivery=faceDown;offsetstacking=notPresent;

            Figure Y - ABNF for "printer-output-tray" values

printer-output-tray = *output-required *[output-optional]
    ; set of output elements encoded into one value

output-required     = output-req ";"
output-req          = output-type /
                      output-max-capacity /
                      output-remaining /
                      output-status /
                      output-name

output-optional     = output-opt ";"
output-opt          = output-index /
                      output-unit /
                      output-stacking-order /
                      output-page-delivery /
                      output-offset-stacking

output-type         = "type" "=" 1*ALPHA
    ; enumerated value as an alpha string
    ; (e.g., 'removableBin') of prtOutputType
    ; in [RFC3805] mapped indirectly from
    ; the *label* in PrtOutputTypeTC in [IANAPRT]

output-max-capacity = "maxcapacity" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtOutputMaxCapacity in [RFC3805]

output-remaining    = "remaining" "=" 1*[DIGIT / "-"]
    ; integer value as a numeric string mapped directly from
    ; prtOutputRemainingCapacity in [RFC3805]

output-status       = "status" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; prtOutputStatus in [RFC3805]

output-name         = "name" "=" 1*ALPHA
    ; string value as an alpha string mapped directly from
    ; prtOutputName in [RFC3805]

output-index        = "index" "=" 1*DIGIT
    ; integer value as a numeric string mapped directly from
    ; prtOutputIndex in [RFC3805]

output-unit         = "unit" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'other') of
    ; prtOutputCapacityUnit in [RFC3805] mapped indirectly from
    ; the *label* in PrtCapacityUnitTC in [RFC3805]

output-stacking-order = "stackingorder" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'firstToLast') of
    ; prtOutputStackingOrder in [RFC3805] mapped indirectly from
    ; the *label* in PrtOutputStackingOrderTC in [RFC3805]

output-page-delivery = "pagedelivery" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'faceUp') of
    ; prtOutputPageDeliveryOrientation in [RFC3805] mapped indirectly
    ; from the *label* in PrtOutputPageDeliveryOrientationTC in
    ; [RFC3805]

output-offset-stacking = "offsetstacking" "=" 1*ALPHA
    ; enumerated value as an alpha string (e.g., 'notPresent') of
    ; prtOutputOffsetStacking in [RFC3805] mapped indirectly from
    ; the *label* in PresentOnOff in [RFC3805]

------------------------------------------------------------------------

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

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

---

From: Michael Sweet <[email-masked]>
Date: Thu, 10 Nov 2011 23:35:36 -0800

> note I fixed the table headers to more accurate "Printer MIB Object".

OK, so I am concerned that we are providing input tray information in two different places.  The current media-col-ready attribute provides most of the information in printer-input-tray - as of JPS3 the only missing information is the current level, max capacity, capacity unit, and status.  Seems like we could simply add those to the media-source-properties (or a new media-status) collection member attribute instead?

As for printer-output-tray, I'm not sure how a Client could correlate the values with output-bin/output-bin-default/output-bin-supported?  I almost think we want an output-bin-ready or output-bin-status 1setOf collection attribute instead that correlates the output tray information to output-bin values.

> - Ira

__________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair

---

From: Ira McDonald <[email-masked]>
Date: Fri, 11 Nov 2011 15:28:25 -0500

Hi Mike,

Needs discussion at IPP WG meeting and probably at PWG F2F.

Pete Zehler is understandably not in favor of moving away from the
Printer MIB model of subunit elements - I agree with him.

Bear in mind that the value of "output-bin" is simply the value of
the "prtOutputName" element in Printer MIB - there's no obscurity
about correlation.

And "output-bin" as a sticky Job attribute was a late IPP addition
and is poorly supported (in my experience).  "output-bin-default"
has the same value as "prtOutputDefaultIndex->prtOutputName".

Cheers,
- Ira

Ira McDonald (Musician / Software Architect)
Chair - Linux Foundation Open Printing WG
Secretary - IEEE-ISTO Printer Working Group
Co-Chair - IEEE-ISTO PWG IPP WG
Co-Chair - TCG Trusted Mobility Solutions WG
Chair - TCG Embedded Systems Hardcopy SG
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, Nov 11, 2011 at 2:35 AM, Michael Sweet <[email-masked]> wrote:

> OK, so I am concerned that we are providing input tray information in two
> different places.  The current media-col-ready attribute provides most of
> the information in printer-input-tray - as of JPS3 the only missing
> information is the current level, max capacity, capacity unit, and status.
>  Seems like we could simply add those to the media-source-properties (or a
> new media-status) collection member attribute instead?
>
> As for printer-output-tray, I'm not sure how a Client could correlate the
> values with output-bin/output-bin-default/output-bin-supported?  I almost
> think we want an output-bin-ready or output-bin-status 1setOf collection
> attribute instead that correlates the output tray information to output-bin
> values.
>
> Cheers,
> - Ira
>

---

From: Mike Sweet <[email-masked]>
Date: Sat, 12 Nov 2011 15:43:24 -0800

Ira,

WRT output-bin vs prtOutputName, I have never seen a printer use the same names in both places (not that many printers support output-bin in the first place...) particularly for the usual case of a single output bin where the name is face-up or face-down.

Also, the existing media-source-properties member attribute was proposed by Pete; as you say this needs further discussion (probably a good hour of the f2f)

Sent from my iPad