package Ġru . smart ms . rf id reader writer . ui Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . magic rf . uh f reader lib . reader . Tools Ċ import Ġcom . magic rf . uh f reader lib . reader . U hf Reader Ċ import Ġru . smart ms . rf id reader writer . uh f reader . U hf Reader Device Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġru . smart ms . rf id reader writer . App Ċ import Ġru . smart ms . rf id reader writer . R Ċ import Ġru . smart ms . rf id reader writer . data . local . ErrorMessage Repository Ċ import Ġru . smart ms . rf id reader writer . data . local . Scan Data Repository Ċ import Ġru . smart ms . rf id reader writer . db . entity . ErrorMessage Ċ import Ġru . smart ms . rf id reader writer . db . entity . Scan Data Ċ import Ġjava . nio . charset . Charset Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠScan Data Details ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġreader : ĠU hf Reader ? ĊĠĠĠ Ġprivate Ġval Ġreader Device : ĠU hf Reader Device ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠApp . component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġreader Ġ= ĠU hf Reader . getInstance (); ĊĠĠĠĠĠĠĠ Ġreader Device Ġ= ĠU hf Reader Device . getInstance (); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// E PC ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMEM _ BANK Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠADD R Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLEN GTH Ġ= Ġ 6 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġe pc Hex : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġe pc : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġscan Data Repository : ĠScan Data Repository ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠerrorMessage Repository : ĠError Message Repository ĊĊĠĠĠ Ġfun Ġget ErrorMessage (): ĠLive Data < List < ErrorMessage >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠerrorMessage Repository . get ErrorMessage () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ErrorMessage () Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Repository . delete All () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Scan Data (): ĠLive Data < List < Scan Data >> ? Ġ= Ġscan Data Repository . get Scan Data () ĊĊĠĠĠ Ġfun Ġget Scan Data Barcode (): ĠLive Data < Scan Data >? Ġ= Ġscan Data Repository . get Scan Data Barcode () ĊĊĠĠĠ Ġfun Ġdelete Scan Data () Ġ= Ġscan Data Repository . delete All () ĊĊĠĠĠ Ġfun Ġdelete Scan Data Barcode () Ġ Ġ{ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscan Data Repository . delete Scan Data Barcode () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset E PC ( ep c : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreader ?. select E pc ( Tools . HexString 2 Bytes ( ep c )); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġread E pc ( password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccess Password Ġ= ĠTools . HexString 2 Bytes ( password ) ĊĠĠĠĠĠĠĠ Ġif Ġ( access Password . size Ġ!= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġreader ?. read From 6 C ( MEM _ BANK , ĠADD R , ĠLEN GTH , Ġaccess Password ) ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe pc Hex . post Value ( Tools . Bytes 2 HexString ( data , Ġdata . size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe pc . post Value ( String ( data )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠerrorMessage Ġ= Ġget Application < App >(). getString ( R . string . read _ failure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġ"${ getApplication < App >(). getString ( R . string . read _ failure )} : Ġ${ data [ 0 ]. toInt () }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Repository . insert Message ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite E pc ( ep c Write : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccess Password Ġ= ĠTools . HexString 2 Bytes ( password ) ĊĠĠĠĠĠĠĠ Ġif Ġ( access Password . size Ġ!= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġe pc Temp : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġe pc Temp Ġ= Ġif Ġ( ep c Write . length Ġ!= Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( ep c Write ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 2 Ġ- Ġe pc Write . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . toString () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe pc Write ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdata Bytes Ġ= Ġe pc Temp . toByteArray ( Charset . default Charset ()) ĊĠĠĠĠĠĠĠ Ġval Ġwrite Flag Ġ= Ġreader ?. writeTo 6 C ( access Password , ĠMEM _ BANK , ĠADD R , ĠLEN GTH , Ġdata Bytes ) ĊĠĠĠĠĠĠĠ Ġval ĠerrorMessage : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( write Flag Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġget Application < App >(). getString ( R . string . write _ success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader ?. select E pc ( data Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe pc Hex . post Value ( Tools . Bytes 2 HexString ( data Bytes , Ġdata Bytes . size )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe pc . post Value ( ep c Temp ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġget Application < App >(). getString ( R . string . write _ failure ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Repository . insert Message ( errorMessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ