On Tue, 24 Apr 2001, David Brownell wrote:
>> Just kidding - but *why* was the Default Control Pipe chosen as the main
>> communication pipe? Argh!!!
>
>What's the problem with that? I'm curious. Every interface includes
>endpoint zero (default control pipe) ...
That's the problem! The DCP breaks the entire structure of USB. It is 'shared'
by all interfaces, yet no other endpoints can be shared. And there's also the
general Control endpoint problem of being bidirectional when part of your
address is a direction bit! Why oh why couldn't it be *2* bits? endpoint are
tristate (in, out, bi)! Instead it should be 'ignored', but only for Control
endpoints...?!? And then, for Control endpoints the recipient of the data is
specified in the header! But for all other endpoints, the recipient is the
endpoint itself, i.e. you can't cross interface boundries. The entire idea of
having a 'pipe' from the application to an endpoint is broken by being able to
talk to any part of the device through any Control pipe.
Control pipes (and especially the DCP) are a big time special case. Basically a
backdoor that bypasses the nice structure of a USB device. I think Control
pipes (and the DCP especially) got extended way, way beyond what they should be
doing. They should be used for device control (initialization, setting
interfaces, get descriptors, etc) but using them for actual communication is
IMHO bad.
Sorry for the rant. ;-)
--
Dan Streetman
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
http://lists.sourceforge.net/lists/listinfo/linux-usb-devel