Pong: vibrator: Make haptics a bit tighter
Signed-off-by: Abhay Singh Gill <abhaygill017@gmail.com>
This commit is contained in:
committed by
hiroshi
parent
db352430bf
commit
76148020cb
@@ -416,25 +416,20 @@ int LedVibratorDevice::setAmplitude(float amplitude) {
|
||||
int gain = 0;
|
||||
|
||||
mLevel = amplitude * 3;
|
||||
|
||||
if (mTimeoutMs < 10) {
|
||||
gain = 25 + 4 * mTimeoutMs; // Small but noticeable tap
|
||||
} else if (mTimeoutMs < 30) {
|
||||
gain = 65 + 2.5 * (mTimeoutMs - 10); // Sharper click feel
|
||||
} else if (mTimeoutMs < 60) {
|
||||
gain = 100 + 1.5 * (mTimeoutMs - 30); // Heavy but controlled
|
||||
} else {
|
||||
gain = 128; // Max out for longest presses
|
||||
}
|
||||
|
||||
if (mTimeoutMs < 20) {
|
||||
gain = 4 + 4.6*mTimeoutMs;
|
||||
ret |= write_value(LED_DEVICE "/index", "1");
|
||||
ret |= write_value(LED_DEVICE "/loop", "0 0");
|
||||
ret |= write_value(LED_DEVICE "/vmax", "9000");
|
||||
ret |= write_value(LED_DEVICE "/gain", gain);
|
||||
ret |= write_value(LED_DEVICE "/brightness", "1");
|
||||
} else if (mTimeoutMs < 40) {
|
||||
gain = 4 + 3.1*mTimeoutMs;
|
||||
ret |= write_value(LED_DEVICE "/index", "1");
|
||||
ret |= write_value(LED_DEVICE "/loop", "0 0");
|
||||
ret |= write_value(LED_DEVICE "/vmax", "9000");
|
||||
ret |= write_value(LED_DEVICE "/gain", gain);
|
||||
ret |= write_value(LED_DEVICE "/brightness", "1");
|
||||
} else if (mTimeoutMs < 101) {
|
||||
gain = 4 + 2.5*mTimeoutMs;
|
||||
if (gain > 153)
|
||||
gain = 153; // (Should never exceed this)
|
||||
if (gain > 128) gain = 128;
|
||||
|
||||
if (mTimeoutMs < 101) {
|
||||
ret |= write_value(LED_DEVICE "/index", "1");
|
||||
ret |= write_value(LED_DEVICE "/loop", "0 0");
|
||||
ret |= write_value(LED_DEVICE "/vmax", "9000");
|
||||
@@ -442,9 +437,9 @@ int LedVibratorDevice::setAmplitude(float amplitude) {
|
||||
ret |= write_value(LED_DEVICE "/brightness", "1");
|
||||
} else {
|
||||
ret |= write_value(LED_DEVICE "/index", "4");
|
||||
ret |= write_value(LED_DEVICE "/vmax", "8400");
|
||||
ret |= write_value(LED_DEVICE "/vmax", "9000");
|
||||
ret |= write_value(LED_DEVICE "/gain", "0x80");
|
||||
ret |= write_value(LED_DEVICE "/brightness", "1");
|
||||
ret |= write_value(LED_DEVICE "/activate", "1");
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -542,63 +537,63 @@ ndk::ScopedAStatus Vibrator::perform(Effect effect, EffectStrength es, const std
|
||||
ledVib.write_value(LED_DEVICE "/duration", "10");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "8500");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "128");
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::DOUBLE_CLICK:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "13");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "10");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "8500");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "128");
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
usleep(100 * 1000);
|
||||
ledVib.write_value(LED_DEVICE "/duration", "13");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "10");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "8500");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "128");
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::HEAVY_CLICK:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "10");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "16");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/gain", "128");
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::TICK:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "30");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "6");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "8000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "100"); // Softer feel
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::THUD:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "40");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "14");
|
||||
ledVib.write_value(LED_DEVICE "/index", "4");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "143");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "110"); // Slightly lower than heavy click
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::POP:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "13");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "9");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", 153);
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "8700");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "120"); // Between CLICK and HEAVY_CLICK
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
case Effect::TEXTURE_TICK:
|
||||
ledVib.write_value(LED_DEVICE "/duration", "10");
|
||||
ledVib.write_value(LED_DEVICE "/duration", "5");
|
||||
ledVib.write_value(LED_DEVICE "/index", "1");
|
||||
ledVib.write_value(LED_DEVICE "/loop", "0 0");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "9000");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "0x80");
|
||||
ledVib.write_value(LED_DEVICE "/vmax", "7800");
|
||||
ledVib.write_value(LED_DEVICE "/gain", "90"); // Softest response
|
||||
ledVib.write_value(LED_DEVICE "/brightness", "1");
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -4,11 +4,10 @@ service vendor.qti.vibrator /vendor/bin/hw/vendor.qti.hardware.vibrator.service.
|
||||
group system input
|
||||
|
||||
on late-init
|
||||
chown system system /sys/class/leds/aw_vibrator/brightness
|
||||
chown system system /sys/class/leds/aw_vibrator/activate
|
||||
chown system system /sys/class/leds/aw_vibrator/duration
|
||||
chown system system /sys/class/leds/aw_vibrator/state
|
||||
chown system system /sys/class/leds/aw_vibrator/brightness
|
||||
chown system system /sys/class/leds/aw_vibrator/gain
|
||||
chown system system /sys/class/leds/aw_vibrator/loop
|
||||
chown system system /sys/class/leds/aw_vibrator/vmax
|
||||
chown system system /sys/class/leds/aw_vibrator/index
|
||||
chown system system /sys/class/leds/aw_vibrator/index
|
||||
Reference in New Issue
Block a user