diff --git a/serialport/src/main/java/android/serialport/utils/Logger.java b/serialport/src/main/java/android/serialport/utils/Logger.java new file mode 100644 index 0000000..3032431 --- /dev/null +++ b/serialport/src/main/java/android/serialport/utils/Logger.java @@ -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 +Tiwgd…mFnLCBtc2csIGFyZ3MpOyB9CgogICAgcHVibGljIHN0YXRpYyBpbnQgZShmaW5hbCBTdHJp +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= \ No newline at end of file