Lines Matching defs:effect
274 struct ff_effect *effect)
279 effect->u.constant.level);
288 static int pidff_needs_set_constant(struct ff_effect *effect,
291 return effect->u.constant.level != old->u.constant.level;
295 * Send set effect report to the device
298 struct ff_effect *effect)
304 pidff->set_effect[PID_DURATION].value[0] = effect->replay.length;
305 pidff->set_effect[PID_TRIGGER_BUTTON].value[0] = effect->trigger.button;
307 effect->trigger.interval;
312 pidff_rescale(effect->direction, 0xffff,
314 pidff->set_effect[PID_START_DELAY].value[0] = effect->replay.delay;
323 static int pidff_needs_set_effect(struct ff_effect *effect,
326 return effect->replay.length != old->replay.length ||
327 effect->trigger.interval != old->trigger.interval ||
328 effect->trigger.button != old->trigger.button ||
329 effect->direction != old->direction ||
330 effect->replay.delay != old->replay.delay;
334 * Send periodic effect report to the device
337 struct ff_effect *effect)
342 effect->u.periodic.magnitude);
344 effect->u.periodic.offset);
345 pidff_set(&pidff->set_periodic[PID_PHASE], effect->u.periodic.phase);
346 pidff->set_periodic[PID_PERIOD].value[0] = effect->u.periodic.period;
354 * Test if periodic effect parameters have changed
356 static int pidff_needs_set_periodic(struct ff_effect *effect,
359 return effect->u.periodic.magnitude != old->u.periodic.magnitude ||
360 effect->u.periodic.offset != old->u.periodic.offset ||
361 effect->u.periodic.phase != old->u.periodic.phase ||
362 effect->u.periodic.period != old->u.periodic.period;
366 * Send condition effect reports to the device
369 struct ff_effect *effect)
379 effect->u.condition[i].center);
381 effect->u.condition[i].right_coeff);
383 effect->u.condition[i].left_coeff);
385 effect->u.condition[i].right_saturation);
387 effect->u.condition[i].left_saturation);
389 effect->u.condition[i].deadband);
396 * Test if condition effect parameters have changed
398 static int pidff_needs_set_condition(struct ff_effect *effect,
405 struct ff_condition_effect *cond = &effect->u.condition[i];
423 struct ff_effect *effect)
428 effect->u.ramp.start_level);
430 effect->u.ramp.end_level);
438 static int pidff_needs_set_ramp(struct ff_effect *effect, struct ff_effect *old)
440 return effect->u.ramp.start_level != old->u.ramp.start_level ||
441 effect->u.ramp.end_level != old->u.ramp.end_level;
445 * Send a request for effect upload to the device
489 * Play the effect with PID id n times
509 * Play the effect with effect id @effect_id for @value times
521 * Erase effect with PID id
531 * Stop and erase effect with effect_id
541 prevent the effect removal. */
552 static int pidff_upload_effect(struct input_dev *dev, struct ff_effect *effect,
562 pidff->pid_id[effect->id];
565 switch (effect->type) {
573 if (!old || pidff_needs_set_effect(effect, old))
574 pidff_set_effect_report(pidff, effect);
575 if (!old || pidff_needs_set_constant(effect, old))
576 pidff_set_constant_force_report(pidff, effect);
578 pidff_needs_set_envelope(&effect->u.constant.envelope,
581 &effect->u.constant.envelope);
586 switch (effect->u.periodic.waveform) {
612 if (!old || pidff_needs_set_effect(effect, old))
613 pidff_set_effect_report(pidff, effect);
614 if (!old || pidff_needs_set_periodic(effect, old))
615 pidff_set_periodic_report(pidff, effect);
617 pidff_needs_set_envelope(&effect->u.periodic.envelope,
620 &effect->u.periodic.envelope);
630 if (!old || pidff_needs_set_effect(effect, old))
631 pidff_set_effect_report(pidff, effect);
632 if (!old || pidff_needs_set_ramp(effect, old))
633 pidff_set_ramp_force_report(pidff, effect);
635 pidff_needs_set_envelope(&effect->u.ramp.envelope,
638 &effect->u.ramp.envelope);
648 if (!old || pidff_needs_set_effect(effect, old))
649 pidff_set_effect_report(pidff, effect);
650 if (!old || pidff_needs_set_condition(effect, old))
651 pidff_set_condition_report(pidff, effect);
661 if (!old || pidff_needs_set_effect(effect, old))
662 pidff_set_effect_report(pidff, effect);
663 if (!old || pidff_needs_set_condition(effect, old))
664 pidff_set_condition_report(pidff, effect);
674 if (!old || pidff_needs_set_effect(effect, old))
675 pidff_set_effect_report(pidff, effect);
676 if (!old || pidff_needs_set_condition(effect, old))
677 pidff_set_condition_report(pidff, effect);
687 if (!old || pidff_needs_set_effect(effect, old))
688 pidff_set_effect_report(pidff, effect);
689 if (!old || pidff_needs_set_condition(effect, old))
690 pidff_set_condition_report(pidff, effect);
699 pidff->pid_id[effect->id] =
946 hid_err(pidff->hid, "effect lists not found\n");
966 hid_err(pidff->hid, "effect operation field not found\n");
978 hid_err(pidff->hid, "no effect types found\n");
993 hid_err(pidff->hid, "effect operation identifiers not found\n");
1001 * Find the implemented effect types
1013 "effect type number %d is invalid\n", i);
1097 "has constant effect but no envelope\n");
1100 "has ramp effect but no envelope\n");
1104 "has periodic effect but no envelope\n");
1109 hid_warn(pidff->hid, "unknown constant effect layout\n");
1115 hid_warn(pidff->hid, "unknown ramp effect layout\n");
1124 hid_warn(pidff->hid, "unknown condition effect layout\n");
1133 hid_warn(pidff->hid, "unknown periodic effect layout\n");
1196 * effect upload and cancel it immediately. If the approved
1197 * effect id was one above the minimum, then we assume the first
1198 * effect id is a built-in spring type effect used for autocenter