From cf11791876e642fcce809d64ed79b0ec67a62c0b Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Mon, 24 Feb 2020 17:34:27 -0800 Subject: [PATCH] Populate uniq field in uhid. Sony introduced some logic that combines devices kernel splits into one Android device based on identical pid, vid and non-empty uniq. Therefore populate this field with device ID. We can change that to a separate uniq attribute in register JSON file if necessary later. Bug: 38511270 Test: getevent -li shows that uniq is populated. Change-Id: Ieca0b826c86e9cad7fa3d3c8f98b9cfd54d20c73 --- cmds/hid/jni/com_android_commands_hid_Device.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmds/hid/jni/com_android_commands_hid_Device.cpp b/cmds/hid/jni/com_android_commands_hid_Device.cpp index 95de6c506795d..1e200c52a2075 100644 --- a/cmds/hid/jni/com_android_commands_hid_Device.cpp +++ b/cmds/hid/jni/com_android_commands_hid_Device.cpp @@ -146,6 +146,8 @@ std::unique_ptr Device::open(int32_t id, const char* name, int32_t vid, struct uhid_event ev = {}; ev.type = UHID_CREATE2; strlcpy(reinterpret_cast(ev.u.create2.name), name, sizeof(ev.u.create2.name)); + std::string uniq = android::base::StringPrintf("Id: %d", id); + strlcpy(reinterpret_cast(ev.u.create2.uniq), uniq.c_str(), sizeof(ev.u.create2.uniq)); memcpy(&ev.u.create2.rd_data, descriptor.data(), size * sizeof(ev.u.create2.rd_data[0])); ev.u.create2.rd_size = size; ev.u.create2.bus = bus;