1. NAME▲
struct_ff_device - force-feedback part of an input device
2. SYNOPSIS ▲
struct
ff_device {
int
(*
upload) (
struct
input_dev *
dev, struct
ff_effect *
effect,struct
ff_effect *
old);
int
(*
erase) (
struct
input_dev *
dev, int
effect_id);
int
(*
playback) (
struct
input_dev *
dev, int
effect_id, int
value);
void
(*
set_gain) (
struct
input_dev *
dev, u16 gain);
void
(*
set_autocenter) (
struct
input_dev *
dev, u16 magnitude);
void
(*
destroy) (
struct
ff_device *
);
void
*
private;
unsigned
long
ffbit[BITS_TO_LONGS
(
FF_CNT)];
struct
mutex mutex;
int
max_effects;
struct
ff_effect *
effects;
struct
file *
effect_owners[];
}
;
3. MEMBERS ▲
upload
Called to upload an new effect into device
erase
Called to erase an effect from device
playback
Called to request device to start playing specified effect
set_gain
Called to set specified gain
set_autocenter
Called to auto-center device
destroy
called by input core when parent input device is being destroyed
private
driver-specific data, will be freed automatically
ffbit[BITS_TO_LONGS(FF_CNT)]
bitmap of force feedback capabilities truly supported by device (not emulated like ones in input_dev->ffbit)
mutex
mutex for serializing access to the device
max_effects
maximum number of effects supported by device
effects
pointer to an array of effects currently loaded into device
effect_owners[]
array of effect owners; when file handle owning an effect gets closed the effect is automatically erased
4. DESCRIPTION ▲
Every force-feedback device must implement upload and playback methods; erase is optional. set_gain and set_autocenter need only be implemented if driver sets up FF_GAIN and FF_AUTOCENTER bits.
Note that playback, set_gain and set_autocenter are called with dev->event_lock spinlock held and interrupts off and thus may not sleep.
5. COPYRIGHT ▲