/* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġat . spec ure . info . strength Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . tele phony . Cell Info Ċ import Ġandroid . tele phony . Cell Info C dma Ċ import Ġandroid . tele phony . Cell Info G sm Ċ import Ġandroid . tele phony . Cell Info L te Ċ import Ġandroid . tele phony . Cell Info Nr Ċ import Ġandroid . tele phony . Cell Info T dsc dma Ċ import Ġandroid . tele phony . Cell Info W cd ma Ċ import Ġandroid . tele phony . Cell Signal Strength Ċ import Ġandroid . tele phony . Cell Signal Strength C dma Ċ import Ġandroid . tele phony . Cell Signal Strength G sm Ċ import Ġandroid . tele phony . Cell Signal Strength L te Ċ import Ġandroid . tele phony . Cell Signal Strength Nr Ċ import Ġandroid . tele phony . Cell Signal Strength T dsc dma Ċ import Ġandroid . tele phony . Cell Signal Strength W cd ma Ċ import Ġandroid . tele phony . Signal Strength Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġat . spec ure . info . Transport Type Ċ import Ġat . spec ure . info . cell . Cell Network Info Ċ import Ġat . spec ure . info . network . Mobile Network Type Ċ import Ġat . spec ure . info . network . NR Connection State Ċ import Ġat . spec ure . info . network . Network Info Ċ import Ġat . spec ure . info . network . Wifi Network Info Ċ import Ġat . spec ure . info . strength . Signal Strength Info . Companion . check Value Available Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . math . abs Ċ Ċ /** Ċ Ġ* ĠClass Ġthat Ġcontains Ġdata Ġabout Ġsignal Ġstrength Ċ Ġ*/ Ċ abstract Ġclass ĠSignal Strength Info Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTransport Ġtype Ġof Ġnetwork ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġtransport : ĠTransport Type ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSignal Ġstrength Ġin ĠdB m ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġvalue : ĠInt ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠR SR Q Ġin Ġdb ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġr sr q : ĠInt ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSignal Ġlevel Ġin Ġrange Ġ 0 .. 4 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġsignal Level : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMinimum Ġsignal Ġvalue Ġfor Ġcurrent Ġnetwork Ġtype Ġin ĠdB m ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġmin : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMaximum Ġsignal Ġvalue Ġfor Ġcurrent Ġnetwork Ġtype Ġin ĠdB m ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġmax : ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTimestamp Ġin Ġnan oseconds Ġwhen Ġdata Ġwas Ġreceived ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġtimestamp Nan os : ĠLong ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSource Ġof Ġthe Ġsignal Ġinformation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġval Ġsource : ĠSignal Source ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠW IFI _ MIN _ SIGNAL _ VALUE Ġ= Ġ- 1 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠW IFI _ MAX _ SIGNAL _ VALUE Ġ= Ġ- 3 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCELL ULAR _ SIGNAL _ MIN Ġ= Ġ- 1 1 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCELL ULAR _ SIGNAL _ MAX Ġ= Ġ- 5 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠL TE _ RS RP _ SIGNAL _ MIN Ġ= Ġ- 1 3 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠL TE _ RS RP _ SIGNAL _ MAX Ġ= Ġ- 7 0 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC DMA _ RS RP _ SIGNAL _ MIN Ġ= Ġ- 1 2 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC DMA _ RS RP _ SIGNAL _ MAX Ġ= Ġ- 2 4 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠW CD MA _ RS RP _ SIGNAL _ MIN Ġ= Ġ- 1 2 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠW CD MA _ RS RP _ SIGNAL _ MAX Ġ= Ġ- 2 4 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTD SC DMA _ RS RP _ SIGNAL _ MIN Ġ= Ġ- 1 2 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTD SC DMA _ RS RP _ SIGNAL _ MAX Ġ= Ġ- 2 4 ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ RS RP _ SIGNAL _ MIN Ġ= Ġ- 1 4 0 Ġ// Ġdb m ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ RS RP _ SIGNAL _ MAX Ġ= Ġ- 4 4 Ġ// Ġvalues Ġtaken Ġfrom ĠCell Signal Strength Nr ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ R SR Q _ SIGNAL _ MIN Ġ= Ġ- 2 0 Ġ// Ġdb m ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ R SR Q _ SIGNAL _ MAX Ġ= Ġ- 3 Ġ// Ġvalues Ġtaken Ġfrom ĠCell Signal Strength Nr ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ SIN R _ SIGNAL _ MIN Ġ= Ġ- 2 3 Ġ// Ġdb m ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNR _ SIN R _ SIGNAL _ MAX Ġ= Ġ 4 0 Ġ// Ġvalues Ġtaken Ġfrom ĠCell Signal Strength Nr ĊĊĠĠĠĠĠĠĠ Ġ// ĠLift ed Ġfrom ĠDefault Ġcarrier Ġconfigs Ġand Ġmax Ġrange Ġof ĠS SRS RP Ġfrom ĊĠĠĠĠĠĠĠ Ġ// Ġm Ss R sr p Threshold s Ġarray ĊĠĠĠĠĠĠĠ Ġ// ĠBound aries : Ġ[- 1 4 0 ĠdB , Ġ- 4 4 ĠdB ] ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ NONE Ġ= Ġ- 1 4 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ PO OR Ġ= Ġ- 1 1 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ MO DER ATE Ġ= Ġ- 9 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ GO OD Ġ= Ġ- 8 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ FULL Ġ= Ġ- 6 5 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS SRS RP _ SIGNAL _ STRE NG TH _ MAX Ġ= Ġ- 4 4 ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Binary Operation In Tim ber ") ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . Q ) ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength Nr , Ġsource : ĠSignal Source ): ĠSignal Strength Info Nr Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Extract ing Ġfrom Ġ 1 : Ġ$ signal Ġ\ n \ n \ n Ġto : Ġdb m : Ġ${ signal . db m } Ġc si R sr p : Ġ${ signal . csi R sr p } Ġc si R sr q : Ġ${ signal . csi R sr q } Ġc si Sin r : Ġ${ signal . csi Sin r } Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ss R sr p : Ġ${ signal . ss R sr p } Ġss R sr q : Ġ${ signal . ss R sr q } Ġss Sin r : Ġ${ signal . ss Sin r }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Nr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . extract Signal Value ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġsignal . extract Signal Quality Value ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate NR Cell Signal Level ( signal ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠNR _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠNR _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr p Ġ= Ġif Ġ( signal . csi R sr p Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . csi R sr p . fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr q Ġ= Ġif Ġ( signal . csi R sr q Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . csi R sr q . fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si Sin r Ġ= Ġif Ġ( signal . csi Sin r Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . csi Sin r . fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr p Ġ= Ġif Ġ( signal . ss R sr p Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . ss R sr p . fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr q Ġ= Ġif Ġ( signal . ss R sr q Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . ss R sr q . fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Sin r Ġ= Ġif Ġ( signal . ss Sin r Ġ== ĠCell Info . UN AVAILABLE ) Ġnull Ġelse Ġsignal . ss Sin r . fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength L te , Ġsource : ĠSignal Source ): ĠSignal Strength Info L te Ġ= ĠSignal Strength Info L te ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . db m , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġsignal . rs rq . fix L te R sr q () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġsignal . level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠL TE _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠL TE _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc qi Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġsignal . c qi . check Value Available () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr p Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġsignal . rs rp . fix L te R sr p () Ġelse Ġsignal . db m . fix L te R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr ssi Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġsignal . rssi . check Value Available () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr ss nr Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġsignal . rss nr . fix R ss nr () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġsignal . timing Advance . fix L te Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength W cd ma , Ġsource : ĠSignal Source ) Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . db m , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġsignal . level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength T dsc dma , Ġsource : ĠSignal Source ) Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . db m , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġsignal . level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠTD SC DMA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠTD SC DMA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength G sm , Ġsource : ĠSignal Source ) Ġ= ĠSignal Strength Info G sm ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . db m , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġsignal . level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠCELL ULAR _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠCELL ULAR _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbit Error Rate Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġsignal . bit Error Rate . fix Error Bit Rate () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġsignal . timing Advance . fix G sm Timing Advance () Ġelse Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( signal : ĠCell Signal Strength C dma , Ġsource : ĠSignal Source ) Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal . db m , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġsignal . level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= Ġsource ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( info : ĠW ifi Network Info ) Ġ= ĠSignal Strength Info WiFi ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . WIFI , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġinfo . rssi , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġinfo . signal Level , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW IFI _ MAX _ SIGNAL _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW IFI _ MIN _ SIGNAL _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= ĠSystem . nano Time (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlink Speed Ġ= Ġinfo . link Speed ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength : ĠSignal Strength ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠNetwork Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Info : ĠCell Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnr Connection State : ĠNR Connection State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dual Sim : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠSignal Strength Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength Q ( signal Strength , Ġcell Info , Ġnr Connection State ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength Old ( signal Strength , Ġnetwork , Ġcell Info , Ġis Dual Sim ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" New Api ", Ġ" Binary Operation In Tim ber ") ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsignal Strength Q ( signal Strength : ĠSignal Strength ?, Ġcell Info : ĠCell Info ?, Ġnr Connection State : ĠNR Connection State ): ĠSignal Strength Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signal Strength Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SS PQ Ġ- ĠSignal Strength : Ġnull " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsignal : ĠSignal Strength Info ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransport Type Ġ= ĠTransport Type . CELL ULAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Nan os Ġ= ĠSystem . nano Time () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= Ġextract Signal From Cell Info ( nr Connection State , Ġcell Info , Ġtimestamp Nan os , Ġtransport Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= Ġextract Signal From Signal Strength Change Value ( signal Strength , Ġnr Connection State , Ġcell Info , Ġtimestamp Nan os , Ġtransport Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsignal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . Q ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġextract Signal From Cell Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnr Connection State : ĠNR Connection State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Info : ĠCell Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Type : ĠTransport Type ĊĠĠĠĠĠĠĠ Ġ): ĠSignal Strength Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Extract ing Ġfrom Ġcell Info ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( cell Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info Nr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength Nr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength Nr Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength Nr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Value Ġ= Ġcell Signal Strength Nr . extract Signal Value ()?. fix Nr R sr p () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġare Ġnot Ġable Ġto Ġextract Ġsignal Ġinformation Ġfrom Ġinactive ĠNR Ġcell Ġinfo Ġ( inactive Ġbecause Ġof ĠN SA Ġmode ), Ġwe Ġare Ġreturning Ġnull Ġsignal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signal Value Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Extract ing Ġfrom Ġcell Ġ 2 : Ġ$ cell Signal Strength Nr ĠĊĊĊ Ġto : Ġdb m : Ġ${ cell Signal Strength Nr . db m } Ġc si R sr p : Ġ${ cell Signal Strength Nr . csi R sr p } Ġc si R sr q : Ġ${ cell Signal Strength Nr . csi R sr q } Ġc si Sin r : Ġ${ cell Signal Strength Nr . csi Sin r } Ġss R sr p : Ġ${ cell Signal Strength Nr . ss R sr p } Ġss R sr q : Ġ${ cell Signal Strength Nr . ss R sr q } Ġss Sin r : Ġ${ cell Signal Strength Nr . ss Sin r } """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Nr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value . fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġcell Signal Strength Nr . ss R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength Nr . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠNR _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠNR _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr p Ġ= Ġcell Signal Strength Nr . csi R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr q Ġ= Ġcell Signal Strength Nr . csi R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si Sin r Ġ= Ġcell Signal Strength Nr . csi Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr p Ġ= Ġcell Signal Strength Nr . ss R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr q Ġ= Ġcell Signal Strength Nr . ss R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Sin r Ġ= Ġcell Signal Strength Nr . ss Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info L te Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength L te ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength L te Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength L te ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info L te ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcell Signal Strength L te . db m . let Ġ{ Ġnr Signal Ġ-> Ġ- abs ( nr Signal ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġcell Signal Strength L te . rs rq . fix L te R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength L te . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠL TE _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠL TE _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc qi Ġ= Ġcell Signal Strength L te . c qi . check Value Available (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr p Ġ= Ġcell Signal Strength L te . rs rp . fix L te R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ssi Ġ= Ġcell Signal Strength L te . rssi . check Value Available (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ss nr Ġ= Ġcell Signal Strength L te . rss nr . fix R ss nr (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġcell Info . lte Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info G sm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength G sm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength G sm Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength G sm ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info G sm ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcell Signal Strength G sm . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength G sm . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠCELL ULAR _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠCELL ULAR _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit Error Rate Ġ= Ġcell Signal Strength G sm . bit Error Rate . fix Error Bit Rate (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġcell Signal Strength G sm . timing Advance . fix G sm Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info C dma Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength C dma ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength C dma Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength C dma ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcell Signal Strength C dma . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength C dma . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠC DMA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠC DMA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info W cd ma Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength W cd ma ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength W cd ma Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength W cd ma ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcell Signal Strength W cd ma . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength W cd ma . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info T dsc dma Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength T dsc dma ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength T dsc dma Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength T dsc dma ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcell Signal Strength T dsc dma . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength T dsc dma . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠTD SC DMA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠTD SC DMA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . Q ) ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġextract Signal From Signal Strength Change Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength : ĠSignal Strength , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnr Connection State : ĠNR Connection State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Info : ĠCell Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Type : ĠTransport Type ĊĠĠĠĠĠĠĠ Ġ): ĠSignal Strength Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Extract ing Ġfrom Ġon Signal Strength ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsignal : ĠSignal Strength Info ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength . cell Signal Strength s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . db m Ġ== ĠInt . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SS PQ Ġ- ĠSignal Strength : ĠInt . max Value " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Signal Strength L te Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nr Connection State Ġ== ĠNR Connection State . NS A ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġa Ġcase Ġwhen Ġthere Ġis Ġ 4 G Ġsignal Ġbut Ġwe Ġdetected Ġinactive ĠNR Ġcell Ġduring Ġ 5 G ĠN SA Ġmode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( cell Info Ġis ĠCell Info Nr ) Ġ&& Ġ( cell Info . cell Signal Strength Ġis ĠCell Signal Strength Nr )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength Nr Ġ= Ġcell Info . cell Signal Strength Ġas ĠCell Signal Strength Nr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Value Ġ= Ġcell Signal Strength Nr . extract Signal Value ()?. fix Nr R sr p () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġif Ġwe Ġare Ġnot Ġable Ġto Ġextract Ġsignal Ġinformation Ġfrom Ġinactive ĠNR Ġcell Ġinfo Ġ( inactive Ġbecause Ġof ĠN SA Ġmode ), Ġwe Ġare Ġreturning Ġnull Ġsignal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signal Value Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Extract ing Ġfrom Ġ 2 : Ġ$ cell Signal Strength Nr ĠĊĊĊ Ġto : Ġdb m : Ġ${ cell Signal Strength Nr . db m } Ġc si R sr p : Ġ${ cell Signal Strength Nr . csi R sr p } Ġc si R sr q : Ġ${ cell Signal Strength Nr . csi R sr q } Ġc si Sin r : Ġ${ cell Signal Strength Nr . csi Sin r } Ġss R sr p : Ġ${ cell Signal Strength Nr . ss R sr p } Ġss R sr q : Ġ${ cell Signal Strength Nr . ss R sr q } Ġss Sin r : Ġ${ cell Signal Strength Nr . ss Sin r } """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSignal Strength Info Nr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= ĠTransport Type . CELL ULAR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value . fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġcell Signal Strength Nr . ss R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcell Signal Strength Nr . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠNR _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠNR _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr p Ġ= Ġcell Signal Strength Nr . csi R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr q Ġ= Ġcell Signal Strength Nr . csi R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si Sin r Ġ= Ġcell Signal Strength Nr . csi Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr p Ġ= Ġcell Signal Strength Nr . ss R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr q Ġ= Ġcell Signal Strength Nr . ss R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Sin r Ġ= Ġcell Signal Strength Nr . ss Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . CELL _ INFO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info L te ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . db m . let Ġ{ Ġnr Signal Ġ-> Ġ- abs ( nr Signal ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġit . rs rq . fix L te R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġit . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠL TE _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠL TE _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc qi Ġ= Ġit . c qi . check Value Available (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr p Ġ= Ġit . rs rp . fix L te R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ssi Ġ= Ġit . rssi . check Value Available (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ss nr Ġ= Ġit . rss nr . fix R ss nr (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġcell Info . lte Timing Advance () Ġ?: Ġit . timing Advance . fix L te Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Signal Strength Nr Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" Extract ing Ġfrom Ġ 3 : Ġ$ it ĠĊĊĊ Ġto : Ġdb m : Ġ${ it . db m } Ġc si R sr p : Ġ${ it . csi R sr p } Ġc si R sr q : Ġ${ it . csi R sr q } Ġc si Sin r : Ġ${ it . csi Sin r } Ġss R sr p : Ġ${ it . ss R sr p } Ġss R sr q : Ġ${ it . ss R sr q } Ġss Sin r : Ġ${ it . ss Sin r } """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Nr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . db m . let Ġ{ Ġdb m Ġ-> Ġ- abs ( db m ) Ġ}. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġit . csi R sr q . check Value Available (). fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġit . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠNR _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠNR _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr p Ġ= Ġit . csi R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr q Ġ= Ġit . csi R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si Sin r Ġ= Ġit . csi Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr p Ġ= Ġit . ss R sr p . check Value Available ()?. fix Nr R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr q Ġ= Ġit . ss R sr q . check Value Available ()?. fix Nr R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss Sin r Ġ= Ġit . ss Sin r . check Value Available ()?. fix Nr Sin r (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Signal Strength T dsc dma , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Signal Strength W cd ma Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġit . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Signal Strength G sm Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info G sm ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġit . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠCELL ULAR _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠCELL ULAR _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit Error Rate Ġ= Ġit . bit Error Rate . fix Error Bit Rate (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġit . timing Advance . fix G sm Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġit . db m , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġit . level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠCELL ULAR _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠCELL ULAR _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsignal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsignal Strength Old ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Strength : ĠSignal Strength ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork : ĠNetwork Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcell Info : ĠCell Info ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Dual Sim : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ): ĠSignal Strength Info ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstrength : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl te R sr p : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl te R sr q : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl te R ss nr : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl te C qi : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġerror Rate : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Ġis ĠCell Network Info Ġ&& Ġsignal Strength Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġnetwork . network Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( type Ġ== ĠMobile Network Type . CD MA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġsignal Strength . cd ma Db m ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠMobile Network Type . EV DO _ 0 Ġ|| Ġtype Ġ== ĠMobile Network Type . EV DO _ A Ġ|| Ġtype Ġ== ĠMobile Network Type . EV DO _ B ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġsignal Strength . ev do Db m ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( type Ġ== ĠMobile Network Type . LTE Ġ|| Ġtype Ġ== ĠMobile Network Type . LTE _ CA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr p Ġ= ĠSignal Strength :: class . java . getMethod (" get L te R sr p "). invoke ( signal Strength ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= ĠSignal Strength :: class . java . getMethod (" get L te R sr q "). invoke ( signal Strength ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R ss nr Ġ= ĠSignal Strength :: class . java . getMethod (" get L te R ss nr "). invoke ( signal Strength ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te C qi Ġ= ĠSignal Strength :: class . java . getMethod (" get L te C qi "). invoke ( signal Strength ) Ġas ĠInt ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr p Ġ== ĠInteger . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr p Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr q Ġ== ĠInteger . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr q Ġ!= Ġnull Ġ&& Ġl te R sr q Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= Ġ- lte R sr q Ġ// Ġfix Ġinvalid Ġr sr q Ġvalues Ġfor Ġsome Ġdevices Ġ( see Ġ# 9 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R ss nr Ġ== ĠInteger . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R ss nr Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte C qi Ġ== ĠInteger . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te C qi Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( signal Strength . is G sm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget G sm Db m Ġ= ĠSignal Strength :: class . java . getMethod (" get G sm Db m ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġget G sm Db m . invoke ( signal Strength ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( strength Ġ== Ġnull ) Ġ{ Ġ// Ġfallback Ġif Ġnot Ġimplemented ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdB m : ĠInt ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg sm Signal Strength Ġ= Ġsignal Strength . g sm Signal Strength ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġas u Ġ= Ġif Ġ( g sm Signal Strength Ġ== Ġ 9 9 ) Ġ- 1 Ġelse Ġg sm Signal Strength ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdB m Ġ= Ġif Ġ( as u Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 1 3 Ġ+ Ġ 2 Ġ* Ġas u ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= ĠdB m ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcorrection Ġfor Ġdual Ġsim s , Ġbecause Ġwith Ġdual Ġsim s Ġwe Ġreceive Ġupdates Ġfor Ġboth Ġsim s Ġso Ġwe Ġmust Ġfilter Ġsignal Ġchanges Ġonly Ġfor Ġrelevant Ġsim ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Dual Sim ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( network . signal Strength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSignal Strength Info L te Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr p Ġ= Ġnetwork . signal Strength . rs rp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= Ġnetwork . signal Strength . rs rq ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R ss nr Ġ= Ġnetwork . signal Strength . rss nr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te C qi Ġ= Ġnetwork . signal Strength . c qi ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr p Ġ== ĠInteger . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr p Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr q Ġ== ĠInteger . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R sr q Ġ!= Ġnull Ġ&& Ġl te R sr q Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R sr q Ġ= Ġ- lte R sr q Ġ// Ġfix Ġinvalid Ġr sr q Ġvalues Ġfor Ġsome Ġdevices Ġ( see Ġ# 9 9 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte R ss nr Ġ== ĠInteger . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te R ss nr Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lte C qi Ġ== ĠInteger . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl te C qi Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġnetwork . signal Strength ?. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( strength Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info Ġis ĠCell Info W cd ma ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcell Signal Strength Ġ= Ġ( cell Info Ġas ĠCell Info W cd ma ). cell Signal Strength ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcell Signal Strength ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġif Ġ( it . db m Ġ!= ĠCell Info . UN AVAILABLE ) Ġit . db m Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( strength Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġget Db m Ġ= ĠCell Signal Strength :: class . java . getMethod (" get Db m ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġget Db m . invoke ( cell Signal Strength ) Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= ĠCell Info . UN AVAILABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" SS P Ġ- Ġcell Info Ġis Ġnot Ġw cd ma Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Value Ġ= Ġl te R sr p . fix L te R sr p () Ġ?: Ġstrength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Min Ġ= Ġif Ġ( lte R sr p Ġ== Ġnull ) ĠCELL ULAR _ SIGNAL _ MIN Ġelse ĠL TE _ RS RP _ SIGNAL _ MIN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Max Ġ= Ġif Ġ( lte R sr p Ġ== Ġnull ) ĠCELL ULAR _ SIGNAL _ MAX Ġelse ĠL TE _ RS RP _ SIGNAL _ MAX ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsignal : ĠSignal Strength Info ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( network Ġis ĠCell Network Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SS P Ġ- ĠModel : Ġ${ Build . MODEL } Ġ\ n ĠNetwork Ġtype : Ġ${ network . network Type }\ n ĠSignal Strength : Ġ$ signal Strength \ n ĠSignal Value : Ġ$ signal Value \ n ĠCell Info : Ġ$ cell Info " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signal Value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransport Type Ġ= ĠTransport Type . CELL ULAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimestamp Nan os Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" Signal Ġtime Ġ 1 : Ġ$ timestamp Nan os ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cell Info Ġis ĠCell Info Nr ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate Cell Signal Level ( signal Value , Ġsignal Min , Ġsignal Max ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠNR _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠNR _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( signal Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( cell Info ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info L te Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info L te ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġl te R sr q . fix L te R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate Cell Signal Level ( signal Value , Ġsignal Min , Ġsignal Max ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠL TE _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠL TE _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc qi Ġ= Ġl te C qi . check Value Available (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr p Ġ= Ġl te R sr p . fix L te R sr p (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ssi Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr ss nr Ġ= Ġl te R ss nr . fix R ss nr (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġcell Info . cell Signal Strength . timing Advance . check Value Available (). fix L te Timing Advance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info W cd ma Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate Cell Signal Level ( signal Value , Ġsignal Min , Ġsignal Max ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠW CD MA _ RS RP _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCell Info G sm Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info G sm ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate Cell Signal Level ( signal Value , Ġsignal Min , Ġsignal Max ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= ĠCELL ULAR _ SIGNAL _ MIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= ĠCELL ULAR _ SIGNAL _ MAX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbit Error Rate Ġ= Ġsignal Strength ?. g sm Bit Error Rate . fix Error Bit Rate (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtiming Advance Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= ĠSignal Strength Info Common ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Ġ= Ġtransport Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġsignal Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr sr q Ġ= Ġl te R sr q . fix L te R sr q (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Level Ġ= Ġcalculate Cell Signal Level ( signal Value , Ġsignal Min , Ġsignal Max ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġsignal Max , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġsignal Min , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Nan os Ġ= Ġtimestamp Nan os , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠSignal Source . SIGNAL _ STRE NG TH _ CHANGED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsignal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcalculate Cell Signal Level ( signal : ĠInt ?, Ġmin : ĠInt , Ġmax : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelative Signal : ĠDouble Ġ= Ġ(( signal Ġ?: Ġ 0 ) Ġ- Ġmin . toDouble ()) Ġ/ Ġ( max Ġ- Ġmin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Signal Ġ<= Ġ 0 . 0 Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Signal Ġ< Ġ 0 . 2 5 Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Signal Ġ< Ġ 0 . 5 Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Signal Ġ< Ġ 0 . 7 5 Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCount Ġlevel Ġof Ġthe Ġ 5 G Ġsignal Ġonly Ġfrom Ġss rs rp Ġfield Ġvalue Ġaccording Ġto ĠNR Ġss rs rp Ġthresholds ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 0 Ġ- ĠNONE ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 1 ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 2 ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 3 ĊĠĠĠĠĠĠĠĠ Ġ* Ġ 4 Ġ- ĠH IG HE ST ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcalculate NR Cell Signal Level ( signal : ĠCell Signal Strength Nr ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Value Ġ= Ġsignal . extract Signal Value (). fix Nr R sr p () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcalculate NR Signal Level ( signal Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcalculate NR Signal Level ( signal Value : ĠInt ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Value Ġ== Ġnull Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Value Ġ<= ĠS SRS RP _ SIGNAL _ STRE NG TH _ NONE Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Value Ġ< ĠS SRS RP _ SIGNAL _ STRE NG TH _ PO OR Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Value Ġ< ĠS SRS RP _ SIGNAL _ STRE NG TH _ MO DER ATE Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Value Ġ< ĠS SRS RP _ SIGNAL _ STRE NG TH _ GO OD Ġ-> Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix R ss nr (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ- 1 Ġ* Ġabs ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< ĠNR _ RS RP _ SIGNAL _ MIN Ġ|| Ġvalue Ġ> ĠNR _ RS RP _ SIGNAL _ MAX Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix Nr R sr p (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ- 1 Ġ* Ġabs ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< ĠNR _ RS RP _ SIGNAL _ MIN Ġ|| Ġvalue Ġ> ĠNR _ RS RP _ SIGNAL _ MAX Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== Ġ- 1 Ġ* Ġabs ( Cell Info . UN AVAILABLE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ* Ġabs ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix Nr R sr q (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( this Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġ- 1 Ġ* Ġabs ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ< ĠNR _ R SR Q _ SIGNAL _ MIN Ġ|| Ġvalue Ġ> ĠNR _ R SR Q _ SIGNAL _ MAX Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== Ġ- 1 Ġ* Ġabs ( Cell Info . UN AVAILABLE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- abs ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix Nr Sin r (): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ< ĠNR _ SIN R _ SIGNAL _ MIN Ġ|| Ġthis Ġ> ĠNR _ SIN R _ SIGNAL _ MAX Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠCell Info . UN AVAILABLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun ĠInt ?. check Value Available (): ĠInt ? Ġ= Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠInt . MAX _ VALUE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix L te Timing Advance (): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠInt . MAX _ VALUE Ġ|| Ġthis Ġ> Ġ 1 2 8 2 Ġ|| Ġthis Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix G sm Timing Advance (): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠInt . MAX _ VALUE Ġ|| Ġthis Ġ> Ġ 2 1 9 Ġ|| Ġthis Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix L te R sr p (): ĠInt ? Ġ= Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠInt . MAX _ VALUE Ġ|| Ġthis Ġ< Ġ- 1 4 0 Ġ|| Ġthis Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix L te R sr q (): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ== ĠInt . MAX _ VALUE Ġ|| Ġabs ( this ) Ġ> Ġ 1 9 . 5 Ġ|| Ġabs ( this ) Ġ< Ġ 3 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠInt ?. fix Error Bit Rate (): ĠInt ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis Ġ== ĠInt . MIN _ VALUE Ġ|| Ġthis Ġ> Ġ 9 9 Ġ|| Ġthis Ġ< Ġ 0 Ġ|| Ġ( this Ġin Ġ 8 .. 9 8 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠCell Info ?. lte Timing Advance (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ!= Ġnull Ġ&& Ġthis Ġis ĠCell Info L te ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . cell Signal Strength . timing Advance . fix L te Timing Advance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCell Signal Strength Nr . extract Signal Value (): ĠInt ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( abs ( db m ) Ġ== Ġabs ( Cell Info . UN AVAILABLE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ss R sr p . check Value Available () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr p . check Value Available ()?. let Ġ{ Ġnr Signal Ġ-> Ġ- abs ( nr Signal ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb m ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġdb m ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCell Signal Strength Nr . extract Signal Quality Value (): ĠInt ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( abs ( csi R sr q ) Ġ== Ġabs ( Cell Info . UN AVAILABLE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ss R sr q . check Value Available () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġss R sr q . check Value Available ()?. let Ġ{ Ġnr Signal Quality Ġ-> Ġ- abs ( nr Signal Quality ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc si R sr q ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġc si R sr q ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ }