From f129338936ef938ed9cf2f14a4c6741a43341f2e Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 11 May 2026 08:09:13 -0500 Subject: [PATCH] chore: import from github.com/twx284558/ledcontrol --- .../android/serialport/SerialPortFinder.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 serialport/src/main/java/android/serialport/SerialPortFinder.java diff --git a/serialport/src/main/java/android/serialport/SerialPortFinder.java b/serialport/src/main/java/android/serialport/SerialPortFinder.java new file mode 100644 index 0000000..3f63e6d --- /dev/null +++ b/serialport/src/main/java/android/serialport/SerialPortFinder.java @@ -0,0 +1,76 @@ +LyoKICogQ29weXJpZ2h0IDIwMDkgQ2VkcmljIFByaXNjYWwKICogCiAqIExpY2Vuc2VkIHVuZGVy +IHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3Ug +bWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vu +c2UuCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogKiAKICogaHR0 +cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqIAogKiBVbmxlc3MgcmVx +dWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJl +CiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB +UyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBL +SU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRo +ZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRp +b25zIHVuZGVyIHRoZSBMaWNlbnNlLiAKICovCgpwYWNrYWdlIGFuZHJvaWQuc2VyaWFscG9ydDsK +CmltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwppbXBvcnQgamF2YS5pby5GaWxlOwppbXBvcnQgamF2 +YS5pby5GaWxlUmVhZGVyOwppbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEu +aW8uTGluZU51bWJlclJlYWRlcjsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKaW1wb3J0IGph +dmEudXRpbC5WZWN0b3I7CgpwdWJsaWMgY2xhc3MgU2VyaWFsUG9ydEZpbmRlciB7CgogICAgcHVi +bGljIGNsYXNzIERyaXZlciB7CiAgICAgICAgcHVibGljIERyaXZlcihTdHJpbmcgbmFtZSwgU3Ry +aW5nIHJvb3QpIHsKICAgICAgICAgICAgbURyaXZlck5hbWUgPSBuYW1lOwogICAgICAgICAgICBt +RGV2aWNlUm9vdCA9IHJvb3Q7CiAgICAgICAgfQoKICAgICAgICBwcml2YXRlIFN0cmluZyBtRHJp +dmVyTmFtZTsKICAgICAgICBwcml2YXRlIFN0cmluZyBtRGV2aWNlUm9vdDsKICAgICAgICBWZWN0 +b3I8RmlsZT4gbURldmljZXMgPSBudWxsOwoKICAgICAgICBwdWJsaWMgVmVjdG9yPEZpbGU+IGdl +dERldmljZXMoKSB7CiAgICAgICAgICAgIGlmIChtRGV2aWNlcyA9PSBudWxsKSB7CiAgICAgICAg +ICAgICAgICBtRGV2aWNlcyA9IG5ldyBWZWN0b3I8RmlsZT4oKTsKICAgICAgICAgICAgICAgIEZp +bGUgZGV2ID0gbmV3IEZpbGUoIi9kZXYiKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg +ICAgRmlsZVtdIGZpbGVzID0gZGV2Lmxpc3RGaWxlcygpOwoKICAgICAgICAgICAgICAgIGlmIChm +aWxlcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgICAg +ICAgICAgZm9yIChpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAg +ICAgICAgICAgIGlmIChmaWxlc1tpXS5nZXRBYnNvbHV0ZVBhdGgoKS5zdGFydHNXaXRoKG1EZXZp +Y2VSb290KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiRm91bmQg +bmV3IGRldmljZTogIiArIGZpbGVzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1E +ZXZpY2VzLmFkZChmaWxlc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg +ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAg +cmV0dXJuIG1EZXZpY2VzOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIFN0cmluZyBnZXROYW1l +KCkgewogICAgICAgICAgICByZXR1cm4gbURyaXZlck5hbWU7CiAgICAgICAgfQogICAgfQoKICAg +IHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU2VyaWFsUG9ydCI7CgogICAgcHJp +dmF0ZSBWZWN0b3I8RHJpdmVyPiBtRHJpdmVycyA9IG51bGw7CgogICAgVmVjdG9yPERyaXZlcj4g +Z2V0RHJpdmVycygpIHRocm93cyBJT0V4Y2VwdGlvbiB7CiAgICAgICAgaWYgKG1Ecml2ZXJzID09 +IG51bGwpIHsKICAgICAgICAgICAgbURyaXZlcnMgPSBuZXcgVmVjdG9yPERyaXZlcj4oKTsKICAg +ICAgICAgICAgTGluZU51bWJlclJlYWRlciByID0gbmV3IExpbmVOdW1iZXJSZWFkZXIobmV3IEZp +bGVSZWFkZXIoIi9wcm9jL3R0eS9kcml2ZXJzIikpOwogICAgICAgICAgICBTdHJpbmcgbDsKICAg +ICAgICAgICAgd2hpbGUgKChsID0gci5yZWFkTGluZSgpKSAhPSBudWxsKSB7CiAgICAgICAgICAg +ICAgICAvLyBJc3N1ZSAzOgogICAgICAgICAgICAgICAgLy8gU2luY2UgZHJpdmVyIG5hbWUgbWF5 +IGNvbnRhaW4gc3BhY2VzLCB3ZSBkbyBub3QgZXh0cmFjdCBkcml2ZXIgbmFtZSB3aXRoIHNwbGl0 +KCkKICAgICAgICAgICAgICAgIFN0cmluZyBkcml2ZXJuYW1lID0gbC5zdWJzdHJpbmcoMCwgMHgx +NSkudHJpbSgpOwogICAgICAgICAgICAgICAgU3RyaW5nW10gdyA9IGwuc3BsaXQoIiArIik7CiAg +ICAgICAgICAgICAgICBpZiAoKHcubGVuZ3RoID49IDUpICYmICh3W3cubGVuZ3RoIC0gMV0uZXF1 +YWxzKCJzZXJpYWwiKSkpIHsKICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJGb3VuZCBu +ZXcgZHJpdmVyICIgKyBkcml2ZXJuYW1lICsgIiBvbiAiICsgd1t3Lmxlbmd0aCAtIDRdKTsKICAg +ICAgICAgICAgICAgICAgICBtRHJpdmVycy5hZGQobmV3IERyaXZlcihkcml2ZXJuYW1lLCB3W3cu +bGVuZ3RoIC0gNF0pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAg +ICByLmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtRHJpdmVyczsKICAgIH0KCiAg +ICBwdWJsaWMgU3RyaW5nW10gZ2V0QWxsRGV2aWNlcygpIHsKICAgICAgICBWZWN0b3I8U3RyaW5n +PiBkZXZpY2VzID0gbmV3IFZlY3RvcjxTdHJpbmc+KCk7CiAgICAgICAgLy8gUGFyc2UgZWFjaCBk +cml2ZXIKICAgICAgICBJdGVyYXRvcjxEcml2ZXI+IGl0ZHJpdjsKICAgICAgICB0cnkgewogICAg +ICAgICAgICBpdGRyaXYgPSBnZXREcml2ZXJzKCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgd2hp +bGUgKGl0ZHJpdi5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgIERyaXZlciBkcml2ZXIgPSBp +dGRyaXYubmV4dCgpOwogICAgICAgICAgICAgICAgSXRlcmF0b3I8RmlsZT4gaXRkZXYgPSBkcml2 +ZXIuZ2V0RGV2aWNlcygpLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICB3aGlsZSAoaXRkZXYu +aGFzTmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRldmljZSA9IGl0ZGV2Lm5l +eHQoKS5nZXROYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gU3RyaW5n +LmZvcm1hdCgiJXMgKCVzKSIsIGRldmljZSwgZHJpdmVyLmdldE5hbWUoKSk7CiAgICAgICAgICAg +ICAgICAgICAgZGV2aWNlcy5hZGQodmFsdWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg +ICB9CiAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICBlLnByaW50 +U3RhY2tUcmFjZSgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZGV2aWNlcy50b0FycmF5KG5l +dyBTdHJpbmdbZGV2aWNlcy5zaXplKCldKTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nW10gZ2V0 +QWxsRGV2aWNlc1BhdGgoKSB7CiAgICAgICAgVmVjdG9yPFN0cmluZz4gZGV2aWNlcyA9IG5ldyBW +ZWN0b3I8U3RyaW5nPigpOwogICAgICAgIC8vIFBhcnNlIGVhY2ggZHJpdmVyCiAgICAgICAgSXRl +cmF0b3I8RHJpdmVyPiBpdGRyaXY7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaXRkcml2ID0g +Z2V0RHJpdmVycygpLml0ZXJhdG9yKCk7CiAgICAgICAgICAgIHdoaWxlIChpdGRyaXYuaGFzTmV4 +dCgpKSB7CiAgICAgICAgICAgICAgICBEcml2ZXIgZHJpdmVyID0gaXRkcml2Lm5leHQoKTsKICAg +ICAgICAgICAgICAgIEl0ZXJhdG9yPEZpbGU+IGl0ZGV2ID0gZHJpdmVyLmdldERldmljZXMoKS5p +dGVyYXRvcigpOwogICAgICAgICAgICAgICAgd2hpbGUgKGl0ZGV2Lmhhc05leHQoKSkgewogICAg +ICAgICAgICAgICAgICAgIFN0cmluZyBkZXZpY2UgPSBpdGRldi5uZXh0KCkuZ2V0QWJzb2x1dGVQ +YXRoKCk7CiAgICAgICAgICAgICAgICAgICAgZGV2aWNlcy5hZGQoZGV2aWNlKTsKICAgICAgICAg +ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsK +ICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJu +IGRldmljZXMudG9BcnJheShuZXcgU3RyaW5nW2RldmljZXMuc2l6ZSgpXSk7CiAgICB9Cn0K \ No newline at end of file