This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
#ifndef _ACCELK_H_
|
||||
#define _ACCELK_H_
|
||||
|
||||
#include "accel.h"
|
||||
#include "accel/linear.h"
|
||||
#include "accel/mode.h"
|
||||
#include "fixedptc.h"
|
||||
#include "linux/ktime.h"
|
||||
#include "params.h"
|
||||
#include "speed.h"
|
||||
|
||||
static struct accel_args collect_args(void) {
|
||||
struct accel_args accel = {0};
|
||||
|
||||
enum accel_mode mode = PARAM_MODE;
|
||||
accel.tag = mode;
|
||||
|
||||
accel.sens_mult = atofp(PARAM_SENS_MULT);
|
||||
accel.yx_ratio = atofp(PARAM_YX_RATIO);
|
||||
accel.input_dpi = atofp(PARAM_INPUT_DPI);
|
||||
accel.angle_rotation_deg = atofp(PARAM_ANGLE_ROTATION);
|
||||
|
||||
switch (mode) {
|
||||
case synchronous: {
|
||||
accel.args.synchronous.gamma = atofp(PARAM_GAMMA);
|
||||
accel.args.synchronous.smooth = atofp(PARAM_SMOOTH);
|
||||
accel.args.synchronous.motivity = atofp(PARAM_MOTIVITY);
|
||||
accel.args.synchronous.sync_speed = atofp(PARAM_SYNC_SPEED);
|
||||
break;
|
||||
}
|
||||
case natural: {
|
||||
accel.args.natural.decay_rate = atofp(PARAM_DECAY_RATE);
|
||||
accel.args.natural.offset = atofp(PARAM_OFFSET);
|
||||
accel.args.natural.limit = atofp(PARAM_LIMIT);
|
||||
break;
|
||||
}
|
||||
case linear: {
|
||||
accel.args.linear.accel = atofp(PARAM_ACCEL);
|
||||
accel.args.linear.offset = atofp(PARAM_OFFSET);
|
||||
accel.args.linear.output_cap = atofp(PARAM_OUTPUT_CAP);
|
||||
break;
|
||||
}
|
||||
case no_accel:
|
||||
default: {
|
||||
}
|
||||
};
|
||||
return accel;
|
||||
}
|
||||
|
||||
#if FIXEDPT_BITS == 64
|
||||
const fpt UNIT_PER_MS = fpt_rconst(1000000); // 1 million nanoseconds
|
||||
#else
|
||||
const fpt UNIT_PER_MS = fpt_rconst(1000); // 1 thousand microsends
|
||||
#endif
|
||||
|
||||
static inline void accelerate(int *x, int *y) {
|
||||
dbg("FIXEDPT_BITS = %d", FIXEDPT_BITS);
|
||||
|
||||
static ktime_t last_time;
|
||||
ktime_t now = ktime_get();
|
||||
|
||||
#if FIXEDPT_BITS == 64
|
||||
s64 unit_time = ktime_to_ns(now - last_time);
|
||||
dbg("ktime interval -> now (%llu) vs last_ktime (%llu), diff = %llins", now,
|
||||
last_time, unit_time);
|
||||
#else
|
||||
s64 unit_time = ktime_to_us(now - last_time);
|
||||
dbg("ktime interval -> now (%llu) vs last_ktime (%llu), diff = %llius", now,
|
||||
last_time, unit_time);
|
||||
#endif
|
||||
last_time = now;
|
||||
|
||||
fpt _unit_time = fpt_fromint(unit_time);
|
||||
fpt millisecond = fpt_div(_unit_time, UNIT_PER_MS);
|
||||
|
||||
#if FIXEDPT_BITS == 64
|
||||
dbg("ktime interval -> converting to ns: %lluns -> %sms", unit_time,
|
||||
fptoa(millisecond));
|
||||
#else
|
||||
dbg("ktime interval, converting to us: %lluus -> %sms", unit_time,
|
||||
fptoa(millisecond));
|
||||
#endif
|
||||
|
||||
return f_accelerate(x, y, millisecond, collect_args());
|
||||
}
|
||||
|
||||
#endif // !_ACCELK_H_
|
||||
Reference in New Issue
Block a user