[cups-devel] job status monitoring for AppSocket
Sam Hanes
sam at maltera.com
Tue Jul 12 06:50:00 PDT 2016
Hi All,
I have an HP LaserJet printer with an EIO JetDirect card set up in CUPS
via AppSocket (socket://printer:9100). It prints fine, but CUPS marks
the job completed as soon as it finishes sending the PostScript data. I
want it to report the printing status page-by-page and not mark the job
completed until the last page is in the output tray. Extensive
Google-ing hasn't revealed a documented way of getting that in CUPS.
Based on my reading of the printer's manuals, the correct way to do job
status monitoring for jobs submitted via AppSocket is the USTATUS
mechanism in HP's Printer Job Language (PJL). I've tried grepping the
CUPS sources for various PJL-related strings, but nothing turned up that
looks like it handles PJL USTATUS messages. All I see are things related
to setting job options via PJL and the PPD `*JCL` mechanism.
I'm using CUPS 1.7.2-0ubuntu1.7 installed from APT on Ubuntu 14.04, but
I repeated my search on git master as of 0f2f21a with the same results.
I also did a similar search in the sources of HPLIP, HP's official CUPS
driver. Their 'hp' backend does do a few things with PJL USTATUS, but it
doesn't report page progress and doesn't seem to handle reporting job
completion correctly.
I'm therefore assuming that CUPS doesn't currently support job status
reporting for printers using the `socket` backend unless it's supplied
by the driver, and HP doesn't supply it. Am I missing something?
I've started playing around with implementing a filter that adds a PJL
wrapper to the job, handles USTATUS reports via `cupsBackChannelRead`,
and passes them on with 'PAGE:' and 'STATUS:' messages. Is that the
correct approach for adding this kind of thing?
Right now I'm writing it as a port monitor since that sounds like the
right kind of filter based on what little documentation exists, but
since the built-in BCP and TBCP port monitors handle encoding and not
status monitoring I'm not sure. Should this be a port monitor or a
regular filter? If it should be a regular filter, how should I set that
up in the PPD?
Is this something that should be contributed to CUPS proper?
The work-in-progress filter can be found here:
https://github.com/Elemecca/cups-pjl-monitor
--
Sam Hanes
sam at maltera.com
More information about the cups-devel
mailing list