package Ġcom . t lt . ep son _ ep os Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Log Ċ import Ġcom . ep son . ep os 2 . Log Ġas ĠPrint Log ; Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . ep son . ep os 2 . E pos 2 Exception ; Ċ import Ġcom . ep son . ep os 2 . discovery . Discovery ; Ċ import Ġcom . ep son . ep os 2 . discovery . Discovery Listener ; Ċ import Ġcom . ep son . ep os 2 . discovery . Filter Option ; Ċ import Ġcom . ep son . ep os 2 . printer . Printer ; Ċ import Ġcom . ep son . ep os 2 . printer . Printer Status Info ; Ċ import Ġcom . ep son . ep os 2 . printer . Printer Setting Listener Ċ import Ġcom . ep son . ep os 2 . printer . Receive Listener Ċ Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Aware Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Plugin Binding Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġjava . lang . Exception Ċ import Ġkotlin . collections . ArrayList Ċ import Ġandroid . util . Base 6 4 Ċ Ċ import Ġjava . lang . StringBuilder ĊĊ Ċ interface ĠJSON Con ver table Ġ{ ĊĠ Ġfun ĠtoJSON (): ĠString Ġ= ĠGson (). toJson ( this ) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠJSON Con ver table > ĠString . toObject (): ĠT Ġ= ĠGson (). fromJson ( this , ĠT :: class . java ) Ċ Ċ class ĠE ps on E pos Printer Info ( ĊĠ Ġvar Ġaddress : ĠString ? Ġ= Ġnull , ĊĠ Ġvar Ġmodel : ĠString ? Ġ= Ġnull , ĊĠ Ġvar Ġtype : ĠString ? Ġ= Ġnull , ĊĠ Ġvar Ġprint Type : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠJSON Con ver table Ċ Ċ data Ġclass ĠE ps on E pos Printer Result ( ĊĠ Ġvar Ġtype : ĠString , ĊĠ Ġvar Ġsuccess : ĠBoolean , ĊĠ Ġvar Ġmessage : ĠString ? Ġ= Ġnull , ĊĠ Ġvar Ġcontent : ĠAny ? Ġ= Ġnull Ċ ) Ġ: ĠJSON Con ver table Ċ Ċ /** ĠE ps on E pos Plugin Ġ*/ Ċ class ĠE ps on E pos Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠActivity Aware Ġ{ ĊĠ Ġ/// ĠThe ĠMethod Channel Ġthat Ġwill Ġthe Ġcommunication Ġbetween ĠFlutter Ġand Ġnative ĠAndroid ĊĠ Ġ/// ĊĠ Ġ/// ĠThis Ġlocal Ġreference Ġserves Ġto Ġregister Ġthe Ġplugin Ġwith Ġthe ĠFlutter ĠEngine Ġand Ġunregister Ġit ĊĠ Ġ/// Ġwhen Ġthe ĠFlutter ĠEngine Ġis Ġdet ached Ġfrom Ġthe ĠActivity ĊĠ Ġprivate Ġlateinit Ġvar Ġchannel : ĠMethod Channel ĊĠ Ġprivate Ġvar Ġlog Tag : ĠString Ġ= Ġ" E ps on _ e POS " ĊĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĠ Ġprivate Ġlateinit Ġvar Ġactivity : ĠActivity ĊĠ Ġprivate Ġvar Ġm Printer : ĠPrinter ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm Target : ĠString ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġprinter s : ĠMutable List < E ps on E pos Printer Info > Ġ= ĠArrayList () ĊĊĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠ Ġactivity Ġ= Ġbinding . activity ; ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{ ĊĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġflutter Plugin Binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠ Ġchannel Ġ= ĠMethod Channel ( flutter Plugin Binding . binary Messenger , Ġ" ep son _ ep os ") ĊĠĠĠ Ġchannel . set MethodCall Handler ( this ) ĊĠĠĠ Ġcontext Ġ= Ġflutter Plugin Binding . application Context ĊĠĠĠ ĠPrint Log . set Log Settings ( ĊĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠ ĠPrint Log . PERIOD _ TEMP OR ARY , ĊĠĠĠĠĠ ĠPrint Log . OUTPUT _ STORAGE , ĊĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠ ĠPrint Log . LOG LEVEL _ LOW ĊĠĠĠ Ġ); ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon MethodCall (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġraw Result : ĠResult ) Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠMethod Result Wrapper ( raw Result ) ĊĠĠĠ ĠThread ( Method Runner ( call , Ġresult )). start () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠ Ġchannel . set MethodCall Handler ( null ) ĊĠ Ġ} ĊĊĠ Ġinner Ġclass ĠMethod Runner ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ: ĠRunnable , ĠReceive Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcall : ĠMethod Call Ġ= Ġcall ĊĠĠĠ Ġprivate Ġval Ġresult : ĠResult Ġ= Ġresult ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Ptr Receive ( p 0 : ĠPrinter ?, Ġp 1 : ĠInt , Ġp 2 : ĠPrinter Status Info ?, Ġp 3 : ĠString ?) Ġ{ ĊĠĠĠĠĠ ĠLog . d ( log Tag , Ġ"${ p 0 ?. status } Ġp 2 Ġ$ p 2 Ġp 3 Ġ$ p 3 ") ĊĠĠĠĠĠ Ġdisconnect Printer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Method ĠCalled : Ġ${ call . method }") ĊĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" on Discovery " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Discovery ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" on Print " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Print ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" on Get Printer Info " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Get Printer Info ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" is Printer Connected " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġis Printer Connected ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" get Printer Setting " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġget Printer Setting ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" set Printer Setting " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset Printer Setting ( call , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Method : Ġ${ call . method } Ġis Ġnot Ġsupported Ġyet ") ĊĠĠĠĠĠĠĠĠĠ Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġclass ĠMethod Result Wrapper ( methodResult : ĠResult ) Ġ: ĠResult Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmethod Result : ĠResult Ġ= Ġmethod Result ĊĠĠĠ Ġprivate Ġval Ġhandler : ĠHandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠ Ġoverride Ġfun Ġsuccess ( result : ĠAny ?) Ġ{ ĊĠĠĠĠĠ Ġhandler . post Ġ{ Ġmethod Result . success ( result ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġerror ( errorCode : ĠString , ĠerrorMessage : ĠString ?, Ġerror Details : ĠAny ?) Ġ{ ĊĠĠĠĠĠ Ġhandler . post Ġ{ Ġmethod Result . error ( errorCode , ĠerrorMessage , Ġerror Details ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnot Implemented () Ġ{ ĊĠĠĠĠĠ Ġhandler . post Ġ{ Ġmethod Result . not Implemented () Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠStop Ġdiscovery Ġprinter ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġstop Discovery () Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠDiscovery . stop () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠE pos 2 Exception ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( e . error Status Ġ!= ĠE pos 2 Exception . ERR _ PROCESS ING ) Ġ{ ĊĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDiscovery Ġprinter s ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġon Discovery (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ Ġval Ġprint Type : ĠString Ġ= Ġcall . argument < String >(" type ") Ġas ĠString ĊĠĠĠ ĠLog . d ( log Tag , Ġ" on Discovery Ġtype : Ġ$ print Type ") ĊĠĠĠ Ġwhen Ġ( print Type ) Ġ{ ĊĠĠĠĠĠ Ġ" TCP " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġon Discovery TCP ( call , Ġresult ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠDiscovery ĠPrinter s Ġvia ĠTCP / IP ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġon Discovery TCP (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ Ġprinter s . clear () ĊĠĠĠ Ġvar Ġfilter Ġ= ĠFilter Option () ĊĠĠĠ Ġfilter . port Type Ġ= ĠDiscovery . PORT TYPE _ TCP ĊĠĠĠ Ġvar Ġresp Ġ= ĠE ps on E pos Printer Result (" on Discovery TCP ", Ġfalse ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠDiscovery . start ( context , Ġfilter , Ġm Discovery Listener ) ĊĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠ Ġresp . success Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġresp . message Ġ= Ġ" Successfully !" ĊĠĠĠĠĠĠĠ Ġresp . content Ġ= Ġprinter s ĊĠĠĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠĠĠĠĠ Ġstop Discovery () ĊĠĠĠĠĠ Ġ}, Ġ 7 0 0 0 ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠLog . e (" On Discovery TCP ", Ġ" Start Ġnot Ġworking Ġ${ call . method }"); ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠ Ġresp . message Ġ= Ġ" Error Ġwhile Ġsearch Ġprinter " ĊĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Get Printer Info (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ ĠLog . d ( log Tag , Ġ" on Get Printer Info Ġ$ call Ġ$ result ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġis Printer Connected (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ ĠLog . d ( log Tag , Ġ" is Printer Connected Ġ$ call Ġ$ result ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Printer Setting (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ ĠLog . d ( log Tag , Ġ" get Printer Setting Ġ$ call Ġ$ result ") ĊĠĠĠ Ġval Ġaddress : ĠString Ġ= Ġcall . argument < String >(" address ") Ġas ĠString ĊĠĠĠ Ġval Ġtype : ĠString Ġ= Ġcall . argument < String >(" type ") Ġas ĠString ĊĠĠĠ Ġval Ġseries : ĠString Ġ= Ġcall . argument < String >(" series ") Ġas ĠString ĊĠĠĠ Ġvar Ġtarget Ġ= Ġ"${ type }:${ address }" ĊĠĠĠ Ġvar Ġresp Ġ= ĠE ps on E pos Printer Result (" on Print ${ type }", Ġfalse ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! connect Printer ( target , Ġseries )) Ġ{ ĊĠĠĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġresp . message Ġ= Ġprinter Status Error () // " Can Ġnot Ġconnect Ġto Ġthe Ġprinter ." ĊĠĠĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Printer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠ Ġresp . message Ġ= Ġ" Print Ġerror " ĊĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġset Printer Setting (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ ĠLog . d ( log Tag , Ġ" set Printer Setting Ġ$ call Ġ$ result ") ĊĠĠĠ Ġval Ġaddress : ĠString Ġ= Ġcall . argument < String >(" address ") Ġas ĠString ĊĠĠĠ Ġval Ġtype : ĠString Ġ= Ġcall . argument < String >(" type ") Ġas ĠString ĊĠĠĠ Ġval Ġseries : ĠString Ġ= Ġcall . argument < String >(" series ") Ġas ĠString ĊĊĠĠĠ Ġval Ġpaper Width : ĠInt ? Ġ= Ġcall . argument < String >(" paper _ width ") Ġas ? ĠInt ĊĠĠĠ Ġval Ġprint Density : ĠInt ? Ġ= Ġcall . argument < String >(" print _ density ") Ġas ? ĠInt ĊĠĠĠ Ġval Ġprint Speed : ĠInt ? Ġ= Ġcall . argument < String >(" print _ speed ") Ġas ? ĠInt ĊĊĠĠĠ Ġvar Ġtarget Ġ= Ġ"${ type }:${ address }" ĊĠĠĠ Ġvar Ġresp Ġ= ĠE ps on E pos Printer Result (" on Print ${ type }", Ġfalse ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! connect Printer ( target , Ġseries )) Ġ{ ĊĠĠĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġresp . message Ġ= Ġprinter Status Error () // " Can Ġnot Ġconnect Ġto Ġthe Ġprinter ." ĊĠĠĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsetting List Ġ= ĠHashMap < Int , ĠInt >() ĊĠĠĠĠĠĠĠ Ġsetting List [ Printer . SETTING _ PRINT SPEED ] Ġ= Ġprint Speed Ġ?: ĠPrinter . PARAM _ DEFAULT ĊĠĠĠĠĠĠĠ Ġsetting List [ Printer . SETTING _ PRINT D ENS ITY ] Ġ= Ġprint Density Ġ?: ĠPrinter . PARAM _ DEFAULT ĊĠĠĠĠĠĠĠ Ġvar Ġpw Ġ= Ġ 8 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( paper Width Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpw Ġ= Ġif Ġ( paper Width Ġ!= Ġ 8 0 Ġ|| Ġpaper Width Ġ!= Ġ 5 8 Ġ|| Ġpaper Width Ġ!= Ġ 6 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 0 ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpaper Width ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsetting List [ Printer . SETTING _ P AP ER WIDTH ] Ġ= Ġpw ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. set Printer Setting ( Printer . PARAM _ DEFAULT , Ġsetting List , Ġm Printer Setting Listener ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" send Data ĠError ", Ġex ) ĊĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġresp . message Ġ= Ġ" Print Ġerror " ĊĠĠĠĠĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġdisconnect Printer () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠ Ġresp . message Ġ= Ġ" Print Ġerror " ĊĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠPrint ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġon Print (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠ Ġval Ġaddress : ĠString Ġ= Ġcall . argument < String >(" address ") Ġas ĠString ĊĠĠĠ Ġval Ġtype : ĠString Ġ= Ġcall . argument < String >(" type ") Ġas ĠString ĊĠĠĠ Ġval Ġseries : ĠString Ġ= Ġcall . argument < String >(" series ") Ġas ĠString ĊĠĠĠ Ġval Ġcommands : ĠArrayList < Map < String , ĠAny >> Ġ= ĊĠĠĠĠĠ Ġcall . argument < ArrayList < Map < String , ĠAny >> >(" commands ") Ġas ĠArrayList < Map < String , ĠAny >> ĊĠĠĠ Ġvar Ġtarget Ġ= Ġ"${ type }:${ address }" ĊĠĠĠ Ġvar Ġresp Ġ= ĠE ps on E pos Printer Result (" on Print ${ type }", Ġfalse ) ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! connect Printer ( target , Ġseries )) Ġ{ ĊĠĠĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġresp . message Ġ= Ġ" Can Ġnot Ġconnect Ġto Ġthe Ġprinter ." ĊĠĠĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠĠĠĠĠ ĠLog . e (" log Tag ", Ġ" Cannot ĠConnect Printer Ġ$ resp ") ĊĠĠĠĠĠĠĠ Ġif Ġ( m Printer Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcommands . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġon Generate Command ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Info : ĠPrinter Status Info ? Ġ= Ġm Printer !!. status ; ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Print ing Ġ$ target Ġ$ series ĠConnection : Ġ${ status Info ?. connection } Ġonline : Ġ${ status Info ?. online } Ġcover : Ġ${ status Info ?. cover Open } ĠPaper : Ġ${ status Info ?. paper } ĠError St : Ġ${ status Info ?. error Status } ĠB attery ĠLevel : Ġ${ status Info ?. battery Level }" ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. send Data ( Printer . PARAM _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Print ed Ġ$ target Ġ$ series ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠE pos 2 Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" send Data ĠError " Ġ+ Ġex . error Status , Ġex ) ĊĠĠĠĠĠĠĠĠĠ Ġdisconnect Printer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠ Ġresp . success Ġ= Ġfalse ĊĠĠĠĠĠ Ġresp . message Ġ= Ġ" Print Ġerror " ĊĠĠĠĠĠ Ġresult . success ( resp . toJSON ()) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/// ĠFUNCTIONS ĊĊĠ Ġprivate Ġval Ġm Discovery Listener Ġ= ĠDiscovery Listener Ġ{ Ġdevice Info Ġ-> ĊĠĠĠ ĠLog . d ( log Tag , Ġ" Found : Ġ${ device Info ?. device Name }") ĊĠĠĠ Ġif Ġ( device Info ?. device Name Ġ!= Ġnull Ġ&& Ġdevice Info ?. device Name Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠ Ġvar Ġprinter Ġ= ĠE ps on E pos Printer Info ( device Info . ipAddress , Ġdevice Info . device Name ) ĊĠĠĠĠĠ Ġvar Ġprinter Index Ġ= Ġprinter s . indexOf First Ġ{ Ġe Ġ-> Ġe . address Ġ== Ġdevice Info . ipAddress Ġ} ĊĠĠĠĠĠ Ġif Ġ( printer Index Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprinter s [ printer Index ] Ġ= Ġprinter ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprinter s . add ( printer ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġm Printer Setting Listener Ġ= Ġobject Ġ: ĠPrinter Setting Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Get Printer Setting ( p 0 : ĠInt , Ġp 1 : ĠInt , Ġp 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠ ĠLog . e (" log Tag ", Ġ" on Get Printer Setting Ġtype : Ġ$ p 0 Ġ$ p 1 Ġ$ p 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Set Printer Setting ( p 0 : ĠInt ) Ġ{ ĊĠĠĠĠĠ ĠLog . e (" log Tag ", Ġ" on Set Printer Setting ĠCode : Ġ$ p 0 ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġconnect Printer ( target : ĠString , Ġseries : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġprint Cons Ġ= Ġget Printer Constant ( series ) ĊĠĠĠ Ġif Ġ( m Printer Ġ== Ġnull Ġ|| Ġm Target Ġ!= Ġtarget ) Ġ{ ĊĠĠĠĠĠ Ġm Printer Ġ= ĠPrinter ( print Cons , Ġ 0 , Ġcontext ) ĊĠĠĠĠĠ Ġm Target Ġ= Ġtarget ĊĠĠĠ Ġ} ĊĠĠĠ ĠLog . d ( log Tag , Ġ" Connect ĠPrinter Ġw Ġ$ series Ġconstant : Ġ$ print Cons Ġvia Ġ$ target ") ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġstatus : ĠPrinter Status Info ? Ġ= Ġm Printer !!. status ; ĊĠĠĠĠĠ Ġif Ġ( status ?. online Ġ!= ĠPrinter . TRUE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Printer !!. connect ( target , ĠPrinter . PARAM _ DEFAULT ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠE pos 2 Exception ) Ġ{ ĊĠĠĠĠĠ Ġdisconnect Printer () ĊĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" Connect ĠError Ġ${ e . error Status }", Ġe ) ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdisconnect Printer () Ġ{ ĊĠĠĠ Ġif Ġ( m Printer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" disconnect Printer Ġm Printer Ġnull ") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġm Printer !!. disconnect () ĊĠĠĠĠĠĠĠ Ġm Printer Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġm Target Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" disconnect Printer ĠError Ġ${ e ?. message }", Ġe ) ĊĠĠĠĠĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġm Printer !!. clear CommandBuffer () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġon Generate Command ( command : ĠMap < String , ĠAny >) Ġ{ ĊĠĠĠ Ġif Ġ( m Printer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ ĠLog . d ( log Tag , Ġ" on Generate Command : Ġ$ command ") ĊĠĠĠ Ġval Ġtext Data Ġ= ĠStringBuilder () ĊĊĠĠĠ Ġvar Ġcommand Id : ĠString Ġ= Ġcommand [" id "] Ġas ĠString ĊĠĠĠ Ġif Ġ(! command Id . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġvar Ġcommand Value Ġ= Ġcommand [" value "] ĊĊĠĠĠĠĠ Ġwhen Ġ( command Id ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ" append Text " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" append Text : Ġ$ command Value ") ĊĠĠĠĠĠĠĠĠĠ Ġtext Data . append ( command Value . toString ()) ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Text ( text Data . toString ()) ĊĠĠĠĠĠĠĠĠĠ Ġtext Data . delete ( 0 , Ġtext Data . length ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" add Image " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwidth : ĠInt Ġ= Ġcommand [" width "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġheight : ĠInt Ġ= Ġcommand [" height "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpos X : ĠInt Ġ= Ġcommand [" pos X "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpos Y : ĠInt Ġ= Ġcommand [" pos Y "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap ? Ġ= Ġconvert Base 6 4 to Bitmap ( command Value Ġas ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" append Bitmap : Ġ$ width Ġx Ġ$ height Ġ$ pos X Ġ$ pos Y Ġbitmap Ġ$ bitmap ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrinter . SETTING _ P AP ER WIDTH _ 8 0 _ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrinter . PARAM _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrinter . PARAM _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrinter . PARAM _ DEFAULT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrinter . COMPRESS _ AUTO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" on Generate Command ĠError " Ġ+ Ġe . localized Message ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" add Feed Line " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Feed Line ( command Value Ġas ĠInt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" add Cut " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( command Value . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CUT _ FEED " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Cut ( Printer . CUT _ FEED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CUT _ NO _ FEED " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Cut ( Printer . CUT _ NO _ FEED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CUT _ RESER VE " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Cut ( Printer . CUT _ RESER VE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Cut ( Printer . PARAM _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" add Line Space " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Feed Line ( command Value Ġas ĠInt ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" add Text Align " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( command Value . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" LEFT " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Text Align ( Printer . ALIGN _ LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" CENTER " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Text Align ( Printer . ALIGN _ CENTER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" RIGHT " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Text Align ( Printer . ALIGN _ RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Printer !!. add Text Align ( Printer . PARAM _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Printer Constant ( series : ĠString ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( series ) Ġ{ ĊĠĠĠĠĠ Ġ" TM _ M 1 0 " Ġ-> ĠPrinter . TM _ M 1 0 ĊĠĠĠĠĠ Ġ" TM _ M 3 0 " Ġ-> ĠPrinter . TM _ M 3 0 ĊĠĠĠĠĠ Ġ" TM _ M 3 0 II " Ġ-> ĠPrinter . TM _ M 3 0 II ĊĠĠĠĠĠ Ġ" TM _ M 5 0 " Ġ-> ĠPrinter . TM _ M 5 0 ĊĠĠĠĠĠ Ġ" TM _ P 2 0 " Ġ-> ĠPrinter . TM _ P 2 0 ĊĠĠĠĠĠ Ġ" TM _ P 6 0 " Ġ-> ĠPrinter . TM _ P 6 0 ĊĠĠĠĠĠ Ġ" TM _ P 6 0 II " Ġ-> ĠPrinter . TM _ P 6 0 II ĊĠĠĠĠĠ Ġ" TM _ P 8 0 " Ġ-> ĠPrinter . TM _ P 8 0 ĊĠĠĠĠĠ Ġ" TM _ T 2 0 " Ġ-> ĠPrinter . TM _ T 2 0 ĊĠĠĠĠĠ Ġ" TM _ T 6 0 " Ġ-> ĠPrinter . TM _ T 6 0 ĊĠĠĠĠĠ Ġ" TM _ T 7 0 " Ġ-> ĠPrinter . TM _ T 7 0 ĊĠĠĠĠĠ Ġ" TM _ T 8 1 " Ġ-> ĠPrinter . TM _ T 8 1 ĊĠĠĠĠĠ Ġ" TM _ T 8 2 " Ġ-> ĠPrinter . TM _ T 8 2 ĊĠĠĠĠĠ Ġ" TM _ T 8 3 " Ġ-> ĠPrinter . TM _ T 8 3 ĊĠĠĠĠĠ Ġ" TM _ T 8 3 III " Ġ-> ĠPrinter . TM _ T 8 3 III ĊĠĠĠĠĠ Ġ" TM _ T 8 8 " Ġ-> ĠPrinter . TM _ T 8 8 ĊĠĠĠĠĠ Ġ" TM _ T 9 0 " Ġ-> ĠPrinter . TM _ T 9 0 ĊĠĠĠĠĠ Ġ" TM _ T 1 0 0 " Ġ-> ĠPrinter . TM _ T 1 0 0 ĊĠĠĠĠĠ Ġ" TM _ U 2 2 0 " Ġ-> ĠPrinter . TM _ U 2 2 0 ĊĠĠĠĠĠ Ġ" TM _ U 3 3 0 " Ġ-> ĠPrinter . TM _ U 3 3 0 ĊĠĠĠĠĠ Ġ" TM _ L 9 0 " Ġ-> ĠPrinter . TM _ L 9 0 ĊĠĠĠĠĠ Ġ" TM _ H 6 0 0 0 " Ġ-> ĠPrinter . TM _ H 6 0 0 0 ĊĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġconvert Base 6 4 to Bitmap ( base 6 4 Str : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠ Ġval Ġdecoded Bytes : ĠByteArray Ġ= ĠBase 6 4 . decode ( base 6 4 Str , ĠBase 6 4 . DEFAULT ) ĊĠĠĠ Ġreturn ĠBitmap Factory . decode ByteArray ( decoded Bytes , Ġ 0 , Ġdecoded Bytes . size ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġprinter Status Error (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( m Printer Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġget ErrorMessage (""); ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġerror Mes Ġ= Ġ""; ĊĠĠĠ Ġval Ġstatus : ĠPrinter Status Info ? Ġ= Ġm Printer !!. status ; ĊĊĠĠĠ Ġif Ġ( status ?. online Ġ== ĠPrinter . FALSE ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ offline ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. connection Ġ== ĠPrinter . FALSE ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ no _ response ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. cover Open Ġ== ĠPrinter . TRUE ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ cover _ open ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. paper Ġ== ĠPrinter . P AP ER _ EMPTY ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ receipt _ end ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. paper Feed Ġ== ĠPrinter . TRUE Ġ|| Ġstatus ?. panel Switch Ġ== ĠPrinter . SWITCH _ ON ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ paper _ feed ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. error Status Ġ== ĠPrinter . UN RE COVER _ ERR ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ un recover ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. error Status Ġ== ĠPrinter . ME CHAN ICAL _ ERR Ġ|| Ġstatus ?. error Status Ġ== ĠPrinter . AUTO CUT TER _ ERR ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ autoc utter ") ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ need _ recover ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( status ?. error Status Ġ== ĠPrinter . AUTO RE COVER _ ERR ){ ĊĠĠĠĠĠ Ġif Ġ( status ?. auto Recover Error Ġ== ĠPrinter . HEAD _ OVER HE AT ){ ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ over heat ") ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ head ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( status ?. auto Recover Error Ġ== ĠPrinter . MOTOR _ OVER HE AT ){ ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ over heat ") ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ motor ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( status ?. auto Recover Error Ġ== ĠPrinter . B ATTER Y _ OVER HE AT ){ ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ over heat ") ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ battery ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( status ?. auto Recover Error Ġ== ĠPrinter . WRONG _ P AP ER ){ ĊĠĠĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ wrong _ paper ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( status ?. battery Level Ġ== ĠPrinter . B ATTER Y _ LEVEL _ 0 ){ ĊĠĠĠĠĠ Ġerror Mes Ġ= Ġget ErrorMessage (" err _ battery _ real _ end ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif ( error Mes Ġ== Ġ""){ ĊĠĠĠĠĠ Ġreturn Ġget ErrorMessage (""); ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġerror Mes ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget ErrorMessage ( error Key : ĠString , Ġwith NewLine : ĠBoolean Ġ= Ġtrue ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġerror Mes Ġ= Ġwhen Ġ( error Key ) Ġ{ ĊĠĠĠĠĠ Ġ" warn _ receipt _ near _ end " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Roll Ġpaper Ġis Ġnearly Ġend ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" warn _ battery _ near _ end " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Battery Ġlevel Ġof Ġprinter Ġis Ġlow ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ no _ response " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġcheck Ġthe Ġconnection Ġof Ġthe Ġprinter Ġand Ġthe Ġmobile Ġterminal .\ n Connection Ġget Ġlost ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ cover _ open " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġclose Ġroll Ġpaper Ġcover ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ receipt _ end " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġcheck Ġroll Ġpaper ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ paper _ feed " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġrelease Ġa Ġpaper Ġfeed Ġswitch ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ autoc utter " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġremove Ġj am med Ġpaper Ġand Ġclose Ġroll Ġpaper Ġcover .\ n Remove Ġany Ġj am med Ġpaper Ġor Ġforeign Ġsubst ances Ġin Ġthe Ġprinter , Ġand Ġthen Ġturn Ġthe Ġprinter Ġoff Ġand Ġturn Ġthe Ġprinter Ġon Ġagain ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ need _ recover " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Then , ĠIf Ġthe Ġprinter Ġdoesn \' t Ġrecover Ġfrom Ġerror , Ġplease Ġcycle Ġthe Ġpower Ġswitch ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ un recover " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġcycle Ġthe Ġpower Ġswitch Ġof Ġthe Ġprinter .\ n If Ġsame Ġerrors Ġoccurred Ġeven Ġpower Ġcy c led , Ġthe Ġprinter Ġmay Ġout Ġof Ġor de " ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ over heat " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġwait Ġuntil Ġerror ĠLED Ġof Ġthe Ġprinter Ġturns Ġoff . Ġ" ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ head " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Print Ġhead Ġof Ġprinter Ġis Ġhot ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ motor " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Motor ĠDriver ĠIC Ġof Ġprinter Ġis Ġhot ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ battery " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Battery Ġof Ġprinter Ġis Ġhot ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ wrong _ paper " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġset Ġcorrect Ġroll Ġpaper ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ battery _ real _ end " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Please Ġconnect ĠAC Ġadapter Ġor Ġchange Ġthe Ġbattery .\ n Battery Ġof Ġprinter Ġis Ġalmost Ġempty ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ" err _ offline " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ" Printer Ġis Ġoffline ." ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġ" Unknown Ġerror . ĠPlease Ġcheck Ġthe Ġpower Ġand Ġcommunication Ġstatus Ġof Ġthe Ġprinter ." ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( with NewLine ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġ"$ error Mes \ n " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġerror Mes ĊĠ Ġ} ĊĊ Ċ } Ċ