package Ġse . jay way . wall acer em ote control Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġokhttp 3 .* Ċ import Ġok io . ByteString Ċ import Ġrx . subjects . Publish Subject ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġcar lem il Ġon Ġ 6 / 3 0 / 1 7 . Ċ Ġ*/ Ċ class ĠWall ace Robot Api () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠNORMAL _ CLO S URE _ STATUS Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġprivate Ġval Ġws Ġ= ĠOk HttpClient (). new WebSocket ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). url (" ws :// 1 0 . 0 . 2 0 1 . 8 0 : 8 8 8 7 "). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWall ace WebSocket Listener ()) ĊĊĠĠĠ Ġinternal Ġclass ĠWall ace WebSocket Listener Ġ: ĠWebSocket Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġvar Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Open ( web Socket : ĠWebSocket ?, Ġresponse : ĠResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" Web Ġsocket Ġopened Ġ" Ġ+ Ġweb Socket . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( web Socket : ĠWebSocket ?, Ġtext : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" Re ceiving Ġ: Ġ" Ġ+ Ġtext !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . startsWith ( Companion . L ID AR _ DATA _ PREFIX ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlid ar Data Publisher . onNext ( get L id ar Data FromJson ( text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( web Socket : ĠWebSocket ?, Ġbytes : ĠByte String ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" Re ceiving Ġbytes Ġ: Ġ" Ġ+ Ġbytes !!. hex ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Closing ( web Socket : ĠWebSocket ?, Ġcode : ĠInt , Ġreason : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" Closing Ġ: Ġ$ code Ġ/ Ġ$ reason ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( web Socket : ĠWebSocket ?, Ġt : ĠThrowable ?, Ġresponse : ĠResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" TAG ", Ġ" Error Ġ: Ġ" Ġ+ Ġt !!. message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget L id ar Data FromJson ( text : ĠString ): ĠList < L id ar Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlid ar Json Ġ= Ġtext . substring ( L ID AR _ DATA _ PREFIX . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgson . fromJson < List < L id ar Data >>( lid ar Json , Ġobject Ġ: ĠType Token < List < L id ar Data >>() Ġ{} . type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġws ?. send ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġws ?. close ( NORMAL _ CLO S URE _ STATUS , Ġ" Exit ing ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠM OT OR _ PREFIX Ġ= Ġ" set _ motor _ speed s :" ĊĠĠĠĠĠĠĠ Ġval ĠL ID AR _ DATA _ PREFIX Ġ= Ġ" get _ lid ar _ data :" ĊĊĠĠĠĠĠĠĠ Ġval Ġlid ar Data Publisher Ġ= ĠPublish Subject . create < List < L id ar Data >>() ĊĠĠĠ Ġ} Ċ } ĊĊ