void Pad::reset_vibrate() { set_vibrate(0, 0); set_vibrate(1, 0); memset(vibrate, 0xFF, sizeof(vibrate)); vibrate[0] = 0x5A; }
/* PowerKey trigger */ static void wake_pwrtrigger(void) { pwrtrigger_time[1] = pwrtrigger_time[0]; pwrtrigger_time[0] = jiffies; if (pwrtrigger_time[0] - pwrtrigger_time[1] < TRIGGER_TIMEOUT) return; set_vibrate(vib_strength); schedule_work(&wake_presspwr_work); return; }
/* PowerKey trigger */ static void wake_pwrtrigger(bool camera_trigger) { pwrtrigger_time[1] = pwrtrigger_time[0]; pwrtrigger_time[0] = jiffies; if (pwrtrigger_time[0] - pwrtrigger_time[1] < TRIGGER_TIMEOUT) return; if (!camera_trigger) set_vibrate(vib_strength); else camera = true; schedule_work(&wake_presspwr_work); return; }
/* Doubletap2wake main function */ static void detect_doubletap2wake(int x, int y, bool st) { bool single_touch = st; #if DT2W_DEBUG pr_info(LOGTAG"x,y(%4d,%4d) tap_time_pre:%llu\n", x, y, tap_time_pre); #endif if (x < 100 || x > 980) return; if (dt2w_switch < 2 && y < 1000) return; if ((single_touch) && (dt2w_switch > 0) && (exec_count) && (touch_cnt)) { touch_cnt = false; if (touch_nr == 0) { new_touch(x, y); } else if (touch_nr == 1) { if ((calc_feather(x, x_pre) < DT2W_FEATHER) && (calc_feather(y, y_pre) < DT2W_FEATHER) && ((jiffies-tap_time_pre) < DT2W_TIME)) touch_nr++; else { doubletap2wake_reset(); new_touch(x, y); } } else { doubletap2wake_reset(); new_touch(x, y); } if ((touch_nr > 1)) { pr_info(LOGTAG"double tap\n"); exec_count = false; set_vibrate(vib_strength); if (gestures_switch) { report_gesture(5); } else { doubletap2wake_pwrtrigger(); } doubletap2wake_reset(); } } }