chore: import from github.com/twx284558/ledcontrol

This commit is contained in:
2026-05-11 08:15:47 -05:00
parent 05c985628d
commit d2f3824ca1
@@ -0,0 +1,128 @@
cGFja2FnZSBhbmRyb2lkLnNlcmlhbHBvcnQubWFuYWdlcjsKCmltcG9ydCBhbmRyb2lkLmNvbnRl
bnQuQ29udGV4dDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC5tb2RlbC5QcmludGVyUmVzcG9u
c2VNb2RlbDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5CeXRlVXRpbDsKaW1wb3J0
IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5Mb2dnZXI7CmltcG9ydCBhbmRyb2lkLnV0aWwuTG9n
OwoKCnB1YmxpYyBjbGFzcyBQcmludEltYWdlUHJvY2Vzc01hbmFnZXIgewogICAgcHJpdmF0ZSBD
b250ZXh0IG1Db250ZXh0OwogICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFHID0gIlByaW50ZXJf
QWN0aW9uIjsKICAgIHByaXZhdGUgc3RhdGljIFByaW50SW1hZ2VQcm9jZXNzTWFuYWdlciBtUHJv
dG9jb2xNYW5hZ2VyOwoKICAgIHByaXZhdGUgZmluYWwgaW50IFRPVEFMX0JZVEVTID0gNjQ7Cgog
ICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTk9ORV9FUlJPUiA9IDB4MDA7CiAgICBwdWJsaWMg
c3RhdGljIGZpbmFsIGludCBWRVJZX0xPV19CQVRURVJZID0gMHgwMTsKICAgIHB1YmxpYyBzdGF0
aWMgZmluYWwgaW50IERPT1JfT1BFTiA9IDB4MDI7CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGlu
dCBQUklOVEVSX0hFQURfT1ZFUl9IRUFUID0gMHgwMzsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwg
aW50IFBSSU5URVJfSEVBRF9PVkVSX0NPTEQgPSAweDA0OwogICAgcHVibGljIHN0YXRpYyBmaW5h
bCBpbnQgU1lTVEVNX09WRVJfSEVBVCA9IDB4MDU7CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGlu
dCBTWVNURU1fT1ZFUl9DT0xEID0gMHgwNjsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNN
QVJUX1NIRUVUX01JU01BVENIID0gMHgwNzsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5P
X1BBUEVsid0gMHgwODsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFFREVESU5HX0VSUk9S
ID0gMHgwOTsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUEVSX0pBTSA9IDB4MEE7CiAg
ICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTUFHRV9ERUNPREVfRVJST1IgPSAweDBCOwogICAg
cHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU01BUlRfU0hFRVRfRkVFRElOR19FUlJPUiA9IDB4MEM7
CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0VSUk9SID0gMHgwRDsKICAgIHB1Ymxp
YyBzdGF0aWMgZmluYWwgaW50IERVUklOR19VUEdSQURJTkcgPSAweDBFOwogICAgcHVibGljIHN0
YXRpYyBmaW5hbCBpbnQgRFVSSU5HX1BPV0VSX09GRiA9IDB4MEY7CiAgICBwdWJsaWMgc3RhdGlj
IGZpbmFsIGludCBEVVJJTkdfUFJJTlRJTkcgPSAweDEwOwoKICAgIHB1YmxpYyBzdGF0aWMgZmlu
YWwgaW50IFBSSU5URVJfRVJSX1BSSU5URVJfQlVTWSA9IDB4MDE7CiAgICBwdWJsaWMgc3RhdGlj
IGZpbmFsIGludCBQUklOVEVSX0VSUl9QQVBFUl9KQU0gPSAweDAyOwogICAgcHVibGljIHN0YXRp
YyBmaW5hbCBpbnQgUFJJTlRFUl9FUlJfRkVFRElOR19FUlJPUiA9IDB4MDM7CiAgICBwdWJsaWMg
c3RhdGljIGZpbmFsIGludCBQUklOVEVSX0VSUl9TTUFSVF9TSEVFVF9NSVNNQVRDSCA9IDB4MDQ7
CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklOVEVSX0VSUl9QUklOVEVSX0hFQURfT1ZF
Ul9IRUFUID0gMHgwNTsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSU5URVJfRVJSX1BS
SU5URVJfSEVBRF9PVkVSX0NPTEQgPSAweDA2OwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQg
UFJJT1RFUl9FUlJfU1lTVEVNX09WRVJfSEVBVCA9IDB4MDc7CiAgICBwdWJsaWMgc3RhdGljIGZp
bmFsIGludCBQUklOVEVSX0VSUl9TWVNURU1fT1ZFUl9DT0xEID0gMHgwODsKICAgIHB1YmxpYyBz
dGF0aWMgZmluYWwgaW50IFBSSU5URVJfRVJSX0RFQ09ERV9FUlJPUiA9IDB4MDk7CiAgICBwdWJs
aWMgc3RhdGljIGZpbmFsIGludCBQUklOVEVSX0VSUl9TTUFSVF9TSEVFVF9GRUVESU5HX0VSUk9S
ID0gMHgwQTsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSU5URVJfRVJSX0RPT1JfT1BF
Tl9DQU5DRUwgPSAweDBCOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJJTlRFUl9FUlJf
REFUQV9SRUNFSVZFX0VSUk9SID0gMHgwQzsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBS
SU5URVJfRVJSX0JBVFRFUllfRU1QVFkgPSAweDBEOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBp
bnQgUFJJTlRFUl9FUlJfQkFUVEVSWV9GVUxMID0gMHgwRTsKICAgIHB1YmxpYyBzdGF0aWMgZmlu
YWwgaW50IFBSSU5URVJfRVJSX05PX1BBUEVsid0gMHgwRjsKICAgIHB1YmxpYyBzdGF0aWMgZmlu
YWwgaW50IFBSSU5URVJfRVJSX0VMU0UgPSAweDEwOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBp
bnQgUFJJTlRFUl9FUlJfQ09PTElOR19TVEFSVCA9IDB4OTk7CiAgICBwdWJsaWMgc3RhdGljIGZp
bmFsIGludCBQUklOVElOR19HT0lOR19PTiA9IDk5OTsKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwg
aW50IFBSSU5USU5HX1NNQVJUX1NIRUVUX1NUQVJUX1BST0NFU1MgPSAxMDAxOwogICAgcHVibGlj
IHN0YXRpYyBmaW5hbCBpbnQgUFJJTlRJTkdfU01BUlRfU0hFRVRfRU5EX09GX1BST0NFU1MgPSAx
MDAyOwoKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSSU5UX1JFUVVFU1RfQUxMT1cgPSAw
eDAxOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJJTlRfUkVRVUVTVF9SRUpFQ1QgPSAw
eEZGOwogICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09PTElOR19TVEFSVCA9IDB4OTk7CiAg
ICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT09MSU5HX0VORCA9IDB4MDE7CgogICAgcHVibGlj
IHN0YXRpYyBmaW5hbCBpbnQgRFNQX01PREVfU1RBTkRCWSA9IDB4MDA7CiAgICBwdWJsaWMgc3Rh
dGljIGZpbmFsIGludCBEU1BfTU9ERV9QUklOVEVSID0gMHgwMTsKICAgIHB1YmxpYyBzdGF0aWMg
ZmluYWwgaW50IERTUF9NT0RFX1VQR1JBREUgPSAweDAyOwogICAgcHVibGljIHN0YXRpYyBmaW5h
bCBpbnQgRFNQX01PREVfRkFDVE9SWSA9IDB4MDM7CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGlu
dCBEU1BfTU9ERV9VTktOT1dOID0gMHhGRjsKCiAgICBwcml2YXRlIGZpbmFsIGludCBFTkRfT0Zf
UFJJT1RfU1VDQ0VTUyA9IDB4NTU7CiAgICBwcml2YXRlIGZpbmFsIGludCBFTkRfT0ZfUFJJTlRf
RVJST1IgPSAweEEwOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgRFNQX1NUQVRVU19PSyA9IDB4MDA7
CiAgICBwcml2YXRlIGZpbmFsIGludCBEU1BfU1RBVFVTX05HID0gMHhGRjsKICAgIHByaXZhdGUg
ZmluYWwgaW50IEZJTEVfRVJST1IgPSAweDAxOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgUEFQRVJf
VFJBWV9FTVBUWSA9IDB4MDE7CgogICAgcHJpdmF0ZSBQcmludEltYWdlUHJvY2Vzc01hbmFnZXIo
Q29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwogICAgfQoKICAg
IHB1YmxpYyBzdGF0aWMgUHJpbnRJbWFnZVByb2Nlc3NNYW5hZ2VyIGdldEluc3RhbmNlKENvbnRl
eHQgY29udGV4dCkgewogICAgICAgIGlmIChtUHJvdG9jb2xNYW5hZ2VyID09IG51bGwpIHsKICAg
ICAgICAgICAgbVByb3RvY29sTWFuYWdlciA9IG5ldyBQcmludEltYWdlUHJvY2Vzc01hbmFnZXIo
Y29udGV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtUHJvdG9jb2xNYW5hZ2VyOwogICAg
fQoKICAgIHB1YmxpYyBQcmludGVyUmVzcG9uc2VNb2RlbCBkb1ByaW50UmVxdWVzdEFDS1Byb2Nl
c3MoYnl0ZVtdIHBheWxvYWQpIHsKICAgICAgICBQcmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25z
ZSA9IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9
PSBUT1RBTF9CWVRFUykgewogICAgICAgICAgICBmaW5hbCBieXRlIHJlcXVlc3RBbnN3ZXIgPSBw
YXlsb2FkWzhdOwogICAgICAgICAgICBmaW5hbCBieXRlIHJlYXNvbiA9IHBheWxvYWRbOV07CiAg
ICAgICAgICAgIHJlc3BvbnNlID0gbmV3IFByaW50ZXJSZXNwb25zZU1vZGVsKCk7CiAgICAgICAg
ICAgIGlmIChyZXF1ZXN0QW5zd2VyID09IFBSSU5UX1JFUVVFU1RfQUxMT1cpIHsKICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3ModHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25z
ZS5zZXRTdWNjZXNzQ29kZShQUklOVF9SRVFVRVNUX0FMTE9XKTsKICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3MoZmFsc2UpOwogICAgICAgICAg
ICAgICAgcmVzcG9uc2Uuc2V0RXJyb3JDb2RlKHJlYXNvbik7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgfQoKICAgIHB1YmxpYyBQcmludGVyUmVz
cG9uc2VNb2RlbCBkb0hlYXJ0QmVhdFByb2Nlc3MoYnl0ZVtdIHBheWxvYWQpIHsKICAgICAgICBQ
cmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQg
IT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9CWVRFUykgewogICAgICAgICAgICBm
aW5hbCBieXRlIGRzcE1vZGUgPSBwYXlsb2FkWzhdOwogICAgICAgICAgICBmaW5hbCBieXRlIGRv
b3JTdGF0dXMgPSBwYXlsb2FkWzldOwogICAgICAgICAgICBmaW5hbCBieXRlIHBhcGVyU3RhdHVz
ID0gcGF5bG9hZFsxMF07CiAgICAgICAgICAgIHJlc3BvbnNlID0gbmV3IFByaW50ZXJSZXNwb25z
ZU1vZGVsKCk7CiAgICAgICAgICAgIHJlc3BvbnNlLnNldERzcE0oZHNwTW9kZSk7CiAgICAgICAg
ICAgIHJlc3BvbnNlLnNldERzcFBhcGVyVHlwZShwYXBlclN0YXR1cyk7CiAgICAgICAgICAgIHJl
c3BvbnNlLnNldERvb3JTdGF0dXMoZG9vclN0YXR1cyk7CiAgICAgICAgICAgIHJlc3BvbnNlLnNl
dFN1Y2Nlc3MoZHNwTW9kZSA9PSBEU1BfTU9ERV9TVEFOREJZKSB7CiAgICAgICAgfQogICAgICAg
IHJldHVybiByZXNwb25zZTsKICAgIH0KCiAgICBwdWJsaWMgUHJpbnRlclJlc3BvbnNlTW9kZWwg
ZG9Hb1ByaW50QUNLUGF5bG9hZEFDS1Byb2Nlc3MoYnl0ZVtdIHBheWxvYWQpIHsKICAgICAgICBQ
cmludGVyUmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQg
IT0gbnVsbCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9CWVRFUykgewogICAgICAgICAgICBm
aW5hbCBieXRlIGlzRmlsZUF2YWlsYWJsZSA9IHBheWxvYWRbOF07CiAgICAgICAgICAgIHJlc3Bv
bnNlID0gbmV3IFByaW50ZXJSZXNwb25zZU1vZGVsKCk7CiAgICAgICAgICAgIGlmIChpc0ZpbGVB
dmFpbGFibGUgPT0gUFJJTlRfUkVRVUVTVF9BTExPVykgewogICAgICAgICAgICAgICAgcmVzcG9u
c2Uuc2V0U3VjY2Vzcyh0cnVlKTsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3ND
b2RlKFBSSU5UX1JFUVVFU1RfQUxMT1cpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgcmVzcG9uc2Uuc2V0U3VjY2VzcyhmYWxzZSk7CiAgICAgICAgICAgICAgICByZXNwb25z
ZS5zZXRFcnJvckNvZGUoUFJJTlRfUkVRVUVTVF9SRUpFQ1QpOwogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICAgIHJldHVybiByZXNwb25zZTsKICAgIH0KCiAgICBwdWJsaWMgUHJpbnRlclJl
c3BvbnNlTW9kZWwgZG9FbmRPZlByaW50UHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAg
IFByaW50ZXJSZXNwb25zZU1vZGVsIHJlc3BvbnNlID0gbnVsbDsKICAgICAgICBpZiAocGF5bG9h
ZCAhPSBudWxsICYmIHBheWxvYWQubGVuZ3RoID09IFRPVEFMX0JZVEVTKSB7CiAgICAgICAgICAg
IGZpbmFsIGJ5dGUgcHJpbnRSZXN1bHQgPSBwYXlsb2FkWzhdOwogICAgICAgICAgICByZXNwb25z
ZSA9IG5ldyBQcmludGVyUmVzcG9uc2VNb2RlbCgpOwogICAgICAgICAgICBpZiAocHJpbnRSZXN1
bHQgPT0gRU5EX09GX1BSSU9UX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNl
dFN1Y2Nlc3ModHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShF
TkRfT0ZfUFJJT1RfU1VDQ0VTUyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICByZXNwb25zZS5zZXRTdWNjZXNzKGZhbHNlKTsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNl
dEVycm9yQ29kZShwYXlsb2FkWzldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBy
ZXR1cm4gcmVzcG9uc2U7CiAgICB9CgogICAgcHVibGljIFByaW50ZXJSZXNwb25zZU1vZGVsIGRv
RldWZXJzaW9uUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAgICAgIFByaW50ZXJSZXNwb25z
ZU1vZGVsIHJlc3BvbnNlID0gbnVsbDsKICAgICAgICBpZiAocGF5bG9hZCAhPSBudWxsICYmIHBh
eWxvYWQubGVuZ3RoID09IFRPVEFMX0JZVEVTKSB7CiAgICAgICAgICAgIGJ5dGUgZHNwSCA9IHBh
eWxvYWRbOF07CiAgICAgICAgICAgIGJ5dGUgZHNwTSA9IHBheWxvYWRbOV07CiAgICAgICAgICAg
IGJ5dGUgZHNwTCA9IHBheWxvYWRbMTBdOwogICAgICAgICAgICBieXRlIEhXSUQgPSBwYXlsb2Fk
WzExXTsKICAgICAgICAgICAgYnl0ZSBUTUQgPSBwYXlsb2FkWzEyXTsKICAgICAgICAgICAgYnl0
ZSBkc3BTdGF0dXMgPSBwYXlsb2FkWzE1XTsKICAgICAgICAgICAgYnl0ZSBpc1BhcGVyVHJheUVt
cHR5ID0gcGF5bG9hZFsxNF07CiAgICAgICAgICAgIHJlc3BvbnNlID0gbmV3IFByaW50ZXJSZXNw
b25zZU1vZGVsKCk7CiAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3MoZHNwU3RhdHVzICE9
IChieXRlKURTUF9TVEFUVVNfTkcpOwogICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29k
ZShQUklOVF9SRVFVRVNUX0FMTE9XKTsKICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RHNwSChkc3BI
KTsKICAgICAgICAgICAgcmVzcG9uc2Uuc2V0RHNwTShkc3BNKTsKICAgICAgICAgICAgcmVzcG9u
c2Uuc2V0RHNwTChkc3BMKTsKICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFdJRChIV0lEKTsKICAg
ICAgICAgICAgcmVzcG9uc2Uuc2V0VE1EKFRNRCk7CiAgICAgICAgICAgIHJlc3BvbnNlLnNldERz
cFN0YXR1cyhkc3BTdGF0dXMpOwogICAgICAgICAgICByZXNwb25zZS5zZXREc3BQYXBlclR5cGUo
aXNQYXBlclRyYXlFbXB0eSk7CiAgICAgICAgICAgIHJlc3BvbnNlLnNldFBhcGVyVHJheUVtcHR5
KGlzUGFwZXJUcmF5RW1wdHkgPT0gUEFQRVJfVFJBWV9FTVBUWSk7CiAgICAgICAgfQogICAgICAg
IHJldHVybiByZXNwb25zZTsKICAgIH0KfQo=