static void s2w_input_event(struct input_handle *handle, unsigned int type, unsigned int code, int value) { #if S2W_DEBUG pr_info("sweep2wake: code: %s|%u, val: %i\n", ((code==ABS_MT_POSITION_X) ? "X" : (code==ABS_MT_POSITION_Y) ? "Y" : (code==ABS_MT_TRACKING_ID) ? "ID" : "undef"), code, value); #endif if (code == ABS_MT_SLOT) { sweep2wake_reset(); return; } if (code == ABS_MT_TRACKING_ID && value == -1) { sweep2wake_reset(); return; } if (code == ABS_MT_POSITION_X) { touch_x = value; touch_x_called = true; } if (code == ABS_MT_POSITION_Y) { touch_y = value; touch_y_called = true; } if (touch_x_called && touch_y_called) { touch_x_called = false; touch_y_called = false; queue_work_on(0, s2w_input_wq, &s2w_input_work); } }
static void s2s_input_event(struct input_handle *handle, unsigned int type, unsigned int code, int value) { if (code == ABS_MT_SLOT) { sweep2wake_reset(); return; } if (code == ABS_MT_TRACKING_ID && value == -1) { sweep2wake_reset(); return; } if (code == ABS_MT_POSITION_X) { touch_x = value; touch_x_called = true; } if (code == ABS_MT_POSITION_Y) { touch_y = value; touch_y_called = true; } if (touch_x_called && touch_y_called) { touch_x_called = false; touch_y_called = false; queue_work_on(0, s2s_input_wq, &s2s_input_work); } }
static void wg_input_event(struct input_handle *handle, unsigned int type, unsigned int code, int value) { if (scr_suspended() && code == ABS_MT_POSITION_X) { value -= 5000; } #if WG_DEBUG pr_info("wg: code: %s|%u, val: %i\n", ((code==ABS_MT_POSITION_X) ? "X" : (code==ABS_MT_POSITION_Y) ? "Y" : (code==ABS_MT_TRACKING_ID) ? "ID" : "undef"), code, value); #endif if (code == ABS_MT_SLOT) { sweep2wake_reset(); doubletap2wake_reset(); return; } if (code == ABS_MT_TRACKING_ID && value == -1) { sweep2wake_reset(); touch_cnt = true; queue_work_on(0, dt2w_input_wq, &dt2w_input_work); return; } if (code == ABS_MT_POSITION_X) { touch_x = value; touch_x_called = true; } if (code == ABS_MT_POSITION_Y) { touch_y = value; touch_y_called = true; } if (touch_x_called && touch_y_called) { touch_x_called = false; touch_y_called = false; queue_work_on(0, s2w_input_wq, &s2w_input_work); } else if (!scr_suspended() && touch_x_called && !touch_y_called) { touch_x_called = false; touch_y_called = false; queue_work_on(0, s2w_input_wq, &s2w_input_work); } }
static void detect_sweep2wake_h(int x, int y, bool st, bool wake) { int prevx = 0, nextx = 0; bool single_touch = st; if (firstx == 0) { firstx = x; firstx_time = jiffies; } if (!wake && y < S2W_Y_LIMIT) { sweep2wake_reset(); return; } #if S2W_DEBUG pr_info(LOGTAG"x,y(%4d,%4d) single:%s\n", x, y, (single_touch) ? "true" : "false"); #endif //left->right if (firstx < 510 && single_touch && ((wake && (s2w_switch & SWEEP_RIGHT)) || (!wake && (s2s_switch & SWEEP_RIGHT)))) { prevx = 0; nextx = S2W_X_B1; if ((barrierx[0] == true) || ((x > prevx) && (x < nextx))) { prevx = nextx; nextx = S2W_X_B2; barrierx[0] = true; if ((barrierx[1] == true) || ((x > prevx) && (x < nextx))) { prevx = nextx; barrierx[1] = true; if (x > prevx) { if (x > (S2W_X_MAX - S2W_X_FINAL)) { if (exec_countx && (jiffies - firstx_time < SWEEP_TIMEOUT)) { pr_info(LOGTAG"sweep right\n"); if (gestures_switch && wake) { report_gesture(1); } else { sweep2wake_pwrtrigger(); } exec_countx = false; } } } } } //right->left } else if (firstx >= 510 && single_touch && ((wake && (s2w_switch & SWEEP_LEFT)) || (!wake && (s2s_switch & SWEEP_LEFT)))) { prevx = (S2W_X_MAX - S2W_X_FINAL); nextx = S2W_X_B2; if ((barrierx[0] == true) || ((x < prevx) && (x > nextx))) { prevx = nextx; nextx = S2W_X_B1; barrierx[0] = true; if ((barrierx[1] == true) || ((x < prevx) && (x > nextx))) { prevx = nextx; barrierx[1] = true; if (x < prevx) { if (x < S2W_X_FINAL) { if (exec_countx) { pr_info(LOGTAG"sweep left\n"); if (gestures_switch && wake) { report_gesture(2); } else { sweep2wake_pwrtrigger(); } exec_countx = false; } } } } } } }
static void detect_sweep2sleep(int x, int y, bool st) { int prevx = 0, nextx = 0; bool single_touch = st; if (!flg_power_suspended && y < SWEEP_Y_LIMIT) { sweep2wake_reset(); return; } if (firstx == 0) { firstx = x; firstx_time = jiffies; } #if WG_DEBUG pr_info(LOGTAG"s2s Horz x,y(%4d,%4d) wake:%s\n", x, y, (flg_power_suspended) ? "true" : "false"); #endif //left->right if (firstx < SWEEP_X_START && single_touch && (!flg_power_suspended && (s2s_switch & SWEEP_RIGHT))) { prevx = 0; nextx = SWEEP_X_B1; if ((barrierx[0] == true) || ((x > prevx) && (x < nextx))) { prevx = nextx; nextx = SWEEP_X_B2; barrierx[0] = true; if ((barrierx[1] == true) || ((x > prevx) && (x < nextx))) { prevx = nextx; barrierx[1] = true; if (x > prevx) { if (x > (SWEEP_X_MAX - SWEEP_X_FINAL)) { if (exec_countx && (jiffies - firstx_time < SWEEP_TIMEOUT)) { pr_debug(LOGTAG"sweep right\n"); wake_pwrtrigger(); #if (WAKE_GESTURES_ENABLED) if (gestures_switch && flg_power_suspended) { report_gesture(1); } else { #endif wake_pwrtrigger(); #if (WAKE_GESTURES_ENABLED) } #endif exec_countx = false; } } } } } //right->left } else if (firstx >= SWEEP_X_START && single_touch && (!flg_power_suspended && (s2s_switch & SWEEP_LEFT))) { prevx = (SWEEP_X_MAX - SWEEP_X_FINAL); nextx = SWEEP_X_B2; if ((barrierx[0] == true) || ((x < prevx) && (x > nextx))) { prevx = nextx; nextx = SWEEP_X_B1; barrierx[0] = true; if ((barrierx[1] == true) || ((x < prevx) && (x > nextx))) { prevx = nextx; barrierx[1] = true; if (x < prevx) { if (x < SWEEP_X_FINAL) { if (exec_countx) { pr_debug(LOGTAG"sweep left\n"); wake_pwrtrigger(); #if (WAKE_GESTURES_ENABLED) if (gestures_switch && flg_power_suspended) { report_gesture(2); } else { #endif wake_pwrtrigger(); #if (WAKE_GESTURES_ENABLED) } #endif exec_countx = false; } } } } } } }