|
@@ -27,6 +27,8 @@
|
|
|
#define LOW_BRIGHTNESS_THRESHHOLD 100
|
|
|
|
|
|
#define COMMAND_FOD_PRESS_STATUS 1
|
|
|
+#define COMMAND_FOD_PRESS_X 2
|
|
|
+#define COMMAND_FOD_PRESS_Y 3
|
|
|
#define PARAM_FOD_PRESSED 1
|
|
|
#define PARAM_FOD_RELEASED 0
|
|
|
|
|
@@ -115,6 +117,8 @@ class XiaomiSm8450UdfpsHander : public UdfpsHandler {
|
|
|
}
|
|
|
|
|
|
bool pressed = readBool(fd);
|
|
|
+ mDevice->extCmd(mDevice, COMMAND_FOD_PRESS_X, pressed ? lastPressX : 0);
|
|
|
+ mDevice->extCmd(mDevice, COMMAND_FOD_PRESS_Y, pressed ? lastPressY : 0);
|
|
|
mDevice->extCmd(mDevice, COMMAND_FOD_PRESS_STATUS,
|
|
|
pressed ? PARAM_FOD_PRESSED : PARAM_FOD_RELEASED);
|
|
|
|
|
@@ -197,8 +201,12 @@ class XiaomiSm8450UdfpsHander : public UdfpsHandler {
|
|
|
}).detach();
|
|
|
}
|
|
|
|
|
|
- void onFingerDown(uint32_t /*x*/, uint32_t /*y*/, float /*minor*/, float /*major*/) {
|
|
|
- LOG(INFO) << __func__;
|
|
|
+ void onFingerDown(uint32_t x, uint32_t y, float /*minor*/, float /*major*/) {
|
|
|
+ LOG(INFO) << __func__ << "x: " << x << ", y: " << y;
|
|
|
+ // Track x and y coordinates
|
|
|
+ lastPressX = x;
|
|
|
+ lastPressY = y;
|
|
|
+
|
|
|
// Ensure touchscreen is aware of the press state, ideally this is not needed
|
|
|
setFingerDown(true);
|
|
|
}
|
|
@@ -259,6 +267,7 @@ class XiaomiSm8450UdfpsHander : public UdfpsHandler {
|
|
|
android::base::unique_fd touch_fd_;
|
|
|
android::base::unique_fd disp_fd_;
|
|
|
bool enrolling = false;
|
|
|
+ uint32_t lastPressX, lastPressY;
|
|
|
|
|
|
void setFodStatus(int value) {
|
|
|
int buf[MAX_BUF_SIZE] = {MI_DISP_PRIMARY, Touch_Fod_Enable, value};
|