// ĠCopyright Ġ 2 0 1 7 - 2 0 2 0 ĠFit bit , ĠInc Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġcom . fit bit . bluetooth . fb g att . rx . client Ċ Ċ import Ġandroid . bluetooth . Bluetooth Gatt Ċ import Ġandroid . bluetooth . Bluetooth GattCharacteristic Ċ import Ġandroid . bluetooth . Bluetooth Gatt Descriptor Ċ import Ġandroid . bluetooth . Bluetooth Gatt Service Ċ import Ġcom . fit bit . bluetooth . fb g att . Fit bit Bluetooth Device Ċ import Ġcom . fit bit . bluetooth . fb g att . Gatt Connection Ċ import Ġcom . fit bit . bluetooth . fb g att . rx . CLIENT _ CONFIG _ UUID Ċ import Ġcom . fit bit . bluetooth . fb g att . rx . run Tx Reactive Ċ import Ġcom . fit bit . bluetooth . fb g att . tx . Request Gatt Connection Interval Transaction Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . UUID Ċ Ċ /** Ċ Ġ* ĠD uplic ating Ġ[ Bluetooth Gatt Descriptor . ENABLE _ NOTIFICATION _ VALUE ], Ġ[ Bluetooth Gatt Descriptor . ENABLE _ IND ICATION _ VALUE ] Ċ Ġ* Ġand Ġ[ Bluetooth Gatt Descriptor . DISABLE _ NOTIFICATION _ VALUE ] Ċ Ġ* Ġvalues Ġas Ġa Ġwork Ġaround Ġfor Ġexception Ġthrown Ġwhen Ġaccessing Ġthese Ġvalue Ġdirectly Ġfrom Ġunit Ġtest Ċ Ġ*/ Ċ internal Ġval Ġg att Enable Notification Value Ġ= Ġbyte ArrayOf ( 0 x 0 1 , Ġ 0 x 0 0 ) Ċ internal Ġval Ġg att Enable Indication Value Ġ= Ġbyte ArrayOf ( 0 x 0 2 , Ġ 0 x 0 0 ) Ċ internal Ġval Ġg att Disable Notification Value Ġ= Ġbyte ArrayOf ( 0 x 0 0 , Ġ 0 x 0 0 ) Ċ Ċ /** Ċ Ġ* ĠInterface Ġrepresenting Ġa ĠBLE Ġpeer Ġ( remote ) Ġdevice Ġand Ġoperations Ġthat Ġcan Ġbe Ġcarried Ġon Ġit . Ċ Ġ*/ Ċ class ĠBit Gatt Peer ( ĊĠĠĠ Ġval Ġg att Connection : ĠG att Connection , ĊĠĠĠ Ġprivate Ġval Ġclient Transaction Provider : ĠClient Transaction Provider Ġ= ĠClient Transaction Provider () Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEst abl ishes Ġa ĠBLE Ġconnection Ġwith Ġa Ġpeer Ġdevice . ĠReturns Ġa Ġ[ Bluetooth Gatt ] Ġobject . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġthat Ġwill Ġemit Ġthe Ġ[ Bluetooth Gatt ] Ġinstance Ġassociated Ġwith Ġthis Ġpeer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconnect (): ĠSingle < Bluetooth Gatt > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( g att Connection . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" We Ġare Ġalready Ġconnected , Ġjust Ġreturning Ġthe Ġg att ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( g att Connection . g att ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Connecting ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġclient Transaction Provider . get Connect Transaction For ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġg att Connection . g att Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġconnection Ġpriority Ġas Ġdescribed Ġin Ġthe Ġ[ Bluetooth Gatt ] Ġobject . ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġpriority ĠConnection Ġpriority Ġ[ Bluetooth Gatt . CONNECTION _ PRIORITY _ LOW _ POWER ], Ġ[ Bluetooth Gatt . CONNECTION _ PRIORITY _ BAL ANCED ] Ġor Ġ[ Bluetooth Gatt . CONNECTION _ PRIORITY _ HIGH ]. ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġemit ting Ġa Ġboolean Ġdepending Ġwith Ġthe Ġresult Ġof Ġthe Ġboolean Ġ( true Ġ-> Ġsuccess , Ġfalse Ġ-> Ġfailure ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequest Connection Priority ( priority : ĠInt ): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Request ing Ġconnection Ġpriority ...") ĊĠĠĠĠĠĠĠ Ġval Ġspeed Ġ= Ġwhen Ġ( priority ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Gatt . CONNECTION _ PRIORITY _ HIGH Ġ-> ĠRequest Gatt Connection Interval Transaction . Speed . HIGH ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Gatt . CONNECTION _ PRIORITY _ BAL ANCED Ġ-> ĠRequest Gatt Connection Interval Transaction . Speed . MID ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Gatt . CONNECTION _ PRIORITY _ LOW _ POWER Ġ-> ĠRequest Gatt Connection Interval Transaction . Speed . LOW ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . w (" Unsupported Ġconnection Ġpriority Ġvalue Ġ: Ġ$ priority ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Gatt Connection Interval Transaction . Speed . MID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġclient Transaction Provider . getRequest Connection Interval Transaction For ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg att Connection , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġan ĠMT U ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġmt u ĠRequest Ġan ĠMT U Ġsize Ġfor Ġthe Ġconnection ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġemit ting Ġan Ġinteger Ġcontaining Ġthe ĠMT U Ġsize ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrequest M tu ( mt u : ĠInt ): ĠSingle < Int > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Request ing ĠMT U Ġof Ġ$ mt u ") ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġclient Transaction Provider . getRequest M tu Transaction For ( g att Connection , Ġmt u ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresult Ġ-> Ġresult . mt u Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPerforms Ġservice Ġdiscovery Ġon Ġthe Ġpeer ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġa Ġ[ List ] Ġof Ġdiscovered Ġ[ Bluetooth Gatt Service ] s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdiscover Services (): ĠSingle < List < Bluetooth Gatt Service >> Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" Discover ing Ġservices ...") ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Transaction Provider . get Discover Services Transaction For ( g att Connection ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġg att Connection . g att ?. services Ġ?: Ġempty List () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSubscribe Ġto Ġa Ġcharacteristic ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristic ĠThe Ġ[ Bluetooth GattCharacteristic ] Ġfrom Ġwhich Ġthe Ġvalue Ġshould Ġbe Ġread ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġthe Ġ[ Bluetooth GattCharacteristic ] Ġand Ġits Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsubscribe Characteristic ( ĊĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic ĊĠĠĠ Ġ): ĠSingle < Bluetooth GattCharacteristic > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġclient Transaction Provider . get Subscribe To GattCharacteristic Transaction For ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg att Connection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcharacteristic Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn subscribe Ġto Ġa Ġcharacteristic ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristic ĠThe Ġ[ Bluetooth GattCharacteristic ] Ġfrom Ġwhich Ġthe Ġvalue Ġshould Ġbe Ġread ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġthe Ġ[ Bluetooth GattCharacteristic ] Ġand Ġits Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġunsubscribe Characteristic ( ĊĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic ĊĠĠĠ Ġ): ĠSingle < Bluetooth GattCharacteristic > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġclient Transaction Provider . getUn subscribe From GattCharacteristic Transaction For ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg att Connection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacteristic ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcharacteristic Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrite Ġto Ġa Ġdescriptor Ġcharacteristic ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristic ĠThe Ġ[ Bluetooth GattCharacteristic ] Ġfrom Ġwhich Ġthe Ġvalue Ġshould Ġbe Ġread ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġto Ġwrite Ġto Ġthe Ġdescriptor Ġcharacteristic ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġthe Ġ[ Bluetooth GattCharacteristic ] Ġand Ġits Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġwrite Descriptor Characteristic ( ĊĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic , ĊĠĠĠĠĠĠĠ Ġvalue : ĠByteArray ĊĠĠĠ Ġ): ĠSingle < Bluetooth GattCharacteristic > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= Ġcharacteristic . get Descriptor ( CLIENT _ CONFIG _ UUID ) ĊĠĠĠĠĠĠĠ Ġdescriptor . value Ġ= Ġvalue ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Transaction Provider . get Write Descriptor Transaction ( g att Connection , Ġdescriptor ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġcharacteristic Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCom bined Ġoperation Ġto Ġset Ġup Ġnotifications Ġon Ġa Ġcharacteristic Ġ( enable s Ġnotifications Ġ+ Ġwrites Ġto Ġdescriptor ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharacteristic ĠThe Ġ[ Bluetooth GattCharacteristic ] Ġon Ġwhich Ġto Ġenable Ġnotifications . ĊĠĠĠĠ Ġ* Ġ@ param Ġsubscribe Ġtrue / false , Ġwhether Ġwe Ġare Ġsub scri bing Ġfrom Ġthe Ġcharacteristic Ġor Ġun sub scri bing ĊĠĠĠĠ Ġ* Ġ@ param Ġis Indication Ġtrue / false , Ġwhether Ġthe Ġnotification Ġtype Ġis Ġindication Ġor Ġnotification ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġthe Ġ[ Bluetooth GattCharacteristic ] Ġon Ġwhich Ġnotifications Ġwere Ġsetup / disabled ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsetup Notifications ( ĊĠĠĠĠĠĠĠ Ġcharacteristic : ĠBluetooth GattCharacteristic , ĊĠĠĠĠĠĠĠ Ġsubscribe : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġis Indication : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠSingle < Bluetooth GattCharacteristic > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( subscribe ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe Characteristic ( character istic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġwrite Descriptor Characteristic ( character istic , Ġif Ġ( is Indication ) Ġg att Enable Indication Value Ġelse Ġg att Enable Notification Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĠTim ber . w ( it , Ġ" fail Ġto Ġsubscribe Ġnotification ...") Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunsubscribe Characteristic ( character istic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġwrite Descriptor Characteristic ( character istic , Ġg att Disable Notification Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ ĠTim ber . w ( it , Ġ" fail Ġto Ġunsubscribe Ġnotification ...") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReads Ġthe Ġdescriptor Ġof Ġa Ġcharacteristic ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġdescriptor ĠThe Ġ[ Bluetooth Gatt Descriptor ] Ġfrom Ġwhich Ġthe Ġvalue Ġwill Ġbe Ġread ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Single ] Ġcontaining Ġthe Ġ[ Bluetooth Gatt Descriptor ] Ġand Ġits Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġread Descriptor ( descriptor : ĠBluetooth Gatt Descriptor ): ĠSingle < Bluetooth Gatt Descriptor > Ġ= ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Transaction Provider . get Read Descriptor Transaction For ( g att Connection , Ġdescriptor ) ĊĠĠĠĠĠĠĠ Ġtransaction . run Tx Reactive ( g att Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġdescriptor Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġservice Ġmatching Ġa Ġspecific ĠUUID . ĠPri or Ġto Ġthis Ġservice Ġdiscovery Ġneeds Ġto Ġbe Ġperformed . ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ param Ġuuid ĠThe Ġ[ UUID ] Ġof Ġthe Ġ[ Bluetooth Gatt Service ] Ġto Ġget . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ Maybe ] Ġcontaining Ġ[ Bluetooth Gatt Service ] Ġmatching Ġthe Ġuuid . ĠEmpty Ġif Ġnot Ġfound . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Service ( uuid : ĠUUID ): ĠMaybe < Bluetooth Gatt Service > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMaybe . from Callable Ġ{ Ġg att Connection . g att ?. getService ( uuid ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġlist Ġof Ġall Ġservices Ġon Ġthe Ġpeer . ĠPri or Ġto Ġthis Ġservice Ġdiscovery Ġneeds Ġto Ġbe Ġperformed . ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ List ] Ġof Ġ[ Bluetooth Gatt Service ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġservices : ĠList < Bluetooth Gatt Service >? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġg att Connection . g att ?. services ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġfit bit Device Ġassociated Ġwith Ġthe Ġpeer ĊĠĠĠĠ Ġ* ĠThis Ġassumes Ġwe Ġare Ġconnected Ġto Ġthe Ġpeer . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ[ Fit bit Bluetooth Device ] Ġassociated Ġwith Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġfit bit Device : ĠFit bit Bluetooth Device ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġg att Connection . device ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġor Ġnot Ġthe Ġ[ Gatt Connection ] Ġis Ġ[ connected ][ Gatt Connection . isConnected ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ** true ** Ġif Ġthe Ġ[ Gatt Connection ] Ġis Ġconnected Ġor Ġ** false ** Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Connected : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġg att Connection . isConnected Ċ } Ċ