From 0a582e364532a2fb3409bff28b2c39e3460d4259 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 27 May 2022 19:56:24 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=8A=B6=E6=80=81=E6=A0=8F]=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?wifi=E5=90=8D=E7=A7=B0=E4=B8=BAunknowxx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../status/entity/Status.kt | 8 ++--- .../status/model/StatusModel.kt | 35 +++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt index 44354fcbb6..0939955dcb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/entity/Status.kt @@ -26,7 +26,7 @@ internal class IpcStatus(val enabled: Boolean = false): Status() { } } -internal class NetStatus(val enabled: Boolean = false, val name: String? = null, val speed: Speed? = null): Status() { +internal class NetStatus(val enabled: Boolean = false, var name: String? = null, val speed: Speed? = null): Status() { class Speed(val tx: Int, val rx: Int) { override fun toString(): String { @@ -81,7 +81,7 @@ internal class GpsStatus(val enabled: Boolean = false, val isGranted: Boolean = /** * RTK/GNSS定位状态 */ -internal class RTKStatus(val enabled: Boolean = false): Status() { +internal class RTKStatus(var enabled: Boolean = false): Status() { override fun equals(other: Any?): Boolean { if (javaClass != other?.javaClass) return false @@ -98,7 +98,7 @@ internal class RTKStatus(val enabled: Boolean = false): Status() { /** * Can总线 */ -internal class CanStatus(val enabled: Boolean = false): Status() { +internal class CanStatus(var enabled: Boolean = false): Status() { override fun equals(other: Any?): Boolean { if (javaClass != other?.javaClass) return false @@ -121,7 +121,7 @@ internal class CanStatus(val enabled: Boolean = false): Status() { /** * 寻迹/算路/未知 */ -internal class TracingStatus(val state: Tracing): Status() { +internal class TracingStatus(var state: Tracing): Status() { enum class Tracing(val code: String? = "") { /** diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt index 9da8025efa..291ee63f15 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/model/StatusModel.kt @@ -42,6 +42,7 @@ internal class StatusModel : ViewModel() { synchronized(old) { val v = old.get()?.second ?: status.value?.second ?: throw IllegalStateException("live data can't be null.") val nv = ArrayList(v).also { it.updateOrInsert(s) } + fixData(nv) val data = Pair(getExceptionStatus(nv), nv) old.set(data) Log.d(TAG, "status: $s") @@ -50,6 +51,40 @@ internal class StatusModel : ViewModel() { } } + private fun fixData(data: ArrayList) { + var netStatus: NetStatus? = null + var gpsStatus: GpsStatus? = null + for (d in data) { + if (d is NetStatus) { + netStatus = d + } + if (d is GpsStatus) { + gpsStatus = d + } + } + + if (netStatus != null && !netStatus.enabled) { + for (i in data) { + when(i) { + is RTKStatus -> + i.enabled = false + is CanStatus -> + i.enabled = false + is TracingStatus -> + i.state = UNKNOWN + else -> continue + } + } + } + + if (netStatus != null && gpsStatus != null) { + val wifiName = netStatus.name + if (!gpsStatus.enabled || !gpsStatus.isGranted || wifiName != null && wifiName.startsWith("unknow")) { + netStatus.name = "Wi-Fi" + } + } + } + private fun getExceptionStatus(l: ArrayList): Status? { var ret: Status? = null for (s in l) {