package Ġcom . gor o ya . kotlin fel ical ib Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . n fc . N fc Adapter Ċ import Ġandroid . n fc . Tag Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . app . Activity Ċ import Ġandroid . n fc . tech . N fc F Ċ import Ġcom . gor o ya . kotlin fel ical ib . command .* Ċ import Ġcom . gor o ya . kotlin fel ical ib . util . Util Ċ import Ġjava . io . IOException ĊĊ Ċ /** Ċ Ġ* ĠThis Ġclass Ġsupports Ġg reeting Ġpeople Ġby Ġname . Ċ Ġ* Ċ Ġ* Ġ@ property Ġname ĠThe Ġname Ġof Ġthe Ġperson Ġto Ġbe Ġg reet ed . Ċ Ġ*/ Ċ class ĠF el ica Lib ( val Ġtag : ĠTag ) Ġ{ ĊĠĠĠ Ġval Ġn fcf : ĠN fc F ĊĠĠĠĠĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fcf Ġ= ĠN fc F . get ( this . tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn fcf Ġ?: Ġthrow ĠF el ica Lib Exception (" tag Ġis Ġnot ĠF el ica ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn fcf ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġhave N fc ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn fc Adapter Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġis Enable N FC ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( n fc Adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn fc Adapter . isEnabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġenable Foreground Dispatch F el ica ( context : ĠContext , Ġactivity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , Ġactivity . java Class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ SINGLE _ TOP ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fc Pending Intent Ġ= ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠarrayOf ( Intent Filter ( N fc Adapter . ACTION _ TAG _ DIS COVER ED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtech List Ġ= ĠarrayOf ( array Of ( android . n fc . tech . N fc F :: class . java . name )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter . enable Foreground Dispatch ( activity , Ġn fc Pending Intent , Ġintent Filter , Ġtech List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠUnsupportedOperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġdisable Foreground Dispatch F el ica ( context : ĠContext , Ġactivity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter Ġ?: Ġthrow ĠF el ica Lib Exception (" no ĠN FC Ġadapter ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn fc Adapter . disable Foreground Dispatch ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠUnsupportedOperationException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġtransfer ( raw Data : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . nf cf . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . nf cf . trans ceive ( raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . nf cf . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreceive Data ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġpolling ( system Code : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Code : ĠPol ling CC . Request Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Slot : ĠPol ling CC . Time Slot ): ĠPol ling RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠPol ling CC ( system Code , Ġrequest Code , Ġtime Slot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPol ling RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġrequest Service ( id m : ĠByteArray , Ġnode Code List : ĠInt Array ): ĠRequest Service RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠRequest Service CC ( id m , Ġnode Code List . size , Ġnode Code List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest Service RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġrequest Response ( id m : ĠByteArray ): ĠRequest Response RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠRequest Response CC ( id m ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest Response RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġread Without Encryption ( id m : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Code List : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock List : ĠArrayList < Block Element >): ĠRead Without Encryption RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠRead Without Encryption CC ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Code List . size , Ġservice Code List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock List . size , Ġblock List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRead Without Encryption RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġwrite Without Encryption ( id m : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Code List : ĠInt Array , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock List : ĠArrayList < Block Element >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Data : ĠArray < ByteArray >): ĠWrite Without Encryption RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠWrite Without Encryption CC ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Code List . size , Ġservice Code List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock List . size , Ġblock List , Ġblock Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠWrite Without Encryption RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġrequest System Code ( id m : ĠByteArray ): ĠRequest System Code RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠRequest System Code CC ( id m ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest System Code RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġsearch Service Code ( id m : ĠByteArray , Ġindex : ĠInt ): ĠSearch Service Code RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠSearch Service Code CC ( id m , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSearch Service Code RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġrequest Specification Version ( id m : ĠByteArray ): ĠRequest Specification Version RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠRequest Specification Version CC ( id m ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( Util . getByte 2 HexString ( receive Data )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRequest Specification Version RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ@ Throws ( F el ica Lib Exception :: class ) ĊĠĠĠ Ġfun Ġreset Mode ( id m : ĠByteArray ): ĠReset Mode RC Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcmd Data Ġ= ĠReset Mode CC ( id m ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceive Data Ġ= Ġthis . transfer ( cmd Data . raw Data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠReset Mode RC ( receive Data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠF el ica Lib Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠF el ica Lib Exception ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ Ċ } Ċ