package Ġcom . st . Blue ST SDK . Features . Ext Configuration Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . st . Blue ST SDK . Feature Ċ import Ġcom . st . Blue ST SDK . Features . Field Ċ import Ġcom . st . Blue ST SDK . Node Ċ import Ġcom . st . Blue ST SDK . Utils . STL 2 Transport Protocol Ċ Ċ class ĠFeature Ext Configuration Ġconstructor ( n : ĠNode ) Ġ: ĊĠĠĠĠĠĠĠ ĠFeature ( FEATURE _ NAME , Ġn , ĠarrayOf ( FEATURE _ EXT _ CONF )) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm ST WIN Transport Decoder Ġ= ĠST L 2 Transport Protocol () ĊĊĠĠĠ Ġfun Ġwrite Command ( Command : ĠByteArray ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġparent Node . write Feature Data ( this , ĠCommand ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAPI Ġfor Ġwriting Ġone Ġcommand Ġwithout Ġany Ġargument ĊĠĠĠ Ġfun Ġwrite Command Without Argument ( command Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcommand Ġ= ĠExt Config Commands ( command Ġ= Ġcommand Name ) ĊĠĠĠĠĠĠĠ Ġsend Command ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAPI Ġfor Ġwriting Ġone Ġcommand Ġwith Ġone ĠJson ĠArgument ĊĠĠĠ Ġfun Ġwrite Command Set Argument JSON ( command Name : ĠString , Ġobj : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Element Ġ= ĠExt ConfigParser . create Ext Config Argument JSON ( obj ) ĊĠĠĠĠĠĠĠ Ġvar Ġcommand Ġ= ĠExt Config Commands ( command Ġ= Ġcommand Name , Ġarg Json Element Ġ= Ġobj Element ) ĊĠĠĠĠĠĠĠ Ġsend Command ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAPI Ġfor Ġwriting Ġone Ġcommand Ġwith Ġone ĠString ĠArgument ĊĠĠĠ Ġfun Ġwrite Command Set Argument String ( command Name : ĠString , Ġobj : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcommand Ġ= ĠExt Config Commands ( command Ġ= Ġcommand Name , Ġarg String Ġ= Ġobj ) ĊĠĠĠĠĠĠĠ Ġsend Command ( command ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠAPI Ġfor Ġwriting Ġone Ġcommand Ġwith Ġone ĠNumber ĠArgument ĊĠĠĠ Ġfun Ġwrite Command Set Argument Number ( command Name : ĠString , Ġnumber : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcommand Ġ= ĠExt Config Commands ( command Ġ= Ġcommand Name , Ġarg Number Ġ= Ġnumber ) ĊĠĠĠĠĠĠĠ Ġsend Command ( command ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Write ( bytes ToSend : ĠByteArray , Ġon Send Complete : ĠRunnable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbyte Send Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( bytes ToSend . size Ġ- Ġbyte Send Ġ> Ġ 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Node . write Feature Data ( this , Ġbytes ToSend . copyOf Range ( byte Send , Ġbyte Send Ġ+ Ġ 2 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte Send Ġ+= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( byte Send Ġ!= Ġbytes ToSend . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Node . write Feature Data ( this , Ġbytes ToSend . copyOf Range ( byte Send , Ġbytes ToSend . size ), Ġon Send Complete ) ĊĠĠĠĠĠĠĠ Ġ} Ġ// if ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetString ( sample : ĠSample ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠByteArray ( sample . data . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġsample . data . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata [ i ] Ġ= Ġsample . data [ i ]. to Byte () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠString ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġextract Ġthe ĠInformation Ġfrom ĠExtended ĠConfiguration ĠFeature ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdata ĠĠĠĠĠĠ Ġarray Ġwhere Ġread Ġthe ĠField Ġdata Ġ( a Ġ 2 0 Ġbytes Ġarray ) ĊĠĠĠĠ Ġ* Ġ@ param Ġdata Offset Ġoffset Ġwhere Ġstart Ġto Ġread Ġthe Ġdata Ġ( 0 Ġby Ġdefault ) ĊĠĠĠĠ Ġ* Ġ@ return Ġnumber Ġof Ġread Ġbytes Ġ( 2 0 ) Ġand Ġdata Ġextracted Ġ( the Ġaudio Ġinformation , Ġthe Ġ 4 0 Ġshort s Ġarray ) ĊĠĠĠĠ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġdata Ġarray Ġhas Ġnot Ġthe Ġcorrect Ġnumber Ġof Ġelements ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġextract Data ( timestamp : ĠLong , Ġdata : ĠByteArray , Ġdata Offset : ĠInt ): ĠExtract Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Frame Ġ= Ġm ST WIN Transport Decoder . de caps ulate ( data ) ĊĠĠĠĠĠĠĠ Ġif Ġ( command Frame Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġexample Ġwe Ġhave Ġhere : Ġ{" Commands " Ġ: Ġ" set Wifi , setName , set Pin , df u , off "} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" ext ĠFeature Ext ", ĠString ( command Frame )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġneed Ġto Ġextract Ġthe Ġcommands Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Obj Ġ= ĠExt ConfigParser . get Json Obj ( command Frame ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// command Response Ġshould Ġcontains Ġonly Ġfor Ġexample Ġ" set Wifi , setName , set Pin , df u , off " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val Ġcommand Response Ġ= ĠExt ConfigParser . extract Command Result ( response Obj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i (" json ĠFeature Ext ", command Response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Data Ġ= ĠCommand Sample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Obj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ext ConfigParser . extract Command Result ( response Obj ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExtract Result ( command Data , Ġdata . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠExtract Result ( null , Ġdata . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCommand Sample ( val Ġcommand : ĠJsonObject ?) Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSample ( empty Array (), ĠarrayOf ( FEATURE _ EXT _ CONF )) ĊĊĠĠĠ Ġprivate Ġfun Ġsend Command ( command : ĠExt Config Commands , Ġon Send Complete : ĠRunnable ? Ġ= Ġnull ){ ĊĠĠĠĠĠĠĠ Ġsend Write ( m ST WIN Transport Decoder . enc aps ulate ( Ext ConfigParser . create Ext Config Command JSON ( command )), Ġon Send Complete ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFEATURE _ NAME Ġ= Ġ" Ext Config " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFEATURE _ DATA _ NAME Ġ= Ġ" Configuration " ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠFEATURE _ EXT _ CONF Ġ= ĠField ( FEATURE _ DATA _ NAME , Ġnull , ĠField . Type . ByteArray , ĠByte . MAX _ VALUE , ĠByte . MIN _ VALUE ) ĊĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Ext Conf ViewModel " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ COMMAND S Ġ= Ġ" Read Command " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ CER TIFICATE Ġ= Ġ" Read Cert " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ UID Ġ= Ġ" UID " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ VERSION _ FW Ġ= Ġ" Version Fw " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ INFO Ġ= Ġ" Info " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ HELP Ġ= Ġ" Help " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ POWER _ STATUS Ġ= Ġ" Power Status " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHANGE _ PIN Ġ= Ġ" Change PIN " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCLEAR _ DB Ġ= Ġ" Clear DB " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ DF U Ġ= Ġ" DF U " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPO WER _ OFF Ġ= Ġ" Off " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ TIME Ġ= Ġ" Set Time " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ DATE Ġ= Ġ" Set Date " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ WIFI Ġ= Ġ" Set WiFi " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ NAME Ġ= Ġ" SetName " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSET _ CER TIFICATE Ġ= Ġ" Set Cert " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREAD _ CUSTOM _ COMMAND S Ġ= Ġ" Read Custom Command " ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command List ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command List ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command Certificate ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command Certificate ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command Help ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command Help ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command Info ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command Info ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command Power Status ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command Power Status ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command STM 3 2 UID ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command STM 3 2 UID ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Command Version FW ( response Obj : ĠJsonObject ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract Command Version Fw ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġresult Custom Command List ( response Obj : ĠJsonObject ?): ĠList < Custom Command >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠExt ConfigParser . extract L Custom Command List ( response Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ