From: Till Kamppeter <till.kamppeter@gmail.com>
To: Michael Sweet <msweet@apple.com>
Cc: printing-architecture@lists.linux-foundation.org
Subject: Re: [Printing-architecture] Removal of features in CUPS
Date: Tue, 07 Feb 2012 19:07:49 +0100 [thread overview]
Message-ID: <4F316875.2020105@gmail.com> (raw)
In-Reply-To: <CD26E4AD-B675-4850-AAC4-BF07BDA5AA2B@apple.com>
On 02/03/2012 05:32 PM, Michael Sweet wrote:
>
> We continue to develop and support the USB backend, although my personal
> development time is (unfortunately) quite limited. I will be integrating
> Till's libusb 1.0 patch in the near future, so at least the current
> functionality will be usable with both the old and new libusb.
>
> For bidirectional printing support, we need to adopt the method used for
> the Darwin/OS X USB backend where there is a separate read thread that
> just does a bulk-in every 200ms. That provides good latency for drivers
> that need it while avoiding the performance hit for printers that just
> return a copy of their 1284 Device ID with status info every time.
>
> Depending on my time constraints and whether libusb 1.0 has the
> necessary support (I think so, but it has been a while since I looked),
> we may be able to get bidi support in CUPS 1.6. The big hurdle was
> moving to libusb 1.0, and Till has already done that work.
As mentioned, I have done the port of the USB backend from libusb 0.1.x
to libusb 1.0.x (http://www.cups.org/str.php?L3477, scheduled for CUPS
1.6). It was no problem to do this port. libusb 1.0.x contains all
needed functions. The new libusb-1.0.x-based backend performs as well as
the old one not better, not worse, but is now backed by a fully
upstream-supported library.
Now I am thinking about adding bi-di support to the USB backend. My
first approach was using the new asynchronous API of libusb 1.0.x, doing
something similar to the usbmuxd (this is a daemon for Linux to
communicate with iOS devices on USB), but comparing the complexity of
usbmuxd compared to the Darwin version of the USB CUPS backend
(backend/usb-darwin.c) I am tending to do the approach of three threads,
generated by libpthread: Job transport, back channel and side channel,
including the reading of the back-channel of the device being done only
every 200ms and the reading only ebding several seconds after the job
transport has finished, to assure to get all the printer's answers and
the printer getting back into its initial state for the next job.
Using the libpthread approach will also make the libusb-based backend
very similar to the Darwin backend, which should make maintenance of
CUPS easier.
Mike, what do you think about that?
I am working on this to get this done before Ubuntu's Feature Freeze on
Feb 16, as in Oneiric (11.10) we have lost the USB bi-di feature by
deprecating the usblp kernel module, causing bugs with several
closed-source manufacturer-supplied drivers.
Till
next prev parent reply other threads:[~2012-02-07 18:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-03 16:32 [Printing-architecture] Removal of features in CUPS Michael Sweet
2012-02-03 17:09 ` Michael Sweet
2012-02-07 18:07 ` Till Kamppeter [this message]
2012-02-08 16:19 ` Michael Sweet
2012-02-08 21:58 ` Till Kamppeter
2012-02-09 2:25 ` Michael Sweet
-- strict thread matches above, loose matches on Subject: below --
2012-01-12 0:06 Till Kamppeter
2012-01-12 10:51 ` Tim Waugh
2012-01-12 11:09 ` Till Kamppeter
2012-01-12 11:56 ` Tim Waugh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F316875.2020105@gmail.com \
--to=till.kamppeter@gmail.com \
--cc=msweet@apple.com \
--cc=printing-architecture@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.