Re: USB interrupt URB programming question

Sven Anders <[email protected]>
Newsgroups gmane.linux.usb.devel
Organization ANDURAS AG
Message-ID <[email protected]>
Alan Stern wrote:

>>> Isn't that exactly what it's supposed to do?  What good is a driver if it
>>> doesn't wait for the device to send data?
>> Right, it waits, but I does not if I want it to wait...
> 
> You mean, sometimes you want it to wait for data and sometimes you don't?  
> I still don't understand.  Is the real problem caused by the driver or is 
> it caused by the device?

I'm not sure. Because I do not have any further documentation about the
device, I must solve it without it.

>>> Your question isn't clear.  It looks like you're asking how to restart the
>>> transfer.  The answer is obvious: Change the driver back so that it _does_
>>> call usb_submit_urb() inside atp_complete().
>> Yes will call the 'usb_submit_urb' in each invocation of the 'atp_complete'
>> function. And if I do this the 'atp_complete' function will be called
>> continuously.
> 
> That isn't right.  It should be called only when the device transfers some 
> data, not continuously.  Are you saying that the device constantly sends 
> data, even when you aren't touching the pad?  You should try using usbmon 
> to examine the data you receive.

It constantly sent data, because the touchpad consist of temperature sensors
and the driver has to constantly save the current value to get precise
readings. I think that is the reason why the device did not stop sending
the data.

>> My problem is: If I decide (upon the data I received from the touchpad), that
>> there isn't a finger any longer on the pad, I want to stop the calling of the
>> 'atp_complete' function until I'm sure the touchpad is touched again.
> 
> It sounds like you need to tell the touchpad not to send any data when it 
> isn't being touched.

Lack of documentation is here the problem. Does anybody know, where I can get
the doc for Geyser (is this the name of the firm?) Touchpads? :-(

>> After I suspend and resume the computer this works. How can I archive this
>> within the interrupt-handler-code?
> 
> How can you prevent the completion handler from being called?  There are
> two ways: (1) Stop resubmitting the URB, or (2) Tell the device not to
> send any data.

I tried to stop resubmitting (by NOT calling "usb_submit_urb" again) and I
hoped the the interrupt handler will continue when the touchpad is pressed
again, but it does not work.

>> Another possibility (for me) would be to make the interval (in the untouched
>> times)
>> longer. Is this possible?
> 
> The interval doesn't matter very much.  The touchpad should not be sending 
> any data at all when nothing is happening.

A longer interval would solve it in some way:
  I could get constantly new temperature update (each second or more) and if
  the touchpad is touch, I can reduce the interval to the normal settings.

> Does the touchpad use the HID protocol?  If it does, did you remember to 
> send a Set-Idle request to prevent the device from sending any data when 
> no events have occurred?

I will check!


For explanation:
 I want this to reduce the power consumption by letting the processor enter
 the power-saving states more often (and longer).


Regards
 Sven

-- 
 Sven Anders <[email protected]>                 () Ascii Ribbon Campaign
                                                 /\ Support plain text e-mail
 ANDURAS service solutions AG
 Innstra?e 71 - 94036 Passau - Germany
 Web: www.anduras.de - Tel: +49 (0)851-4 90 50-0 - Fax: +49 (0)851-4 90 50-55

Rechtsform: Aktiengesellschaft - Sitz: Passau - Amtsgericht Passau HRB 6032
Mitglieder des Vorstands: Sven Anders, Marcus Junker
Vorsitzender des Aufsichtsrats: Dipl. Kfm. Thomas Tra"ger

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.