diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 9b2e9513..aa80928d 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -2,9 +2,7 @@ import com.isupatches.android.wisefy.build.BuildVersions
import com.isupatches.android.wisefy.build.Dependencies
import com.isupatches.android.wisefy.build.Versions
import com.isupatches.android.wisefy.build.dagger
-import com.isupatches.android.wisefy.build.debug
import com.isupatches.android.wisefy.build.navigation
-import com.isupatches.android.wisefy.build.release
import java.util.Properties
plugins {
@@ -71,30 +69,21 @@ android {
}
}
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-
- kotlinOptions {
- jvmTarget = "${JavaVersion.VERSION_1_8}"
- }
-
buildFeatures {
viewBinding = true
}
- jacoco {
- version = Versions.JACOCO
+ testCoverage {
+ jacocoVersion = Versions.JACOCO
}
- lintOptions {
+ lint {
isCheckAllWarnings = true
isShowAll = true
isExplainIssues = true
isAbortOnError = true
isWarningsAsErrors = true
- disable("UnusedIds")
+ disable("UnusedIds", "ConvertToWebp")
}
}
@@ -103,7 +92,7 @@ dependencies {
* Toggle these to test release binary vs. source code
*/
implementation(project(":wisefy"))
-// implementation("com.isupatches.android:wisefy:5.0.0-RC1") {
+// implementation("com.isupatches.android:wisefy:5.0.0-RC2") {
// isChanging = true
// }
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6c5f905c..496b6dc0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,7 @@
+
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/add/AddNetworkModel.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/add/AddNetworkModel.kt
index 90b9d04a..bf1a9c39 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/add/AddNetworkModel.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/add/AddNetworkModel.kt
@@ -23,9 +23,9 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.WisefyApi
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.callbacks.AddNetworkCallbacks
import com.isupatches.android.wisefy.sample.internal.scaffolding.BaseModel
import javax.inject.Inject
@@ -88,7 +88,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addOpenNetwork(
- data = OpenNetworkData.Ssid(ssid = ssid),
+ request = AddOpenNetworkRequest.Ssid(ssid = ssid),
callbacks = callbacks
)
}
@@ -101,7 +101,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addOpenNetwork(
- data = OpenNetworkData.SsidAndActivityResultLauncher(
+ request = AddOpenNetworkRequest.SsidAndActivityResultLauncher(
ssid = ssid,
activityResultLauncher = activityResultLauncher
),
@@ -116,7 +116,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addWPA2Network(
- data = WPA2NetworkData.SsidAndPassphrase(
+ request = AddWPA2NetworkRequest.SsidAndPassphrase(
ssid = ssid,
passphrase = passphrase
),
@@ -133,7 +133,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addWPA2Network(
- data = WPA2NetworkData.SsidPassphraseAndActivityResultLauncher(
+ request = AddWPA2NetworkRequest.SsidPassphraseAndActivityResultLauncher(
ssid = ssid,
passphrase = passphrase,
activityResultLauncher = activityResultLauncher
@@ -150,7 +150,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addWPA3Network(
- data = WPA3NetworkData.SsidAndPassphrase(
+ request = AddWPA3NetworkRequest.SsidAndPassphrase(
ssid = ssid,
passphrase = passphrase
),
@@ -167,7 +167,7 @@ internal class DefaultAddNetworkModel @Inject constructor(
callbacks: AddNetworkCallbacks?
) {
wisefy.addWPA3Network(
- data = WPA3NetworkData.SsidPassphraseAndActivityResultLauncher(
+ request = AddWPA3NetworkRequest.SsidPassphraseAndActivityResultLauncher(
ssid = ssid,
passphrase = passphrase,
activityResultLauncher = activityResultLauncher
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscFragment.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscFragment.kt
index 8c861ee4..a3414bc5 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscFragment.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscFragment.kt
@@ -24,8 +24,10 @@ import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
import com.isupatches.android.viewglu.paste
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
import com.isupatches.android.wisefy.sample.R
import com.isupatches.android.wisefy.sample.databinding.FragmentMiscBinding
import com.isupatches.android.wisefy.sample.internal.base.BaseFragment
@@ -50,9 +52,9 @@ internal interface MiscView {
fun displayNoCurrentNetwork()
fun displayCurrentNetworkInfo(currentNetworkInfo: CurrentNetworkInfoData)
fun displayNoCurrentNetworkInfo()
- fun displayFrequency(frequency: Int)
+ fun displayFrequency(frequency: FrequencyData)
fun displayFailureRetrievingFrequency()
- fun displayIP(ip: String)
+ fun displayIP(ip: IPData)
fun displayFailureRetrievingIP()
fun displayNearbyAccessPoints(accessPoints: List)
fun displayNoAccessPointsFound()
@@ -157,16 +159,16 @@ internal class MiscFragment : BaseFragment(), MiscView {
displayInfo(R.string.no_current_network_info, R.string.wisefy_action_result)
}
- override fun displayFrequency(frequency: Int) {
- displayInfo(getString(R.string.frequency_args, frequency), R.string.wisefy_action_result)
+ override fun displayFrequency(frequency: FrequencyData) {
+ displayInfo(getString(R.string.frequency_args, frequency.value), R.string.wisefy_action_result)
}
override fun displayFailureRetrievingFrequency() {
displayInfo(R.string.failure_retrieving_frequency, R.string.wisefy_action_result)
}
- override fun displayIP(ip: String) {
- displayInfo(getString(R.string.ip_args, ip), R.string.wisefy_action_result)
+ override fun displayIP(ip: IPData) {
+ displayInfo(getString(R.string.ip_args, ip.ip), R.string.wisefy_action_result)
}
override fun displayFailureRetrievingIP() {
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscModel.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscModel.kt
index 4d8bd90f..48b584b5 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscModel.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscModel.kt
@@ -21,6 +21,7 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.WisefyApi
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
import com.isupatches.android.wisefy.callbacks.DisableWifiCallbacks
import com.isupatches.android.wisefy.callbacks.EnableWifiCallbacks
import com.isupatches.android.wisefy.callbacks.GetCurrentNetworkCallbacks
@@ -90,7 +91,10 @@ internal class DefaultMiscModel @Inject constructor(
@RequiresPermission(ACCESS_FINE_LOCATION)
override fun getNearbyAccessPoints(callbacks: GetNearbyAccessPointCallbacks?) {
- return wiseFy.getNearbyAccessPoints(true, callbacks)
+ return wiseFy.getNearbyAccessPoints(
+ request = GetNearbyAccessPointsRequest.All(),
+ callbacks = callbacks
+ )
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscPresenter.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscPresenter.kt
index 0932a723..2a15f277 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscPresenter.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/misc/MiscPresenter.kt
@@ -28,8 +28,10 @@ import com.isupatches.android.wisefy.callbacks.GetFrequencyCallbacks
import com.isupatches.android.wisefy.callbacks.GetIPCallbacks
import com.isupatches.android.wisefy.callbacks.GetNearbyAccessPointCallbacks
import com.isupatches.android.wisefy.callbacks.GetSavedNetworksCallbacks
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
import com.isupatches.android.wisefy.sample.internal.scaffolding.BasePresenter
import com.isupatches.android.wisefy.sample.internal.scaffolding.Presenter
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
@@ -177,15 +179,21 @@ internal class DefaultMiscPresenter @Inject constructor(
model.getFrequency(
callbacks = object : GetFrequencyCallbacks {
override fun onFailureRetrievingFrequency() {
- doSafelyWithView { view -> view.displayFailureRetrievingFrequency() }
+ doSafelyWithView { view ->
+ view.displayFailureRetrievingFrequency()
+ }
}
- override fun onFrequencyRetrieved(frequency: Int) {
- doSafelyWithView { view -> view.displayFrequency(frequency) }
+ override fun onFrequencyRetrieved(frequency: FrequencyData) {
+ doSafelyWithView { view ->
+ view.displayFrequency(frequency)
+ }
}
override fun onWisefyAsyncFailure(throwable: Throwable) {
- doSafelyWithView { view -> view.displayWisefyAsyncError(throwable) }
+ doSafelyWithView { view ->
+ view.displayWisefyAsyncError(throwable)
+ }
}
}
)
@@ -201,7 +209,7 @@ internal class DefaultMiscPresenter @Inject constructor(
}
}
- override fun onIPRetrieved(ip: String) {
+ override fun onIPRetrieved(ip: IPData) {
doSafelyWithView { view ->
view.displayIP(ip)
}
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/remove/RemoveNetworkModel.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/remove/RemoveNetworkModel.kt
index 0f4fc2bd..c57bb9ef 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/remove/RemoveNetworkModel.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/remove/RemoveNetworkModel.kt
@@ -20,6 +20,7 @@ import android.Manifest.permission.CHANGE_WIFI_STATE
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.WisefyApi
import com.isupatches.android.wisefy.callbacks.RemoveNetworkCallbacks
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.sample.internal.scaffolding.BaseModel
import javax.inject.Inject
@@ -39,6 +40,6 @@ internal class DefaultRemoveNetworkModel @Inject constructor(
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
override fun removeNetwork(networkName: String, callbacks: RemoveNetworkCallbacks?) {
- wiseFy.removeNetwork(networkName)
+ wiseFy.removeNetwork(RemoveNetworkRequest.SSID(networkName))
}
}
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchFragment.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchFragment.kt
index 9a6168f4..5286e367 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchFragment.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchFragment.kt
@@ -26,6 +26,7 @@ import android.widget.SeekBar
import androidx.annotation.VisibleForTesting
import com.isupatches.android.viewglu.paste
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
import com.isupatches.android.wisefy.sample.R
import com.isupatches.android.wisefy.sample.databinding.FragmentSearchBinding
import com.isupatches.android.wisefy.sample.internal.base.BaseFragment
@@ -61,9 +62,9 @@ internal interface SearchView {
fun displayAccessPointNotFound()
fun displayAccessPoints(accessPoints: List)
fun displayNoAccessPointsFound()
- fun displaySSID(ssid: String?)
+ fun displaySSID(ssid: SSIDData?)
fun displaySSIDNotFound()
- fun displaySSIDs(ssids: List)
+ fun displaySSIDs(ssids: List)
fun displayNoSSIDsFound()
}
@@ -352,7 +353,7 @@ internal class SearchFragment : BaseFragment(), SearchView {
displayInfo(R.string.no_access_points_found, R.string.search_result)
}
- override fun displaySSID(ssid: String?) {
+ override fun displaySSID(ssid: SSIDData?) {
displayInfoFullScreen(getString(R.string.ssid_args, ssid), R.string.search_result)
}
@@ -360,7 +361,7 @@ internal class SearchFragment : BaseFragment(), SearchView {
displayInfo(R.string.ssid_not_found, R.string.search_result)
}
- override fun displaySSIDs(ssids: List) {
+ override fun displaySSIDs(ssids: List) {
displayInfoFullScreen(getString(R.string.ssids_args, ssids), R.string.search_result)
}
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchModel.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchModel.kt
index c8f06e52..36998c07 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchModel.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchModel.kt
@@ -19,6 +19,10 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.ACCESS_WIFI_STATE
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.WisefyApi
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointsCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSSIDCallbacks
@@ -26,6 +30,7 @@ import com.isupatches.android.wisefy.callbacks.SearchForSSIDsCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSavedNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSavedNetworksCallbacks
import com.isupatches.android.wisefy.sample.internal.scaffolding.BaseModel
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
import javax.inject.Inject
internal interface SearchModel {
@@ -84,9 +89,11 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForAccessPointCallbacks?
) {
wisefy.searchForAccessPoint(
- regexForSSID = regexForSSID,
- timeoutInMillis = timeoutInMillis,
- filterDuplicates = filterDuplicates,
+ request = SearchForSingleAccessPointRequest.SSID(
+ regexForSSID = regexForSSID,
+ timeoutInMillis = timeoutInMillis,
+ filterDuplicates = filterDuplicates
+ ),
callbacks = callbacks
)
}
@@ -98,8 +105,10 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForAccessPointsCallbacks?
) {
wisefy.searchForAccessPoints(
- regexForSSID = regexForSSID,
- filterDuplicates = filterDuplicates,
+ request = SearchForMultipleAccessPointsRequest.SSID(
+ regexForSSID = regexForSSID,
+ filterDuplicates = filterDuplicates
+ ),
callbacks = callbacks
)
}
@@ -110,7 +119,7 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForSavedNetworkCallbacks?
) {
wisefy.searchForSavedNetwork(
- regexForSSID = regexForSSID,
+ request = SearchForSavedNetworkRequest.SSID(regexForSSID = regexForSSID),
callbacks = callbacks
)
}
@@ -121,7 +130,7 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForSavedNetworksCallbacks?
) {
wisefy.searchForSavedNetworks(
- regexForSSID = regexForSSID,
+ request = SearchForSavedNetworkRequest.SSID(regexForSSID = regexForSSID),
callbacks = callbacks
)
}
@@ -133,8 +142,10 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForSSIDCallbacks?
) {
wisefy.searchForSSID(
- regexForSSID = regexForSSID,
- timeoutInMillis = timeoutInMillis,
+ request = SearchForSingleSSIDRequest.SSID(
+ regexForSSID = regexForSSID,
+ timeoutInMillis = timeoutInMillis
+ ),
callbacks = callbacks
)
}
@@ -145,7 +156,7 @@ internal class DefaultSearchModel @Inject constructor(
callbacks: SearchForSSIDsCallbacks?
) {
wisefy.searchForSSIDs(
- regexForSSID = regexForSSID,
+ request = SearchForMultipleSSIDsRequest.SSID(regexForSSID = regexForSSID),
callbacks = callbacks
)
}
diff --git a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchPresenter.kt b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchPresenter.kt
index 4c62bc2d..62473d46 100644
--- a/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchPresenter.kt
+++ b/app/src/main/java/com/isupatches/android/wisefy/sample/ui/search/SearchPresenter.kt
@@ -19,6 +19,7 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.ACCESS_WIFI_STATE
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointsCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSSIDCallbacks
@@ -176,7 +177,7 @@ internal class DefaultSearchPresenter @Inject constructor(
regexForSSID = regexForSSID,
timeoutInMillis = timeoutInMillis,
callbacks = object : SearchForSSIDCallbacks {
- override fun onSSIDFound(ssid: String) {
+ override fun onSSIDFound(ssid: SSIDData) {
doSafelyWithView { view ->
view.displaySSID(ssid)
}
@@ -202,7 +203,7 @@ internal class DefaultSearchPresenter @Inject constructor(
model.searchForSSIDs(
regexForSSID = regexForSSID,
callbacks = object : SearchForSSIDsCallbacks {
- override fun onSSIDsFound(ssids: List) {
+ override fun onSSIDsFound(ssids: List) {
doSafelyWithView { view ->
view.displaySSIDs(ssids)
}
diff --git a/build.gradle.kts b/build.gradle.kts
index 5d4e3040..855bcd49 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -54,6 +54,17 @@ allprojects {
showStackTraces = true
}
}
+
+ tasks {
+ withType {
+ kotlinOptions.jvmTarget = "11"
+ }
+
+ withType {
+ sourceCompatibility = "${JavaVersion.VERSION_11}"
+ targetCompatibility = "${JavaVersion.VERSION_11}"
+ }
+ }
}
subprojects {
@@ -66,10 +77,6 @@ subprojects {
// Code coverage
apply(from = "${rootProject.projectDir}/gradle/jacoco.gradle.kts")
- tasks.withType {
- kotlinOptions.jvmTarget = "${JavaVersion.VERSION_1_8}"
- }
-
/**
* Ideally this would be migrated out of the project level build.gradle.kts to the [DocumentationPlugin],
* but currently the buildSrc directory cannot see [DokkaTask] or [jvm] and unsure why.
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
index 3b36a76f..d87b74e5 100644
--- a/buildSrc/build.gradle.kts
+++ b/buildSrc/build.gradle.kts
@@ -1,5 +1,8 @@
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
plugins {
`kotlin-dsl`
+ kotlin("jvm") version "1.5.21"
}
repositories {
@@ -8,5 +11,5 @@ repositories {
}
dependencies {
- implementation("com.android.tools.build:gradle:4.2.2")
+ implementation("com.android.tools.build:gradle:7.0.4")
}
diff --git a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Android.kt b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Android.kt
deleted file mode 100644
index cc099936..00000000
--- a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Android.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2021 Patches Klinefelter
- *
- * 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 com.isupatches.android.wisefy.build
-
-import com.android.build.gradle.internal.dsl.BuildType
-import com.android.build.gradle.internal.dsl.SigningConfig
-import org.gradle.api.Action
-import org.gradle.api.NamedDomainObjectContainer
-
-fun NamedDomainObjectContainer.debug(
- action: Action
-): SigningConfig = getByName("debug", action)
-
-fun NamedDomainObjectContainer.release(
- action: Action
-): SigningConfig = create("release", action)
-
-fun NamedDomainObjectContainer.debug(
- action: Action
-): BuildType = getByName("debug", action)
-
-fun NamedDomainObjectContainer.release(
- action: Action
-): BuildType = getByName("release", action)
diff --git a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/BuildVersions.kt b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/BuildVersions.kt
index d5dbcc09..d8e7aed0 100644
--- a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/BuildVersions.kt
+++ b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/BuildVersions.kt
@@ -18,10 +18,10 @@ package com.isupatches.android.wisefy.build
object BuildVersions {
const val BUILD_TOOLS: String = "30.0.3"
- const val COMPILE_SDK: Int = 30
- const val TARGET_SDK: Int = 30
+ const val COMPILE_SDK: Int = 31
+ const val TARGET_SDK: Int = 31
const val MIN_SDK: Int = 23
- const val MODULE_VERSION_CODE: Int = 17
- const val MODULE_VERSION_NAME: String = "5.0.0-RC2"
+ const val MODULE_VERSION_CODE: Int = 18
+ const val MODULE_VERSION_NAME: String = "5.0.0-RC3"
}
diff --git a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Versions.kt b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Versions.kt
index ba1921b3..b839eaca 100644
--- a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Versions.kt
+++ b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/Versions.kt
@@ -18,7 +18,7 @@ package com.isupatches.android.wisefy.build
@Suppress("StringLiteralDuplication")
object Versions {
// Core tooling
- const val AGP: String = "4.2.2"
+ const val AGP: String = "7.0.4"
const val KOTLIN: String = "1.5.21"
const val COROUTINES: String = "1.5.1"
diff --git a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/plugins/BaseGraldleModulePlugin.kt b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/plugins/BaseGraldleModulePlugin.kt
index 9344af47..62e2d5a4 100644
--- a/buildSrc/src/main/java/com/isupatches/android/wisefy/build/plugins/BaseGraldleModulePlugin.kt
+++ b/buildSrc/src/main/java/com/isupatches/android/wisefy/build/plugins/BaseGraldleModulePlugin.kt
@@ -17,9 +17,7 @@ package com.isupatches.android.wisefy.build.plugins
import com.android.build.gradle.LibraryExtension
import com.isupatches.android.wisefy.build.BuildVersions
-import com.isupatches.android.wisefy.build.debug
import com.isupatches.android.wisefy.build.Dependencies
-import com.isupatches.android.wisefy.build.release
import com.isupatches.android.wisefy.build.DependencyConstants.IMPLEMENTATION
import com.isupatches.android.wisefy.build.Versions
import org.gradle.api.JavaVersion
@@ -51,15 +49,12 @@ class BaseGradleModulePlugin : Plugin {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
- compileSdkVersion(BuildVersions.COMPILE_SDK)
+ compileSdk = BuildVersions.COMPILE_SDK
buildToolsVersion = BuildVersions.BUILD_TOOLS
defaultConfig {
- minSdkVersion(BuildVersions.MIN_SDK)
- targetSdkVersion(BuildVersions.TARGET_SDK)
-
- versionCode = BuildVersions.MODULE_VERSION_CODE
- versionName = BuildVersions.MODULE_VERSION_NAME
+ minSdk = BuildVersions.MIN_SDK
+ targetSdk = BuildVersions.TARGET_SDK
vectorDrawables.useSupportLibrary = true
@@ -102,16 +97,11 @@ class BaseGradleModulePlugin : Plugin {
}
}
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
-
sourceSets {
- getByName("main") { jni.srcDirs() }
+ getByName("main") { jniLibs.srcDirs() }
}
- lintOptions {
+ lint {
isCheckAllWarnings = true
isShowAll = true
isExplainIssues = true
@@ -124,8 +114,8 @@ class BaseGradleModulePlugin : Plugin {
unitTests.isReturnDefaultValues = true
}
- jacoco {
- version = Versions.JACOCO
+ testCoverage {
+ jacocoVersion = Versions.JACOCO
}
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index e708b1c0..7454180f 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index af7be50b..ac0b842f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 4f906e0c..1b6c7873 100755
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
-#!/usr/bin/env sh
+#!/bin/sh
#
-# Copyright 2015 the original author or authors.
+# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,67 +17,101 @@
#
##############################################################################
-##
-## Gradle start up script for UN*X
-##
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
##############################################################################
# Attempt to set APP_HOME
+
# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
+APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
+MAX_FD=maximum
warn () {
echo "$*"
-}
+} >&2
die () {
echo
echo "$*"
echo
exit 1
-}
+} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
+ JAVACMD=$JAVA_HOME/jre/sh/java
else
- JAVACMD="$JAVA_HOME/bin/java"
+ JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
- JAVACMD="java"
+ JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@@ -106,80 +140,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
fi
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
# Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
fi
- i=`expr $i + 1`
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
fi
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
exec "$JAVACMD" "$@"
diff --git a/lint.xml b/lint.xml
new file mode 100644
index 00000000..b801645e
--- /dev/null
+++ b/lint.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/wisefy/src/main/AndroidManifest.xml b/wisefy/src/main/AndroidManifest.xml
index 52798a64..7e4464e1 100644
--- a/wisefy/src/main/AndroidManifest.xml
+++ b/wisefy/src/main/AndroidManifest.xml
@@ -1 +1,6 @@
-
+
+
+
+
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/Wisefy.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/Wisefy.kt
index 2fbc1864..3c69b071 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/Wisefy.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/Wisefy.kt
@@ -22,8 +22,6 @@ import android.Manifest.permission.ACCESS_WIFI_STATE
import android.Manifest.permission.CHANGE_WIFI_STATE
import android.content.Context
import android.net.ConnectivityManager
-import android.net.Network
-import android.net.wifi.ScanResult
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.os.Build
@@ -34,12 +32,20 @@ import androidx.annotation.VisibleForTesting
import com.isupatches.android.wisefy.accesspoints.AccessPointsUtil
import com.isupatches.android.wisefy.accesspoints.WisefyAccessPointsUtil
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.GetRSSIRequest
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
import com.isupatches.android.wisefy.addnetwork.AddNetworkUtil
import com.isupatches.android.wisefy.addnetwork.WisefyAddNetworkUtil
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.callbacks.AddNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.ConnectToNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.DisableWifiCallbacks
@@ -62,22 +68,29 @@ import com.isupatches.android.wisefy.callbacks.SearchForSavedNetworksCallbacks
import com.isupatches.android.wisefy.constants.DeprecationMessages
import com.isupatches.android.wisefy.frequency.FrequencyUtil
import com.isupatches.android.wisefy.frequency.WisefyFrequencyUtil
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnection.NetworkConnectionUtil
import com.isupatches.android.wisefy.networkconnection.WisefyNetworkConnectionUtil
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
import com.isupatches.android.wisefy.networkconnectionstatus.NetworkConnectionStatusUtil
import com.isupatches.android.wisefy.networkconnectionstatus.WisefyNetworkConnectionStatusUtil
+import com.isupatches.android.wisefy.networkconnectionstatus.entities.IsNetworkConnectedToSSIDRequest
import com.isupatches.android.wisefy.networkinfo.NetworkInfoUtil
import com.isupatches.android.wisefy.networkinfo.WisefyNetworkInfoUtil
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.GetCurrentNetworkInfoRequest
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
import com.isupatches.android.wisefy.removenetwork.RemoveNetworkUtil
import com.isupatches.android.wisefy.removenetwork.WisefyRemoveNetworkUtil
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
import com.isupatches.android.wisefy.savednetworks.WisefySavedNetworkUtil
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
import com.isupatches.android.wisefy.security.SecurityUtil
import com.isupatches.android.wisefy.security.WisefySecurityUtil
import com.isupatches.android.wisefy.signal.SignalUtil
@@ -161,7 +174,8 @@ class Wisefy private constructor(
frequencyUtil = WisefyFrequencyUtil(
coroutineDispatcherProvider = coroutineDispatcherProvider,
logger = logger,
- wifiManager = wifiManager
+ wifiManager = wifiManager,
+ connectivityManager = connectivityManager
)
networkConnectionUtil = WisefyNetworkConnectionUtil(
coroutineDispatcherProvider = coroutineDispatcherProvider,
@@ -298,35 +312,35 @@ class Wisefy private constructor(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult {
- return addNetworkUtil.addOpenNetwork(data)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult {
+ return addNetworkUtil.addOpenNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData, callbacks: AddNetworkCallbacks?) {
- addNetworkUtil.addOpenNetwork(data, callbacks)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest, callbacks: AddNetworkCallbacks?) {
+ addNetworkUtil.addOpenNetwork(request, callbacks)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult {
- return addNetworkUtil.addWPA2Network(data)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult {
+ return addNetworkUtil.addWPA2Network(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData, callbacks: AddNetworkCallbacks?) {
- addNetworkUtil.addWPA2Network(data, callbacks)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest, callbacks: AddNetworkCallbacks?) {
+ addNetworkUtil.addWPA2Network(request, callbacks)
}
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult {
- return addNetworkUtil.addWPA3Network(data)
+ override fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult {
+ return addNetworkUtil.addWPA3Network(request)
}
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData, callbacks: AddNetworkCallbacks?) {
- addNetworkUtil.addWPA3Network(data, callbacks)
+ override fun addWPA3Network(request: AddWPA3NetworkRequest, callbacks: AddNetworkCallbacks?) {
+ addNetworkUtil.addWPA3Network(request, callbacks)
}
override fun calculateBars(rssiLevel: Int, targetNumberOfBars: Int): Int {
@@ -343,17 +357,13 @@ class Wisefy private constructor(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- return networkConnectionUtil.connectToNetwork(ssidToConnectTo, timeoutInMillis)
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ return networkConnectionUtil.connectToNetwork(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun connectToNetwork(
- ssidToConnectTo: String,
- timeoutInMillis: Int,
- callbacks: ConnectToNetworkCallbacks?
- ) {
- networkConnectionUtil.connectToNetwork(ssidToConnectTo, timeoutInMillis, callbacks)
+ override fun connectToNetwork(request: NetworkConnectionRequest, callbacks: ConnectToNetworkCallbacks?) {
+ networkConnectionUtil.connectToNetwork(request, callbacks)
}
@Deprecated(DeprecationMessages.DISABLE_WIFI)
@@ -393,18 +403,21 @@ class Wisefy private constructor(
}
@RequiresPermission(ACCESS_NETWORK_STATE)
- override fun getCurrentNetworkInfo(network: Network?): CurrentNetworkInfoData? {
- return networkInfoUtil.getCurrentNetworkInfo(network)
+ override fun getCurrentNetworkInfo(request: GetCurrentNetworkInfoRequest): CurrentNetworkInfoData? {
+ return networkInfoUtil.getCurrentNetworkInfo(request)
}
@RequiresPermission(ACCESS_NETWORK_STATE)
- override fun getCurrentNetworkInfo(callbacks: GetCurrentNetworkInfoCallbacks?, network: Network?) {
- networkInfoUtil.getCurrentNetworkInfo(callbacks, network)
+ override fun getCurrentNetworkInfo(
+ callbacks: GetCurrentNetworkInfoCallbacks?,
+ request: GetCurrentNetworkInfoRequest
+ ) {
+ networkInfoUtil.getCurrentNetworkInfo(callbacks, request)
}
@RequiresApi(LOLLIPOP)
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getFrequency(): Int? {
+ override fun getFrequency(): FrequencyData? {
return frequencyUtil.getFrequency()
}
@@ -415,41 +428,41 @@ class Wisefy private constructor(
}
@RequiresApi(LOLLIPOP)
- override fun getFrequency(network: WifiInfo): Int {
+ override fun getFrequency(network: WifiInfo): FrequencyData {
return frequencyUtil.getFrequency(network)
}
- override fun getIP(): String? {
+ @RequiresPermission(ACCESS_NETWORK_STATE)
+ override fun getIP(): IPData? {
return networkInfoUtil.getIP()
}
+ @RequiresPermission(ACCESS_NETWORK_STATE)
override fun getIP(callbacks: GetIPCallbacks?) {
networkInfoUtil.getIP(callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean): List {
- return accessPointsUtil.getNearbyAccessPoints(filterDuplicates)
+ override fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List {
+ return accessPointsUtil.getNearbyAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean, callbacks: GetNearbyAccessPointCallbacks?) {
- accessPointsUtil.getNearbyAccessPoints(filterDuplicates, callbacks)
+ override fun getNearbyAccessPoints(
+ request: GetNearbyAccessPointsRequest,
+ callbacks: GetNearbyAccessPointCallbacks?
+ ) {
+ accessPointsUtil.getNearbyAccessPoints(request, callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int? {
- return accessPointsUtil.getRSSI(regexForSSID, takeHighest, timeoutInMillis)
+ override fun getRSSI(request: GetRSSIRequest): RSSIData? {
+ return accessPointsUtil.getRSSI(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(
- regexForSSID: String,
- takeHighest: Boolean,
- timeoutInMillis: Int,
- callbacks: GetRSSICallbacks?
- ) {
- accessPointsUtil.getRSSI(regexForSSID, takeHighest, timeoutInMillis, callbacks)
+ override fun getRSSI(request: GetRSSIRequest, callbacks: GetRSSICallbacks?) {
+ accessPointsUtil.getRSSI(request, callbacks)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
@@ -470,8 +483,8 @@ class Wisefy private constructor(
return networkConnectionStatusUtil.isDeviceConnectedToMobileOrWifiNetwork()
}
- override fun isDeviceConnectedToSSID(ssid: String): Boolean {
- return networkConnectionStatusUtil.isDeviceConnectedToSSID(ssid)
+ override fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean {
+ return networkConnectionStatusUtil.isDeviceConnectedToSSID(request)
}
override fun isDeviceConnectedToWifiNetwork(): Boolean {
@@ -491,37 +504,37 @@ class Wisefy private constructor(
return frequencyUtil.isNetwork5gHz(network)
}
- override fun isNetworkEAP(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkEAP(scanResult)
+ override fun isNetworkEAP(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkEAP(network)
}
- override fun isNetworkPSK(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkPSK(scanResult)
+ override fun isNetworkPSK(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkPSK(network)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
- return savedNetworkUtil.isNetworkSaved(ssid)
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
+ return savedNetworkUtil.isNetworkSaved(request)
}
- override fun isNetworkSecure(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkSecure(scanResult)
+ override fun isNetworkSecure(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkSecure(network)
}
- override fun isNetworkWEP(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkWEP(scanResult)
+ override fun isNetworkWEP(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkWEP(network)
}
- override fun isNetworkWPA(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkWPA(scanResult)
+ override fun isNetworkWPA(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkWPA(network)
}
- override fun isNetworkWPA2(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkWPA2(scanResult)
+ override fun isNetworkWPA2(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkWPA2(network)
}
- override fun isNetworkWPA3(scanResult: ScanResult): Boolean {
- return securityUtil.isNetworkWPA3(scanResult)
+ override fun isNetworkWPA3(network: AccessPointData): Boolean {
+ return securityUtil.isNetworkWPA3(network)
}
override fun isWifiEnabled(): Boolean {
@@ -529,85 +542,84 @@ class Wisefy private constructor(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- return removeNetworkUtil.removeNetwork(ssidToRemove)
+ override fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult {
+ return removeNetworkUtil.removeNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String, callbacks: RemoveNetworkCallbacks?) {
- removeNetworkUtil.removeNetwork(ssidToRemove, callbacks)
+ override fun removeNetwork(request: RemoveNetworkRequest, callbacks: RemoveNetworkCallbacks?) {
+ removeNetworkUtil.removeNetwork(request, callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData? {
- return accessPointsUtil.searchForAccessPoint(regexForSSID, timeoutInMillis, filterDuplicates)
+ override fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData? {
+ return accessPointsUtil.searchForAccessPoint(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean,
+ request: SearchForSingleAccessPointRequest,
callbacks: SearchForAccessPointCallbacks?
) {
- accessPointsUtil.searchForAccessPoint(regexForSSID, timeoutInMillis, filterDuplicates, callbacks)
+ accessPointsUtil.searchForAccessPoint(request, callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoints(regexForSSID: String, filterDuplicates: Boolean): List {
- return accessPointsUtil.searchForAccessPoints(regexForSSID, filterDuplicates)
+ override fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List {
+ return accessPointsUtil.searchForAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
override fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean,
+ request: SearchForMultipleAccessPointsRequest,
callbacks: SearchForAccessPointsCallbacks?
) {
- accessPointsUtil.searchForAccessPoints(regexForSSID, filterDuplicates, callbacks)
+ accessPointsUtil.searchForAccessPoints(request, callbacks)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
- return savedNetworkUtil.searchForSavedNetwork(regexForSSID)
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
+ return savedNetworkUtil.searchForSavedNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String, callbacks: SearchForSavedNetworkCallbacks?) {
- savedNetworkUtil.searchForSavedNetwork(regexForSSID, callbacks)
+ override fun searchForSavedNetwork(
+ request: SearchForSavedNetworkRequest,
+ callbacks: SearchForSavedNetworkCallbacks?
+ ) {
+ savedNetworkUtil.searchForSavedNetwork(request, callbacks)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
- return savedNetworkUtil.searchForSavedNetworks(regexForSSID)
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
+ return savedNetworkUtil.searchForSavedNetworks(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String, callbacks: SearchForSavedNetworksCallbacks?) {
- savedNetworkUtil.searchForSavedNetworks(regexForSSID, callbacks)
+ override fun searchForSavedNetworks(
+ request: SearchForSavedNetworkRequest,
+ callbacks: SearchForSavedNetworksCallbacks?
+ ) {
+ savedNetworkUtil.searchForSavedNetworks(request, callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String? {
- return accessPointsUtil.searchForSSID(regexForSSID, timeoutInMillis)
+ override fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData? {
+ return accessPointsUtil.searchForSSID(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int, callbacks: SearchForSSIDCallbacks?) {
- accessPointsUtil.searchForSSID(regexForSSID, timeoutInMillis, callbacks)
+ override fun searchForSSID(request: SearchForSingleSSIDRequest, callbacks: SearchForSSIDCallbacks?) {
+ accessPointsUtil.searchForSSID(request, callbacks)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String): List {
- return accessPointsUtil.searchForSSIDs(regexForSSID)
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List {
+ return accessPointsUtil.searchForSSIDs(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String, callbacks: SearchForSSIDsCallbacks?) {
- accessPointsUtil.searchForSSIDs(regexForSSID, callbacks)
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest, callbacks: SearchForSSIDsCallbacks?) {
+ accessPointsUtil.searchForSSIDs(request, callbacks)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/AccessPointsApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/AccessPointsApi.kt
index d849e707..eed78f63 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/AccessPointsApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/AccessPointsApi.kt
@@ -18,6 +18,14 @@ package com.isupatches.android.wisefy.accesspoints
import android.Manifest.permission.ACCESS_FINE_LOCATION
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.GetRSSIRequest
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
import com.isupatches.android.wisefy.callbacks.GetNearbyAccessPointCallbacks
import com.isupatches.android.wisefy.callbacks.GetRSSICallbacks
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointCallbacks
@@ -28,57 +36,41 @@ import com.isupatches.android.wisefy.callbacks.SearchForSSIDsCallbacks
interface AccessPointsApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getNearbyAccessPoints(filterDuplicates: Boolean): List
+ fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int?
+ fun getRSSI(request: GetRSSIRequest): RSSIData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData?
+ fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean
- ): List
+ fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String?
+ fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSIDs(regexForSSID: String): List
+ fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List
}
interface AccessPointsApiAsync {
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getNearbyAccessPoints(filterDuplicates: Boolean, callbacks: GetNearbyAccessPointCallbacks?)
+ fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest, callbacks: GetNearbyAccessPointCallbacks?)
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int, callbacks: GetRSSICallbacks?)
+ fun getRSSI(request: GetRSSIRequest, callbacks: GetRSSICallbacks?)
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean,
- callbacks: SearchForAccessPointCallbacks?
- )
+ fun searchForAccessPoint(request: SearchForSingleAccessPointRequest, callbacks: SearchForAccessPointCallbacks?)
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean,
- callbacks: SearchForAccessPointsCallbacks?
- )
+ fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest, callbacks: SearchForAccessPointsCallbacks?)
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSID(regexForSSID: String, timeoutInMillis: Int, callbacks: SearchForSSIDCallbacks?)
+ fun searchForSSID(request: SearchForSingleSSIDRequest, callbacks: SearchForSSIDCallbacks?)
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSIDs(regexForSSID: String, callbacks: SearchForSSIDsCallbacks?)
+ fun searchForSSIDs(request: SearchForMultipleSSIDsRequest, callbacks: SearchForSSIDsCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/WisefyAccessPointsUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/WisefyAccessPointsUtil.kt
index 0b7c56e2..6d0e9a4f 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/WisefyAccessPointsUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/WisefyAccessPointsUtil.kt
@@ -20,6 +20,14 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.accesspoints.delegates.LegacyAccessPointsDelegate
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.GetRSSIRequest
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
import com.isupatches.android.wisefy.callbacks.GetNearbyAccessPointCallbacks
import com.isupatches.android.wisefy.callbacks.GetRSSICallbacks
import com.isupatches.android.wisefy.callbacks.SearchForAccessPointCallbacks
@@ -52,14 +60,17 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean): List {
- return delegate.getNearbyAccessPoints(filterDuplicates)
+ override fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List {
+ return delegate.getNearbyAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean, callbacks: GetNearbyAccessPointCallbacks?) {
+ override fun getNearbyAccessPoints(
+ request: GetNearbyAccessPointsRequest,
+ callbacks: GetNearbyAccessPointCallbacks?
+ ) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val accessPoints = delegate.getNearbyAccessPoints(filterDuplicates)
+ val accessPoints = delegate.getNearbyAccessPoints(request)
withContext(coroutineDispatcherProvider.main) {
when {
accessPoints.isNotEmpty() -> callbacks?.onNearbyAccessPointsRetrieved(accessPoints)
@@ -70,19 +81,14 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int? {
- return delegate.getRSSI(regexForSSID, takeHighest, timeoutInMillis)
+ override fun getRSSI(request: GetRSSIRequest): RSSIData? {
+ return delegate.getRSSI(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(
- regexForSSID: String,
- takeHighest: Boolean,
- timeoutInMillis: Int,
- callbacks: GetRSSICallbacks?
- ) {
+ override fun getRSSI(request: GetRSSIRequest, callbacks: GetRSSICallbacks?) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val rssi = delegate.getRSSI(regexForSSID, takeHighest, timeoutInMillis)
+ val rssi = delegate.getRSSI(request)
withContext(coroutineDispatcherProvider.main) {
when {
rssi != null -> callbacks?.onRSSIRetrieved(rssi)
@@ -93,23 +99,17 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData? {
- return delegate.searchForAccessPoint(regexForSSID, timeoutInMillis, filterDuplicates)
+ override fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData? {
+ return delegate.searchForAccessPoint(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean,
+ request: SearchForSingleAccessPointRequest,
callbacks: SearchForAccessPointCallbacks?
) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val accessPoint = delegate.searchForAccessPoint(regexForSSID, timeoutInMillis, filterDuplicates)
+ val accessPoint = delegate.searchForAccessPoint(request)
withContext(coroutineDispatcherProvider.main) {
when {
accessPoint != null -> callbacks?.onAccessPointFound(accessPoint)
@@ -120,18 +120,17 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoints(regexForSSID: String, filterDuplicates: Boolean): List {
- return delegate.searchForAccessPoints(regexForSSID, filterDuplicates)
+ override fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List {
+ return delegate.searchForAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
override fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean,
+ request: SearchForMultipleAccessPointsRequest,
callbacks: SearchForAccessPointsCallbacks?
) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val accessPoints = delegate.searchForAccessPoints(regexForSSID, filterDuplicates)
+ val accessPoints = delegate.searchForAccessPoints(request)
withContext(coroutineDispatcherProvider.main) {
when {
accessPoints.isNotEmpty() -> callbacks?.onAccessPointsFound(accessPoints)
@@ -142,14 +141,14 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String? {
- return delegate.searchForSSID(regexForSSID, timeoutInMillis)
+ override fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData? {
+ return delegate.searchForSSID(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int, callbacks: SearchForSSIDCallbacks?) {
+ override fun searchForSSID(request: SearchForSingleSSIDRequest, callbacks: SearchForSSIDCallbacks?) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val ssid = delegate.searchForSSID(regexForSSID, timeoutInMillis)
+ val ssid = delegate.searchForSSID(request)
withContext(coroutineDispatcherProvider.main) {
when {
ssid != null -> callbacks?.onSSIDFound(ssid)
@@ -160,14 +159,14 @@ internal class WisefyAccessPointsUtil(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String): List {
- return delegate.searchForSSIDs(regexForSSID)
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List {
+ return delegate.searchForSSIDs(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String, callbacks: SearchForSSIDsCallbacks?) {
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest, callbacks: SearchForSSIDsCallbacks?) {
accessPointScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val ssids = delegate.searchForSSIDs(regexForSSID)
+ val ssids = delegate.searchForSSIDs(request)
withContext(coroutineDispatcherProvider.main) {
when {
ssids.isNotEmpty() -> callbacks?.onSSIDsFound(ssids)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsApi.kt
index 5f4009d8..09289771 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsApi.kt
@@ -20,6 +20,17 @@ import android.net.wifi.ScanResult
import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.AccessPointMatchData
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.GetRSSIRequest
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
+import com.isupatches.android.wisefy.accesspoints.entities.toAccessPointMatchData
+import com.isupatches.android.wisefy.accesspoints.entities.toSearchForSingleAccessPointRequest
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.util.rest
import java.util.Locale
@@ -28,29 +39,22 @@ import kotlin.collections.ArrayList
internal interface LegacyAccessPointsApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getNearbyAccessPoints(filterDuplicates: Boolean): List
+ fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int?
+ fun getRSSI(request: GetRSSIRequest): RSSIData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData?
+ fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean
- ): List
+ fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String?
+ fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData?
@RequiresPermission(ACCESS_FINE_LOCATION)
- fun searchForSSIDs(regexForSSID: String): List
+ fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List
}
private const val LOG_TAG = "LegacyAccessPointsApiImpl"
@@ -67,34 +71,32 @@ internal class LegacyAccessPointsApiImpl(
private val scanResultsProvider by lazy { { wifiManager.scanResults } }
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean): List {
+ override fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List {
val accessPointsTemp = scanResultsProvider()
if (accessPointsTemp == null || accessPointsTemp.isEmpty()) {
return emptyList()
}
- return if (filterDuplicates) {
+ return if (request.filterDuplicates) {
removeEntriesWithLowerSignalStrength(accessPointsTemp)
} else {
- accessPointsTemp.map { scanResult -> AccessPointData.ScanData(data = scanResult) }
+ accessPointsTemp.map { scanResult -> AccessPointData.ScanResult(value = scanResult) }
}
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int? {
- val scanData = searchForAccessPoint(regexForSSID, timeoutInMillis, takeHighest)
- return (scanData as? AccessPointData.ScanData)?.data?.level
+ override fun getRSSI(request: GetRSSIRequest): RSSIData? {
+ val scanData = searchForAccessPoint(request.toSearchForSingleAccessPointRequest())
+ return (scanData as? AccessPointData.ScanResult)?.value?.level?.let {
+ RSSIData(it)
+ }
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData? {
+ override fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData? {
var scanPass = 1
var currentTime: Long
- val endTime = System.currentTimeMillis() + timeoutInMillis
+ val endTime = System.currentTimeMillis() + request.timeoutInMillis
var accessPointToReturn: ScanResult? = null
do {
currentTime = System.currentTimeMillis()
@@ -105,8 +107,8 @@ internal class LegacyAccessPointsApiImpl(
if (accessPointsTemp != null && accessPointsTemp.isNotEmpty()) {
var found = false
for (accessPoint in accessPointsTemp) {
- if (filterDuplicates) {
- if (accessPointMatchesRegex(accessPoint, regexForSSID) &&
+ if (request.filterDuplicates) {
+ if (accessPointMatchesRegex(accessPoint, request.toAccessPointMatchData()) &&
hasHighestSignalStrength(accessPointsTemp, accessPoint)
) {
accessPointToReturn = accessPoint
@@ -115,7 +117,7 @@ internal class LegacyAccessPointsApiImpl(
break
}
} else {
- if (accessPointMatchesRegex(accessPoint, regexForSSID)) {
+ if (accessPointMatchesRegex(accessPoint, request.toAccessPointMatchData())) {
accessPointToReturn = accessPoint
found = true
break
@@ -133,14 +135,11 @@ internal class LegacyAccessPointsApiImpl(
scanPass++
rest()
} while (currentTime < endTime)
- return accessPointToReturn?.let { AccessPointData.ScanData(data = it) }
+ return accessPointToReturn?.let { AccessPointData.ScanResult(value = it) }
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoints(
- regexForSSID: String,
- filterDuplicates: Boolean
- ): List {
+ override fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List {
val matchingAccessPoints = ArrayList()
val accessPointsTemp = scanResultsProvider()
@@ -150,13 +149,13 @@ internal class LegacyAccessPointsApiImpl(
}
for (accessPoint in accessPointsTemp) {
- if (accessPointMatchesRegex(accessPoint, regexForSSID)) {
- if (filterDuplicates) {
+ if (accessPointMatchesRegex(accessPoint, request.toAccessPointMatchData())) {
+ if (request.filterDuplicates) {
if (hasHighestSignalStrength(accessPointsTemp, accessPoint)) {
- matchingAccessPoints.add(AccessPointData.ScanData(data = accessPoint))
+ matchingAccessPoints.add(AccessPointData.ScanResult(value = accessPoint))
}
} else {
- matchingAccessPoints.add(AccessPointData.ScanData(data = accessPoint))
+ matchingAccessPoints.add(AccessPointData.ScanResult(value = accessPoint))
}
}
}
@@ -165,31 +164,51 @@ internal class LegacyAccessPointsApiImpl(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String? {
- val scanData = searchForAccessPoint(regexForSSID, timeoutInMillis, false)
- return (scanData as? AccessPointData.ScanData)?.data?.SSID
+ override fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData? {
+ val scanData = searchForAccessPoint(request.toSearchForSingleAccessPointRequest())
+ val accessPoint = (scanData as? AccessPointData.ScanResult)?.value
+ return when (request) {
+ is SearchForSingleSSIDRequest.SSID -> accessPoint?.SSID?.let { ssid ->
+ SSIDData.SSID(ssid)
+ }
+ is SearchForSingleSSIDRequest.BSSID -> accessPoint?.BSSID?.let { bssid ->
+ SSIDData.SSID(bssid)
+ }
+ }
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String): List {
- val matchingSSIDs = ArrayList()
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List {
+ val matchingSSIDs = ArrayList()
val accessPointsTemp = scanResultsProvider() ?: emptyList()
for (accessPoint in accessPointsTemp) {
- if (accessPointMatchesRegex(accessPoint, regexForSSID) &&
- !matchingSSIDs.contains(accessPoint.SSID)
+ val potentialMatch = when (request) {
+ is SearchForMultipleSSIDsRequest.SSID -> SSIDData.SSID(accessPoint.SSID)
+ is SearchForMultipleSSIDsRequest.BSSID -> SSIDData.BSSID(accessPoint.BSSID)
+ }
+ if (accessPointMatchesRegex(accessPoint, request.toAccessPointMatchData()) &&
+ !matchingSSIDs.contains(potentialMatch)
) {
- matchingSSIDs.add(accessPoint.SSID)
+ matchingSSIDs.add(potentialMatch)
}
}
return if (matchingSSIDs.isNotEmpty()) matchingSSIDs else emptyList()
}
- private fun accessPointMatchesRegex(accessPoint: ScanResult?, regexForSSID: String): Boolean {
+ private fun accessPointMatchesRegex(accessPoint: ScanResult?, data: AccessPointMatchData): Boolean {
logger?.d(
LOG_TAG,
- "accessPoint. SSID: %s, regex for SSID: %s".format(Locale.US, accessPoint?.SSID, regexForSSID)
+ "accessPoint. SSID: %s, BSSID: %s, match data: %s".format(
+ Locale.US,
+ accessPoint?.SSID,
+ accessPoint?.BSSID,
+ data
+ )
)
- return accessPoint?.SSID?.matches(regexForSSID.toRegex()) ?: false
+ return when (data) {
+ is AccessPointMatchData.SSID -> accessPoint?.SSID?.matches(data.regexForSSID.toRegex()) ?: false
+ is AccessPointMatchData.BSSID -> accessPoint?.BSSID?.matches(data.regexForBSSID.toRegex()) ?: false
+ }
}
private fun hasHighestSignalStrength(
@@ -214,32 +233,35 @@ internal class LegacyAccessPointsApiImpl(
}
private fun removeEntriesWithLowerSignalStrength(accessPoints: List): List {
- val accessPointsToReturn = ArrayList()
+ val accessPointsToReturn = ArrayList()
for (accessPoint in accessPoints) {
var found = false
for (i in accessPointsToReturn.indices) {
val accessPointData = accessPointsToReturn[i]
- logger?.d(LOG_TAG, "SSID 1: %s, SSID 2: %s", accessPoint.SSID, accessPointData.data.SSID)
- if (accessPoint.SSID.equals(accessPointData.data.SSID, ignoreCase = true)) {
+ logger?.d(LOG_TAG, "SSID 1: %s, SSID 2: %s", accessPoint.SSID, accessPointData.value.SSID)
+ if (accessPoint.SSID.equals(accessPointData.value.SSID, ignoreCase = true)) {
found = true
- val comparisonResult = WifiManager.compareSignalLevel(accessPoint.level, accessPointData.data.level)
+ val comparisonResult = WifiManager.compareSignalLevel(
+ accessPoint.level,
+ accessPointData.value.level
+ )
logger?.d(
LOG_TAG,
"Access point 1 RSSI: %d\nAccess point 2 RSSI: %d\nComparison result: %d",
- accessPointData.data.level, accessPoint.level, comparisonResult
+ accessPointData.value.level, accessPoint.level, comparisonResult
)
if (comparisonResult > 0) {
logger?.d(LOG_TAG, "New result has a higher or same signal strength, swapping")
- accessPointsToReturn[i] = AccessPointData.ScanData(accessPoint)
+ accessPointsToReturn[i] = AccessPointData.ScanResult(accessPoint)
}
}
}
if (!found) {
logger?.d(LOG_TAG, "Found new wifi network")
- accessPointsToReturn.add(AccessPointData.ScanData(accessPoint))
+ accessPointsToReturn.add(AccessPointData.ScanResult(accessPoint))
}
}
return accessPointsToReturn
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsDelegate.kt
index 09b163f2..95c1f442 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/delegates/LegacyAccessPointsDelegate.kt
@@ -20,6 +20,14 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.accesspoints.AccessPointsApi
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.GetNearbyAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.GetRSSIRequest
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleAccessPointsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForMultipleSSIDsRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleAccessPointRequest
+import com.isupatches.android.wisefy.accesspoints.entities.SearchForSingleSSIDRequest
import com.isupatches.android.wisefy.logging.WisefyLogger
internal class LegacyAccessPointsDelegate(
@@ -29,36 +37,32 @@ internal class LegacyAccessPointsDelegate(
) : AccessPointsApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getNearbyAccessPoints(filterDuplicates: Boolean): List {
- return impl.getNearbyAccessPoints(filterDuplicates)
+ override fun getNearbyAccessPoints(request: GetNearbyAccessPointsRequest): List {
+ return impl.getNearbyAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun getRSSI(regexForSSID: String, takeHighest: Boolean, timeoutInMillis: Int): Int? {
- return impl.getRSSI(regexForSSID, takeHighest, timeoutInMillis)
+ override fun getRSSI(request: GetRSSIRequest): RSSIData? {
+ return impl.getRSSI(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoint(
- regexForSSID: String,
- timeoutInMillis: Int,
- filterDuplicates: Boolean
- ): AccessPointData? {
- return impl.searchForAccessPoint(regexForSSID, timeoutInMillis, filterDuplicates)
+ override fun searchForAccessPoint(request: SearchForSingleAccessPointRequest): AccessPointData? {
+ return impl.searchForAccessPoint(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForAccessPoints(regexForSSID: String, filterDuplicates: Boolean): List {
- return impl.searchForAccessPoints(regexForSSID, filterDuplicates)
+ override fun searchForAccessPoints(request: SearchForMultipleAccessPointsRequest): List {
+ return impl.searchForAccessPoints(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSID(regexForSSID: String, timeoutInMillis: Int): String? {
- return impl.searchForSSID(regexForSSID, timeoutInMillis)
+ override fun searchForSSID(request: SearchForSingleSSIDRequest): SSIDData? {
+ return impl.searchForSSID(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSSIDs(regexForSSID: String): List {
- return impl.searchForSSIDs(regexForSSID)
+ override fun searchForSSIDs(request: SearchForMultipleSSIDsRequest): List {
+ return impl.searchForSSIDs(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointData.kt
index e552bdf8..f69f398f 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointData.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointData.kt
@@ -15,10 +15,8 @@
*/
package com.isupatches.android.wisefy.accesspoints.entities
-import android.net.wifi.ScanResult
-
sealed class AccessPointData {
- data class ScanData(
- val data: ScanResult
+ data class ScanResult(
+ val value: android.net.wifi.ScanResult
) : AccessPointData()
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointMatchData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointMatchData.kt
new file mode 100644
index 00000000..c1d98c37
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/AccessPointMatchData.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+internal sealed class AccessPointMatchData {
+
+ data class SSID(
+ val regexForSSID: String
+ ) : AccessPointMatchData()
+
+ data class BSSID(
+ val regexForBSSID: String
+ ) : AccessPointMatchData()
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetNearbyAccessPointsRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetNearbyAccessPointsRequest.kt
new file mode 100644
index 00000000..f5b9e171
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetNearbyAccessPointsRequest.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+sealed class GetNearbyAccessPointsRequest(
+ open val filterDuplicates: Boolean
+) {
+
+ data class All(
+ override val filterDuplicates: Boolean = true
+ ) : GetNearbyAccessPointsRequest(filterDuplicates)
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetRSSIRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetRSSIRequest.kt
new file mode 100644
index 00000000..b9564176
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/GetRSSIRequest.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+sealed class GetRSSIRequest(
+ open val takeHighest: Boolean,
+ open val timeoutInMillis: Int
+) {
+
+ data class SSID(
+ val regexForSSID: String,
+ override val timeoutInMillis: Int,
+ override val takeHighest: Boolean = true
+ ) : GetRSSIRequest(takeHighest, timeoutInMillis)
+
+ data class BSSID(
+ val regexForBSSID: String,
+ override val timeoutInMillis: Int,
+ override val takeHighest: Boolean = true
+ ) : GetRSSIRequest(takeHighest, timeoutInMillis)
+}
+
+internal fun GetRSSIRequest.toSearchForSingleAccessPointRequest(): SearchForSingleAccessPointRequest {
+ return when (this) {
+ is GetRSSIRequest.SSID -> SearchForSingleAccessPointRequest.SSID(regexForSSID, timeoutInMillis, takeHighest)
+ is GetRSSIRequest.BSSID -> SearchForSingleAccessPointRequest.BSSID(regexForBSSID, timeoutInMillis, takeHighest)
+ }
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/RSSIData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/RSSIData.kt
new file mode 100644
index 00000000..a57cac9f
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/RSSIData.kt
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+data class RSSIData(
+ val value: Int?
+) : SSIDData()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SSIDData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SSIDData.kt
new file mode 100644
index 00000000..a5f2b65f
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SSIDData.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+sealed class SSIDData {
+
+ data class SSID(
+ val value: String
+ ) : SSIDData()
+
+ data class BSSID(
+ val value: String
+ ) : SSIDData()
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForAccessPointRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForAccessPointRequest.kt
new file mode 100644
index 00000000..10e67c0a
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForAccessPointRequest.kt
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+sealed class SearchForSingleAccessPointRequest(
+ open val timeoutInMillis: Int,
+ open val filterDuplicates: Boolean
+) {
+
+ data class SSID(
+ val regexForSSID: String,
+ override val timeoutInMillis: Int,
+ override val filterDuplicates: Boolean = true
+ ) : SearchForSingleAccessPointRequest(timeoutInMillis, filterDuplicates)
+
+ data class BSSID(
+ val regexForBSSID: String,
+ override val timeoutInMillis: Int,
+ override val filterDuplicates: Boolean = true
+ ) : SearchForSingleAccessPointRequest(timeoutInMillis, filterDuplicates)
+}
+
+sealed class SearchForMultipleAccessPointsRequest(open val filterDuplicates: Boolean) {
+
+ data class SSID(
+ val regexForSSID: String,
+ override val filterDuplicates: Boolean = true
+ ) : SearchForMultipleAccessPointsRequest(filterDuplicates)
+
+ data class BSSID(
+ val regexForBSSID: String,
+ override val filterDuplicates: Boolean = true
+ ) : SearchForMultipleAccessPointsRequest(filterDuplicates)
+}
+
+internal fun SearchForSingleAccessPointRequest.toAccessPointMatchData(): AccessPointMatchData {
+ return when (this) {
+ is SearchForSingleAccessPointRequest.SSID -> AccessPointMatchData.SSID(regexForSSID)
+ is SearchForSingleAccessPointRequest.BSSID -> AccessPointMatchData.BSSID(regexForBSSID)
+ }
+}
+
+internal fun SearchForMultipleAccessPointsRequest.toAccessPointMatchData(): AccessPointMatchData {
+ return when (this) {
+ is SearchForMultipleAccessPointsRequest.SSID -> AccessPointMatchData.SSID(regexForSSID)
+ is SearchForMultipleAccessPointsRequest.BSSID -> AccessPointMatchData.BSSID(regexForBSSID)
+ }
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForSSIDRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForSSIDRequest.kt
new file mode 100644
index 00000000..02b2d828
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/accesspoints/entities/SearchForSSIDRequest.kt
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.accesspoints.entities
+
+sealed class SearchForSingleSSIDRequest(open val timeoutInMillis: Int) {
+
+ data class SSID(
+ val regexForSSID: String,
+ override val timeoutInMillis: Int
+ ) : SearchForSingleSSIDRequest(timeoutInMillis)
+
+ data class BSSID(
+ val regexForBSSID: String,
+ override val timeoutInMillis: Int
+ ) : SearchForSingleSSIDRequest(timeoutInMillis)
+}
+
+sealed class SearchForMultipleSSIDsRequest {
+
+ data class SSID(
+ val regexForSSID: String
+ ) : SearchForMultipleSSIDsRequest()
+
+ data class BSSID(
+ val regexForBSSID: String
+ ) : SearchForMultipleSSIDsRequest()
+}
+
+internal fun SearchForSingleSSIDRequest.toSearchForSingleAccessPointRequest(): SearchForSingleAccessPointRequest {
+ return when (this) {
+ is SearchForSingleSSIDRequest.SSID -> SearchForSingleAccessPointRequest.SSID(regexForSSID, timeoutInMillis)
+ is SearchForSingleSSIDRequest.BSSID -> SearchForSingleAccessPointRequest.BSSID(regexForBSSID, timeoutInMillis)
+ }
+}
+
+internal fun SearchForMultipleSSIDsRequest.toAccessPointMatchData(): AccessPointMatchData {
+ return when (this) {
+ is SearchForMultipleSSIDsRequest.SSID -> AccessPointMatchData.SSID(regexForSSID)
+ is SearchForMultipleSSIDsRequest.BSSID -> AccessPointMatchData.BSSID(regexForBSSID)
+ }
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/AddNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/AddNetworkApi.kt
index 9bf2db73..766b7a31 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/AddNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/AddNetworkApi.kt
@@ -21,33 +21,33 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.callbacks.AddNetworkCallbacks
interface AddNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult
+ fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult
+ fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult
+ fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult
}
interface AddNetworkApiAsync {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addOpenNetwork(data: OpenNetworkData, callbacks: AddNetworkCallbacks?)
+ fun addOpenNetwork(request: AddOpenNetworkRequest, callbacks: AddNetworkCallbacks?)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addWPA2Network(data: WPA2NetworkData, callbacks: AddNetworkCallbacks?)
+ fun addWPA2Network(request: AddWPA2NetworkRequest, callbacks: AddNetworkCallbacks?)
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun addWPA3Network(data: WPA3NetworkData, callbacks: AddNetworkCallbacks?)
+ fun addWPA3Network(request: AddWPA3NetworkRequest, callbacks: AddNetworkCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/WisefyAddNetworkUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/WisefyAddNetworkUtil.kt
index 64b653a3..4198e96b 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/WisefyAddNetworkUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/WisefyAddNetworkUtil.kt
@@ -25,9 +25,9 @@ import com.isupatches.android.wisefy.addnetwork.delegates.Android29AddNetworkDel
import com.isupatches.android.wisefy.addnetwork.delegates.Android30AddNetworkDelegate
import com.isupatches.android.wisefy.addnetwork.delegates.LegacyAddNetworkDelegate
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.callbacks.AddNetworkCallbacks
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.util.SdkUtil
@@ -65,17 +65,17 @@ internal class WisefyAddNetworkUtil(
* Legacy API requires ACCESS_FINE_LOCATION while API 29+ requires CHANGE_WIFI_STATE
*/
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult {
- return delegate.addOpenNetwork(data)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult {
+ return delegate.addOpenNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData, callbacks: AddNetworkCallbacks?) {
+ override fun addOpenNetwork(request: AddOpenNetworkRequest, callbacks: AddNetworkCallbacks?) {
addNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val addNetworkResult = addOpenNetwork(data)
+ val addNetworkResult = addOpenNetwork(request)
withContext(coroutineDispatcherProvider.main) {
when {
- addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.data == -1 -> {
+ addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.value == -1 -> {
callbacks?.onFailureAddingNetwork(addNetworkResult)
}
else -> callbacks?.onNetworkAdded(addNetworkResult)
@@ -88,17 +88,17 @@ internal class WisefyAddNetworkUtil(
* Legacy API requires ACCESS_FINE_LOCATION while API 29+ requires CHANGE_WIFI_STATE
*/
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult {
- return delegate.addWPA2Network(data)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult {
+ return delegate.addWPA2Network(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData, callbacks: AddNetworkCallbacks?) {
+ override fun addWPA2Network(request: AddWPA2NetworkRequest, callbacks: AddNetworkCallbacks?) {
addNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val addNetworkResult = addWPA2Network(data)
+ val addNetworkResult = addWPA2Network(request)
withContext(coroutineDispatcherProvider.main) {
when {
- addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.data == -1 -> {
+ addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.value == -1 -> {
callbacks?.onFailureAddingNetwork(addNetworkResult)
}
else -> callbacks?.onNetworkAdded(addNetworkResult)
@@ -112,18 +112,18 @@ internal class WisefyAddNetworkUtil(
*/
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult {
- return delegate.addWPA3Network(data)
+ override fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult {
+ return delegate.addWPA3Network(request)
}
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData, callbacks: AddNetworkCallbacks?) {
+ override fun addWPA3Network(request: AddWPA3NetworkRequest, callbacks: AddNetworkCallbacks?) {
addNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val addNetworkResult = addWPA3Network(data)
+ val addNetworkResult = addWPA3Network(request)
withContext(coroutineDispatcherProvider.main) {
when {
- addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.data == -1 -> {
+ addNetworkResult is AddNetworkResult.ResultCode && addNetworkResult.value == -1 -> {
callbacks?.onFailureAddingNetwork(addNetworkResult)
}
else -> callbacks?.onNetworkAdded(addNetworkResult)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkApi.kt
index 217ed633..45535a90 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkApi.kt
@@ -23,9 +23,9 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
import com.isupatches.android.wisefy.logging.WisefyLogger
-import com.isupatches.android.wisefy.util.createOpenNetworkSuggestion
-import com.isupatches.android.wisefy.util.createWPA2NetworkSuggestion
-import com.isupatches.android.wisefy.util.createWPA3NetworkSuggestion
+import com.isupatches.android.wisefy.util.createOpenNetworkSuggestionWithSSID
+import com.isupatches.android.wisefy.util.createWPA2NetworkSuggestionWithSSID
+import com.isupatches.android.wisefy.util.createWPA3NetworkSuggestionWithSSID
@RequiresApi(Build.VERSION_CODES.Q)
internal interface Android29AddNetworkApi {
@@ -52,7 +52,7 @@ internal class Android29AddNetworkApiImpl(
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
override fun addOpenNetwork(ssid: String): AddNetworkResult {
logger?.w(LOG_TAG, ANDROID_Q_SAVE_NETWORK_WARNING)
- val suggestion = createOpenNetworkSuggestion(ssid)
+ val suggestion = createOpenNetworkSuggestionWithSSID(ssid)
val resultCode = wifiManager.addNetworkSuggestions(arrayListOf(suggestion))
return AddNetworkResult.ResultCode(resultCode)
}
@@ -60,7 +60,7 @@ internal class Android29AddNetworkApiImpl(
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
override fun addWPA2Network(ssid: String, passphrase: String): AddNetworkResult {
logger?.w(LOG_TAG, ANDROID_Q_SAVE_NETWORK_WARNING)
- val suggestion = createWPA2NetworkSuggestion(ssid, passphrase)
+ val suggestion = createWPA2NetworkSuggestionWithSSID(ssid, passphrase)
val resultCode = wifiManager.addNetworkSuggestions(listOf(suggestion))
return AddNetworkResult.ResultCode(resultCode)
}
@@ -68,7 +68,7 @@ internal class Android29AddNetworkApiImpl(
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
override fun addWPA3Network(ssid: String, passphrase: String): AddNetworkResult {
logger?.w(LOG_TAG, ANDROID_Q_SAVE_NETWORK_WARNING)
- val suggestion = createWPA3NetworkSuggestion(ssid, passphrase)
+ val suggestion = createWPA3NetworkSuggestionWithSSID(ssid, passphrase)
val resultCode = wifiManager.addNetworkSuggestions(arrayListOf(suggestion))
return AddNetworkResult.ResultCode(resultCode)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkDelegate.kt
index 8b411507..cebb7f70 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android29AddNetworkDelegate.kt
@@ -23,9 +23,9 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.AddNetworkApi
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.constants.ErrorMessages
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.util.fail
@@ -38,12 +38,12 @@ internal class Android29AddNetworkDelegate(
) : AddNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult {
- return when (data) {
- is OpenNetworkData.Ssid -> {
- impl.addOpenNetwork(data.ssid)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddOpenNetworkRequest.Ssid -> {
+ impl.addOpenNetwork(request.ssid)
}
- is OpenNetworkData.SsidAndActivityResultLauncher -> {
+ is AddOpenNetworkRequest.SsidAndActivityResultLauncher -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.USED_PRE_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -52,12 +52,12 @@ internal class Android29AddNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult {
- return when (data) {
- is WPA2NetworkData.SsidAndPassphrase -> {
- impl.addWPA2Network(data.ssid, data.passphrase)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddWPA2NetworkRequest.SsidAndPassphrase -> {
+ impl.addWPA2Network(request.ssid, request.passphrase)
}
- is WPA2NetworkData.SsidPassphraseAndActivityResultLauncher -> {
+ is AddWPA2NetworkRequest.SsidPassphraseAndActivityResultLauncher -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.USED_PRE_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -66,12 +66,12 @@ internal class Android29AddNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult {
- return when (data) {
- is WPA3NetworkData.SsidAndPassphrase -> {
- impl.addWPA3Network(data.ssid, data.passphrase)
+ override fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddWPA3NetworkRequest.SsidAndPassphrase -> {
+ impl.addWPA3Network(request.ssid, request.passphrase)
}
- is WPA3NetworkData.SsidPassphraseAndActivityResultLauncher -> {
+ is AddWPA3NetworkRequest.SsidPassphraseAndActivityResultLauncher -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.USED_PRE_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkApi.kt
index 25434cbe..7f83a0d4 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkApi.kt
@@ -27,9 +27,9 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.util.createOpenNetworkSuggestion
-import com.isupatches.android.wisefy.util.createWPA2NetworkSuggestion
-import com.isupatches.android.wisefy.util.createWPA3NetworkSuggestion
+import com.isupatches.android.wisefy.util.createOpenNetworkSuggestionWithSSID
+import com.isupatches.android.wisefy.util.createWPA2NetworkSuggestionWithSSID
+import com.isupatches.android.wisefy.util.createWPA3NetworkSuggestionWithSSID
internal interface Android30AddNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
@@ -63,7 +63,7 @@ internal class Android30AddNetworkApiImpl(
ssid: String,
activityResultLauncher: ActivityResultLauncher
): AddNetworkResult {
- val suggestion = createOpenNetworkSuggestion(ssid)
+ val suggestion = createOpenNetworkSuggestionWithSSID(ssid)
return launchIntent(suggestion, activityResultLauncher)
}
@@ -73,7 +73,7 @@ internal class Android30AddNetworkApiImpl(
passphrase: String,
activityResultLauncher: ActivityResultLauncher
): AddNetworkResult {
- val suggestion = createWPA2NetworkSuggestion(ssid, passphrase)
+ val suggestion = createWPA2NetworkSuggestionWithSSID(ssid, passphrase)
return launchIntent(suggestion, activityResultLauncher)
}
@@ -83,7 +83,7 @@ internal class Android30AddNetworkApiImpl(
passphrase: String,
activityResultLauncher: ActivityResultLauncher
): AddNetworkResult {
- val suggestion = createWPA3NetworkSuggestion(ssid, passphrase)
+ val suggestion = createWPA3NetworkSuggestionWithSSID(ssid, passphrase)
return launchIntent(suggestion, activityResultLauncher)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkDelegate.kt
index 31793bb9..def7f918 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/Android30AddNetworkDelegate.kt
@@ -23,9 +23,9 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.AddNetworkApi
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.constants.ErrorMessages
import com.isupatches.android.wisefy.util.fail
@@ -36,12 +36,12 @@ internal class Android30AddNetworkDelegate(
) : AddNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult {
- return when (data) {
- is OpenNetworkData.SsidAndActivityResultLauncher -> {
- impl.addOpenNetwork(data.ssid, data.activityResultLauncher)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddOpenNetworkRequest.SsidAndActivityResultLauncher -> {
+ impl.addOpenNetwork(request.ssid, request.activityResultLauncher)
}
- is OpenNetworkData.Ssid -> {
+ is AddOpenNetworkRequest.Ssid -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.NOT_USED_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -50,12 +50,12 @@ internal class Android30AddNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult {
- return when (data) {
- is WPA2NetworkData.SsidPassphraseAndActivityResultLauncher -> {
- impl.addWPA2Network(data.ssid, data.passphrase, data.activityResultLauncher)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddWPA2NetworkRequest.SsidPassphraseAndActivityResultLauncher -> {
+ impl.addWPA2Network(request.ssid, request.passphrase, request.activityResultLauncher)
}
- is WPA2NetworkData.SsidAndPassphrase -> {
+ is AddWPA2NetworkRequest.SsidAndPassphrase -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.NOT_USED_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -64,12 +64,12 @@ internal class Android30AddNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult {
- return when (data) {
- is WPA3NetworkData.SsidPassphraseAndActivityResultLauncher -> {
- impl.addWPA3Network(data.ssid, data.passphrase, data.activityResultLauncher)
+ override fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddWPA3NetworkRequest.SsidPassphraseAndActivityResultLauncher -> {
+ impl.addWPA3Network(request.ssid, request.passphrase, request.activityResultLauncher)
}
- is WPA3NetworkData.SsidAndPassphrase -> {
+ is AddWPA3NetworkRequest.SsidAndPassphrase -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.NOT_USED_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/LegacyAddNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/LegacyAddNetworkDelegate.kt
index 0c31e7d5..531da258 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/LegacyAddNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/delegates/LegacyAddNetworkDelegate.kt
@@ -20,9 +20,9 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.addnetwork.AddNetworkApi
import com.isupatches.android.wisefy.addnetwork.entities.AddNetworkResult
-import com.isupatches.android.wisefy.addnetwork.entities.OpenNetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA2NetworkData
-import com.isupatches.android.wisefy.addnetwork.entities.WPA3NetworkData
+import com.isupatches.android.wisefy.addnetwork.entities.AddOpenNetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA2NetworkRequest
+import com.isupatches.android.wisefy.addnetwork.entities.AddWPA3NetworkRequest
import com.isupatches.android.wisefy.constants.ErrorMessages
import com.isupatches.android.wisefy.util.fail
@@ -32,12 +32,12 @@ internal class LegacyAddNetworkDelegate(
) : AddNetworkApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun addOpenNetwork(data: OpenNetworkData): AddNetworkResult {
- return when (data) {
- is OpenNetworkData.Ssid -> {
- impl.addOpenNetwork(data.ssid)
+ override fun addOpenNetwork(request: AddOpenNetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddOpenNetworkRequest.Ssid -> {
+ impl.addOpenNetwork(request.ssid)
}
- is OpenNetworkData.SsidAndActivityResultLauncher -> {
+ is AddOpenNetworkRequest.SsidAndActivityResultLauncher -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.USED_PRE_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -46,12 +46,12 @@ internal class LegacyAddNetworkDelegate(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun addWPA2Network(data: WPA2NetworkData): AddNetworkResult {
- return when (data) {
- is WPA2NetworkData.SsidAndPassphrase -> {
- impl.addWPA2Network(data.ssid, data.passphrase)
+ override fun addWPA2Network(request: AddWPA2NetworkRequest): AddNetworkResult {
+ return when (request) {
+ is AddWPA2NetworkRequest.SsidAndPassphrase -> {
+ impl.addWPA2Network(request.ssid, request.passphrase)
}
- is WPA2NetworkData.SsidPassphraseAndActivityResultLauncher -> {
+ is AddWPA2NetworkRequest.SsidPassphraseAndActivityResultLauncher -> {
val message = ErrorMessages.AddNetwork.ActivityResultLauncher.USED_PRE_ANDROID_30
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
@@ -60,7 +60,7 @@ internal class LegacyAddNetworkDelegate(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun addWPA3Network(data: WPA3NetworkData): AddNetworkResult {
+ override fun addWPA3Network(request: AddWPA3NetworkRequest): AddNetworkResult {
val message = ErrorMessages.AddNetwork.WPA3Network.PRE_ANDROID_29
fail(message)
return AddNetworkResult.WrongSDKLevelError(message)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkRequest.kt
similarity index 85%
rename from wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkData.kt
rename to wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkRequest.kt
index 195d2c4b..4950cc2e 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkData.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkRequest.kt
@@ -20,45 +20,45 @@ import android.os.Build
import androidx.activity.result.ActivityResultLauncher
import androidx.annotation.RequiresApi
-sealed class OpenNetworkData {
+sealed class AddOpenNetworkRequest {
data class Ssid(
val ssid: String
- ) : OpenNetworkData()
+ ) : AddOpenNetworkRequest()
@RequiresApi(Build.VERSION_CODES.R)
data class SsidAndActivityResultLauncher(
val ssid: String,
val activityResultLauncher: ActivityResultLauncher
- ) : OpenNetworkData()
+ ) : AddOpenNetworkRequest()
}
-sealed class WPA2NetworkData {
+sealed class AddWPA2NetworkRequest {
data class SsidAndPassphrase(
val ssid: String,
val passphrase: String
- ) : WPA2NetworkData()
+ ) : AddWPA2NetworkRequest()
@RequiresApi(Build.VERSION_CODES.R)
data class SsidPassphraseAndActivityResultLauncher(
val ssid: String,
val passphrase: String,
val activityResultLauncher: ActivityResultLauncher
- ) : WPA2NetworkData()
+ ) : AddWPA2NetworkRequest()
}
@RequiresApi(Build.VERSION_CODES.Q)
-sealed class WPA3NetworkData {
+sealed class AddWPA3NetworkRequest {
@RequiresApi(Build.VERSION_CODES.Q)
data class SsidAndPassphrase(
val ssid: String,
val passphrase: String
- ) : WPA3NetworkData()
+ ) : AddWPA3NetworkRequest()
@RequiresApi(Build.VERSION_CODES.R)
data class SsidPassphraseAndActivityResultLauncher(
val ssid: String,
val passphrase: String,
val activityResultLauncher: ActivityResultLauncher
- ) : WPA3NetworkData()
+ ) : AddWPA3NetworkRequest()
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkResult.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkResult.kt
index 4ce7037f..24becd69 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkResult.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/addnetwork/entities/AddNetworkResult.kt
@@ -17,7 +17,7 @@ package com.isupatches.android.wisefy.addnetwork.entities
sealed class AddNetworkResult {
data class ResultCode(
- val data: Int
+ val value: Int
) : AddNetworkResult()
object IntentLaunched : AddNetworkResult()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/AccessPointCallbacks.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/AccessPointCallbacks.kt
index cecb7fc1..dfb2e162 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/AccessPointCallbacks.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/AccessPointCallbacks.kt
@@ -16,6 +16,8 @@
package com.isupatches.android.wisefy.callbacks
import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
+import com.isupatches.android.wisefy.accesspoints.entities.RSSIData
+import com.isupatches.android.wisefy.accesspoints.entities.SSIDData
interface GetNearbyAccessPointCallbacks : BaseWisefyCallbacks {
fun onNearbyAccessPointsRetrieved(accessPoints: List)
@@ -23,7 +25,7 @@ interface GetNearbyAccessPointCallbacks : BaseWisefyCallbacks {
}
interface GetRSSICallbacks : BaseWisefyCallbacks {
- fun onRSSIRetrieved(rssi: Int)
+ fun onRSSIRetrieved(rssi: RSSIData)
fun onNoNetworkToRetrieveRSSI()
}
@@ -38,11 +40,11 @@ interface SearchForAccessPointsCallbacks : BaseWisefyCallbacks {
}
interface SearchForSSIDCallbacks : BaseWisefyCallbacks {
- fun onSSIDFound(ssid: String)
+ fun onSSIDFound(ssid: SSIDData)
fun onSSIDNotFound()
}
interface SearchForSSIDsCallbacks : BaseWisefyCallbacks {
- fun onSSIDsFound(ssids: List)
+ fun onSSIDsFound(ssids: List)
fun onNoSSIDsFound()
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetFrequencyCallbacks.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetFrequencyCallbacks.kt
index cc4fd447..17886549 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetFrequencyCallbacks.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetFrequencyCallbacks.kt
@@ -15,7 +15,9 @@
*/
package com.isupatches.android.wisefy.callbacks
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
+
interface GetFrequencyCallbacks : BaseWisefyCallbacks {
fun onFailureRetrievingFrequency()
- fun onFrequencyRetrieved(frequency: Int)
+ fun onFrequencyRetrieved(frequency: FrequencyData)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetIPCallbacks.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetIPCallbacks.kt
index b5e58583..7d701189 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetIPCallbacks.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/callbacks/GetIPCallbacks.kt
@@ -15,7 +15,9 @@
*/
package com.isupatches.android.wisefy.callbacks
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
+
interface GetIPCallbacks : BaseWisefyCallbacks {
fun onFailureRetrievingIP()
- fun onIPRetrieved(ip: String)
+ fun onIPRetrieved(ip: IPData)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/FrequencyApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/FrequencyApi.kt
index 0371c520..0e17e8c8 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/FrequencyApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/FrequencyApi.kt
@@ -21,6 +21,7 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.callbacks.GetFrequencyCallbacks
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
const val MIN_FREQUENCY_5GHZ: Int = 4900
const val MAX_FREQUENCY_5GHZ: Int = 5900
@@ -29,10 +30,10 @@ interface FrequencyApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- fun getFrequency(): Int?
+ fun getFrequency(): FrequencyData?
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- fun getFrequency(network: WifiInfo): Int
+ fun getFrequency(network: WifiInfo): FrequencyData
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/WisefyFrequencyUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/WisefyFrequencyUtil.kt
index d0726bc1..60b9af86 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/WisefyFrequencyUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/WisefyFrequencyUtil.kt
@@ -16,6 +16,7 @@
package com.isupatches.android.wisefy.frequency
import android.Manifest.permission.ACCESS_FINE_LOCATION
+import android.net.ConnectivityManager
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.os.Build
@@ -23,6 +24,7 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.callbacks.GetFrequencyCallbacks
import com.isupatches.android.wisefy.frequency.delegates.LegacyFrequencyDelegate
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.util.coroutines.CoroutineDispatcherProvider
import com.isupatches.android.wisefy.util.coroutines.createBaseCoroutineExceptionHandler
@@ -43,10 +45,11 @@ private const val LOG_TAG = "WisefyFrequencyUtil"
internal class WisefyFrequencyUtil(
private val coroutineDispatcherProvider: CoroutineDispatcherProvider,
logger: WisefyLogger?,
+ connectivityManager: ConnectivityManager,
wifiManager: WifiManager
) : FrequencyUtil {
- private val delegate = LegacyFrequencyDelegate(wifiManager)
+ private val delegate = LegacyFrequencyDelegate(wifiManager, connectivityManager)
private val frequencyScope = CoroutineScope(Job() + coroutineDispatcherProvider.io)
init {
@@ -55,7 +58,7 @@ internal class WisefyFrequencyUtil(
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(): Int? {
+ override fun getFrequency(): FrequencyData? {
return delegate.getFrequency()
}
@@ -75,7 +78,7 @@ internal class WisefyFrequencyUtil(
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(network: WifiInfo): Int {
+ override fun getFrequency(network: WifiInfo): FrequencyData {
return delegate.getFrequency(network)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyApi.kt
index 9508d229..a0304e9b 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyApi.kt
@@ -16,6 +16,7 @@
package com.isupatches.android.wisefy.frequency.delegates
import android.Manifest.permission.ACCESS_FINE_LOCATION
+import android.net.ConnectivityManager
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.os.Build
@@ -23,13 +24,15 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.frequency.MAX_FREQUENCY_5GHZ
import com.isupatches.android.wisefy.frequency.MIN_FREQUENCY_5GHZ
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
+import com.isupatches.android.wisefy.util.getNetwork
internal interface LegacyFrequencyApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- fun getFrequency(): Int?
+ fun getFrequency(): FrequencyData?
- fun getFrequency(network: WifiInfo): Int
+ fun getFrequency(network: WifiInfo): FrequencyData
@RequiresPermission(ACCESS_FINE_LOCATION)
fun isNetwork5gHz(): Boolean
@@ -38,31 +41,39 @@ internal interface LegacyFrequencyApi {
}
internal class LegacyFrequencyApiImpl(
- private val wifiManager: WifiManager
+ private val wifiManager: WifiManager,
+ private val connectivityManager: ConnectivityManager
) : LegacyFrequencyApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(): Int? {
- val currentNetwork = wifiManager.connectionInfo
- return currentNetwork?.frequency
+ override fun getFrequency(): FrequencyData? {
+ val currentNetwork = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ connectivityManager.getNetwork()
+ } else {
+ @Suppress("Deprecation")
+ wifiManager.connectionInfo
+ }
+ return currentNetwork?.frequency?.let {
+ FrequencyData(it)
+ }
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(network: WifiInfo): Int {
- return network.frequency
+ override fun getFrequency(network: WifiInfo): FrequencyData {
+ return FrequencyData(network.frequency)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun isNetwork5gHz(): Boolean {
val frequency = getFrequency()
- return frequency != null && frequency > MIN_FREQUENCY_5GHZ && frequency < MAX_FREQUENCY_5GHZ
+ return frequency != null && frequency.value > MIN_FREQUENCY_5GHZ && frequency.value < MAX_FREQUENCY_5GHZ
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun isNetwork5gHz(network: WifiInfo): Boolean {
val frequency = getFrequency(network)
- return frequency in (MIN_FREQUENCY_5GHZ + 1) until MAX_FREQUENCY_5GHZ
+ return frequency.value in (MIN_FREQUENCY_5GHZ + 1) until MAX_FREQUENCY_5GHZ
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyDelegate.kt
index 10b05e51..9f4288a0 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/delegates/LegacyFrequencyDelegate.kt
@@ -16,26 +16,32 @@
package com.isupatches.android.wisefy.frequency.delegates
import android.Manifest.permission.ACCESS_FINE_LOCATION
+import android.net.ConnectivityManager
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.frequency.FrequencyApi
+import com.isupatches.android.wisefy.frequency.entities.FrequencyData
internal class LegacyFrequencyDelegate(
wifiManager: WifiManager,
- private val impl: LegacyFrequencyApi = LegacyFrequencyApiImpl(wifiManager)
+ connectivityManager: ConnectivityManager,
+ private val impl: LegacyFrequencyApi = LegacyFrequencyApiImpl(
+ wifiManager = wifiManager,
+ connectivityManager = connectivityManager
+ )
) : FrequencyApi {
@RequiresPermission(ACCESS_FINE_LOCATION)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(): Int? {
+ override fun getFrequency(): FrequencyData? {
return impl.getFrequency()
}
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
- override fun getFrequency(network: WifiInfo): Int {
+ override fun getFrequency(network: WifiInfo): FrequencyData {
return impl.getFrequency(network)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/entities/FrequencyData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/entities/FrequencyData.kt
new file mode 100644
index 00000000..ceeaef3b
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/frequency/entities/FrequencyData.kt
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.frequency.entities
+
+data class FrequencyData(
+ val value: Int
+)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/NetworkConnectionApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/NetworkConnectionApi.kt
index 119bdc25..87803ee0 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/NetworkConnectionApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/NetworkConnectionApi.kt
@@ -17,14 +17,15 @@ package com.isupatches.android.wisefy.networkconnection
import com.isupatches.android.wisefy.callbacks.ConnectToNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.DisconnectFromCurrentNetworkCallbacks
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
interface NetworkConnectionApi {
- fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult
+ fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult
fun disconnectFromCurrentNetwork(): NetworkConnectionResult
}
interface NetworkConnectionApiAsync {
- fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int, callbacks: ConnectToNetworkCallbacks?)
+ fun connectToNetwork(request: NetworkConnectionRequest, callbacks: ConnectToNetworkCallbacks?)
fun disconnectFromCurrentNetwork(callbacks: DisconnectFromCurrentNetworkCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/WisefyNetworkConnectionUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/WisefyNetworkConnectionUtil.kt
index 22821253..f34ed109 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/WisefyNetworkConnectionUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/WisefyNetworkConnectionUtil.kt
@@ -22,6 +22,7 @@ import com.isupatches.android.wisefy.callbacks.DisconnectFromCurrentNetworkCallb
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnection.delegates.Android29NetworkConnectionDelegate
import com.isupatches.android.wisefy.networkconnection.delegates.LegacyNetworkConnectionDelegate
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
import com.isupatches.android.wisefy.networkconnectionstatus.NetworkConnectionStatusUtil
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
@@ -65,21 +66,17 @@ internal class WisefyNetworkConnectionUtil(
logger?.d(LOG_TAG, "WisefyNetworkConnectionUtil delegate is: ${delegate::class.java.simpleName}")
}
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- return delegate.connectToNetwork(ssidToConnectTo, timeoutInMillis)
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ return delegate.connectToNetwork(request)
}
- override fun connectToNetwork(
- ssidToConnectTo: String,
- timeoutInMillis: Int,
- callbacks: ConnectToNetworkCallbacks?
- ) {
+ override fun connectToNetwork(request: NetworkConnectionRequest, callbacks: ConnectToNetworkCallbacks?) {
networkConnectionScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val result = delegate.connectToNetwork(ssidToConnectTo, timeoutInMillis)
+ val result = delegate.connectToNetwork(request)
withContext(coroutineDispatcherProvider.main) {
when (result) {
is NetworkConnectionResult.Succeeded -> {
- if (result.data) {
+ if (result.value) {
callbacks?.onConnectedToNetwork()
} else {
callbacks?.onFailureConnectingToNetwork()
@@ -106,7 +103,7 @@ internal class WisefyNetworkConnectionUtil(
withContext(coroutineDispatcherProvider.main) {
when (result) {
is NetworkConnectionResult.Succeeded -> {
- if (result.data) {
+ if (result.value) {
callbacks?.onDisconnectedFromCurrentNetwork()
} else {
callbacks?.onFailureDisconnectingFromCurrentNetwork()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionApi.kt
index 8456fd40..5355222b 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionApi.kt
@@ -16,6 +16,7 @@
package com.isupatches.android.wisefy.networkconnection.delegates
import android.net.ConnectivityManager
+import android.net.MacAddress
import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
@@ -23,11 +24,12 @@ import android.net.wifi.WifiNetworkSpecifier
import android.os.Build
import androidx.annotation.RequiresApi
import com.isupatches.android.wisefy.logging.WisefyLogger
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
internal interface Android29NetworkConnectionApi {
@RequiresApi(Build.VERSION_CODES.Q)
- fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int = 0): NetworkConnectionResult
+ fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult
fun disconnectFromCurrentNetwork(): NetworkConnectionResult
}
@@ -52,18 +54,34 @@ internal class Android29NetworkConnectionApiImpl(
}
@RequiresApi(Build.VERSION_CODES.Q)
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- val networkRequest = NetworkRequest.Builder()
- .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
- .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .setNetworkSpecifier(
- WifiNetworkSpecifier.Builder()
- .setSsid(ssidToConnectTo)
- .build()
- )
- .build()
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ val networkRequest =
+ when (request) {
+ is NetworkConnectionRequest.SSID -> {
+ NetworkRequest.Builder()
+ .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+ .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .setNetworkSpecifier(
+ WifiNetworkSpecifier.Builder()
+ .setSsid(request.ssid)
+ .build()
+ )
+ .build()
+ }
+ is NetworkConnectionRequest.BSSID -> {
+ NetworkRequest.Builder()
+ .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+ .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .setNetworkSpecifier(
+ WifiNetworkSpecifier.Builder()
+ .setBssid(MacAddress.fromString(request.bssid))
+ .build()
+ )
+ .build()
+ }
+ }
networkCallback
- connectionManager.requestNetwork(networkRequest, networkCallback, timeoutInMillis)
+ connectionManager.requestNetwork(networkRequest, networkCallback, request.timeoutInMillis)
return NetworkConnectionResult.ConnectionRequestPlaced
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionDelegate.kt
index 1d0182c1..507994f7 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/Android29NetworkConnectionDelegate.kt
@@ -20,6 +20,7 @@ import android.os.Build
import androidx.annotation.RequiresApi
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnection.NetworkConnectionApi
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
internal class Android29NetworkConnectionDelegate(
@@ -29,8 +30,8 @@ internal class Android29NetworkConnectionDelegate(
) : NetworkConnectionApi {
@RequiresApi(Build.VERSION_CODES.Q)
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- return impl.connectToNetwork(ssidToConnectTo, timeoutInMillis)
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ return impl.connectToNetwork(request)
}
override fun disconnectFromCurrentNetwork(): NetworkConnectionResult {
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionApi.kt
index 90addcb2..e09ed3e7 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionApi.kt
@@ -22,14 +22,16 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.constants.QUOTE
import com.isupatches.android.wisefy.logging.WisefyLogger
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
+import com.isupatches.android.wisefy.networkconnection.entities.toSearchForNetworkRequest
import com.isupatches.android.wisefy.networkconnectionstatus.NetworkConnectionStatusUtil
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
import com.isupatches.android.wisefy.util.rest
internal interface LegacyNetworkConnectionApi {
- fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int = 0): NetworkConnectionResult
+ fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult
fun disconnectFromCurrentNetwork(): NetworkConnectionResult
}
@@ -43,36 +45,38 @@ internal class LegacyNetworkConnectionApiImpl(
) : LegacyNetworkConnectionApi, ConnectivityManager.NetworkCallback() {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- when (val savedNetworkData = savedNetworkUtil.searchForSavedNetwork(ssidToConnectTo)) {
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ return when (
+ val savedNetworkData = savedNetworkUtil.searchForSavedNetwork(request.toSearchForNetworkRequest())
+ ) {
null -> return NetworkConnectionResult.NetworkNotFound
is SavedNetworkData.Configuration -> {
- savedNetworkData.data.let {
+ savedNetworkData.value.let {
wifiManager.disconnect()
wifiManager.enableNetwork(it.networkId, true)
wifiManager.reconnect()
- return NetworkConnectionResult.Succeeded(waitToConnectToSSID(ssidToConnectTo, timeoutInMillis))
+ return NetworkConnectionResult.Succeeded(waitToConnectToSSID(request))
}
}
+ else -> NetworkConnectionResult.Succeeded(false)
}
- return NetworkConnectionResult.Succeeded(false)
}
override fun disconnectFromCurrentNetwork(): NetworkConnectionResult {
- return NetworkConnectionResult.Succeeded(data = wifiManager.disconnect())
+ return NetworkConnectionResult.Succeeded(value = wifiManager.disconnect())
}
- private fun waitToConnectToSSID(ssid: String?, timeoutInMillis: Int): Boolean {
+ private fun waitToConnectToSSID(request: NetworkConnectionRequest): Boolean {
logger?.d(
LOG_TAG,
- "Waiting %d milliseconds to connect to network with ssid %s",
- timeoutInMillis,
- ssid ?: ""
+ "Waiting %d milliseconds to connect to network with search request %s",
+ request.timeoutInMillis,
+ request
)
var currentTime: Long
- val endTime = System.currentTimeMillis() + timeoutInMillis
+ val endTime = System.currentTimeMillis() + request.timeoutInMillis
do {
- if (isCurrentNetworkConnectedToSSID(ssid)) {
+ if (isCurrentNetworkConnected(request)) {
return true
}
rest()
@@ -82,17 +86,24 @@ internal class LegacyNetworkConnectionApiImpl(
return false
}
- private fun isCurrentNetworkConnectedToSSID(ssid: String?): Boolean {
- if (ssid.isNullOrEmpty()) {
+ private fun isCurrentNetworkConnected(request: NetworkConnectionRequest): Boolean {
+ val expectedValue = when (request) {
+ is NetworkConnectionRequest.SSID -> request.ssid
+ is NetworkConnectionRequest.BSSID -> request.bssid
+ }
+ if (expectedValue.isBlank()) {
return false
}
val connectionInfo = wifiManager.connectionInfo
connectionInfo?.let {
if (!it.ssid.isNullOrEmpty()) {
- val currentSSID = it.ssid.replace(QUOTE, "")
- logger?.d(LOG_TAG, "Current SSID: %s, Desired SSID: %s", currentSSID, ssid)
- if (currentSSID.equals(ssid, ignoreCase = true) &&
+ val currentValue = when (request) {
+ is NetworkConnectionRequest.SSID -> it.ssid.replace(QUOTE, "")
+ is NetworkConnectionRequest.BSSID -> it.bssid.replace(QUOTE, "")
+ }
+ logger?.d(LOG_TAG, "Current value: %s, Desired value: %s", currentValue, expectedValue)
+ if (currentValue.equals(expectedValue, ignoreCase = true) &&
networkConnectionStatusUtil.isDeviceConnectedToMobileOrWifiNetwork()
) {
logger?.d(LOG_TAG, "Network is connected")
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionDelegate.kt
index 05721634..dc2e9752 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/delegates/LegacyNetworkConnectionDelegate.kt
@@ -18,6 +18,7 @@ package com.isupatches.android.wisefy.networkconnection.delegates
import android.net.wifi.WifiManager
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnection.NetworkConnectionApi
+import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionRequest
import com.isupatches.android.wisefy.networkconnection.entities.NetworkConnectionResult
import com.isupatches.android.wisefy.networkconnectionstatus.NetworkConnectionStatusUtil
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
@@ -26,7 +27,6 @@ internal class LegacyNetworkConnectionDelegate(
wifiManager: WifiManager,
networkConnectionStatusUtil: NetworkConnectionStatusUtil,
savedNetworkUtil: SavedNetworkUtil,
-
logger: WisefyLogger?,
private val impl: LegacyNetworkConnectionApi = LegacyNetworkConnectionApiImpl(
wifiManager,
@@ -36,8 +36,8 @@ internal class LegacyNetworkConnectionDelegate(
)
) : NetworkConnectionApi {
- override fun connectToNetwork(ssidToConnectTo: String, timeoutInMillis: Int): NetworkConnectionResult {
- return impl.connectToNetwork(ssidToConnectTo, timeoutInMillis)
+ override fun connectToNetwork(request: NetworkConnectionRequest): NetworkConnectionResult {
+ return impl.connectToNetwork(request)
}
override fun disconnectFromCurrentNetwork(): NetworkConnectionResult {
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionRequest.kt
new file mode 100644
index 00000000..8730fa5b
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionRequest.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.networkconnection.entities
+
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
+
+sealed class NetworkConnectionRequest(
+ open val timeoutInMillis: Int
+) {
+ data class SSID(
+ val ssid: String,
+ override val timeoutInMillis: Int
+ ) : NetworkConnectionRequest(timeoutInMillis)
+
+ data class BSSID(
+ val bssid: String,
+ override val timeoutInMillis: Int
+ ) : NetworkConnectionRequest(timeoutInMillis)
+}
+
+internal fun NetworkConnectionRequest.toSearchForNetworkRequest(): SearchForSavedNetworkRequest {
+ return when (this) {
+ is NetworkConnectionRequest.SSID -> SearchForSavedNetworkRequest.SSID(ssid)
+ is NetworkConnectionRequest.BSSID -> SearchForSavedNetworkRequest.BSSID(bssid)
+ }
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionResult.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionResult.kt
index 0cc409dc..58846791 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionResult.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnection/entities/NetworkConnectionResult.kt
@@ -18,7 +18,7 @@ package com.isupatches.android.wisefy.networkconnection.entities
sealed class NetworkConnectionResult {
data class Succeeded(
- val data: Boolean
+ val value: Boolean
) : NetworkConnectionResult()
object ConnectionRequestPlaced : NetworkConnectionResult()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/NetworkConnectionStatusApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/NetworkConnectionStatusApi.kt
index 5be12e43..014850a2 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/NetworkConnectionStatusApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/NetworkConnectionStatusApi.kt
@@ -15,6 +15,8 @@
*/
package com.isupatches.android.wisefy.networkconnectionstatus
+import com.isupatches.android.wisefy.networkconnectionstatus.entities.IsNetworkConnectedToSSIDRequest
+
interface NetworkConnectionStatusApi {
fun attachNetworkWatcher()
fun detachNetworkWatcher()
@@ -23,7 +25,7 @@ interface NetworkConnectionStatusApi {
fun isDeviceConnectedToMobileOrWifiNetwork(): Boolean
- fun isDeviceConnectedToSSID(ssid: String): Boolean
+ fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean
fun isDeviceConnectedToWifiNetwork(): Boolean
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/WisefyNetworkConnectionStatusUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/WisefyNetworkConnectionStatusUtil.kt
index 997da248..2e094c0b 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/WisefyNetworkConnectionStatusUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/WisefyNetworkConnectionStatusUtil.kt
@@ -21,6 +21,7 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnectionstatus.delegates.LegacyNetworkConnectionStatusDelegate
+import com.isupatches.android.wisefy.networkconnectionstatus.entities.IsNetworkConnectedToSSIDRequest
import com.isupatches.android.wisefy.util.SdkUtil
internal interface NetworkConnectionStatusUtil : NetworkConnectionStatusApi
@@ -63,8 +64,8 @@ internal class WisefyNetworkConnectionStatusUtil(
return delegate.isDeviceConnectedToMobileOrWifiNetwork()
}
- override fun isDeviceConnectedToSSID(ssid: String): Boolean {
- return delegate.isDeviceConnectedToSSID(ssid)
+ override fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean {
+ return delegate.isDeviceConnectedToSSID(request)
}
@RequiresPermission(ACCESS_NETWORK_STATE)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusApi.kt
index 85a7bd4d..dc86a471 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusApi.kt
@@ -22,11 +22,14 @@ import android.net.Network
import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.net.wifi.WifiManager
+import android.os.Build
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.constants.QUOTE
import com.isupatches.android.wisefy.logging.WisefyLogger
+import com.isupatches.android.wisefy.networkconnectionstatus.entities.IsNetworkConnectedToSSIDRequest
import com.isupatches.android.wisefy.networkconnectionstatus.entities.NetworkConnectionStatus
import com.isupatches.android.wisefy.util.SdkUtil
+import com.isupatches.android.wisefy.util.getNetwork
internal interface LegacyNetworkConnectionStatusApi {
@RequiresPermission(ACCESS_NETWORK_STATE)
@@ -38,7 +41,7 @@ internal interface LegacyNetworkConnectionStatusApi {
fun isDeviceConnectedToMobileOrWifiNetwork(): Boolean
- fun isDeviceConnectedToSSID(ssid: String): Boolean
+ fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean
@RequiresPermission(ACCESS_NETWORK_STATE)
fun isDeviceConnectedToWifiNetwork(): Boolean
@@ -67,13 +70,25 @@ internal class LegacyNetworkConnectionStatusApiImpl(
return isNetworkConnected()
}
- override fun isDeviceConnectedToSSID(ssid: String): Boolean {
- val connectionInfo = wifiManager.connectionInfo
+ override fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean {
+ val connectionInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ connectivityManager.getNetwork()
+ } else {
+ @Suppress("Deprecation")
+ wifiManager.connectionInfo
+ }
connectionInfo?.let {
if (!it.ssid.isNullOrEmpty()) {
- val currentSSID = it.ssid.replace(QUOTE, "")
- logger?.d(LOG_TAG, "Current SSID: %s, Desired SSID: %s", currentSSID, ssid)
- if (currentSSID.equals(ssid, ignoreCase = true) && isNetworkConnected()) {
+ val currentValue = when (request) {
+ is IsNetworkConnectedToSSIDRequest.SSID -> it.ssid.replace(QUOTE, "")
+ is IsNetworkConnectedToSSIDRequest.BSSID -> it.bssid.replace(QUOTE, "")
+ }
+ val expectedValue = when (request) {
+ is IsNetworkConnectedToSSIDRequest.SSID -> request.value
+ is IsNetworkConnectedToSSIDRequest.BSSID -> request.value
+ }
+ logger?.d(LOG_TAG, "Current value: %s, Desired value: %s", currentValue, expectedValue)
+ if (currentValue.equals(expectedValue, ignoreCase = true) && isNetworkConnected()) {
logger?.d(LOG_TAG, "Network is connected")
return true
}
@@ -95,7 +110,9 @@ internal class LegacyNetworkConnectionStatusApiImpl(
// NET_CAPABILITY_NOT_ROAMING only available for P and above devices :'(
!doesNetworkHaveCapability(capability = NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
} else {
+ @Suppress("Deprecation")
val networkInfo = connectivityManager.activeNetworkInfo
+ @Suppress("Deprecation")
networkInfo != null && networkInfo.isRoaming
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusDelegate.kt
index 3aa71172..2c5c0f92 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/delegates/LegacyNetworkConnectionStatusDelegate.kt
@@ -21,6 +21,7 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkconnectionstatus.NetworkConnectionStatusApi
+import com.isupatches.android.wisefy.networkconnectionstatus.entities.IsNetworkConnectedToSSIDRequest
import com.isupatches.android.wisefy.util.SdkUtil
internal class LegacyNetworkConnectionStatusDelegate(
@@ -54,8 +55,8 @@ internal class LegacyNetworkConnectionStatusDelegate(
return impl.isDeviceConnectedToMobileOrWifiNetwork()
}
- override fun isDeviceConnectedToSSID(ssid: String): Boolean {
- return impl.isDeviceConnectedToSSID(ssid)
+ override fun isDeviceConnectedToSSID(request: IsNetworkConnectedToSSIDRequest): Boolean {
+ return impl.isDeviceConnectedToSSID(request)
}
@RequiresPermission(ACCESS_NETWORK_STATE)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/entities/IsNetworkConnectedToSSIDRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/entities/IsNetworkConnectedToSSIDRequest.kt
new file mode 100644
index 00000000..2ac7c033
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkconnectionstatus/entities/IsNetworkConnectedToSSIDRequest.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.networkconnectionstatus.entities
+
+sealed class IsNetworkConnectedToSSIDRequest {
+ data class SSID(val value: String) : IsNetworkConnectedToSSIDRequest()
+ data class BSSID(val value: String) : IsNetworkConnectedToSSIDRequest()
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/NetworkInfoApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/NetworkInfoApi.kt
index b9727889..a248a727 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/NetworkInfoApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/NetworkInfoApi.kt
@@ -16,22 +16,26 @@
package com.isupatches.android.wisefy.networkinfo
import android.Manifest.permission.ACCESS_NETWORK_STATE
-import android.net.Network
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.callbacks.GetCurrentNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.GetCurrentNetworkInfoCallbacks
import com.isupatches.android.wisefy.callbacks.GetIPCallbacks
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.GetCurrentNetworkInfoRequest
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
interface NetworkInfoApi {
fun getCurrentNetwork(): CurrentNetworkData?
@RequiresPermission(ACCESS_NETWORK_STATE)
- fun getCurrentNetworkInfo(network: Network? = null): CurrentNetworkInfoData?
+ fun getCurrentNetworkInfo(
+ request: GetCurrentNetworkInfoRequest = GetCurrentNetworkInfoRequest()
+ ): CurrentNetworkInfoData?
- fun getIP(): String?
+ @RequiresPermission(ACCESS_NETWORK_STATE)
+ fun getIP(): IPData?
}
interface NetworkInfoApiAsync {
@@ -41,8 +45,9 @@ interface NetworkInfoApiAsync {
@RequiresPermission(ACCESS_NETWORK_STATE)
fun getCurrentNetworkInfo(
callbacks: GetCurrentNetworkInfoCallbacks?,
- network: Network? = null
+ request: GetCurrentNetworkInfoRequest = GetCurrentNetworkInfoRequest()
)
+ @RequiresPermission(ACCESS_NETWORK_STATE)
fun getIP(callbacks: GetIPCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/WisefyNetworkInfoUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/WisefyNetworkInfoUtil.kt
index 210fdf11..a888ceb1 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/WisefyNetworkInfoUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/WisefyNetworkInfoUtil.kt
@@ -17,7 +17,6 @@ package com.isupatches.android.wisefy.networkinfo
import android.Manifest.permission.ACCESS_NETWORK_STATE
import android.net.ConnectivityManager
-import android.net.Network
import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.callbacks.GetCurrentNetworkCallbacks
@@ -27,6 +26,8 @@ import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkinfo.delegates.LegacyNetworkInfoDelegate
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.GetCurrentNetworkInfoRequest
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
import com.isupatches.android.wisefy.util.coroutines.CoroutineDispatcherProvider
import com.isupatches.android.wisefy.util.coroutines.createBaseCoroutineExceptionHandler
import kotlinx.coroutines.CoroutineScope
@@ -70,17 +71,17 @@ internal class WisefyNetworkInfoUtil(
}
@RequiresPermission(ACCESS_NETWORK_STATE)
- override fun getCurrentNetworkInfo(network: Network?): CurrentNetworkInfoData? {
- return delegate.getCurrentNetworkInfo(network)
+ override fun getCurrentNetworkInfo(request: GetCurrentNetworkInfoRequest): CurrentNetworkInfoData? {
+ return delegate.getCurrentNetworkInfo(request)
}
@RequiresPermission(ACCESS_NETWORK_STATE)
override fun getCurrentNetworkInfo(
callbacks: GetCurrentNetworkInfoCallbacks?,
- network: Network?
+ request: GetCurrentNetworkInfoRequest
) {
networkInfoScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val currentNetworkInfo = delegate.getCurrentNetworkInfo(network)
+ val currentNetworkInfo = delegate.getCurrentNetworkInfo(request)
withContext(coroutineDispatcherProvider.main) {
if (currentNetworkInfo != null) {
callbacks?.onCurrentNetworkInfoRetrieved(currentNetworkInfo)
@@ -91,10 +92,12 @@ internal class WisefyNetworkInfoUtil(
}
}
- override fun getIP(): String? {
+ @RequiresPermission(ACCESS_NETWORK_STATE)
+ override fun getIP(): IPData? {
return delegate.getIP()
}
+ @RequiresPermission(ACCESS_NETWORK_STATE)
override fun getIP(callbacks: GetIPCallbacks?) {
networkInfoScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
val ip = delegate.getIP()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoApi.kt
index b69f4c5c..1ad4fdf3 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoApi.kt
@@ -17,12 +17,15 @@ package com.isupatches.android.wisefy.networkinfo.delegates
import android.Manifest.permission.ACCESS_NETWORK_STATE
import android.net.ConnectivityManager
-import android.net.Network
import android.net.wifi.WifiManager
+import android.os.Build
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.GetCurrentNetworkInfoRequest
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
+import com.isupatches.android.wisefy.util.getNetwork
import java.math.BigInteger
import java.net.InetAddress
import java.net.UnknownHostException
@@ -30,9 +33,9 @@ import java.net.UnknownHostException
internal interface LegacyNetworkInfoApi {
fun getCurrentNetwork(): CurrentNetworkData?
- fun getCurrentNetworkInfo(network: Network?): CurrentNetworkInfoData?
+ fun getCurrentNetworkInfo(request: GetCurrentNetworkInfoRequest): CurrentNetworkInfoData?
- fun getIP(): String?
+ fun getIP(): IPData?
}
private const val LOG_TAG = "LegacyNetworkInfoApiImpl"
@@ -44,7 +47,12 @@ internal class LegacyNetworkInfoApiImpl(
) : LegacyNetworkInfoApi {
override fun getCurrentNetwork(): CurrentNetworkData? {
- val currentNetwork = wifiManager.connectionInfo
+ val currentNetwork = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ connectivityManager.getNetwork()
+ } else {
+ @Suppress("Deprecation")
+ wifiManager.connectionInfo
+ }
return if (currentNetwork != null) {
CurrentNetworkData(currentNetwork)
} else {
@@ -53,8 +61,8 @@ internal class LegacyNetworkInfoApiImpl(
}
@RequiresPermission(ACCESS_NETWORK_STATE)
- override fun getCurrentNetworkInfo(network: Network?): CurrentNetworkInfoData? {
- val networkForInfo = network ?: connectivityManager.activeNetwork
+ override fun getCurrentNetworkInfo(request: GetCurrentNetworkInfoRequest): CurrentNetworkInfoData? {
+ val networkForInfo = request.network ?: connectivityManager.activeNetwork
return if (networkForInfo != null) {
CurrentNetworkInfoData(
capabilities = connectivityManager.getNetworkCapabilities(networkForInfo),
@@ -65,10 +73,17 @@ internal class LegacyNetworkInfoApiImpl(
}
}
- override fun getIP(): String? {
- val ipAddress = BigInteger.valueOf(wifiManager.connectionInfo.ipAddress.toLong()).toByteArray()
+ override fun getIP(): IPData? {
+ val inetAddress = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ connectivityManager.getLinkProperties(connectivityManager.activeNetwork)?.dhcpServerAddress
+ } else {
+ @Suppress("Deprecation")
+ InetAddress.getByAddress(
+ BigInteger.valueOf(wifiManager.connectionInfo.ipAddress.toLong()).toByteArray()
+ )
+ }
return try {
- InetAddress.getByAddress(ipAddress).hostAddress
+ IPData(inetAddress?.hostAddress)
} catch (uhe: UnknownHostException) {
logger?.e(LOG_TAG, uhe, "UnknownHostException while gathering IP (sync)")
null
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoDelegate.kt
index 7475ad8a..bcf7e078 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/delegates/LegacyNetworkInfoDelegate.kt
@@ -17,13 +17,14 @@ package com.isupatches.android.wisefy.networkinfo.delegates
import android.Manifest.permission.ACCESS_NETWORK_STATE
import android.net.ConnectivityManager
-import android.net.Network
import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.networkinfo.NetworkInfoApi
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkData
import com.isupatches.android.wisefy.networkinfo.entities.CurrentNetworkInfoData
+import com.isupatches.android.wisefy.networkinfo.entities.GetCurrentNetworkInfoRequest
+import com.isupatches.android.wisefy.networkinfo.entities.IPData
internal class LegacyNetworkInfoDelegate(
wifiManager: WifiManager,
@@ -41,11 +42,11 @@ internal class LegacyNetworkInfoDelegate(
}
@RequiresPermission(ACCESS_NETWORK_STATE)
- override fun getCurrentNetworkInfo(network: Network?): CurrentNetworkInfoData? {
- return impl.getCurrentNetworkInfo(network)
+ override fun getCurrentNetworkInfo(request: GetCurrentNetworkInfoRequest): CurrentNetworkInfoData? {
+ return impl.getCurrentNetworkInfo(request)
}
- override fun getIP(): String? {
+ override fun getIP(): IPData? {
return impl.getIP()
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/CurrentNetworkData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/CurrentNetworkData.kt
index 058c47de..b0dd4b31 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/CurrentNetworkData.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/CurrentNetworkData.kt
@@ -18,5 +18,5 @@ package com.isupatches.android.wisefy.networkinfo.entities
import android.net.wifi.WifiInfo
data class CurrentNetworkData(
- val data: WifiInfo
+ val value: WifiInfo
)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/GetCurrentNetworkInfoRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/GetCurrentNetworkInfoRequest.kt
new file mode 100644
index 00000000..dcf81543
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/GetCurrentNetworkInfoRequest.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.networkinfo.entities
+
+import android.net.Network
+
+data class GetCurrentNetworkInfoRequest(
+ val network: Network? = null
+)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/IPData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/IPData.kt
new file mode 100644
index 00000000..b998ab0f
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/networkinfo/entities/IPData.kt
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.networkinfo.entities
+
+data class IPData(
+ val ip: String?
+)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/RemoveNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/RemoveNetworkApi.kt
index 1053553c..c3d7a3fb 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/RemoveNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/RemoveNetworkApi.kt
@@ -19,16 +19,17 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.CHANGE_WIFI_STATE
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.callbacks.RemoveNetworkCallbacks
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
interface RemoveNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun removeNetwork(ssidToRemove: String): RemoveNetworkResult
+ fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult
}
interface RemoveNetworkApiAsync {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun removeNetwork(ssidToRemove: String, callbacks: RemoveNetworkCallbacks?)
+ fun removeNetwork(request: RemoveNetworkRequest, callbacks: RemoveNetworkCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/WisefyRemoveNetworkUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/WisefyRemoveNetworkUtil.kt
index 48cb1ff9..ad09f780 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/WisefyRemoveNetworkUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/WisefyRemoveNetworkUtil.kt
@@ -23,6 +23,7 @@ import com.isupatches.android.wisefy.callbacks.RemoveNetworkCallbacks
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.removenetwork.delegates.Android29RemoveNetworkDelegate
import com.isupatches.android.wisefy.removenetwork.delegates.LegacyRemoveNetworkDelegate
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
import com.isupatches.android.wisefy.util.SdkUtil
@@ -56,25 +57,25 @@ internal class WisefyRemoveNetworkUtil(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- return delegate.removeNetwork(ssidToRemove)
+ override fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult {
+ return delegate.removeNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String, callbacks: RemoveNetworkCallbacks?) {
+ override fun removeNetwork(request: RemoveNetworkRequest, callbacks: RemoveNetworkCallbacks?) {
removeNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val result = delegate.removeNetwork(ssidToRemove)
+ val result = delegate.removeNetwork(request)
withContext(coroutineDispatcherProvider.main) {
when (result) {
is RemoveNetworkResult.ResultCode -> {
- if (result.data != -1) {
+ if (result.value != -1) {
callbacks?.onNetworkRemoved(result)
} else {
callbacks?.onFailureRemovingNetwork(result)
}
}
is RemoveNetworkResult.Succeeded -> {
- if (result.data) {
+ if (result.value) {
callbacks?.onNetworkRemoved(result)
} else {
callbacks?.onFailureRemovingNetwork(result)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkApi.kt
index bbbdd604..a4df9cde 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkApi.kt
@@ -21,14 +21,16 @@ import android.net.wifi.WifiManager
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
-import com.isupatches.android.wisefy.util.createOpenNetworkSuggestion
+import com.isupatches.android.wisefy.util.createOpenNetworkSuggestionWithBSSID
+import com.isupatches.android.wisefy.util.createOpenNetworkSuggestionWithSSID
internal interface Android29RemoveNetworkApi {
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- fun removeNetwork(ssidToRemove: String): RemoveNetworkResult
+ fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult
}
internal class Android29RemoveNetworkApiImpl(
@@ -37,9 +39,12 @@ internal class Android29RemoveNetworkApiImpl(
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- val suggestion = createOpenNetworkSuggestion(ssidToRemove)
+ override fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult {
+ val suggestion = when (request) {
+ is RemoveNetworkRequest.SSID -> createOpenNetworkSuggestionWithSSID(request.value)
+ is RemoveNetworkRequest.BSSID -> createOpenNetworkSuggestionWithBSSID(request.value)
+ }
val resultCode = wifiManager.removeNetworkSuggestions(listOf(suggestion))
- return RemoveNetworkResult.ResultCode(data = resultCode)
+ return RemoveNetworkResult.ResultCode(value = resultCode)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkDelegate.kt
index 81c273db..63b7bf48 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/Android29RemoveNetworkDelegate.kt
@@ -22,6 +22,7 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.removenetwork.RemoveNetworkApi
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
internal class Android29RemoveNetworkDelegate(
@@ -31,7 +32,7 @@ internal class Android29RemoveNetworkDelegate(
@RequiresApi(Build.VERSION_CODES.Q)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, CHANGE_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- return impl.removeNetwork(ssidToRemove)
+ override fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult {
+ return impl.removeNetwork(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkApi.kt
index a86aca3c..9e3d1a51 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkApi.kt
@@ -19,14 +19,16 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.ACCESS_WIFI_STATE
import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
+import com.isupatches.android.wisefy.removenetwork.entities.toSearchForNetworkRequest
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
internal interface LegacyRemoveNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun removeNetwork(ssidToRemove: String): RemoveNetworkResult
+ fun removeNetwork(removeNetworkRequest: RemoveNetworkRequest): RemoveNetworkResult
}
internal class LegacyRemoveNetworkApiImpl(
@@ -35,16 +37,18 @@ internal class LegacyRemoveNetworkApiImpl(
) : LegacyRemoveNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- when (val savedNetwork = savedNetworkUtil.searchForSavedNetwork(ssidToRemove)) {
- null -> return RemoveNetworkResult.NetworkNotFound
+ override fun removeNetwork(removeNetworkRequest: RemoveNetworkRequest): RemoveNetworkResult {
+ return when (
+ val savedNetwork = savedNetworkUtil.searchForSavedNetwork(removeNetworkRequest.toSearchForNetworkRequest())
+ ) {
+ null -> RemoveNetworkResult.NetworkNotFound
is SavedNetworkData.Configuration -> {
- savedNetwork.data.let {
+ savedNetwork.value.let {
val result = wifiManager.removeNetwork(it.networkId)
- return RemoveNetworkResult.Succeeded(data = result)
+ return RemoveNetworkResult.Succeeded(value = result)
}
}
+ else -> RemoveNetworkResult.Succeeded(false)
}
- return RemoveNetworkResult.Succeeded(false)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkDelegate.kt
index e1996b16..acea53b7 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/delegates/LegacyRemoveNetworkDelegate.kt
@@ -20,6 +20,7 @@ import android.Manifest.permission.ACCESS_WIFI_STATE
import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.removenetwork.RemoveNetworkApi
+import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkRequest
import com.isupatches.android.wisefy.removenetwork.entities.RemoveNetworkResult
import com.isupatches.android.wisefy.savednetworks.SavedNetworkUtil
@@ -33,7 +34,7 @@ internal class LegacyRemoveNetworkDelegate(
) : RemoveNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun removeNetwork(ssidToRemove: String): RemoveNetworkResult {
- return impl.removeNetwork(ssidToRemove)
+ override fun removeNetwork(request: RemoveNetworkRequest): RemoveNetworkResult {
+ return impl.removeNetwork(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkRequest.kt
new file mode 100644
index 00000000..3040aed5
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkRequest.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.removenetwork.entities
+
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
+
+sealed class RemoveNetworkRequest {
+ data class SSID(
+ val value: String
+ ) : RemoveNetworkRequest()
+
+ data class BSSID(
+ val value: String
+ ) : RemoveNetworkRequest()
+}
+
+internal fun RemoveNetworkRequest.toSearchForNetworkRequest(): SearchForSavedNetworkRequest {
+ return when (this) {
+ is RemoveNetworkRequest.SSID -> SearchForSavedNetworkRequest.SSID(value)
+ is RemoveNetworkRequest.BSSID -> SearchForSavedNetworkRequest.BSSID(value)
+ }
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkResult.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkResult.kt
index 8f911c7e..5dff0a66 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkResult.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/removenetwork/entities/RemoveNetworkResult.kt
@@ -17,11 +17,11 @@ package com.isupatches.android.wisefy.removenetwork.entities
sealed class RemoveNetworkResult {
data class ResultCode(
- val data: Int
+ val value: Int
) : RemoveNetworkResult()
data class Succeeded(
- val data: Boolean
+ val value: Boolean
) : RemoveNetworkResult()
object NetworkNotFound : RemoveNetworkResult()
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/SavedNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/SavedNetworkApi.kt
index 62040ccc..8bc68963 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/SavedNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/SavedNetworkApi.kt
@@ -22,19 +22,20 @@ import com.isupatches.android.wisefy.callbacks.GetSavedNetworksCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSavedNetworkCallbacks
import com.isupatches.android.wisefy.callbacks.SearchForSavedNetworksCallbacks
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
interface SavedNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
fun getSavedNetworks(): List
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun isNetworkSaved(ssid: String): Boolean
+ fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData?
+ fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData?
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetworks(regexForSSID: String): List
+ fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List
}
interface SavedNetworkApiAsync {
@@ -42,8 +43,8 @@ interface SavedNetworkApiAsync {
fun getSavedNetworks(callbacks: GetSavedNetworksCallbacks?)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetwork(regexForSSID: String, callbacks: SearchForSavedNetworkCallbacks?)
+ fun searchForSavedNetwork(request: SearchForSavedNetworkRequest, callbacks: SearchForSavedNetworkCallbacks?)
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetworks(regexForSSID: String, callbacks: SearchForSavedNetworksCallbacks?)
+ fun searchForSavedNetworks(request: SearchForSavedNetworkRequest, callbacks: SearchForSavedNetworksCallbacks?)
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/WisefySavedNetworkUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/WisefySavedNetworkUtil.kt
index b8b9539c..041b312b 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/WisefySavedNetworkUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/WisefySavedNetworkUtil.kt
@@ -27,6 +27,7 @@ import com.isupatches.android.wisefy.savednetworks.delegates.Android29SavedNetwo
import com.isupatches.android.wisefy.savednetworks.delegates.Android30SavedNetworkDelegate
import com.isupatches.android.wisefy.savednetworks.delegates.LegacySavedNetworkDelegate
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
import com.isupatches.android.wisefy.util.SdkUtil
import com.isupatches.android.wisefy.util.coroutines.CoroutineDispatcherProvider
import com.isupatches.android.wisefy.util.coroutines.createBaseCoroutineExceptionHandler
@@ -77,19 +78,22 @@ internal class WisefySavedNetworkUtil(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
- return delegate.isNetworkSaved(ssid)
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
+ return delegate.isNetworkSaved(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
- return delegate.searchForSavedNetwork(regexForSSID)
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
+ return delegate.searchForSavedNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String, callbacks: SearchForSavedNetworkCallbacks?) {
+ override fun searchForSavedNetwork(
+ request: SearchForSavedNetworkRequest,
+ callbacks: SearchForSavedNetworkCallbacks?
+ ) {
savedNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val savedNetwork = delegate.searchForSavedNetwork(regexForSSID)
+ val savedNetwork = delegate.searchForSavedNetwork(request)
withContext(coroutineDispatcherProvider.main) {
if (savedNetwork != null) {
callbacks?.onSavedNetworkRetrieved(savedNetwork)
@@ -101,14 +105,17 @@ internal class WisefySavedNetworkUtil(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
- return delegate.searchForSavedNetworks(regexForSSID)
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
+ return delegate.searchForSavedNetworks(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String, callbacks: SearchForSavedNetworksCallbacks?) {
+ override fun searchForSavedNetworks(
+ request: SearchForSavedNetworkRequest,
+ callbacks: SearchForSavedNetworksCallbacks?
+ ) {
savedNetworkScope.launch(createBaseCoroutineExceptionHandler(callbacks)) {
- val savedNetworks = delegate.searchForSavedNetworks(regexForSSID)
+ val savedNetworks = delegate.searchForSavedNetworks(request)
withContext(coroutineDispatcherProvider.main) {
if (savedNetworks.isNotEmpty()) {
callbacks?.onSavedNetworksRetrieved(savedNetworks)
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkApi.kt
index 111d02c0..7f2def21 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkApi.kt
@@ -16,16 +16,17 @@
package com.isupatches.android.wisefy.savednetworks.delegates
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
import com.isupatches.android.wisefy.util.fail
internal interface Android29SavedNetworkApi {
fun getSavedNetworks(): List
- fun isNetworkSaved(ssid: String): Boolean
+ fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean
- fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData?
+ fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData?
- fun searchForSavedNetworks(regexForSSID: String): List
+ fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List
}
private const val ANDROID_Q_SAVED_NETWORK_WARNING =
@@ -38,17 +39,17 @@ internal class Android29SavedNetworkApiImpl : Android29SavedNetworkApi {
return emptyList()
}
- override fun isNetworkSaved(ssid: String): Boolean {
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
fail(ANDROID_Q_SAVED_NETWORK_WARNING)
return false
}
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
fail(ANDROID_Q_SAVED_NETWORK_WARNING)
return null
}
- override fun searchForSavedNetworks(regexForSSID: String): List {
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
fail(ANDROID_Q_SAVED_NETWORK_WARNING)
return emptyList()
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkDelegate.kt
index 627e0d9a..7ac652cb 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android29SavedNetworkDelegate.kt
@@ -19,6 +19,7 @@ import android.Manifest.permission.ACCESS_FINE_LOCATION
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.savednetworks.SavedNetworkApi
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
internal class Android29SavedNetworkDelegate(
private val impl: Android29SavedNetworkApiImpl = Android29SavedNetworkApiImpl()
@@ -30,17 +31,17 @@ internal class Android29SavedNetworkDelegate(
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun isNetworkSaved(ssid: String): Boolean {
- return impl.isNetworkSaved(ssid)
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
+ return impl.isNetworkSaved(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
- return impl.searchForSavedNetwork(regexForSSID)
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
+ return impl.searchForSavedNetwork(request)
}
@RequiresPermission(ACCESS_FINE_LOCATION)
- override fun searchForSavedNetworks(regexForSSID: String): List {
- return impl.searchForSavedNetworks(regexForSSID)
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
+ return impl.searchForSavedNetworks(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkApi.kt
index d63acb7f..80510be4 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkApi.kt
@@ -23,6 +23,7 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.constants.QUOTE
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
internal interface Android30SavedNetworkApi {
@RequiresApi(Build.VERSION_CODES.R)
@@ -31,15 +32,15 @@ internal interface Android30SavedNetworkApi {
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(ACCESS_WIFI_STATE)
- fun isNetworkSaved(ssid: String): Boolean
+ fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(ACCESS_WIFI_STATE)
- fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData?
+ fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData?
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(ACCESS_WIFI_STATE)
- fun searchForSavedNetworks(regexForSSID: String): List
+ fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List
}
internal class Android30SavedNetworkApiImpl(
@@ -50,26 +51,29 @@ internal class Android30SavedNetworkApiImpl(
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
override fun getSavedNetworks(): List {
return wifiManager.networkSuggestions.map {
- SavedNetworkData.Suggestion(data = it)
+ SavedNetworkData.Suggestion(value = it)
}
}
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
return wifiManager.networkSuggestions.any {
- it.ssid.equals(ssid)
+ when (request) {
+ is SearchForSavedNetworkRequest.SSID -> it.ssid.equals(request.regexForSSID)
+ is SearchForSavedNetworkRequest.BSSID -> it.ssid.equals(request.regexForBSSID)
+ }
}
}
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
val savedNetwork = wifiManager.networkSuggestions.firstOrNull {
- matchesRegexForSSID(it, regexForSSID)
+ matchesRegexForSearch(it, request)
}
return if (savedNetwork != null) {
- SavedNetworkData.Suggestion(data = savedNetwork)
+ SavedNetworkData.Suggestion(value = savedNetwork)
} else {
null
}
@@ -77,17 +81,28 @@ internal class Android30SavedNetworkApiImpl(
@RequiresApi(Build.VERSION_CODES.R)
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
return wifiManager.networkSuggestions.filter {
- matchesRegexForSSID(it, regexForSSID)
+ matchesRegexForSearch(it, request)
}.map { savedNetwork ->
- SavedNetworkData.Suggestion(data = savedNetwork)
+ SavedNetworkData.Suggestion(value = savedNetwork)
}
}
@RequiresApi(Build.VERSION_CODES.R)
- private fun matchesRegexForSSID(suggestion: WifiNetworkSuggestion, regexForSSID: String): Boolean {
- return suggestion.ssid?.replace(QUOTE, "")?.matches(regexForSSID.toRegex()) == true ||
- suggestion.ssid?.matches(regexForSSID.toRegex()) == true
+ private fun matchesRegexForSearch(
+ suggestion: WifiNetworkSuggestion,
+ request: SearchForSavedNetworkRequest
+ ): Boolean {
+ return when (request) {
+ is SearchForSavedNetworkRequest.SSID -> {
+ suggestion.ssid?.replace(QUOTE, "")?.matches(request.regexForSSID.toRegex()) == true ||
+ suggestion.ssid?.matches(request.regexForSSID.toRegex()) == true
+ }
+ is SearchForSavedNetworkRequest.BSSID -> {
+ suggestion.bssid?.toString()?.replace(QUOTE, "")?.matches(request.regexForBSSID.toRegex()) == true ||
+ suggestion.bssid?.toString()?.matches(request.regexForBSSID.toRegex()) == true
+ }
+ }
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkDelegate.kt
index 5f0e19c4..0bc7f3df 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/Android30SavedNetworkDelegate.kt
@@ -22,6 +22,7 @@ import androidx.annotation.RequiresApi
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.savednetworks.SavedNetworkApi
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
@RequiresApi(Build.VERSION_CODES.R)
internal class Android30SavedNetworkDelegate(
@@ -35,17 +36,17 @@ internal class Android30SavedNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
- return impl.isNetworkSaved(ssid)
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
+ return impl.isNetworkSaved(request)
}
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
- return impl.searchForSavedNetwork(regexForSSID)
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
+ return impl.searchForSavedNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
- return impl.searchForSavedNetworks(regexForSSID)
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
+ return impl.searchForSavedNetworks(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkApi.kt
index f307a795..ab8b74c2 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkApi.kt
@@ -22,19 +22,20 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.constants.QUOTE
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
internal interface LegacySavedNetworkApi {
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
fun getSavedNetworks(): List
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun isNetworkSaved(ssid: String): Boolean
+ fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData?
+ fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData?
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- fun searchForSavedNetworks(regexForSSID: String): List
+ fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List
}
internal class LegacySavedNetworkApiImpl(
@@ -44,40 +45,51 @@ internal class LegacySavedNetworkApiImpl(
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
override fun getSavedNetworks(): List {
return wifiManager.configuredNetworks.map {
- SavedNetworkData.Configuration(data = it)
+ SavedNetworkData.Configuration(value = it)
}
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
return wifiManager.configuredNetworks.any {
- it.SSID.equals(ssid)
+ it.SSID.equals(request)
}
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
val savedNetwork = wifiManager.configuredNetworks.firstOrNull {
- matchesRegexForSSID(it, regexForSSID)
+ matchesRegexForSearch(it, request)
}
return if (savedNetwork != null) {
- SavedNetworkData.Configuration(data = savedNetwork)
+ SavedNetworkData.Configuration(value = savedNetwork)
} else {
null
}
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
return wifiManager.configuredNetworks.filter {
- matchesRegexForSSID(it, regexForSSID)
+ matchesRegexForSearch(it, request)
}.map { savedNetwork ->
- SavedNetworkData.Configuration(data = savedNetwork)
+ SavedNetworkData.Configuration(value = savedNetwork)
}
}
- private fun matchesRegexForSSID(configuration: WifiConfiguration, regexForSSID: String): Boolean {
- return configuration.SSID.replace(QUOTE, "").matches(regexForSSID.toRegex()) ||
- configuration.SSID.matches(regexForSSID.toRegex())
+ private fun matchesRegexForSearch(
+ configuration: WifiConfiguration,
+ request: SearchForSavedNetworkRequest
+ ): Boolean {
+ return when (request) {
+ is SearchForSavedNetworkRequest.SSID -> {
+ configuration.SSID.replace(QUOTE, "").matches(request.regexForSSID.toRegex()) ||
+ configuration.SSID.matches(request.regexForSSID.toRegex())
+ }
+ is SearchForSavedNetworkRequest.BSSID -> {
+ configuration.BSSID.replace(QUOTE, "").matches(request.regexForBSSID.toRegex()) ||
+ configuration.BSSID.matches(request.regexForBSSID.toRegex())
+ }
+ }
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkDelegate.kt
index a89a3eba..7a14f1a9 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/delegates/LegacySavedNetworkDelegate.kt
@@ -21,6 +21,7 @@ import android.net.wifi.WifiManager
import androidx.annotation.RequiresPermission
import com.isupatches.android.wisefy.savednetworks.SavedNetworkApi
import com.isupatches.android.wisefy.savednetworks.entities.SavedNetworkData
+import com.isupatches.android.wisefy.savednetworks.entities.SearchForSavedNetworkRequest
internal class LegacySavedNetworkDelegate(
wifiManager: WifiManager,
@@ -33,17 +34,17 @@ internal class LegacySavedNetworkDelegate(
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun isNetworkSaved(ssid: String): Boolean {
- return impl.isNetworkSaved(ssid)
+ override fun isNetworkSaved(request: SearchForSavedNetworkRequest): Boolean {
+ return impl.isNetworkSaved(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetwork(regexForSSID: String): SavedNetworkData? {
- return impl.searchForSavedNetwork(regexForSSID)
+ override fun searchForSavedNetwork(request: SearchForSavedNetworkRequest): SavedNetworkData? {
+ return impl.searchForSavedNetwork(request)
}
@RequiresPermission(allOf = [ACCESS_FINE_LOCATION, ACCESS_WIFI_STATE])
- override fun searchForSavedNetworks(regexForSSID: String): List {
- return impl.searchForSavedNetworks(regexForSSID)
+ override fun searchForSavedNetworks(request: SearchForSavedNetworkRequest): List {
+ return impl.searchForSavedNetworks(request)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SavedNetworkData.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SavedNetworkData.kt
index 9fad497e..14616f79 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SavedNetworkData.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SavedNetworkData.kt
@@ -21,10 +21,10 @@ import android.net.wifi.WifiNetworkSuggestion
sealed class SavedNetworkData {
data class Configuration(
- val data: WifiConfiguration
+ val value: WifiConfiguration
) : SavedNetworkData()
data class Suggestion(
- val data: WifiNetworkSuggestion
+ val value: WifiNetworkSuggestion
) : SavedNetworkData()
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SearchForSavedNetworkRequest.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SearchForSavedNetworkRequest.kt
new file mode 100644
index 00000000..2ab59a4f
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/savednetworks/entities/SearchForSavedNetworkRequest.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.savednetworks.entities
+
+sealed class SearchForSavedNetworkRequest {
+ data class SSID(
+ val regexForSSID: String
+ ) : SearchForSavedNetworkRequest()
+
+ data class BSSID(
+ val regexForBSSID: String
+ ) : SearchForSavedNetworkRequest()
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/security/SecurityApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/security/SecurityApi.kt
index 71560b4f..75eaf418 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/security/SecurityApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/security/SecurityApi.kt
@@ -15,14 +15,14 @@
*/
package com.isupatches.android.wisefy.security
-import android.net.wifi.ScanResult
+import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
interface SecurityApi {
- fun isNetworkEAP(scanResult: ScanResult): Boolean
- fun isNetworkPSK(scanResult: ScanResult): Boolean
- fun isNetworkSecure(scanResult: ScanResult): Boolean
- fun isNetworkWEP(scanResult: ScanResult): Boolean
- fun isNetworkWPA(scanResult: ScanResult): Boolean
- fun isNetworkWPA2(scanResult: ScanResult): Boolean
- fun isNetworkWPA3(scanResult: ScanResult): Boolean
+ fun isNetworkEAP(network: AccessPointData): Boolean
+ fun isNetworkPSK(network: AccessPointData): Boolean
+ fun isNetworkSecure(network: AccessPointData): Boolean
+ fun isNetworkWEP(network: AccessPointData): Boolean
+ fun isNetworkWPA(network: AccessPointData): Boolean
+ fun isNetworkWPA2(network: AccessPointData): Boolean
+ fun isNetworkWPA3(network: AccessPointData): Boolean
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/security/WisefySecurityUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/security/WisefySecurityUtil.kt
index f01868b8..98eed186 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/security/WisefySecurityUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/security/WisefySecurityUtil.kt
@@ -15,7 +15,7 @@
*/
package com.isupatches.android.wisefy.security
-import android.net.wifi.ScanResult
+import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
import com.isupatches.android.wisefy.logging.WisefyLogger
import com.isupatches.android.wisefy.security.delegates.LegacySecurityDelegate
@@ -33,31 +33,31 @@ internal class WisefySecurityUtil(
logger?.d(LOG_TAG, "WisefySecurityUtil delegate is: ${delegate::class.java.simpleName}")
}
- override fun isNetworkEAP(scanResult: ScanResult): Boolean {
- return delegate.isNetworkEAP(scanResult)
+ override fun isNetworkEAP(network: AccessPointData): Boolean {
+ return delegate.isNetworkEAP(network)
}
- override fun isNetworkPSK(scanResult: ScanResult): Boolean {
- return delegate.isNetworkPSK(scanResult)
+ override fun isNetworkPSK(network: AccessPointData): Boolean {
+ return delegate.isNetworkPSK(network)
}
- override fun isNetworkSecure(scanResult: ScanResult): Boolean {
- return delegate.isNetworkSecure(scanResult)
+ override fun isNetworkSecure(network: AccessPointData): Boolean {
+ return delegate.isNetworkSecure(network)
}
- override fun isNetworkWEP(scanResult: ScanResult): Boolean {
- return delegate.isNetworkWEP(scanResult)
+ override fun isNetworkWEP(network: AccessPointData): Boolean {
+ return delegate.isNetworkWEP(network)
}
- override fun isNetworkWPA(scanResult: ScanResult): Boolean {
- return delegate.isNetworkWPA(scanResult)
+ override fun isNetworkWPA(network: AccessPointData): Boolean {
+ return delegate.isNetworkWPA(network)
}
- override fun isNetworkWPA2(scanResult: ScanResult): Boolean {
- return delegate.isNetworkWPA2(scanResult)
+ override fun isNetworkWPA2(network: AccessPointData): Boolean {
+ return delegate.isNetworkWPA2(network)
}
- override fun isNetworkWPA3(scanResult: ScanResult): Boolean {
- return delegate.isNetworkWPA3(scanResult)
+ override fun isNetworkWPA3(network: AccessPointData): Boolean {
+ return delegate.isNetworkWPA3(network)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityApi.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityApi.kt
index 0f90d690..2b8ab91a 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityApi.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityApi.kt
@@ -15,7 +15,7 @@
*/
package com.isupatches.android.wisefy.security.delegates
-import android.net.wifi.ScanResult
+import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
import com.isupatches.android.wisefy.security.entities.Capability
import com.isupatches.android.wisefy.security.entities.EAP
import com.isupatches.android.wisefy.security.entities.PSK
@@ -25,27 +25,27 @@ import com.isupatches.android.wisefy.security.entities.WPA2
import com.isupatches.android.wisefy.security.entities.WPA3
internal interface LegacySecurityApi {
- fun isNetworkEAP(scanResult: ScanResult): Boolean
- fun isNetworkPSK(scanResult: ScanResult): Boolean
- fun isNetworkSecure(scanResult: ScanResult): Boolean
- fun isNetworkWEP(scanResult: ScanResult): Boolean
- fun isNetworkWPA(scanResult: ScanResult): Boolean
- fun isNetworkWPA2(scanResult: ScanResult): Boolean
- fun isNetworkWPA3(scanResult: ScanResult): Boolean
+ fun isNetworkEAP(network: AccessPointData): Boolean
+ fun isNetworkPSK(network: AccessPointData): Boolean
+ fun isNetworkSecure(network: AccessPointData): Boolean
+ fun isNetworkWEP(network: AccessPointData): Boolean
+ fun isNetworkWPA(network: AccessPointData): Boolean
+ fun isNetworkWPA2(network: AccessPointData): Boolean
+ fun isNetworkWPA3(network: AccessPointData): Boolean
}
internal class LegacySecurityApiImpl : LegacySecurityApi {
- override fun isNetworkEAP(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, EAP)
+ override fun isNetworkEAP(network: AccessPointData): Boolean {
+ return containsCapability(network, EAP)
}
- override fun isNetworkPSK(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, PSK)
+ override fun isNetworkPSK(network: AccessPointData): Boolean {
+ return containsCapability(network, PSK)
}
- override fun isNetworkSecure(scanResult: ScanResult): Boolean {
- val networkCapabilities: String = scanResult.capabilities
+ override fun isNetworkSecure(network: AccessPointData): Boolean {
+ val networkCapabilities: String = (network as? AccessPointData.ScanResult)?.value?.capabilities ?: ""
networkCapabilities.let { capabilities ->
val securityModes = arrayOf(EAP, PSK, WEP, WPA, WPA2, WPA3)
for (securityMode in securityModes) {
@@ -57,26 +57,28 @@ internal class LegacySecurityApiImpl : LegacySecurityApi {
return false
}
- override fun isNetworkWEP(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, WEP)
+ override fun isNetworkWEP(network: AccessPointData): Boolean {
+ return containsCapability(network, WEP)
}
- override fun isNetworkWPA(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, WPA)
+ override fun isNetworkWPA(network: AccessPointData): Boolean {
+ return containsCapability(network, WPA)
}
- override fun isNetworkWPA2(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, WPA2)
+ override fun isNetworkWPA2(network: AccessPointData): Boolean {
+ return containsCapability(network, WPA2)
}
- override fun isNetworkWPA3(scanResult: ScanResult): Boolean {
- return containsCapability(scanResult, WPA3)
+ override fun isNetworkWPA3(network: AccessPointData): Boolean {
+ return containsCapability(network, WPA3)
}
private fun containsCapability(
- scanResult: ScanResult?,
+ network: AccessPointData,
@Capability capability: String
): Boolean {
- return scanResult?.capabilities != null && scanResult.capabilities.contains(capability)
+ return network is AccessPointData.ScanResult &&
+ network.value.capabilities != null &&
+ network.value.capabilities.contains(capability)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityDelegate.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityDelegate.kt
index 2d21fca2..06361c63 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityDelegate.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/security/delegates/LegacySecurityDelegate.kt
@@ -15,38 +15,38 @@
*/
package com.isupatches.android.wisefy.security.delegates
-import android.net.wifi.ScanResult
+import com.isupatches.android.wisefy.accesspoints.entities.AccessPointData
import com.isupatches.android.wisefy.security.SecurityApi
internal class LegacySecurityDelegate(
private val impl: LegacySecurityApi = LegacySecurityApiImpl()
) : SecurityApi {
- override fun isNetworkEAP(scanResult: ScanResult): Boolean {
- return impl.isNetworkEAP(scanResult)
+ override fun isNetworkEAP(network: AccessPointData): Boolean {
+ return impl.isNetworkEAP(network)
}
- override fun isNetworkPSK(scanResult: ScanResult): Boolean {
- return impl.isNetworkPSK(scanResult)
+ override fun isNetworkPSK(network: AccessPointData): Boolean {
+ return impl.isNetworkPSK(network)
}
- override fun isNetworkSecure(scanResult: ScanResult): Boolean {
- return impl.isNetworkSecure(scanResult)
+ override fun isNetworkSecure(network: AccessPointData): Boolean {
+ return impl.isNetworkSecure(network)
}
- override fun isNetworkWEP(scanResult: ScanResult): Boolean {
- return impl.isNetworkWEP(scanResult)
+ override fun isNetworkWEP(network: AccessPointData): Boolean {
+ return impl.isNetworkWEP(network)
}
- override fun isNetworkWPA(scanResult: ScanResult): Boolean {
- return impl.isNetworkWPA(scanResult)
+ override fun isNetworkWPA(network: AccessPointData): Boolean {
+ return impl.isNetworkWPA(network)
}
- override fun isNetworkWPA2(scanResult: ScanResult): Boolean {
- return impl.isNetworkWPA2(scanResult)
+ override fun isNetworkWPA2(network: AccessPointData): Boolean {
+ return impl.isNetworkWPA2(network)
}
- override fun isNetworkWPA3(scanResult: ScanResult): Boolean {
- return impl.isNetworkWPA3(scanResult)
+ override fun isNetworkWPA3(network: AccessPointData): Boolean {
+ return impl.isNetworkWPA3(network)
}
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/util/ConnectivityManagerExtension.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/util/ConnectivityManagerExtension.kt
new file mode 100644
index 00000000..985b7bfc
--- /dev/null
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/util/ConnectivityManagerExtension.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2021 Patches Klinefelter
+ *
+ * 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 com.isupatches.android.wisefy.util
+
+import android.net.ConnectivityManager
+import android.net.wifi.WifiInfo
+import android.os.Build
+import androidx.annotation.RequiresApi
+
+@RequiresApi(Build.VERSION_CODES.Q)
+internal fun ConnectivityManager.getNetwork(): WifiInfo? {
+ return getNetworkCapabilities(activeNetwork)?.transportInfo as? WifiInfo
+}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/util/SdkUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/util/SdkUtil.kt
index ed32dd4a..5fe506ea 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/util/SdkUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/util/SdkUtil.kt
@@ -16,15 +16,25 @@
package com.isupatches.android.wisefy.util
import android.os.Build
+import androidx.annotation.ChecksSdkIntAtLeast
internal interface SdkUtil {
fun isAtLeastP(): Boolean
fun isAtLeastQ(): Boolean
fun isAtLeastR(): Boolean
+ fun isAtLeastS(): Boolean
}
internal class SdkUtilImpl : SdkUtil {
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.P)
override fun isAtLeastP() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
+
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.Q)
override fun isAtLeastQ() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
+
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.R)
override fun isAtLeastR() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
+
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.S)
+ override fun isAtLeastS() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
}
diff --git a/wisefy/src/main/java/com/isupatches/android/wisefy/util/WifiSuggestionUtil.kt b/wisefy/src/main/java/com/isupatches/android/wisefy/util/WifiSuggestionUtil.kt
index b3eb3ec9..f85f43c3 100644
--- a/wisefy/src/main/java/com/isupatches/android/wisefy/util/WifiSuggestionUtil.kt
+++ b/wisefy/src/main/java/com/isupatches/android/wisefy/util/WifiSuggestionUtil.kt
@@ -15,19 +15,27 @@
*/
package com.isupatches.android.wisefy.util
+import android.net.MacAddress
import android.net.wifi.WifiNetworkSuggestion
import android.os.Build
import androidx.annotation.RequiresApi
@RequiresApi(Build.VERSION_CODES.Q)
-internal fun createOpenNetworkSuggestion(ssid: String): WifiNetworkSuggestion {
+internal fun createOpenNetworkSuggestionWithSSID(ssid: String): WifiNetworkSuggestion {
return WifiNetworkSuggestion.Builder()
.setSsid(ssid)
.build()
}
@RequiresApi(Build.VERSION_CODES.Q)
-internal fun createWPA2NetworkSuggestion(
+internal fun createOpenNetworkSuggestionWithBSSID(bssid: String): WifiNetworkSuggestion {
+ return WifiNetworkSuggestion.Builder()
+ .setBssid(MacAddress.fromString(bssid))
+ .build()
+}
+
+@RequiresApi(Build.VERSION_CODES.Q)
+internal fun createWPA2NetworkSuggestionWithSSID(
ssid: String,
passphrase: String
): WifiNetworkSuggestion {
@@ -38,7 +46,18 @@ internal fun createWPA2NetworkSuggestion(
}
@RequiresApi(Build.VERSION_CODES.Q)
-internal fun createWPA3NetworkSuggestion(
+internal fun createWPA2NetworkSuggestionWithBSSID(
+ bssid: String,
+ passphrase: String
+): WifiNetworkSuggestion {
+ return WifiNetworkSuggestion.Builder()
+ .setBssid(MacAddress.fromString(bssid))
+ .setWpa2Passphrase(passphrase)
+ .build()
+}
+
+@RequiresApi(Build.VERSION_CODES.Q)
+internal fun createWPA3NetworkSuggestionWithSSID(
ssid: String,
passphrase: String
): WifiNetworkSuggestion {
@@ -47,3 +66,14 @@ internal fun createWPA3NetworkSuggestion(
.setWpa3Passphrase(passphrase)
.build()
}
+
+@RequiresApi(Build.VERSION_CODES.Q)
+internal fun createWPA3NetworkSuggestionWithBSSID(
+ bssid: String,
+ passphrase: String
+): WifiNetworkSuggestion {
+ return WifiNetworkSuggestion.Builder()
+ .setBssid(MacAddress.fromString(bssid))
+ .setWpa3Passphrase(passphrase)
+ .build()
+}