package Ġfr . cop per nic . tools . transparent . terminal Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view .* Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġfr . cop per nic . sdk . serial . Serial Com Ċ import Ġfr . cop per nic . sdk . serial . Serial Factory Ċ import Ġfr . cop per nic . sdk . utils . io . Instance Listener Ċ import Ġfr . cop per nic . tools . transparent . R Ċ import Ġfr . cop per nic . tools . transparent . home . Log Adapter Ċ import Ġkotlinx . android . synt hetic . main . fragment _ terminal .* Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* Ċ Ġ*/ Ċ class ĠTerminal Fragment Ġ@ Inject Ġconstructor () Ġ: ĠFragment (), ĠTerminal View Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠTerminal Presenter ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Adapter : ĠRecyclerView . Adapter < *> ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Manager : ĠRecyclerView . LayoutManager ĊĠĠĠ Ġprivate Ġvar Ġlogs Ġ= ĠArrayList < String >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ terminal , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġenable Sw Open ( false ) ĊĊĠĠĠĠĠĠĠ Ġinitialize RecyclerView () ĊĠĠĠĠĠĠĠ Ġinitialize Serial Port () ĊĊĠĠĠĠĠĠĠ Ġpresenter . setUp ( this ). subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Sw Open ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsw Open . setOn Checked ChangeListener Ġ{ Ġ_, Ġchecked Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( checked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġpresenter . close Port () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġpresenter . open Port ( sp Port Name . selected Item . toString (), Ġsp Port B aud rate . selected Item . toString (). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfab Send . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . send ( et Data ToSend . text . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. menu Inflater ?. inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ clear _ logs Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Empty Logs . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġview Adapter Ġ= ĠLog Adapter ( logs ) ĊĊĠĠĠĠĠĠĠ Ġrv Logs . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġview Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( this @ Terminal Fragment . context , ĠLinearLayoutManager . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġview Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize Serial Port () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġport Ġinstantiation ĊĠĠĠĠĠĠĠ Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSerial Factory . get Direct Instance ( it , Ġobject Ġ: ĠInstance Listener < Serial Com > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Disposed ( p 0 : ĠSerial Com ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Created ( p 0 : ĠSerial Com ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . set Port ( p 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġenable Sw Open ( enable : Boolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsw Open . isEnabled Ġ= Ġenable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Log ( log : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . let { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs . add ( 0 , Ġlog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Empty Logs . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( error : ĠTerminal View . Error ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġwhen ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTerminal View . Error . OPEN _ ERROR Ġ-> ĠR . string . error _ open ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTerminal View . Error . IN CORRECT _ DATA _ TO _ SEND Ġ-> ĠR . string . error _ incorrect _ data _ to _ send ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTerminal View . Error . PORT _ NOT _ OPEN ED Ġ-> ĠR . string . error _ port _ not _ opened ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . error _ ok ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠSn ackbar . make ( fab Send , Ġmessage , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} Ċ } Ċ