package Ġnl . ord ina . j tech . hack adr one . io Ċ Ċ import Ġnl . ord ina . j tech . hack adr one . models . Command Ċ import Ġnl . ord ina . j tech . hack adr one . net . Command Connection Ċ Ċ import Ġjava . io . IOException Ċ Ċ class ĠController ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdevice : ĠDevice , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcommand Connection : ĠCommand Connection Ċ ) Ġ: ĠThread (), ĠCommand Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcommand Ġ= ĠCommand () ĊĊĠĠĠ Ġoverride Ġfun Ġinterrupt () Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice . set Listener ( null ) ĊĠĠĠĠĠĠĠ Ġdevice . stop () ĊĠĠĠĠĠĠĠ Ġsuper . interrupt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice . set Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdevice . start () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! is Inter rupted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Connection . send Command ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Unable Ġto Ġsend Ġcommand ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Command Ġinterrupted ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Command Received ( command : ĠCommand ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . command Ġ= Ġcommand ?: Command () ĊĠĠĠ Ġ} Ċ Ċ } Ċ