chore: import from github.com/twx284558/ledcontrol

This commit is contained in:
2026-05-11 08:09:13 -05:00
parent 6850379e13
commit f129338936
@@ -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