chore: import from github.com/twx284558/ledcontrol

This commit is contained in:
2026-05-11 08:36:25 -05:00
parent 33aed19202
commit 6a7e38adb9
@@ -0,0 +1,95 @@
cGFja2FnZSBhbmRyb2lkLnNlcmlhbHBvcnQudXRpbHM7CgppbXBvcnQgYW5kcm9pZC5vcy5CdWls
ZDsKCmltcG9ydCBqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbjsKCgovKioKICogQ3Jl
YXRlZCBieSBBZGl0eWEgR2FuZ2FzYWdhciBvbiAxMy1KdWx5LTIwLgogKiBGb3IgQ3JvcERhdGEg
VGVjaG5vbG9neSBQdnQuIEx0ZC4KICovCgpwdWJsaWMgY2xhc3MgTG9nZ2VyIHsKICAgIHByaXZh
dGUgc3RhdGljIFN0cmluZyBUQUc9IlRFU1RfTE9HIjsKCiAgICBwdWJsaWMgc3RhdGljIGZpbmFs
IGludCBWRVJCT1NFID0gYW5kcm9pZC51dGlsLkxvZy5WRVJCT1NFOwogICAgcHVibGljIHN0YXRp
YyBmaW5hbCBpbnQgREVCVUcgPSBhbmRyb2lkLnV0aWwuTG9nLkRFQlVHOwogICAgcHVibGljIHN0
YXRpYyBmaW5hbCBpbnQgSU5GTyA9IGFuZHJvaWQudXRpbC5Mb2cuSU5GTzsKICAgIHB1YmxpYyBz
dGF0aWMgZmluYWwgaW50IFdBUk4gPSBhbmRyb2lkLnV0aWwuTG9nLldBUk47CiAgICBwdWJsaWMg
c3RhdGljIGZpbmFsIGludCBFUlJPUiA9IGFuZHJvaWQudXRpbC5Mb2cuRVJST1I7CiAgICBwdWJs
aWMgc3RhdGljIGZpbmFsIGludCBBU1NFUlQgPSBhbmRyb2lkLnV0aWwuTG9nLkFTU0VSVDsKCiAg
ICBwcml2YXRlIExvZ2dlcigpIHt9CgogICAgcHVibGljIHN0YXRpYyBpbnQgdihmaW5hbCBTdHJp
bmcgdGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coVkVSQk9TRSwgdGFnLCBtc2cs
IChUaHJvd2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB2KGZpbmFsIFN0cmlu
ZyB0YWcsIGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBs
b2coVkVSQk9TRSwgdGFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgZChm
aW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coREVCVUcsIFRBRywgbXNnLCAoVGhyb3dhYmxl
KSBudWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZChmaW5hbCBTdHJpbmcgdGFnLCBmaW5h
bCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coREVCVUcsIHRhZywgbXNnLCAoVGhyb3dhYmxlKSBu
dWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZChmaW5hbCBTdHJpbmcgdGFnLCBmaW5hbCBT
dHJpbmcgbXNnLCBmaW5hbCBPYmplY3QuLi4gYXJncykgeyByZXR1cm4gbG9nKERFQlVHLCB0YWcs
IG1zZywgYXJncyk7IH0KICAgIHB1YmxpYyBzdGF0aWMgaW50IGQoZmluYWwgU3RyaW5nIG1zZywg
ZmluYWwgT2JqZWN0Li4uIGFyZ3MpIHsgcmV0dXJuIGxvZyhERUJVRywgVEFHLCBtc2csIGFyZ3Mp
OyB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGRMb25nKFN0cmluZyBUQUcsIFN0cmluZyBtZXNz
YWdlKSB7CiAgICAgICAgaW50IG1heExvZ1NpemUgPSAyMDAwOwogICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDw9IG1lc3NhZ2UubGVuZ3RoKCkgLyBtYXhMb2dTaXplOyBpKyspIHsKICAgICAgICAg
ICAgaW50IHN0YXJ0ID0gaSAqIG1heExvZ1NpemU7CiAgICAgICAgICAgIGludCBlbmQgPSBNYXRo
Lm1pbigoaSArIDEpICogbWF4TG9nU2l6ZSwgbWVzc2FnZS5sZW5ndGgoKSk7CiAgICAgICAgICAg
IGFuZHJvaWQudXRpbC5Mb2cuZChUQUcsIG1lc3NhZ2Uuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKTsK
ICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgaShmaW5hbCBTdHJpbmcgdGFn
LCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coSU5GTywgdGFnLCBtc2csIChUaHJvd2Fi
bGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCBpKGZpbmFsIFN0cmluZyB0YWcsIGZp
bmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBsb2coSU5GTywg
dGFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgdyhmaW5hbCBTdHJpbmcg
dGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coV0FSTiwgdGFnLCBtc2csIChUaHJv
d2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB3KGZpbmFsIFN0cmluZyB0YWcs
IGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdC4uLiBhcmdzKSB7IHJldHVybiBsb2coV0FY
TiwgdmFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgZShmaW5hbCBTdHJp
bmcgdGFnLCBmaW5hbCBTdHJpbmcgbXNnKSB7IHJldHVybiBsb2coRVJST1IsIHRhZywgbXNnLCAo
VGhyb3dhYmxlKSBudWxsKTsgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZShmaW5hbCBTdHJpbmcg
dGFnLCBTdHJpbmcgbXNnLCBmaW5hbCBPYmplY3QuLi4gYXJncykgeyByZXR1cm4gbG9nKEVSUk9S
LCB0YWcsIG1zZywgYXJncyk7IH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgZUxvbmcoU3RyaW5n
IFRBRywgU3RyaW5nIG1lc3NhZ2UpIHsKICAgICAgICBpbnQgbWF4TG9nU2l6ZSA9IDIwMDA7CiAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbWVzc2FnZS5sZW5ndGgoKSAvIG1heExvZ1NpemU7
IGkrKykgewogICAgICAgICAgICBpbnQgc3RhcnQgPSBpICogbWF4TG9nU2l6ZTsKICAgICAgICAg
ICAgaW50IGVuZCA9IE1hdGgubWluKChpICsgMSkgKiBtYXhMb2dTaXplLCBtZXNzYWdlLmxlbmd0
aCgpKTsKICAgICAgICAgICAgYW5kcm9pZC51dGlsLkxvZy5kKFRBRywgbWVzc2FnZS5zdWJzdHJp
bmcoc3RhcnQsIGVuZCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCB3
dGYoZmluYWwgU3RyaW5nIHRhZywgZmluYWwgU3RyaW5nIG1zZykgeyByZXR1cm4gbG9nKEFTU0VS
VCwgdGFnLCBtc2csIChUaHJvd2FibGUpIG51bGwpOyB9CiAgICBwdWJsaWMgc3RhdGljIGludCB3
dGYoZmluYWwgU3RyaW5nIHRhZywgZmluYWwgU3RyaW5nIG1zZywgZmluYWwgT2JqZWN0Li4uIGFy
Z3MpIHsgcmV0dXJuIGxvZyhBU1NFUlQsIHRhZywgbXNnLCBhcmdzKTsgfQoKICAgIHB1YmxpYyBz
dGF0aWMgYm9vbGVhbiBpc0xvZ2dhYmxlKGZpbmFsIFN0cmluZyB0YWcsIGludCBsZXZlbCkgeyBy
ZXR1cm4gYW5kcm9pZC51dGlsLkxvZy5pc0xvZ2dhYmxlKHRhZywgbGV2ZWwpOyB9CgogICAgcHJp
dmF0ZSBzdGF0aWMgaW50IGxvZyhmaW5hbCBpbnQgbGV2ZWwsIGZpbmFsIFN0cmluZyB0YWcsIGZp
bmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdFtdIGFyZ3MpIHsKICAgICAgICBpZiAoYXJncyA9
PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09IDApIHsgcmV0dXJuIGxvZyhsZXZlbCwgdGFnLCBtc2cs
IChUaHJvd2FibGUpIG51bGwpOyB9CiAgICAgICAgaW50IGwgPSBhcmdzLmxlbmd0aDsKICAgICAg
ICBUaHJvd2FibGUgdHI7CiAgICAgICAgT2JqZWN0W10gZmFyZ3M7CiAgICAgICAgaWYgKGFyZ3Nb
bCAtIDFdIGluc3RhbmNlb2YgVGhyb3dhYmxlKSB7CiAgICAgICAgICAgIGwgLT0gMTsgdHIgPSAo
VGhyb3dhYmxlKSBhcmdzW2xdOyBmYXJncyA9IG5ldyBPYmplY3RbbF07IFN5c3RlbS5hcnJheWNv
cHkoYXJncywgMCwgZmFyZ3MsIDAsIGwpOwogICAgICAgIH0gZWxzZSB7IHRyID0gbnVsbDsgZmFy
Z3MgPSBhcmdzOyB9CiAgICAgICAgaWYgKGwgPT0gMCkgeyByZXR1cm4gbG9nKGxldmVsLCB0YWcs
IG1zZywgdHIpOyB9CiAgICAgICAgcmV0dXJuIGxvZyhsZXZlbCwgdGFnLCBtc2csIGZhcmdzLCB0
cik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgaW50IGxvZyhmaW5hbCBpbnQgbGV2ZWwsIGZp
bmFsIFN0cmluZyB0YWcsIGZpbmFsIFN0cmluZyBtc2csIGZpbmFsIE9iamVjdFtdIGFyZ3MsIGZp
bmFsIFRocm93YWJsZSB0cikgewogICAgICAgIGlmIChtc2cuY29udGFpbnMoIiUiKSkgewogICAg
ICAgICAgICB0cnkgeyByZXR1cm4gbG9nKGxldmVsLCB0YWcsIFN0cmluZy5mb3JtYXQobXNnLCBh
cmdzKSwgdHIpOyB9IGNhdGNoIChJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIGUpIHt9CiAgICAgICAg
fQogICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcihtc2cpOwogICAg
ICAgIGZvciAoT2JqZWN0IGEgOiBhcmdzKSB7IHNiLmFwcGVuZChhKTsgfQogICAgICAgIHJldHVy
biBsb2cobGV2ZWwsIHRhZywgc2IudG9TdHJpbmcoKSwgdHIpOwogICAgfQoKICAgIHByaXZhdGUg
c3RhdGljIGludCBsb2coZmluYWwgaW50IGxldmVsLCBmaW5hbCBTdHJpbmcgdGFnLCBmaW5hbCBT
dHJpbmcgbXNnLCBmaW5hbCBUaHJvd2FibGUgdHIpIHsKICAgICAgICBpZiAoIVNlcmlhbFBvcnRD
b25zdGFudHMuTE9HX0VOQUJMRUQpIHsgcmV0dXJuIC0xOyB9CiAgICAgICAgdHJ5IHsgU2VyaWFs
UG9ydEFwcFV0aWxzLmdldEluc3RhbmNlKCkuYXBwZW5kTG9nKG1zZyk7IH0gY2F0Y2ggKEV4Y2Vw
dGlvbiBlKSB7fQogICAgICAgIHN3aXRjaCAobGV2ZWwpIHsKICAgICAgICAgICAgY2FzZSBWRVJC
T1NFOiByZXR1cm4gdHIgPT0gbnVsbCA/IGFuZHJvaWQudXRpbC5Mb2cudih0YWcsIG1zZykgOiBh
bmRyb2lkLnV0aWwuTG9nLnYodGFnLCBtc2csIHRyKTsKICAgICAgICAgICAgY2FzZSBERUJVRzog
cmV0dXJuIHRyID09IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLmQodGFnLCBtc2cpIDogYW5kcm9p
ZC51dGlsLkxvZy5kKHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgSU5GTzogcmV0dXJu
IHRyID09IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLmkodGFnLCBtc2cpIDogYW5kcm9pZC51dGls
LkxvZy5pKHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgV0FSTjogcmV0dXJuIHRyID09
IG51bGwgPyBhbmRyb2lkLnV0aWwuTG9nLncodGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy53
KHRhZywgbXNnLCB0cik7CiAgICAgICAgICAgIGNhc2UgRVJST1I6IHJldHVybiB0ciA9PSBudWxs
ID8gYW5kcm9pZC51dGlsLkxvZy5lKHRhZywgbXNnKSA6IGFuZHJvaWQudXRpbC5Mb2cuZSh0YWcs
IG1zZywgdHIpOwogICAgICAgICAgICBjYXNlIEFTU0VSVDoKICAgICAgICAgICAgICAgIGlmIChC
dWlsZC5WRVJTSU9OLlNES19JTlQgPj0gQnVpbGQuVkVSU0lPTl9DT0RFUy5GUk9ZTykgewogICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0ciA9PSBudWxsID8gYW5kcm9pZC51dGlsLkxvZy53dGYo
dGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy53dGYodGFnLCBtc2csIHRyKTsKICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyID09IG51bGwgPyBh
bmRyb2lkLnV0aWwuTG9nLmUodGFnLCBtc2cpIDogYW5kcm9pZC51dGlsLkxvZy5lKHRhZywgbXNn
LCB0cik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBJ
bGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgbG9nIGxldmVsOiAiICsgbGV2ZWwpOwog
ICAgICAgIH0KICAgIH0KfQo=