/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 9 ĠArc us ĠProject . Ċ Ġ* Ċ Ġ* Ġ Ġ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 Ġar cus . presentation . hub . wifi . scan Ċ Ċ import Ġandroid . os . Parcelable Ċ import Ġar cus . cor nea . presenter . Base Presenter Contract Ċ import Ġar cus . presentation . common . wifi . Device WiFi Network Security Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ Ċ /** Ċ Ġ* Ġ@ param Ġscan Timeout InSeconds ĠThe Ġamount Ġof Ġtime Ġthe Ġdevice Ġshould Ġscan Ġfor Ġnetworks . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn variant : Ġscan Timeout Ġ> Ġ 0 Ċ Ġ* Ġ@ param Ġ_ re scan Delay InSeconds ĠThe Ġamount Ġof Ġtime Ġbefore Ġrequesting Ġanother Ġscan . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIn variant : Ġre scan De aly Ġ> Ġscan Timeout Ġ+ Ġ 1 Ċ Ġ* Ġ@ param Ġnetwork Sorter ĠHow Ġto Ġsort Ġthe Ġhub s Ġavailable Ġnetwork Ġlist Ċ Ġ* Ġ@ param Ġseconds Before Show C ant Find Network ĠHow Ġlong Ġto Ġwait Ġbefore Ġpromp ting Ġ" can 't Ġfind Ġnetwork " Ċ Ġ*/ Ċ class ĠHub WiFi Scan Config ( ĊĠĠĠ Ġval Ġscan Timeout InSeconds : ĠInt Ġ= Ġ 1 0 , ĊĠĠĠ Ġ_ re scan Delay InSeconds : ĠLong Ġ= Ġ 1 0 , ĊĠĠĠ Ġval Ġnetwork Sorter : ĠComparator < Hub Available WiFi Network > Ġ= Ġcompare By Descending < Hub Available WiFi Network > Ġ{ ĊĠĠĠĠĠĠĠ Ġit . selected ĊĠĠĠ Ġ}. then By ( String . CASE _ INS ENS ITIVE _ ORDER ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . ssid ĊĠĠĠ Ġ}, ĊĠĠĠ Ġval Ġseconds Before Show C ant Find Network : ĠLong Ġ= Ġ 3 0 Ċ ) Ġ{ ĊĠĠĠ Ġval Ġre scan Delay InSeconds Ġ= Ġ_ re scan Delay InSeconds . coerce At Least ( scan Timeout InSeconds . to Long () Ġ+ Ġ 1 ) Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠHub Available WiFi Network ( ĊĠĠĠ Ġval Ġss id : ĠString , ĊĠĠĠ Ġval Ġsecurity : ĠDevice WiFi Network Security , ĊĠĠĠ Ġval Ġsignal : ĠInt , ĊĠĠĠ Ġval Ġchannel : ĠInt , ĊĠĠĠ Ġval Ġselected : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġis Other Network : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġfun Ġis Secure (): ĠBoolean Ġ= Ġsecurity Ġ!= ĠDevice WiFi Network Security . NONE Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecurity Ġ!= ĠDevice WiFi Network Security . UNKNOWN ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠEMPTY Ġ= ĠHub Available WiFi Network (" None ", ĠDevice WiFi Network Security . NONE , Ġ 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠOTHER _ NETWORK Ġ= ĠHub Available WiFi Network ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġss id Ġ= Ġ" Other ĠNetwork ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecurity Ġ= ĠDevice WiFi Network Security . UNKNOWN , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignal Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Other Network Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Response ( attributes : ĠMap < String , ĠAny >): ĠHub Available WiFi Network Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Security Ġ= Ġ( attributes [" security "] Ġas ? ĠList < String > ?) ?. first OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġss id Ġ= Ġattributes [" ssid "]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecurity Ġ= ĠDevice WiFi Network Security . fromString Representation ( first Security ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignal Ġ= Ġattributes [" signal "] Ġas ? ĠNumber Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġattributes [" channel "] Ġas ? ĠNumber Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHub Available WiFi Network ( ssid , Ġsecurity , Ġsignal . toInt (), Ġchannel . toInt ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠHub WiFi Scan View Ġ{ ĊĠĠĠ Ġvar Ġselected Network : ĠHub Available WiFi Network ĊĠĠĠ Ġvar Ġshow C ant Find Device : ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġhub 's Ġshort Ġname ... ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Hub ShortName Found ( name : ĠString ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġsearching Ġfor Ġnetworks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Searching () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġdone Ġ( for Ġnow ) Ġsearching Ġfor Ġnetworks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Done Searching () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġnetworks Ġhave Ġbeen Ġfound . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnetworks Ġthe Ġfiltered Ġlist Ġof Ġnetworks Ġfound Ġ( no Ġduplicates , Ġsorted , Ġetc ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Networks Found ( networks : ĠList < Hub Available WiFi Network >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġwe Ġare Ġnotified Ġthe Ġhub Ġhas Ġbeen Ġdisconnected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Hub Disconnected () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġwe Ġare Ġnotified Ġthe Ġhub Ġhas Ġbeen Ġre connected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Hub Connected () Ċ } Ċ Ċ interface ĠHub WiFi Scan Presenter Ġ: ĠBase Presenter Contract < Hub WiFi Scan View > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġhub s Ġshort Ġname Ġfrom Ġthe Ġproduct Ġcatalog . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Hub ShortName () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġto Ġstart Ġscanning Ġfor Ġnetworks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġscan Networks () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġto Ġstop Ġscanning Ġfor Ġnetworks . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstop Sc anning Networks () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSort s Ġthe Ġlist Ġof Ġnetworks Ġprovided ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġinput List Ġthe Ġlist Ġof Ġnetworks Ġto Ġsort ĊĠĠĠĠ Ġ* Ġ@ param Ġdevice Connected To Ġthe Ġwifi Ġnetwork Ġthe Ġdevice Ġis Ġconnected Ġto Ġ( optional ) ĊĠĠĠĠ Ġ* Ġ@ param Ġlist Selection Ġthe Ġselection Ġthe Ġuser Ġhas Ġchosen Ġfrom Ġa Ġlist Ġof Ġoptions Ġ( optional ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsort Networks AndSet Selected ( ĊĠĠĠĠĠĠĠ Ġinput List : ĠList < Hub Available WiFi Network >, ĊĠĠĠĠĠĠĠ Ġdevice Connected To : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġlist Selection : ĠHub Available WiFi Network ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠList < Hub Available WiFi Network > Ċ } Ċ