chore: import from github.com/twx284558/ledcontrol

This commit is contained in:
2026-05-11 08:03:49 -05:00
parent ab36ea09f3
commit f0c3a109d2
+125
View File
@@ -0,0 +1,125 @@
LyoKICogQ29weXJpZ2h0IDIwMDktMjAxMSBDZWRyaWMgUHJpc2NhbAogKgogKiBMaWNlbnNlZCB1
bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICog
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICog
aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqIFVubGVzcyBy
ZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdh
cmUKICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4g
IkFTIElTIiBCQVNJUywKICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5Z
IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICogbGltaXRh
dGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwoKI2luY2x1ZGUgPHRlcm1pb3MuaD4KI2luY2x1
ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc3RhdC5o
PgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8am5pLmg+
CgojaW5jbHVkZSAiU2VyaWFsUG9ydC5oIgoKI2luY2x1ZGUgImFuZHJvaWQvbG9nLmgiCgpzdGF0
aWMgY29uc3QgY2hhciAqVEFHID0gInNlcmlhbF9wb3J0IjsKI2RlZmluZSBMT0dJKGZtdCwgYXJn
cy4uLikgX19hbmRyb2lkX2xvZ19wcmludChBTkRST0lEX0xPR19JTkZPLCAgVEFHLCBmbXQsICMj
YXJncykKI2RlZmluZSBMT0dEKGZtdCwgYXJncy4uLikgX19hbmRyb2lkX2xvZ19wcmludChBTkRS
T0lEX0xPR19ERUJVRywgVEFHLCBmbXQsICMjYXJncykKI2RlZmluZSBMT0dFKGZtdCwgYXJncy4u
LikgX19hbmRyb2lkX2xvZ19wcmludChBTkRST0lEX0xPR19FUlJPUiwgVEFHLCBmbXQsICMjYXJn
cykKCnN0YXRpYyBzcGVlZF90IGdldEJhdWRyYXRlKGppbnQgYmF1ZHJhdGUpIHsKICAgIHN3aXRj
aCAoYmF1ZHJhdGUpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiBCMDsKICAg
ICAgICBjYXNlIDUwOgogICAgICAgICAgICByZXR1cm4gQjUwOwogICAgICAgIGNhc2UgNzU6CiAg
ICAgICAgICAgIHJldHVybiBCNzU7CiAgICAgICAgY2FzZSAxMTA6CiAgICAgICAgICAgIHJldHVy
biBCMTEwOwogICAgICAgIGNhc2UgMTM0OgogICAgICAgICAgICByZXR1cm4gQjEzNDsKICAgICAg
ICBjYXNlIDE1MDoKICAgICAgICAgICAgcmV0dXJuIEIxNTA7CiAgICAgICAgY2FzZSAyMDA6CiAg
ICAgICAgICAgIHJldHVybiBCMjAwOwogICAgICAgIGNhc2UgMzAwOgogICAgICAgICAgICByZXR1
cm4gQjMwMDsKICAgICAgICBjYXNlIDYwMDoKICAgICAgICAgICAgcmV0dXJuIEI2MDA7CiAgICAg
ICAgY2FzZSAxMjAwOgogICAgICAgICAgICByZXR1cm4gQjEyMDA7CiAgICAgICAgY2FzZSAxODAw
OgogICAgICAgICAgICByZXR1cm4gQjE4MDA7CiAgICAgICAgY2FzZSAyNDAwOgogICAgICAgICAg
ICByZXR1cm4gQjI0MDA7CiAgICAgICAgY2FzZSA0ODAwOgogICAgICAgICAgICByZXR1cm4gQjQ4
MDA7CiAgICAgICAgY2FzZSA5NjAwOgogICAgICAgICAgICByZXR1cm4gQjk2MDA7CiAgICAgICAg
Y2FzZSAxOTIwMDoKICAgICAgICAgICAgcmV0dXJuIEIxOTIwMDsKICAgICAgICBjYXNlIDM4NDAw
OgogICAgICAgICAgICByZXR1cm4gQjM4NDAwOwogICAgICAgIGNhc2UgNTc2MDA6CiAgICAgICAg
ICAgIHJldHVybiBCNTc2MDA7CiAgICAgICAgY2FzZSAxMTUyMDA6CiAgICAgICAgICAgIHJldHVy
biBCMTE1MjAwOwogICAgICAgIGNhc2UgMjMwNDAwOgogICAgICAgICAgICByZXR1cm4gQjIzMDQw
MDsKICAgICAgICBjYXNlIDQ2MDgwMDoKICAgICAgICAgICAgcmV0dXJuIEI0NjA4MDA7CiAgICAg
ICAgY2FzZSA1MDAwMDA6CiAgICAgICAgICAgIHJldHVybiBCNTAwMDAwOwogICAgICAgIGNhc2Ug
NTc2MDAwOgogICAgICAgICAgICByZXR1cm4gQjU3NjAwMDsKICAgICAgICBjYXNlIDkyMTYwMDoK
ICAgICAgICAgICAgcmV0dXJuIEI5MjE2MDA7CiAgICAgICAgY2FzZSAxMDAwMDAwOgogICAgICAg
ICAgICByZXR1cm4gQjEwMDAwMDA7CiAgICAgICAgY2FzZSAxMTUyMDAwOgogICAgICAgICAgICBy
ZXR1cm4gQjExNTIwMDA7CiAgICAgICAgY2FzZSAxNTAwMDAwOgogICAgICAgICAgICByZXR1cm4g
QjE1MDAwMDA7CiAgICAgICAgY2FzZSAyMDAwMDAwOgogICAgICAgICAgICByZXR1cm4gQjIwMDAw
MDA7CiAgICAgICAgY2FzZSAyNTAwMDAwOgogICAgICAgICAgICByZXR1cm4gQjI1MDAwMDA7CiAg
ICAgICAgY2FzZSAzMDAwMDAwOgogICAgICAgICAgICByZXR1cm4gQjMwMDAwMDA7CiAgICAgICAg
Y2FzZSAzNTAwMDAwOgogICAgICAgICAgICByZXR1cm4gQjM1MDAwMDA7CiAgICAgICAgY2FzZSA0
MDAwMDAwOgogICAgICAgICAgICByZXR1cm4gQjQwMDAwMDA7CiAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgcmV0dXJuIC0xOwogICAgfQp9CgovKgogKiBDbGFzczogICAgIGFuZHJvaWRfc2Vy
aWFscG9ydF9TZXJpYWxQb3J0CiAqIE1ldGhvZDogICAgb3BlbgogKiBTaWduYXR1cmU6IChMamF2
YS9sYW5nL1N0cmluZztJSUlJSSlMamF2YS9pby9GaWxlRGVzY3JpcHRvcjsKICovCkpOSUVYUE9S
VCBqb2JqZWN0IEpOSUNBTEwgSmF2YV9hbmRyb2lkX3NlcmlhbHBvcnRfU2VyaWFsUG9ydF9vcGVu
CiAgICAgICAgKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpzdHJpbmcgcGF0aCwgamludCBi
YXVkcmF0ZSwgamludCBkYXRhQml0cywgamludCBwYXJpdHksCiAgICAgICAgIGppbnQgc3RvcEJp
dHMsCiAgICAgICAgIGppbnQgZmxhZ3MpIHsKCiAgICBpbnQgZmQ7CiAgICBzcGVlZF90IHNwZWVk
OwogICAgam9iamVjdCBtRmlsZURlc2NyaXB0b3I7CgogICAgLyogQ2hlY2sgYXJndW1lbnRzICov
CiAgICB7CiAgICAgICAgc3BlZWQgPSBnZXRCYXVkcmF0ZShiYXVkcmF0ZSk7CiAgICAgICAgaWYg
KHNwZWVkID09IC0xKSB7CiAgICAgICAgICAgIC8qIFRPRE86IHRocm93IGFuIGV4Y2VwdGlvbiAq
LwogICAgICAgICAgICBMT0dFKCJJbnZhbGlkIGJhdWRyYXRlIik7CiAgICAgICAgICAgIHJldHVy
biBOVUxMOwogICAgICAgIH0KICAgIH0KCiAgICAvKiBPcGVuaW5nIGRldmljZSAqLwogICAgewog
ICAgICAgIGpib29sZWFuIGlzY29weTsKICAgICAgICBjb25zdCBjaGFyICpwYXRoX3V0ZiA9ICgq
ZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMoZW52LCBwYXRoLCAmaXNjb3B5KTsKICAgICAgICBMT0dE
KCJPcGVuaW5nIHNlcmlhbCBwb3J0ICVzIHdpdGggZmxhZ3MgMHgleCIsIHBhdGhfdXRmLCBPX1JE
V1IgfCBmbGFncyk7CiAgICAgICAgZmQgPSBvcGVuKHBhdGhfdXRmLCBPX1JEV1IgfCBmbGFncyk7
CiAgICAgICAgTE9HRCgib3BlbigpIGZkID0gJWQiLCBmZCk7CiAgICAgICAgKCplbnYpLT5SZWxl
YXNlU3RyaW5nVVRGQ2hhcnMoZW52LCBwYXRoLCBwYXRoX3V0Zik7CiAgICAgICAgaWYgKGZkID09
IC0xKSB7CiAgICAgICAgICAgIC8qIFRocm93IGFuIGV4Y2VwdGlvbiAqLwogICAgICAgICAgICBM
T0dFKCJDYW5ub3Qgb3BlbiBwb3J0Iik7CiAgICAgICAgICAgIC8qIFRPRE86IHRocm93IGFuIGV4
Y2VwdGlvbiAqLwogICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICB9CiAgICB9CgogICAg
LyogQ29uZmlndXJlIGRldmljZSAqLwogICAgewogICAgICAgIHN0cnVjdCB0ZXJtaW9zIGNmZzsK
ICAgICAgICBMT0dEKCJDb25maWd1cmluZyBzZXJpYWwgcG9ydCIpOwogICAgICAgIGlmICh0Y2dl
dGF0dHIoZmQsICZjZmcpKSB7CiAgICAgICAgICAgIExPR0UoInRjZ2V0YXR0cigpIGZhaWxlZCIp
OwogICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgICAgIC8qIFRPRE86IHRocm93IGFuIGV4
Y2VwdGlvbiAqLwogICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICB9CgogICAgICAgIGNm
bWFrZXJhdygmY2ZnKTsKICAgICAgICBjZnNldGlzcGVlZCgmY2ZnLCBzcGVlZCk7CiAgICAgICAg
Y2ZzZXRvc3BlZWQoJmNmZywgc3BlZWQpOwoKCiAgICAgICAgY2ZnLmNfY2ZsYWcgJj0gfkNTSVpF
OwogICAgICAgIHN3aXRjaCAoZGF0YUJpdHMpIHsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAg
ICAgICAgICAgY2ZnLmNfY2ZsYWcgfD0gQ1M1OyAgICAvL+S9v+eUqDXkvY3mlbDmja7kvY0KICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICBj
ZmcuY19jZmxhZyB8PSBDUzY7ICAgIC8v5L2/55SoNuS9jeaVsOaNruS9jQogICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIGNmZy5jX2NmbGFn
IHw9IENTNzsgICAgLy/kvb/nlKg35L2N5pWw5o2u5L2NCiAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgICAgY2ZnLmNfY2ZsYWcgfD0gQ1M4OyAg
ICAvL+S9v+eUqDjkvY3mlbDmja7kvY0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgY2ZnLmNfY2ZsYWcgfD0gQ1M4OwogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKHBhcml0eSkgewogICAgICAg
ICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBjZmcuY19jZmxhZyAmPSB+UEFSRU5COyAgICAv
L+aXoOWlh+WBtuagoemqjAogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2Ug
MToKICAgICAgICAgICAgICAgIGNmZy5jX2NmbGFnIHw9IChQQVJPREQgfCBQQVJFTkIpOyAgIC8v
5aWH5qCh6aqMCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAg
ICAgICAgICAgICAgY2ZnLmNfaWZsYWcgJj0gfihJR05QQVIgfCBQQVJNUkspOyAvLyDlgbbmoKHp
qowKICAgICAgICAgICAgICAgIGNmZy5jX2lmbGFnIHw9IElOUENLOwogICAgICAgICAgICAgICAg
Y2ZnLmNfY2ZsYWcgfD0gUEFSRU5COwogICAgICAgICAgICAgICAgY2ZnLmNfY2ZsYWcgJj0gflBB
Uk9ERDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgY2ZnLmNfY2ZsYWcgJj0gflBBUkVOQjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgIH0KCiAgICAgICAgc3dpdGNoIChzdG9wQml0cykgewogICAgICAgICAgICBjYXNlIDE6CiAg
ICAgICAgICAgICAgICBjZmcuY19jZmxhZyAmPSB+Q1NUT1BCOyAgICAvLzHkvY3lgZzmraLkvY0K
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAg
ICBjZmcuY19jZmxhZyB8PSBDU1RPUEI7ICAgIC8vMuS9jeWBnOatouS9jQogICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBjZmcuY19jZmxh
ZyAmPSB+Q1NUT1BCOyAgICAvLzHkvY3lgZzmraLkvY0KICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgIH0KCiAgICAgICAgaWYgKHRjc2V0YXR0cihmZCwgVENTQU5PVywgJmNmZykpIHsKICAg
ICAgICAgICAgTE9HRSgidGNzZXRhdHRyKCkgZmFpbGVkIik7CiAgICAgICAgICAgIGNsb3NlKGZk
KTsKICAgICAgICAgICAgLyogVE9ETzogdGhyb3cgYW4gZXhjZXB0aW9uICovCiAgICAgICAgICAg
IHJldHVybiBOVUxMOwogICAgICAgIH0KICAgIH0KCiAgICAvKiBDcmVhdGUgYSBjb3JyZXNwb25k
aW5nIGZpbGUgZGVzY3JpcHRvciAqLwogICAgewogICAgICAgIGpjbGFzcyBjRmlsZURlc2NyaXB0
b3IgPSAoKmVudiktPkZpbmRDbGFzcyhlbnYsICJqYXZhL2lvL0ZpbGVEZXNjcmlwdG9yIik7CiAg
ICAgICAgam1ldGhvZElEIGlGaWxlRGVzY3JpcHRvciA9ICgqZW52KS0+R2V0TWV0aG9kSUQoZW52
LCBjRmlsZURlc2NyaXB0b3IsICI8aW5pdD4iLCAiKClWIik7CiAgICAgICAgamZpZWxkSUQgZGVz
Y3JpcHRvcklEID0gKCplbnYpLT5HZXRGaWVsZElEKGVudiwgY0ZpbGVEZXNjcmlwdG9yLCAiZGVz
Y3JpcHRvciIsICJJIik7CiAgICAgICAgbUZpbGVEZXNjcmlwdG9yID0gKCplbnYpLT5OZXdPYmpl
Y3QoZW52LCBjRmlsZURlc2NyaXB0b3IsIGlGaWxlRGVzY3JpcHRvcik7CiAgICAgICAgKCplbnYp
LT5TZXRJbnRGaWVsZChlbnYsIG1GaWxlRGVzY3JpcHRvciwgZGVzY3JpcHRvcklELCAoamludCkg
ZmQpOwogICAgfQoKICAgIHJldHVybiBtRmlsZURlc2NyaXB0b3I7Cn0KCi8qCiAqIENsYXNzOiAg
ICAgY2VkcmljX3NlcmlhbF9TZXJpYWxQb3J0CiAqIE1ldGhvZDogICAgY2xvc2UKICogU2lnbmF0
dXJlOiAoKVYKICovCkpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9hbmRyb2lkX3NlcmlhbHBv
cnRfU2VyaWFsUG9ydF9jbG9zZQogICAgICAgIChKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KSB7
CiAgICBqY2xhc3MgU2VyaWFsUG9ydENsYXNzID0gKCplbnYpLT5HZXRPYmplY3RDbGFzcyhlbnYs
IHRoaXopOwogICAgamNsYXNzIEZpbGVEZXNjcmlwdG9yQ2xhc3MgPSAoKmVudiktPkZpbmRDbGFz
cyhlbnYsICJqYXZhL2lvL0ZpbGVEZXNjcmlwdG9yIik7CgogICAgamZpZWxkSUQgbUZkSUQgPSAo
KmVudiktPkdldEZpZWxkSUQoZW52LCBTZXJpYWxQb3J0Q2xhc3MsICJtRmQiLCAiTGphdmEvaW8v
RmlsZURlc2NyaXB0b3I7Iik7CiAgICBqZmllbGRJRCBkZXNjcmlwdG9ySUQgPSAoKmVudiktPkdl
dEZpZWxkSUQoZW52LCBGaWxlRGVzY3JpcHRvckNsYXNzLCAiZGVzY3JpcHRvciIsICJJIik7Cgog
ICAgam9iamVjdCBtRmQgPSAoKmVudiktPkdldE9iamVjdEZpZWxkKGVudiwgdGhpeiwgbUZkSUQp
OwogICAgamludCBkZXNjcmlwdG9yID0gKCplbnYpLT5HZXRJbnRGaWVsZChlbnYsIG1GZCwgZGVz
Y3JpcHRvcklEKTsKCiAgICBMT0dEKCJjbG9zZShmZCA9ICVkKSIsIGRlc2NyaXB0b3IpOwogICAg
Y2xvc2UoZGVzY3JpcHRvcik7Cn0KCg==