diff --git a/serialport/src/main/java/android/serialport/manager/FWUpdateProcessManager.java b/serialport/src/main/java/android/serialport/manager/FWUpdateProcessManager.java index 0dda222..46ac4e3 100644 --- a/serialport/src/main/java/android/serialport/manager/FWUpdateProcessManager.java +++ b/serialport/src/main/java/android/serialport/manager/FWUpdateProcessManager.java @@ -1,129 +1,184 @@ -cGFja2FnZSBhbmRyb2lkLnNlcmlhbHBvcnQubWFuYWdlcjsKCmltcG9ydCBhbmRyb2lkLmNvbnRl -bnQuQ29udGV4dDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC5tb2RlbC5QcmludGVyUmVzcG9u -c2VNb2RlbDsKaW1wb3J0IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5CeXRlVXRpbDsKaW1wb3J0 -IGFuZHJvaWQuc2VyaWFscG9ydC51dGlscy5Mb2dnZXI7CmltcG9ydCBhbmRyb2lkLnV0aWwuTG9n -OwppbXBvcnQgYW5kcm9pZC53aWRnZXQuVG9hc3Q7CgpwdWJsaWMgY2xhc3MgRldVcGRhdGVQcm9j -ZXNzTWFuYWdlciB7CiAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7CiAgICBwcml2YXRlIHN0 -YXRpYyBGV1VwZGF0ZVByb2Nlc3NNYW5hZ2VyIG1Qcm90b2NvbE1hbmFnZXI7CiAgICBwcml2YXRl -IHN0YXRpYyBmaW5hbCBpbnQgVE9UQUxfQllURVMgPSA2NDsKICAgIC8vUHJpbnQgUmVxdWVzdCBB -bnN3ZXIKICAgIC8vRmlsZSBBdmFpbGFibGUKICAgIHByaXZhdGUgZmluYWwgaW50IFBSSU5UX1JF -UVVFU1RfQUxMT1cgPSAweDAxOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgUFJJTlRfUkVRVUVTVF9S -RUpFQ1QgPSAweEZGOwoKICAgIHByaXZhdGUgZmluYWwgaW50IE5PTkVfRVJST1IgPSAweDAwOwog -ICAgcHJpdmF0ZSBmaW5hbCBpbnQgU1lTVEVNX09WRVJfSEVBVCA9IDB4MDU7CiAgICBwcml2YXRl -IGZpbmFsIGludCBTWVNURU1fT1ZFUl9DT0xEID0gMHgwNjsKICAgIHByaXZhdGUgZmluYWwgaW50 -IERVUklOR19VUEdSQURJTkcgPSAweDBFOwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgRFVSSU5HX1BS -SU5USU5HID0gMHgxMDsKCgogICAgLy9FbmQgb2YgcHJpbnRlcgogICAgcHJpdmF0ZSBmaW5hbCBp -bnQgRU5EX09GX1BSSU5UX1NVQ0NFU1MgPSAweDU1OwogICAgcHJpdmF0ZSBmaW5hbCBpbnQgRU5E -X09GX1BSSU5UX0VSUk9SID0gMHhBMDsKCiAgICAvL0ZXIFZhcmlhYmxlCiAgICAvL1VwZ3JhZGUg -RXJyb3IgTWVzc2FnZSAoZm9yIFVwZ3JhZGVFcnJNZXNzYWdlKQogICAgcHJpdmF0ZSBmaW5hbCBp -bnQgRklMRV9FUlJPUiA9IDB4MDE7CgogICAgcHJpdmF0ZSBGV1VwZGF0ZVByb2Nlc3NNYW5hZ2Vy -KENvbnRleHQgY29udGV4dCkgewogICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKICAgIH0KCiAg -ICBwdWJsaWMgc3RhdGljIEZXVXBkYXRlUHJvY2Vzc01hbmFnZXIgZ2V0SW5zdGFuY2UoQ29udGV4 -dCBjb250ZXh0KSB7CiAgICAgICAgaWYgKG1Qcm90b2NvbE1hbmFnZXIgPT0gbnVsbCkgewogICAg -ICAgICAgICBtUHJvdG9jb2xNYW5hZ2VyID0gbmV3IEZXVXBkYXRlUHJvY2Vzc01hbmFnZXIoY29u -dGV4dCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtUHJvdG9jb2xNYW5hZ2VyOwogICAgfQog -ICAgLyoqCiAgICAgKiBTdGFydCBGVyB1cGdyYWRlIHJlcXVlc3QgcmVzcG9uc2UgYXMgcGVyIHBy -aW50ZXIgYWNrbm93bGVkZ21lbnQKICAgICAqCiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFByaW50 -ZXIgcGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25zZSBNb2RlbChJc1N1Y2Nl -c3MsIE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGljIFByaW50ZXJSZXNwb25z -ZU1vZGVsIGRvRldVcGdyYWRlUmVxdWVzdEFDS1Byb2Nlc3MoYnl0ZVtdIHBheWxvYWQpIHsKICAg -ICAgICAvLzB4MUIJMHgyQQkweDQzCTB4NDEJMHgwMQkweDAxCTB4MDMJMHgwMAlhbGxvdzogMHgw -MSByZWplY3Q6IDB4RkYJUmVhc29uCiAgICAgICAgUHJpbnRlclJlc3BvbnNlTW9kZWwgcmVzcG9u -c2UgPSBudWxsOwogICAgICAgIGlmIChwYXlsb2FkICE9IG51bGwgJiYgcGF5bG9hZC5sZW5ndGgg -PT0gVE9UQUxfQllURVMpIHsKICAgICAgICAgICAgZmluYWwgYnl0ZSByZXF1ZXN0QW5zd2VyID0g -cGF5bG9hZFs4XTsKICAgICAgICAgICAgZmluYWwgYnl0ZSByZWFzb24gPSBwYXlsb2FkWzldOwog -ICAgICAgICAgICByZXNwb25zZSA9IG5ldyBQcmludGVyUmVzcG9uc2VNb2RlbCgpOwogICAgICAg -ICAgICBMb2dnZXIuZCgiRldVcGdyYWRlIHJlcXVlc3RBbnN3ZXI6ICIrQnl0ZVV0aWwuYnl0ZXNU -b0hleFdpdGhTcGFjZShyZXF1ZXN0QW5zd2VyKSk7CiAgICAgICAgICAgIExvZ2dlci5kKCJGV1Vw -Z3JhZGUgcmVhc29uOiAiK0J5dGVVdGlsLmJ5dGVzVG9IZXhXaXRoU3BhY2UocmVhc29uKSk7CiAg -ICAgICAgICAgIGlmIChyZXF1ZXN0QW5zd2VyID09IChieXRlKSBQUklOVF9SRVFVRVNUX1JFSkVD -VCkgewogICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2VzcyhmYWxzZSk7CiAgICAgICAg -ICAgICAgICBzd2l0Y2ggKHJlYXNvbikgewogICAgICAgICAgICAgICAgICAgIC8vMHgwNSBTeXN0 -ZW0gT3ZlckhlYXQKICAgICAgICAgICAgICAgICAgICAvLzB4MDYgU3lzdGVtIE92ZXJDb2xkCiAg -ICAgICAgICAgICAgICAgICAgLy8weDBFIER1cmluZyBVcGdyYWRpbmcKICAgICAgICAgICAgICAg -ICAgICAvLzB4MTAgRHVyaW5nIFByaW50aW5nCiAgICAgICAgICAgICAgICAgICAgY2FzZSBTWVNU -RU1fT1ZFUl9IRUFUOgogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRFcnJvckNv -ZGUoU1lTVEVNX09WRVJfSEVBVCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNl -dE1lc3NhZ2UoIlN5c3RlbSBPdmVyIEhlYXQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJl -YWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBTWVNURU1fT1ZFUl9DT0xEOgogICAgICAgICAg -ICAgICAgICAgICAgICByZXNwb25zZS5zZXRFcnJvckNvZGUoU1lTVEVNX09WRVJfQ09MRCk7CiAg -ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1lc3NhZ2UoIlN5c3RlbSBPdmVyIENv -bGQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg -Y2FzZSBEVVJJTkdfVVBHUkFESU5HOgogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5z -ZXRFcnJvckNvZGUoRFVSSU5HX1VQR1JBRElORyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl -c3BvbnNlLnNldE1lc3NhZ2UoIkR1cmluZyBVcGdyYWRpbmciKTsKICAgICAgICAgICAgICAgICAg -ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBEVVJJTkdfUFJJTlRJTkc6CiAg -ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVycm9yQ29kZShEVVJJTkdfUFJJTlRJ -TkcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRNZXNzYWdlKCJEdXJpbmcg -UHJpbnRpbmciKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg -ICB9CiAgICAgICAgICAgIH1lbHNlIGlmIChyZXF1ZXN0QW5zd2VyID09IFBSSU5UX1JFUVVFU1Rf -QUxMT1cpIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3ModHJ1ZSk7CiAgICAg -ICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShQUklOVF9SRVFVRVNUX0FMTE9XKTsK -ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3Mo -dHJ1ZSk7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShQUklOVF9SRVFV -RVNUX0FMTE9XKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzcG9u -c2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdGFydCBGVyBnbyB1cGdyYWRlIHJlc3BvbnNlIGFz -IHBlciBwcmludGVyIGFja25vd2xlZGdtZW50CiAgICAgKgogICAgICogQHBhcmFtIHBheWxvYWQg -LSBQcmludGVyIHBheWxvYWQKICAgICAqIEByZXR1cm4gLSBQcmludGVyUmVzcG9uc2UgTW9kZWwo -SXNTdWNjZXNzLCBNZXNzYWdlLCBFcnJvckNvZGUpCiAgICAgKi8KICAgIHB1YmxpYyBQcmludGVy -UmVzcG9uc2VNb2RlbCBkb0ZXR29VcGdyYWRlUHJvY2VzcyhieXRlW10gcGF5bG9hZCkgewogICAg -ICAgIC8vMHgxQgkweDJBCTB4NDMJMHg0MQkweDAxCTB4MDEJMHgwMwkweDAyCiAgICAgICAgLy8w -eDFCCTB4MkEJMHg0MwkweDQxCTB4MDAJMHgwMQkweDAzCTB4MDIKICAgICAgICAvLzFCIDJBIDQz -IDQxIDAxIDAxIDAzIDAyIDAwIDAwIDAwIDAgICAgICAgCiAgICAgICAgLy8xQiAyQSA0MyA0MSAwMSAw -MSAwMyAwMyBBMCAwMCAwMCAwMCAwCiAgICAgICAgYnl0ZSBvbmVDaGFyICAgPSAweDFCOwogICAg -ICAgIGJ5dGUgdHdvQ2hhciAgID0gMHgyQTsKICAgICAgICBieXRlIHRocmVlQ2hhciA9IDB4NDM7 -CiAgICAgICAgYnl0ZSBmb3VyQ2hhciAgPSAweDQxOwogICAgICAgIGJ5dGUgZml2ZUNoYXIgID0g -MHgwMTsKICAgICAgICBieXRlIHNpeENoYXIgICA9IDB4MDE7CiAgICAgICAgYnl0ZSBzZXZlbkNo -YXIgPSAweDAzOwogICAgICAgIGJ5dGUgZWlnaHRDaGFyID0gMHgwMjsKICAgICAgICBQcmludGVy -UmVzcG9uc2VNb2RlbCByZXNwb25zZSA9IG51bGw7CiAgICAgICAgaWYgKHBheWxvYWQgIT0gbnVs -bCAmJiBwYXlsb2FkLmxlbmd0aCA9PSBUT1RBTF9CWVRFUykgewogICAgICAgICAgIHJlc3BvbnNl -ID0gbmV3IFByaW50ZXJSZXNwb25zZU1vZGVsKCk7CiAgICAgICAgICAgIGlmIChvbmVDaGFyID09 -IHBheWxvYWRbMF0KICAgICAgICAgICAgICAgICAgICAmJiB0d29DaGFyID09IHBheWxvYWRbMV0K -ICAgICAgICAgICAgICAgICAgICAmJiB0aHJlZUNoYXIgPT0gcGF5bG9hZFsyXQogICAgICAgICAg -ICAgICAgICAgICYmIGZvdXJDaGFyID09IHBheWxvYWRbM10KICAgICAgICAgICAgICAgICAgICAm -JiBmaXZlQ2hhciA9PSBwYXlsb2FkWzRdCiAgICAgICAgICAgICAgICAgICAgJiYgc2l4Q2hhciA9 -PSBwYXlsb2FkWzVdCiAgICAgICAgICAgICAgICAgICAgJiYgc2V2ZW5DaGFyID09IHBheWxvYWRb -Nl0KICAgICAgICAgICAgICAgICAgICAmJiBlaWdodENoYXIgPT0gcGF5bG9hZFs3XSkgewogICAg -ICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2Vzcyh0cnVlKTsKICAgICAgICAgICAgICAgIHJl -c3BvbnNlLnNldFN1Y2Nlc3NDb2RlKFBSSU5UX1JFUVVFU1RfQUxMT1cpOwogICAgICAgICAgICAg -ICAgTG9nZ2VyLmQoICJvRldHb1VwZ3JhZGVQcm9jZXNzIFN1Y2Nlc3MiKTsKICAgICAgICAgICAg -fSBlbHNlICB7CiAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRTdWNjZXNzKGZhbHNlKTsKICAg -ICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVycm9yQ29kZShQUklOVF9SRVFVRVNUX1JFSkVDVCk7 -CiAgICAgICAgICAgICAgICBMb2dnZXIuZCggIm9GV0dvVXBncmFkZVByb2Nlc3MgUmVqZWN0Iik7 -CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgfQog -ICAgLyoqCiAgICAgKiBTdGFydCBFbmQgb2YgIHVwZ3JhZGUgY29tbWFuZCByZXNwb25zZSBhcyBw -ZXIgcHJpbnRlciBhY2tub3dsZWRnbWVudAogICAgICoKICAgICAqIEBwYXJhbSBwYXlsb2FkIC0g -UHJpbnRlciBwYXlsb2FkCiAgICAgKiBAcmV0dXJuIC0gUHJpbnRlclJlc3BvbnNlIE1vZGVsKElz -U3VjY2VzcywgTWVzc2FnZSwgRXJyb3JDb2RlKQogICAgICovCiAgICBwdWJsaWMgUHJpbnRlclJl -c3BvbnNlTW9kZWwgZG9GV0VuZE9mVXBncmFkZVByb2Nlc3MoYnl0ZVtdIHBheWxvYWQpIHsKICAg -ICAgICAvLzB4MUIJMHgyQQkweDQzCTB4NDEJMHgwMQkweDAxCTB4MDMJMHgwMwlTdWNjZXNzOiAw -eDU1IEVycm9yOiAweEEwCUVycm9yCiAgICAgICAgUHJpbnRlclJlc3BvbnNlTW9kZWwgcmVzcG9u -c2UgPSBudWxsOwogICAgICAgIGlmIChwYXlsb2FkICE9IG51bGwgJiYgcGF5bG9hZC5sZW5ndGgg -PT0gVE9UQUxfQllURVMpIHsKICAgICAgICAgICAgZmluYWwgYnl0ZSBwcmludFJlc3VsdCA9IHBh -eWxvYWRbOF07CiAgICAgICAgICAgIExvZ2dlci5kKCAicHJpbnRSZXN1bHQ6ICIgKyBwcmludFJl -c3VsdCk7CiAgICAgICAgICAgIHJlc3BvbnNlID0gbmV3IFByaW50ZXJSZXNwb25zZU1vZGVsKCk7 -CiAgICAgICAgICAgIGlmIChwcmludFJlc3VsdCA9PSBFTkRfT0ZfUFJJTlRfU1VDQ0VTUykgewog -ICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2Vzcyh0cnVlKTsKICAgICAgICAgICAgICAg -IHJlc3BvbnNlLnNldE1lc3NhZ2UoIkVuZCBvZiBQcmludCBTdWNjZXNzIik7CiAgICAgICAgICAg -ICAgICByZXNwb25zZS5zZXRTdWNjZXNzQ29kZShFTkRfT0ZfUFJJTlRfU1VDQ0VTUyk7CiAgICAg -ICAgICAgIH0gZWxzZSBpZiAocHJpbnRSZXN1bHQgPT0gKGJ5dGUpIEVORF9PRl9QUklOVF9FUlJP -UikgewogICAgICAgICAgICAgICAgZmluYWwgYnl0ZSByZWFzb24gPSBwYXlsb2FkWzldOwogICAg -ICAgICAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2VzcyhmYWxzZSk7CgogICAgICAgICAgICAgICAg -c3dpdGNoIChyZWFzb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIE5PTkVfRVJST1I6CiAg -ICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVycm9yQ29kZShOT05FX0VSUk9SKTsK -ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0TWVzc2FnZSgiTm9uZSBFcnJvciIp -OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlIEZJ -TEVfRVJST1I6CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEVycm9yQ29kZShG -SUFMRV9FUlJPUik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1lc3NhZ2Uo -IkZpbGUgRXJyb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg -ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwog -ICAgfQoKICAgIC8qKgogICAgICogU3RhcnQgRW5kIG9mICB1cGdyYWRlIGNvbW1hbmQgcmVzcG9u -c2UgYXMgcGVyIHByaW50ZXIgYWNrbm93bGVkZ21lbnQKICAgICAqCiAgICAgKiBAcGFyYW0gcGF5 -bG9hZCAtIFByaW50ZXIgcGF5bG9hZAogICAgICogQHJldHVybiAtIFByaW50ZXJSZXNwb25zZSBN -b2RlbChJc1N1Y2Nlc3MsIE1lc3NhZ2UsIEVycm9yQ29kZSkKICAgICAqLwogICAgcHVibGljIFBy -aW50ZXJSZXNwb25zZU1vZGVsIGRvRldFbmRPZlVwZ3JhZGVBS0NQcm9jZXNzKGJ5dGVbXSBwYXls -b2FkKSB7CiAgICAgICAgUHJpbnRlclJlc3BvbnNlTW9kZWwgIHJlc3BvbnNlID0gbmV3IFByaW50 -ZXJSZXNwb25zZU1vZGVsKCk7CiAgICAgICAgcmVzcG9uc2Uuc2V0U3VjY2Vzcyh0cnVlKTsKICAg -ICAgICByZXNwb25zZS5zZXRNZXNzYWdlKCJGVyBFbmQgb2YgVXBncmFkZSBBS0MgU3VjY2VzcyIp -OwogICAgICAgIHJlc3BvbnNlLnNldFN1Y2Nlc3NDb2RlKEVORF9PRl9QUklOVF9TVUNDRVNTKTsK -ICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICB9Cn0K \ No newline at end of file +package android.serialport.manager; + +import android.content.Context; +import android.serialport.model.PrinterResponseModel; +import android.serialport.utils.ByteUtil; +import android.serialport.utils.Logger; +import android.util.Log; +import android.widget.Toast; + +public class FWUpdateProcessManager { + private Context mContext; + private static FWUpdateProcessManager mProtocolManager; + private static final int TOTAL_BYTES = 64; + //Print Request Answer + //File Available + private final int PRINT_REQUEST_ALLOW = 0x01; + private final int PRINT_REQUEST_REJECT = 0xFF; + + private final int NONE_ERROR = 0x00; + private final int SYSTEM_OVER_HEAT = 0x05; + private final int SYSTEM_OVER_COLD = 0x06; + private final int DURING_UPGRADING = 0x0E; + private final int DURING_PRINTING = 0x10; + + + //End of printer + private final int END_OF_PRINT_SUCCESS = 0x55; + private final int END_OF_PRINT_ERROR = 0xA0; + + //FW Variable + //Upgrade Error Message (for UpgradeErrMessage) + private final int FILE_ERROR = 0x01; + + private FWUpdateProcessManager(Context context) { + mContext = context; + } + + public static FWUpdateProcessManager getInstance(Context context) { + if (mProtocolManager == null) { + mProtocolManager = new FWUpdateProcessManager(context); + } + return mProtocolManager; + } + /** + * Start FW upgrade request response as per printer acknowledgment + * + * @param payload - Printer payload + * @return - PrinterResponse Model(IsSuccess, Message, ErrorCode) + */ + public PrinterResponseModel doFWUpgradeRequestACKProcess(byte[] payload) { + //0x1B 0x2A 0x43 0x41 0x01 0x01 0x03 0x00 allow: 0x01 reject: 0xFF Reason + PrinterResponseModel response = null; + if (payload != null && payload.length == TOTAL_BYTES) { + final byte requestAnswer = payload[8]; + final byte reason = payload[9]; + response = new PrinterResponseModel(); + Logger.d("FWUpgrade requestAnswer: "+ByteUtil.bytesToHexWithSpace(requestAnswer)); + Logger.d("FWUpgrade reason: "+ByteUtil.bytesToHexWithSpace(reason)); + if (requestAnswer == (byte) PRINT_REQUEST_REJECT) { + response.setSuccess(false); + switch (reason) { + //0x05 System OverHeat + //0x06 System OverCold + //0x0E During Upgrading + //0x10 During Printing + case SYSTEM_OVER_HEAT: + response.setErrorCode(SYSTEM_OVER_HEAT); + response.setMessage("System Over Heat"); + break; + case SYSTEM_OVER_COLD: + response.setErrorCode(SYSTEM_OVER_COLD); + response.setMessage("System Over Cold"); + break; + case DURING_UPGRADING: + response.setErrorCode(DURING_UPGRADING); + response.setMessage("During Upgrading"); + break; + case DURING_PRINTING: + response.setErrorCode(DURING_PRINTING); + response.setMessage("During Printing"); + break; + } + }else if (requestAnswer == PRINT_REQUEST_ALLOW) { + response.setSuccess(true); + response.setSuccessCode(PRINT_REQUEST_ALLOW); + } else { + response.setSuccess(true); + response.setSuccessCode(PRINT_REQUEST_ALLOW); + } + } + return response; + } + + /** + * Start FW go upgrade response as per printer acknowledgment + * + * @param payload - Printer payload + * @return - PrinterResponse Model(IsSuccess, Message, ErrorCode) + */ + public PrinterResponseModel doFWGoUpgradeProcess(byte[] payload) { + //0x1B 0x2A 0x43 0x41 0x01 0x01 0x03 0x02 + //0x1B 0x2A 0x43 0x41 0x00 0x01 0x03 0x02 + //1B 2A 43 41 01 01 03 02 00 00 00 0 + //1B 2A 43 41 01 01 03 03 A0 00 00 00 0 + byte oneChar = 0x1B; + byte twoChar = 0x2A; + byte threeChar = 0x43; + byte fourChar = 0x41; + byte fiveChar = 0x01; + byte sixChar = 0x01; + byte sevenChar = 0x03; + byte eightChar = 0x02; + PrinterResponseModel response = null; + if (payload != null && payload.length == TOTAL_BYTES) { + response = new PrinterResponseModel(); + if (oneChar == payload[0] + && twoChar == payload[1] + && threeChar == payload[2] + && fourChar == payload[3] + && fiveChar == payload[4] + && sixChar == payload[5] + && sevenChar == payload[6] + && eightChar == payload[7]) { + response.setSuccess(true); + response.setSuccessCode(PRINT_REQUEST_ALLOW); + Logger.d( "oFWGoUpgradeProcess Success"); + } else { + response.setSuccess(false); + response.setErrorCode(PRINT_REQUEST_REJECT); + Logger.d( "oFWGoUpgradeProcess Reject"); + } + } + return response; + } + /** + * Start End of upgrade command response as per printer acknowledgment + * + * @param payload - Printer payload + * @return - PrinterResponse Model(IsSuccess, Message, ErrorCode) + */ + public PrinterResponseModel doFWEndOfUpgradeProcess(byte[] payload) { + //0x1B 0x2A 0x43 0x41 0x01 0x01 0x03 0x03 Success: 0x55 Error: 0xA0 Error + PrinterResponseModel response = null; + if (payload != null && payload.length == TOTAL_BYTES) { + final byte printResult = payload[8]; + Logger.d( "printResult: " + printResult); + response = new PrinterResponseModel(); + if (printResult == END_OF_PRINT_SUCCESS) { + response.setSuccess(true); + response.setMessage("End of Print Success"); + response.setSuccessCode(END_OF_PRINT_SUCCESS); + } else if (printResult == (byte) END_OF_PRINT_ERROR) { + final byte reason = payload[9]; + response.setSuccess(false); + + switch (reason) { + case NONE_ERROR: + response.setErrorCode(NONE_ERROR); + response.setMessage("None Error"); + break; + case FILE_ERROR: + response.setErrorCode(FIALE_ERROR); + response.setMessage("File Error"); + break; + } + } + } + return response; + } + + /** + * Start End of upgrade command response as per printer acknowledgment + * + * @param payload - Printer payload + * @return - PrinterResponse Model(IsSuccess, Message, ErrorCode) + */ + public PrinterResponseModel doFWEndOfUpgradeAKCProcess(byte[] payload) { + PrinterResponseModel response = new PrinterResponseModel(); + response.setSuccess(true); + response.setMessage("FW End of Upgrade AKC Success"); + response.setSuccessCode(END_OF_PRINT_SUCCESS); + return response; + } +}