From 70f4b0431e27eb7b382ee651865e2ef9fc01c234 Mon Sep 17 00:00:00 2001 From: Super Liu Date: Mon, 27 May 2024 07:00:20 +0000 Subject: [PATCH] touch: Add the capability to simulate HW failure Usage: $> setprop vendor.touch.gti0.ical.override.result RESULT The designate RESULT to be used for the designate CMD. If no RESULT assign, the default value will be "0 - -2147483648". $> setprop vendor.touch.gti0.ical.override.cmd CMD The result of designate CMD(e.g. 202 or 301) to be overrode by the designate RESULT. If the CMD is "xxx", the result of any CMD will be overode with the designate RESULT. Bug: 341021854 Test: manual test Change-Id: I3d24618e240b4a966b5a76a33ed9ab96503a3257 Signed-off-by: Super Liu --- touch/gti/touch_gti_ical.cpp | 44 ++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/touch/gti/touch_gti_ical.cpp b/touch/gti/touch_gti_ical.cpp index 0aabd9e..9b5eed5 100644 --- a/touch/gti/touch_gti_ical.cpp +++ b/touch/gti/touch_gti_ical.cpp @@ -34,6 +34,18 @@ int main(int argc, char *argv[]) char *line = NULL; size_t len = 0; FILE *ical_fd; + const char *ical_override_cmd_prop[2] = { + [0] = "vendor.touch.gti0.ical.override.cmd", + [1] = "vendor.touch.gti1.ical.override.cmd", + }; + const char *ical_override_result_prop[2] = { + [0] = "vendor.touch.gti0.ical.override.result", + [1] = "vendor.touch.gti1.ical.override.result", + }; + const char *ical_write_history_prop[2] = { + [0] = "vendor.touch.gti0.ical.write.history", + [1] = "vendor.touch.gti1.ical.write.history", + }; const char *ical_state_prop[2] = { [0] = "vendor.touch.gti0.ical.state", [1] = "vendor.touch.gti1.ical.state", @@ -46,9 +58,16 @@ int main(int argc, char *argv[]) [0] = "/sys/devices/virtual/goog_touch_interface/gti.0/interactive_calibrate", [1] = "/sys/devices/virtual/goog_touch_interface/gti.1/interactive_calibrate", }; + const char *ical_override_cmd_prop_path = ical_override_cmd_prop[0]; + const char *ical_override_result_prop_path = ical_override_result_prop[0]; + const char *ical_write_history_prop_path = ical_write_history_prop[0]; const char *ical_state_prop_path = ical_state_prop[0]; const char *ical_result_prop_path = ical_result_prop[0]; const char *ical_sysfs_path = ical_sysfs[0]; + const char ical_override_all_cmd_prop_val[PROPERTY_VALUE_MAX] = "xxx"; + char ical_override_cmd_prop_val[PROPERTY_VALUE_MAX] = "\0"; + char ical_override_result_prop_val[PROPERTY_VALUE_MAX] = "\0"; + char ical_write_history_prop_val[PROPERTY_VALUE_MAX] = "\0"; if (argc < 3) { ALOGW("No target dev or command for interactive_calibrate sysfs.\n"); @@ -60,11 +79,18 @@ int main(int argc, char *argv[]) if (strncmp(argv[1], "1", strlen(argv[1])) == 0 || strncmp(argv[1], "gti1", strlen(argv[1])) == 0 || strncmp(argv[1], "gti.1", strlen(argv[1])) == 0) { + ical_override_cmd_prop_path = ical_override_cmd_prop[1]; + ical_override_result_prop_path = ical_override_result_prop[1]; + ical_write_history_prop_path = ical_write_history_prop[1]; ical_state_prop_path = ical_state_prop[1]; ical_result_prop_path = ical_result_prop[1]; ical_sysfs_path = ical_sysfs[1]; } + property_get(ical_override_cmd_prop_path, ical_override_cmd_prop_val, NULL); + property_get(ical_override_result_prop_path, ical_override_result_prop_val, "0 - -2147483648"); + property_get(ical_write_history_prop_path, ical_write_history_prop_val, NULL); + property_set(ical_result_prop_path, "na"); property_set(ical_state_prop_path, "running"); if (access(ical_sysfs_path, F_OK | R_OK | W_OK)) { @@ -84,11 +110,25 @@ int main(int argc, char *argv[]) getline(&line, &len, ical_fd); if (line != NULL) { property_set(ical_state_prop_path, "read"); - property_set(ical_result_prop_path, line); - ALOGI("read: %s => %s", ical_sysfs_path, line); + if (strncmp(ical_override_cmd_prop_val, + ical_write_history_prop_val, + strlen(ical_write_history_prop_path)) == 0 || + strncasecmp(ical_override_cmd_prop_val, + ical_override_all_cmd_prop_val, + strlen(ical_override_all_cmd_prop_val)) == 0) { + property_set(ical_result_prop_path, ical_override_result_prop_val); + ALOGW("read(original): %s => %s", + ical_sysfs_path, line); + ALOGW("read(override): %s => %s", + ical_sysfs_path, ical_override_result_prop_val); + } else { + property_set(ical_result_prop_path, line); + ALOGI("read: %s => %s", ical_sysfs_path, line); + } free(line); } } else { + property_set(ical_write_history_prop_path, argv[2]); property_set(ical_state_prop_path, argv[2]); fwrite(argv[2], 1, strlen(argv[2]), ical_fd); ALOGI("write: %s => %s\n", argv[2], ical_sysfs_path);