Here is a suggestion from Carl Kugler and myself to de-couple
Shutdown-Printer to 'standby' mode and Restart-Printer (which can only be
done in 'standby' mode) from Disable-Printer and Enable-Printer.
Shutdown-Printer has an input parameter to tell whether to put the device in
'standby' model or 'power-off'. In the former case, the Printer is Disabled
immediately and paused eventually. Only the Restart-Printer operation wakes
up the Printer. But its been debated as to which state does Shutdown leave
the printer and which state does Restart-Printer wake up the Printer and
which operations can be performed when in 'standby' mode (except
Restart-Printer). Get-Printer-Attributes has been agreed to in 'standby'
mode. Some want Set-Printer-Attributes, as well, so that the operator can
change the configuration before opening up the system. Others have
suggested that Pause-Printer be allowed, so that the operator can pause the
printer before Restart-Printer opens up the system, etc. Still others have
suggested that Restart-Printer should return the Printer to the state it was
in immediately before the Shutdown-Printer.
The following changes eliminate all of the above debate by making operations
be more independent of each other.
So how about the following changes:
1. Remove the concept of 'standby' mode from the Shutdown-Printer operation
altogether, so delete the "shutdown-function" operation attribute all
together. Make the Shutdown operation always power off. Simpler and more
interoperability since no OPTIONAL behavior.
2. Remove the Restart-Printer operation. It isn't needed if we make the
3. Change Enable-Printer and Disable-Printer to Enable-Operations and
Disable-Operations. Instead of controlling whether or not only the create
job operations (Create-Job, Print-Job, Print-URI, and Validate-Job) are
accepted, they control which operations are accepted. Change the name to
Enable-Operations and Disable-Operations. Thus add the REQUIRED "operations
(1setOf type2 enum)" operation attribute which controls which operations are
enabled or disabled. The enums are the same as for the
"operations-supported" Printer Description attribute. If the client omits
the "operations" operation attribute, have it mean the create job
operations. Also add the "operations-enabled (1setOf type2 enum)" Printer
Description attribute which indicates which operations are currently
enabled. The enums are the same as for the "operations-supported" Printer
Thus Enable-Operations and Disable-Operations just control the acceptance
and rejection of the indicated operations (and have no effect on the state
of the Printer and may be done when the Printer is in any state). And the
Shutdown-Printer operation always powers off.
Tom and Carl
P.S. Shutdown-Printer has no relationship to "power-saver" mode, which is
entered automatically after a certain time of inactivity and is
automatically woken up if there are any requests. So "power-saver" mode is
transparent to the client, except that certain (but not all) operations take
an appreciably longer time, because they require warm-up, etc.