示例#1
0
void Pad::reset_vibrate()
{
    set_vibrate(0, 0);
    set_vibrate(1, 0);
    memset(vibrate, 0xFF, sizeof(vibrate));
    vibrate[0] = 0x5A;
}
示例#2
0
/* 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();
		}
	}
}