Vojtech Pavlik wrote:
On Thu, Jul 07, 2005 at 05:20:59PM +0300, Anssi Hannula wrote:

But I think we should not apply (with or without 64-bit) the patch (not yet, anyway), as I'm (slowly) working on restructuring the kernel FF interface and developing a user space library (and writing a generic HID PID FF-driver).

That sounds interesting. However - I don't know of many devices that'd
be PID compliant except for the MS SideWinder ForceFeedback Pro 2.
All the Logitechs, as far as I know don't implement full PID.

Unfortunately so :( Do you have any info on how close the FF implementation of the common FF devices is to the PID standard? I had a poor choice of words in the previous message; I have only little code written, mainly I've been just thinking on a bunch of ideas on how we could do these things better (in other words, I've taken a summer break). What I have written, is the PID driver (not complete yet) and a simple FF driver for Zeroplus based devices (VID 0x0c12, PID 0x0005 and 0x0008, very cheap Playstation-pads with USB connector, I have two branded "XFX Executioner Dual Impact" (BTW, their Windows driver is crap, doesn't support multiple devices and hangs Control Panel windows continuosly)). I could post a patch for the Zeroplus support, but with current FF driver model, that would be 90% copy-paste of hid-tmff.c & hid-lgff.c.


As a matter of fact, I have two (lengthy) questions:

1. What would be the best way to decide when to delete the effects of a specific process from the device? Currently it is done when flush is called. However, if one process holds multiple fd's to the interface (for example input fd through some gaming-input library and FF fd with the FF library), when any of these closes, all effects are deleted. Good way to overcome this would be fd-specific effects instead of process-specific, but I've got no idea how that would be done. One possible way would be introducing a new device file solely for the FF (so there would be no reason to hold multiple fd's to this file by the same process), but would that be overkill?


I don't think that the fact that when a process holds the device open
twice, the first close flushes the FF effects is that big a problem.

Ok.

2. Many simpler devices do not have any effect memory, for example there is just one HID report that is used to apply an effect and stop it. They could share very much of their timing code (they have effect memories and timers implemented in software in the kernel). These would also need software handling of envelopes, which is currently not implemented at all (also some effects could possibly be software emulated). So, should these be implemented by the kernel at all or should they implemented in the userspace library?
Probably both. The timing sensitive stuff in the kernel, all the rest in
an userspace library.


Hmm, that wouldn't leave much stuff into the userspace library (Effect storage for devices without memory, converting effects with envelopes to magnitude+time -sequences for devices without envelope support, etc). Maybe we should implement everything in the kernel... I have to think about it, maybe something big that should be implemented in userspace comes to my mind.

--
Anssi Hannula

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to