package Ġcom . sil icon labs . ble demo . environment . activities Ċ Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . bluetooth . Bluetooth Gatt Ċ import Ġandroid . bluetooth . Bluetooth GattCharacteristic Ċ import Ġandroid . bluetooth . Bluetooth Gatt Descriptor Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . grid layout . widget . GridLayout Ċ import Ġbutter knife . BindView Ċ import Ġbutter knife . B utter Kn ife Ċ import Ġcom . sil icon labs . ble demo . Bluetooth . BLE . GattCharacteristic Ċ import Ġcom . sil icon labs . ble demo . Bluetooth . BLE . Gatt Service Ċ import Ġcom . sil icon labs . ble demo . Bluetooth . BLE . Timeout Gatt Callback Ċ import Ġcom . sil icon labs . ble demo . Bluetooth . Services . Bluetooth Service Ċ import Ġcom . sil icon labs . ble demo . Bluetooth . Services . Th under board Activity Callback Ċ import Ġcom . sil icon labs . ble demo . R Ċ import Ġcom . sil icon labs . ble demo . environment . control .* Ċ import Ġcom . sil icon labs . ble demo . environment . model . Environment Event Ċ import Ġcom . sil icon labs . ble demo . environment . model . H all State Ċ import Ġcom . sil icon labs . ble demo . environment . present ers . Environment Listener Ċ import Ġcom . sil icon labs . ble demo . environment . present ers . Environment Presenter Ċ import Ġcom . sil icon labs . ble demo . th under board . base . Base Activity Ċ import Ġcom . sil icon labs . ble demo . th under board . model . Notification Event Ċ import Ġcom . sil icon labs . ble demo . th under board . model . Status Event Ċ import Ġcom . sil icon labs . ble demo . th under board . model . Th under Board Device Ċ import Ġcom . sil icon labs . ble demo . th under board . utils . B le Utils Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ import Ġkotlin . math . abs Ċ Ċ class ĠEnvironment Activity Ġ: ĠBase Activity (), ĠEnvironment Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġtemperature Control : ĠTemperature Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhum idity Control : ĠHum idity Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġambient Light Control : ĠAmb ient Light Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġuv Index Control : ĠUV Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpressure Control : ĠPress ure Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsound Level Control : ĠSound Level Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġco 2 Control : ĠCO 2 Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġv oc Control : ĠV OC Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhall Strength Control : ĠHall Strength Control ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhall State Control : ĠHall State Control ? Ġ= Ġnull ĊĊĊĊĠĠĠ Ġ@ BindView ( R . id . env _ grid ) ĊĠĠĠ Ġlateinit Ġvar Ġenv Grid : ĠGrid Layout ĊĠĠĠ Ġprivate Ġvar Ġpower Source Ġ= ĠTh under Board Device . Power Source . UNKNOWN ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġpresenter : ĠEnvironment Presenter ĊĊĠĠĠ Ġprivate Ġvar Ġbluetooth Binding : ĠBluetooth Service . Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbluetooth Service : ĠBluetooth Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġis Already Prepared Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( this ). inflate ( R . layout . activity _ environment , Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġmain Section ?. addView ( view ) ĊĠĠĠĠĠĠĠ Ġprepare Toolbar () ĊĠĠĠĠĠĠĠ Ġregister Receiver ( bluetooth State Receiver , ĠIntent Filter ( Bluetooth Adapter . ACTION _ STATE _ CHANGED )) ĊĠĠĠĠĠĠĠ Ġbind Bluetooth Service () ĊĠĠĠĠĠĠĠ ĠB utter Kn ife . bind ( this ) ĊĠĠĠĠĠĠĠ Ġget D agger Component (). inject ( this ) ĊĠĠĠĠĠĠĠ Ġsetup Env List () ĊĠĠĠĠĠĠĠ Ġinit Controls () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Bluetooth Service () Ġ{ ĊĠĠĠĠĠĠĠ Ġbluetooth Binding Ġ= Ġobject Ġ: ĠBluetooth Service . Binding ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bound ( service : ĠBluetooth Service ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! service . is Gatt Connected ()) Ġfinish () Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service Ġ= Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . bluetooth Service Ġ= Ġservice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. th under board Device Ġ= ĠTh under Board Device ( service . connected Gatt ?. device !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. th under board Callback Ġ= Ġth under board Activity Callback ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . register Gatt Callback ( environment Gatt Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . discover Gatt Services () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . load Status Fragment ( fragment Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . show Connection State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbluetooth Binding ?. bind () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġth under board Activity Callback Ġ= ĠTh under board Activity Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Already Prepared ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ Ġpresenter . prepare View Listener ( this @ Environment Activity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Already Prepared Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpresenter . check Settings () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Already Prepared ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Already Prepared Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . notifications Have Been Set Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġth under board Activity Callback . on Prepared () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġpresenter . clear View Listener () ĊĠĠĠĠĠĠĠ Ġpresenter . clear Environment Notifications () ĊĠĠĠĠĠĠĠ Ġpresenter . clear H all State Notifications () ĊĠĠĠĠĠĠĠ Ġpresenter . reset Device Subscriptions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġbluetooth Service ?. clear Connected Gatt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbluetooth State Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġintent . action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ!= Ġnull Ġ&& Ġaction Ġ== ĠBluetooth Adapter . ACTION _ STATE _ CHANGED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġintent . getInt Extra ( Bluetooth Adapter . EXTRA _ STATE , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Bluetooth Adapter . STATE _ OFF Ġ== Ġstate ) Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Env List () Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature Control Ġ= ĠTemperature Control ( this ) ĊĠĠĠĠĠĠĠ Ġhum idity Control Ġ= ĠHum idity Control ( this ) ĊĠĠĠĠĠĠĠ Ġambient Light Control Ġ= ĠAmb ient Light Control ( this ) ĊĠĠĠĠĠĠĠ Ġuv Index Control Ġ= ĠUV Control ( this ) ĊĠĠĠĠĠĠĠ Ġpressure Control Ġ= ĠPress ure Control ( this ) ĊĠĠĠĠĠĠĠ Ġsound Level Control Ġ= ĠSound Level Control ( this ) ĊĠĠĠĠĠĠĠ Ġco 2 Control Ġ= ĠCO 2 Control ( this ) ĊĠĠĠĠĠĠĠ Ġv oc Control Ġ= ĠV OC Control ( this ) ĊĠĠĠĠĠĠĠ Ġhall Strength Control Ġ= ĠHall Strength Control ( this ) ĊĠĠĠĠĠĠĠ Ġhall State Control Ġ= ĠHall State Control ( this ) ĊĊĠĠĠĠĠĠĠ Ġtemperature Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġsound Level Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġambient Light Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġuv Index Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġhum idity Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġpressure Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġco 2 Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġv oc Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġhall Strength Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġhall State Control ?. layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġhall State Control ?. setOnClickListener Ġ{ Ġpresenter . on H all State Click () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlayout Params : ĠGrid Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Params : ĠGrid Layout . LayoutParams Ġ= ĠGrid Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Layout . spec ( GridLayout . UNDEFINED , Ġ 1 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGrid Layout . spec ( GridLayout . UNDEFINED , Ġ 1 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params . width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlayout Params ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( bluetooth State Receiver ) ĊĠĠĠĠĠĠĠ Ġbluetooth Binding ?. unbind () ĊĠĠĠĠĠĠĠ Ġpresenter . clear View Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . iv _ go _ back ). setOnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ demo , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSettings Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġretrieve Demo Presenter () Ġ= Ġpresenter ĊĊĠĠĠ Ġoverride Ġfun Ġset Temperature ( temperature : ĠFloat , Ġtemperature Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( temperature Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemperature Control ?. set Temperature ( temperature , Ġtemperature Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Hum idity ( humidity : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( humidity Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhum idity Control ?. set Hum idity ( humidity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Uv Index ( uv Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uv Index Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuv Index Control ?. set UV Index ( uv Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Ambient Light ( ambient Light : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ambient Light Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġambient Light Control ?. set Ambient Light ( ambient Light ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Sound Level ( sound Level : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sound Level Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Level Control ?. set Sound Level ( sound Level . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Pressure ( pressure : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pressure Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpressure Control ?. set Pressure ( pressure . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset CO 2 Level ( co 2 Level : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( co 2 Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco 2 Control ?. set CO 2 ( co 2 Level ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset T VOC Level ( tv oc Level : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( voc Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv oc Control ?. set VOC ( tv oc Level ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset H all Strength ( hall Strength : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hall Strength Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhall Strength Control ?. set H all Strength ( hall Strength ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset H all State (@ H all State Ġhall State : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hall State Control ?. isEnabled Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhall State Control ?. set H all State ( hall State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Temperature Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemperature Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Hum idity Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhum idity Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Uv Index Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuv Index Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Ambient Light Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġambient Light Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Sound Level Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsound Level Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Pressure Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpressure Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset CO 2 Level Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġco 2 Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset T VOC Level Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġv oc Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset H all Strength Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhall Strength Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset H all State Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhall State Control ?. isEnabled Ġ= Ġenabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Power S ufficient (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( power Source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTh under Board Device . Power Source . UNKNOWN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTh under Board Device . Power Source . CO IN _ CELL Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Power Source ( power Source : ĠTh under Board Device . Power Source ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . power Source Ġ= Ġpower Source ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Grid () Ġ{ ĊĠĠĠĠĠĠĠ Ġenv Grid . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( temperature Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Hum idity Available ) Ġadd View ( humidity Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Ambient Light React Available Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . character istic Ambient Light Sense Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( ambient Light Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Uv Index Available ) Ġadd View ( uv Index Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Pressure Available ) Ġadd View ( pressure Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Sound Level Available ) Ġadd View ( sound Level Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Co 2 Reading Available Ġ&& Ġis Power S ufficient ()) Ġadd View ( co 2 Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic Tv oc Reading Available Ġ&& Ġis Power S ufficient ()) Ġadd View ( voc Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic H all Field Strength Available ) Ġadd View ( hall Strength Control ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( presenter . character istic H all State Available ) Ġadd View ( hall State Control ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġinit Controls () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġdisable Ġeverything Ġat Ġfirst ... ĊĠĠĠĠĠĠĠ Ġset Temperature Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Hum idity Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Ambient Light Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Uv Index Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Pressure Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset Sound Level Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset CO 2 Level Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset T VOC Level Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset H all Strength Enabled ( false ) ĊĠĠĠĠĠĠĠ Ġset H all State Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Device Disconnect () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Finish ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Message ( R . string . device _ has _ disconnected ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġval Ġenvironment Gatt Callback : ĠTimeout Gatt Callback Ġ= Ġobject Ġ: ĠTimeout Gatt Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Connection StateChange ( g att : ĠBluetooth Gatt , Ġstatus : ĠInt , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Connection StateChange ( g att , Ġstatus , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( newState Ġ== ĠBluetooth Gatt . STATE _ DIS CONNECTED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Device Disconnect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Services Dis covered ( g att : ĠBluetooth Gatt , Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Services Dis covered ( g att , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ== Ġ ĠBluetooth Gatt . G ATT _ SUCCESS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . th under board Device ?. is Services Dis covered Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read Required Character istics () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . check Available Character istics () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Characteristic Read ( g att : ĠBluetooth Gatt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Characteristic Read ( g att , Ġcharacteristic , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Characteristic Read ; Ġcharacteristic Ġ= Ġ${ character istic . uuid }, Ġstatus Ġ= Ġ$ status ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Raw Ġdata Ġ= Ġ${ Arrays . toString ( character istic . value )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= ĠBluetooth Gatt . G ATT _ SUCCESS ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġbluetooth Service ?. th under board Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg att Characteristic Ġ= ĠG att Characteristic . from Uuid ( character istic . uuid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( g att Characteristic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Device Name Ġ-> Ġdevice ?. name Ġ= Ġcharacteristic . getString Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Model Number String Ġ-> Ġdevice ?. model Number Ġ= Ġcharacteristic . getString Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Battery Level Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . battery Level Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Battery Configured Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Power Source Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpower Source Ġ= ĠTh under Board Device . Power Source . from Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . power Source Ġ= Ġpower Source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Power Source Configured Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Status Monitor . onNext ( Status Event ( device )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Monitor . onNext ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Firmware Revision Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. firmware Version Ġ= Ġcharacteristic . getString Value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Status Monitor . onNext ( Status Event ( device )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Monitor . onNext ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Environment Temperature Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemperature Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Temperature ( temperature ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Monitor . onNext ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . environment Read Monitor . onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Hum idity Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Hum idity ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Uv Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Uv Index ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Sound Level Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Sound Level ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Pressure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Pressure ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . CO 2 Reading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set CO 2 Level ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . T VOC Reading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set T VOC Level ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . H all Field Strength Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ). to Long (). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set H all Strength ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . H all State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenvironment Value Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set H all State ( environment Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Ambient Light React , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Ambient Light Sense Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġambient Light Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġambient Light Long Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ambient Light Ġ< Ġ 0 ) Ġabs ( ambient Light ). to Long () Ġ+ ĠInt . MAX _ VALUE . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġambient Light . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set Ambient Light ( ambient Light Long ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Read Monitor ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. read Required Character istics () Ġ// Ġanother Ġcall Ġfor Ġthe Ġrest Ġif Ġany ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Characteristic Write ( g att : ĠBluetooth Gatt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Characteristic Write ( g att , Ġcharacteristic , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Characteristic Write ; Ġcharacteristic Ġ= Ġ${ character istic . uuid }, Ġstatus Ġ= Ġ$ status ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Raw Ġdata Ġ= Ġ${ Arrays . toString ( character istic . value )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= ĠBluetooth Gatt . G ATT _ SUCCESS ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( character istic . uuid Ġ== ĠG att Characteristic . H all ControlPoint . uuid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB le Utils . read Characteristic ( g att , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Service . H all Effect . number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . H all State . uuid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Characteristic Changed ( g att : ĠBluetooth Gatt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Characteristic Changed ( g att , Ġcharacteristic ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Characteristic Changed ; Ġcharacteristic Ġ= Ġ${ character istic . uuid }") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Raw Ġvalue Ġ= Ġ${ Arrays . toString ( character istic . value )} ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġbluetooth Service ?. th under board Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg att Characteristic Ġ= ĠG att Characteristic . from Uuid ( character istic . uuid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( g att Characteristic ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Battery Level Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . battery Level Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Battery Configured Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. selected Device Status Monitor ?. onNext ( Status Event ( device )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Power Source Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpower Source Ġ= ĠTh under Board Device . Power Source . from Int ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . power Source Ġ= Ġpower Source ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Power Source Configured Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. selected Device Status Monitor ?. onNext ( Status Event ( device )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . H all State Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhall State Ġ= Ġcharacteristic . getInt Value ( g att Characteristic . format , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. sensor Environment ?. set H all State ( hall State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. environment Detector ?. onNext ( Environment Event ( device , Ġg att Characteristic . uuid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Descriptor Write ( g att : ĠBluetooth Gatt , Ġdescriptor : ĠBluetooth Gatt Descriptor , Ġstatus : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Descriptor Write ( g att , Ġdescriptor , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" on Descriptor Write ; Ġdescriptor Ġ= Ġ${ descriptor . uuid }, Ġstatus Ġ= Ġ$ status ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Raw Ġdata Ġ= Ġ${ Arrays . toString ( descriptor . value )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= ĠBluetooth Gatt . G ATT _ SUCCESS ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġbluetooth Service ?. th under board Device ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcharacteristic Uuid Ġ= Ġdescriptor . character istic . uuid ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" descriptor Ġfor Ġcharacteristic : Ġ$ character istic Uuid ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( character istic Uuid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Battery Level . uuid Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. is Battery Notification Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read Required Character istics () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Monitor . onNext ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . Power Source . uuid Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. is Power Source Notification Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . read Required Character istics () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . selected Device Monitor . onNext ( device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG att Characteristic . H all State . uuid Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenabled Ġ= Ġdescriptor . value [ 0 ] Ġ== Ġ 0 x 0 1 . to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Action Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( enabled ) ĠNotification Event . ACTION _ NOTIFICATION S _ SET ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠNotification Event . ACTION _ NOTIFICATION S _ CLEAR ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is H all State Notification Enabled Ġ= Ġenabled ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . sensor Environment ?. set H all State Notification Enabled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Service ?. notifications Monitor ?. onNext ( Notification Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdevice !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Action )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }