package Ġcom . new cm ms . new cm ms _ flutter Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . n fc . N def Message Ċ import Ġandroid . n fc . N def Record Ċ import Ġandroid . n fc . car dem ulation . Host Ap du Service Ċ import Ġandroid . os . Binder Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . util . Log Ċ import Ġjava . util .* ĊĊĊ Ċ class ĠN fc Text N def H ce Service Ġ: ĠHost Ap du Service () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠN fc Text N def H ce Service :: class . java . name ĊĠĠĠĠĠĠĠ Ġval ĠN DEF _ KEY Ġ= Ġ" ndef Message " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠN FC _ TAG _ APP _ SELECT _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠCLA ĉ - ĠClass Ġ- ĠClass Ġof Ġinstruction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xA 4 . to Byte (), Ġ// ĠIN S ĉ - ĠInstruction Ġ- ĠInstruction Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 . to Byte (), Ġ// ĠP 1 ĉ - ĠParameter Ġ 1 Ġ- ĠInstruction Ġparameter Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 2 ĉ - ĠParameter Ġ 2 Ġ- ĠInstruction Ġparameter Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 7 . to Byte (), Ġ// ĠL c Ġfield ĉ - ĠNumber Ġof Ġbytes Ġpresent Ġin Ġthe Ġdata Ġfield Ġof Ġthe Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xD 2 . to Byte (), Ġ 0 x 7 6 . to Byte (), Ġ 0 x 0 0 . to Byte (), Ġ 0 x 0 0 . to Byte (), Ġ 0 x 8 5 . to Byte (), Ġ 0 x 0 1 . to Byte (), Ġ 0 x 0 1 . to Byte (), Ġ// ĠN DEF ĠTag ĠApplication Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte () Ġ Ġ// ĠLe Ġfield ĉ - ĠMaximum Ġnumber Ġof Ġbytes Ġexpected Ġin Ġthe Ġdata Ġfield Ġof Ġthe Ġresponse Ġto Ġthe Ġcommand ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCAP ABILITY _ CONTAINER _ SELECT _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠCLA ĉ - ĠClass Ġ- ĠClass Ġof Ġinstruction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xa 4 . to Byte (), Ġ// ĠIN S ĉ - ĠInstruction Ġ- ĠInstruction Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 1 ĉ - ĠParameter Ġ 1 Ġ- ĠInstruction Ġparameter Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 c . to Byte (), Ġ// ĠP 2 ĉ - ĠParameter Ġ 2 Ġ- ĠInstruction Ġparameter Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte (), Ġ// ĠL c Ġfield ĉ - ĠNumber Ġof Ġbytes Ġpresent Ġin Ġthe Ġdata Ġfield Ġof Ġthe Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xe 1 . to Byte (), Ġ 0 x 0 3 . to Byte () Ġ// Ġfile Ġidentifier Ġof Ġthe ĠCC Ġfile ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCAP ABILITY _ CONTAINER _ READ _ FIRST _ 1 6 _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠCLA ĉ - ĠClass Ġ- ĠClass Ġof Ġinstruction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xb 0 . to Byte (), Ġ// ĠIN S ĉ - ĠInstruction Ġ- ĠInstruction Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 1 ĉ - ĠParameter Ġ 1 Ġ- ĠInstruction Ġparameter Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠP 2 ĉ - ĠParameter Ġ 2 Ġ- ĠInstruction Ġparameter Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 f . to Byte () Ġ Ġ// ĠL c Ġfield ĉ - ĠNumber Ġof Ġbytes Ġpresent Ġin Ġthe Ġdata Ġfield Ġof Ġthe Ġcommand ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCAP ABILITY _ CONTAINER _ READ _ RESPONSE Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ 0 x 1 1 . to Byte (), Ġ// ĠC CL EN Ġlength Ġof Ġthe ĠCC Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 2 0 . to Byte (), Ġ// ĠMapping ĠVersion Ġ 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xFF . to Byte (), Ġ 0 xFF . to Byte (), Ġ// ĠM Le Ġmaximum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xFF . to Byte (), Ġ 0 xFF . to Byte (), Ġ// ĠML c Ġmaximum ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 4 . to Byte (), Ġ// ĠT Ġfield Ġof Ġthe ĠN DEF ĠFile ĠControl ĠT LV ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 6 . to Byte (), Ġ// ĠL Ġfield Ġof Ġthe ĠN DEF ĠFile ĠControl ĠT LV ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xE 1 . to Byte (), Ġ 0 x 0 4 . to Byte (), Ġ// ĠFile ĠIdentifier Ġof ĠN DEF Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xFF . to Byte (), Ġ 0 xFE . to Byte (), Ġ// ĠMaximum ĠN DEF Ġfile Ġsize Ġof Ġ 6 5 5 3 4 Ġbytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠRead Ġaccess Ġwithout Ġany Ġsecurity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xFF . to Byte (), Ġ// ĠWrite Ġaccess Ġwithout Ġany Ġsecurity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 9 0 . to Byte (), Ġ 0 x 0 0 . to Byte () Ġ// ĠA _ OK AY ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠN DEF _ SELECT _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠCLA ĉ - ĠClass Ġ- ĠClass Ġof Ġinstruction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xa 4 . to Byte (), Ġ// ĠInstruction Ġbyte Ġ( INS ) Ġfor ĠSelect Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠParameter Ġbyte Ġ( P 1 ), Ġselect Ġby Ġidentifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 c . to Byte (), Ġ// ĠParameter Ġbyte Ġ( P 1 ), Ġselect Ġby Ġidentifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte (), Ġ// ĠL c Ġfield ĉ - ĠNumber Ġof Ġbytes Ġpresent Ġin Ġthe Ġdata Ġfield Ġof Ġthe Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xE 1 . to Byte (), Ġ 0 x 0 4 . to Byte () Ġ// Ġfile Ġidentifier Ġof Ġthe ĠN DEF Ġfile Ġretrieved Ġfrom Ġthe ĠCC Ġfile ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠN DEF _ READ _ BINARY _ N LEN _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠClass Ġbyte Ġ( CLA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xb 0 . to Byte (), Ġ// ĠInstruction Ġbyte Ġ( INS ) Ġfor ĠRead Binary Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ 0 x 0 0 . to Byte (), Ġ// ĠParameter Ġbyte Ġ( P 1 , ĠP 2 ), Ġoffset Ġinside Ġthe ĠCC Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 2 . to Byte () Ġ Ġ// ĠLe Ġfield ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠN DEF _ READ _ BINARY _ COMMAND Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte (), Ġ// ĠClass Ġbyte Ġ( CLA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 xb 0 . to Byte () Ġ// ĠInstruction Ġbyte Ġ( INS ) Ġfor ĠRead Binary Ġcommand ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOK AY _ RESPONSE Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 9 0 . to Byte (), Ġ// ĠSW 1 ĉ Status Ġbyte Ġ 1 Ġ- ĠCommand Ġprocessing Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 0 0 . to Byte () ĠĠ Ġ// ĠSW 2 ĉ Status Ġbyte Ġ 2 Ġ- ĠCommand Ġprocessing Ġqualifier ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠERROR _ RESPONSE Ġ= Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 6 A . to Byte (), Ġ// ĠSW 1 ĉ Status Ġbyte Ġ 1 Ġ- ĠCommand Ġprocessing Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 8 2 . to Byte () ĠĠ Ġ// ĠSW 2 ĉ Status Ġbyte Ġ 2 Ġ- ĠCommand Ġprocessing Ġqualifier ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget N def String Message Bytes ( value : ĠString ): ĠByteArray Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN def Message ( N def Record . createText Record ("", Ġ" ")). toByteArray () ĊĊĠĠĠĠĠĠĠ Ġfun ĠisValid String Message ( bytes : ĠByteArray ): ĠBoolean Ġ= Ġbytes . size Ġin Ġ 5 .. 0 xff fe ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ stringValue : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġ_ ndef Bytes Ġ= ĠN def Message ( N def Record . createText Record ("", Ġ" ")). toByteArray () ĊĠĠĠ Ġprivate Ġvar Ġ_ has Selected N def Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġ_ binder : ĠI Binder Ġ= ĠN fc Service Binder () ĊĊĠĠĠ Ġvar Ġstring Value : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ stringValue ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn def Bytes Ġ= Ġget N def String Message Bytes ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isValid String Message ( ndef Bytes )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Value Ġmust Ġbe Ġvalid ĠN DEF Ġmessage ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ stringValue Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ndef Bytes Ġ= Ġn def Bytes ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ:: onStart Command . name ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Command Ap du ( command Ap du : ĠByteArray ?, Ġextras : ĠBundle ?): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" process Command Ap du () Ġ| Ġincoming Ġcommand Ap du : Ġ" Ġ+ Ġcommand Ap du ?. to Hex ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( command Ap du , ĠN FC _ TAG _ APP _ SELECT _ COMMAND )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" N FC _ TAG _ APP _ SELECT _ COMMAND Ġtriggered . ĠOur ĠResponse : Ġ" Ġ+ ĠOK AY _ RESPONSE . to Hex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOK AY _ RESPONSE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( command Ap du , ĠCAP ABILITY _ CONTAINER _ SELECT _ COMMAND )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" CAP ABILITY _ CONTAINER _ SELECT _ COMMAND Ġtriggered . ĠOur ĠResponse : Ġ" Ġ+ ĠOK AY _ RESPONSE . to Hex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ has Selected N def Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOK AY _ RESPONSE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( command Ap du , ĠCAP ABILITY _ CONTAINER _ READ _ FIRST _ 1 6 _ COMMAND ) Ġ&& Ġ!_ has Selected N def ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" READ _ CAP ABILITY _ CONTAINER Ġtriggered . ĠOur ĠResponse : Ġ" Ġ+ ĠCAP ABILITY _ CONTAINER _ READ _ RESPONSE . to Hex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCAP ABILITY _ CONTAINER _ READ _ RESPONSE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( command Ap du , ĠN DEF _ SELECT _ COMMAND )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" N DEF _ SELECT _ COMMAND Ġtriggered . ĠOur ĠResponse : Ġ" Ġ+ ĠOK AY _ RESPONSE . to Hex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ has Selected N def Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠOK AY _ RESPONSE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Arrays . equals ( command Ap du , ĠN DEF _ READ _ BINARY _ N LEN _ COMMAND )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Of File Ġ= Ġ_ ndef Bytes . size . to BigInteger (). toByteArray (). slice ( 0 .. 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠByteArray ( size Of File . size Ġ+ ĠOK AY _ RESPONSE . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( size Of File , Ġ 0 , Ġresponse , Ġ 0 , Ġsize Of File . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( OK AY _ RESPONSE , Ġ 0 , Ġresponse , Ġsize Of File . size , ĠOK AY _ RESPONSE . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" N DEF _ READ _ BINARY _ N LEN _ COMMAND Ġtriggered . ĠOur ĠResponse : Ġ" Ġ+ Ġresponse . to Hex ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( command Ap du Ġ!= Ġnull Ġ&& ĠArrays . equals ( command Ap du . slice Array ( 0 .. 1 ), ĠN DEF _ READ _ BINARY _ COMMAND )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġcommand Ap du . slice Array ( 2 .. 3 ). to Hex (). toInt ( 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġcommand Ap du . slice Array ( 4 .. 4 ). to Hex (). toInt ( 1 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠByteArray ( length Ġ+ ĠOK AY _ RESPONSE . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy (_ ndef Bytes , Ġoffset , Ġresponse , Ġ 0 , Ġlength ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy (_ ndef Bytes , Ġ 0 , Ġresponse , Ġlength , ĠOK AY _ RESPONSE . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" N DEF _ READ _ BINARY _ COMMAND Ġoffset : Ġ$ offset , Ġlength : Ġ$ length , Ġdata : Ġ${ response . to Hex () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLog . w tf ( TAG , Ġ" process Command Ap du () Ġ| ĠUnknown Ġcommand Ġ${ command Ap du ?. to Hex () }") ĊĠĠĠĠĠĠĠ Ġreturn ĠERROR _ RESPONSE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon De activated ( reason : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" N FC ĠH CE Ġde activated Ġdue Ġto Ġreason Ġ$ reason ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠN fc Service Binder Ġ: ĠB inder () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget Service (): ĠN fc Text N def H ce Service Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis @ N fc Text N def H ce Service ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠHEX _ CHARS Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF ". toCharArray () Ċ Ċ fun ĠByteArray . to Hex () Ġ: ĠString { ĊĠĠĠ Ġval Ġresult Ġ= ĠStringBuffer () ĊĊĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoct et Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠ Ġval Ġfirst Index Ġ= Ġ( octet Ġand Ġ 0 xF 0 ). ush r ( 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Index Ġ= Ġoct et Ġand Ġ 0 x 0 F ĊĠĠĠĠĠĠĠ Ġresult . append ( HEX _ CHARS [ first Index ]) ĊĠĠĠĠĠĠĠ Ġresult . append ( HEX _ CHARS [ second Index ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult . toString () Ċ }