envelope
params[8] = effect->u.constant.envelope.attack_level >> 7;
params[9] = effect->u.constant.envelope.attack_length >> 8;
params[10] = effect->u.constant.envelope.attack_length & 255;
params[11] = effect->u.constant.envelope.fade_level >> 7;
params[12] = effect->u.constant.envelope.fade_length >> 8;
params[13] = effect->u.constant.envelope.fade_length & 255;
effect->u.constant.envelope.attack_level,
effect->u.constant.envelope.attack_length,
effect->u.constant.envelope.fade_level,
effect->u.constant.envelope.fade_length);
params[14] = effect->u.periodic.envelope.attack_level >> 7;
params[15] = effect->u.periodic.envelope.attack_length >> 8;
params[16] = effect->u.periodic.envelope.attack_length & 255;
params[17] = effect->u.periodic.envelope.fade_level >> 7;
params[18] = effect->u.periodic.envelope.fade_length >> 8;
params[19] = effect->u.periodic.envelope.fade_length & 255;
effect->u.periodic.envelope.attack_level,
effect->u.periodic.envelope.attack_length,
effect->u.periodic.envelope.fade_level,
effect->u.periodic.envelope.fade_length);
params[10] = effect->u.ramp.envelope.attack_level >> 7;
params[11] = effect->u.ramp.envelope.attack_length >> 8;
params[12] = effect->u.ramp.envelope.attack_length & 255;
params[13] = effect->u.ramp.envelope.fade_level >> 7;
params[14] = effect->u.ramp.envelope.fade_length >> 8;
params[15] = effect->u.ramp.envelope.fade_length & 255;
effect->u.ramp.envelope.attack_level,
effect->u.ramp.envelope.attack_length,
effect->u.ramp.envelope.fade_level,
effect->u.ramp.envelope.fade_length);
struct ff_envelope *envelope)
pidff_rescale(envelope->attack_level >
S16_MAX ? S16_MAX : envelope->attack_level, S16_MAX,
pidff_rescale(envelope->fade_level >
S16_MAX ? S16_MAX : envelope->fade_level, S16_MAX,
envelope->attack_length);
envelope->fade_length);
static int pidff_needs_set_envelope(struct ff_envelope *envelope,
needs_new_envelope = envelope->attack_level != 0 ||
envelope->fade_level != 0 ||
envelope->attack_length != 0 ||
envelope->fade_length != 0;
return envelope->attack_level != old->attack_level ||
envelope->fade_level != old->fade_level ||
envelope->attack_length != old->attack_length ||
envelope->fade_length != old->fade_length;
({ if (pidff_needs_set_envelope(&effect->u.type.envelope, \
old ? &old->u.type.envelope : NULL)) \
pidff_set_envelope_report(pidff, &effect->u.type.envelope); })
struct envelope *env = ctx;
static void envelope_detector_setup_compare(struct envelope *env)
struct envelope *env = container_of(work, struct envelope,
struct envelope *env = iio_priv(indio_dev);
struct envelope *env = iio_priv(indio_dev);
struct envelope *env = iio_priv(indio_dev);
struct envelope *env = iio_priv(indio_dev);
struct envelope *env = iio_priv(indio_dev);
struct envelope *env;
static int envelope_detector_comp_latch(struct envelope *env)
effect->u.periodic.envelope.attack_length = 0;
effect->u.periodic.envelope.attack_level = 0;
effect->u.periodic.envelope.fade_length = 0;
effect->u.periodic.envelope.fade_level = 0;
struct ff_envelope *envelope)
if (envelope->attack_length &&
state->play_at + msecs_to_jiffies(envelope->attack_length))) {
value, envelope->attack_level);
time_of_envelope = envelope->attack_length;
envelope_level = min_t(u16, envelope->attack_level, 0x7fff);
} else if (envelope->fade_length && effect->replay.length &&
state->stop_at - msecs_to_jiffies(envelope->fade_length)) &&
time_of_envelope = envelope->fade_length;
envelope_level = min_t(u16, envelope->fade_level, 0x7fff);
&new->u.constant.envelope));
&new->u.periodic.envelope);
return &effect->u.periodic.envelope;
return &effect->u.constant.envelope;
const struct ff_envelope *envelope = get_envelope(state->effect);
if (envelope->attack_length) {
msecs_to_jiffies(envelope->attack_length);
if (envelope->fade_length) {
msecs_to_jiffies(envelope->fade_length);
struct ff_envelope envelope;
if (old->u.constant.envelope.attack_length != effect->u.constant.envelope.attack_length
|| old->u.constant.envelope.attack_level != effect->u.constant.envelope.attack_level
|| old->u.constant.envelope.fade_length != effect->u.constant.envelope.fade_length
|| old->u.constant.envelope.fade_level != effect->u.constant.envelope.fade_level)
if (old->u.periodic.envelope.attack_length != effect->u.periodic.envelope.attack_length
|| old->u.periodic.envelope.attack_level != effect->u.periodic.envelope.attack_level
|| old->u.periodic.envelope.fade_length != effect->u.periodic.envelope.fade_length
|| old->u.periodic.envelope.fade_level != effect->u.periodic.envelope.fade_level)
effect->u.periodic.envelope.attack_length,
effect->u.periodic.envelope.attack_level,
effect->u.periodic.envelope.fade_length,
effect->u.periodic.envelope.fade_level);
effect->u.constant.envelope.attack_length,
effect->u.constant.envelope.attack_level,
effect->u.constant.envelope.fade_length,
effect->u.constant.envelope.fade_level);
struct ff_envelope envelope;
struct ff_envelope envelope;
struct ff_envelope envelope;