diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactory.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactory.kt index 0bb0e08c..da157924 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactory.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactory.kt @@ -57,26 +57,27 @@ class AppleFactory @Inject constructor( log(TAG, INFO) { "Decoding $scanResult" } - var factory = podFactories.firstOrNull { it.isResponsible(pm) } + val factory = podFactories.firstOrNull { it.isResponsible(pm) } - if (factory == null) { - if (scanResult.address != "6E:9E:D1:49:D2:6D") { - Bugs.report( - tag = TAG, - message = "Unknown proximity message type", - exception = IllegalArgumentException("Unknown ProximityMessage: $pm") - ) - } - factory = unknownAppleFactory - } - - return factory.create( + val device = (factory ?: unknownAppleFactory).create( scanResult = scanResult, proximityMessage = pm, ) + + if (factory == null && !SILENCED_PMS.contains(device.rawDeviceModel) && scanResult.address != "6E:9E:D1:49:D2:6D") { + SILENCED_PMS.add(device.rawDeviceModel) + Bugs.report( + tag = TAG, + message = "Unknown proximity message type", + exception = IllegalArgumentException("Unknown ProximityMessage: $pm") + ) + } + + return@withLock device } companion object { + private val SILENCED_PMS = mutableSetOf() private val TAG = logTag("Pod", "Apple", "Factory") } } \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ProximityPairing.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ProximityPairing.kt index bdac5a94..d8eeb8e9 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ProximityPairing.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ProximityPairing.kt @@ -32,15 +32,10 @@ object ProximityPairing { deviceColor = data[7] ) - override fun toString(): String = - "ProximityPairing.Message(type=$type, length=$length, data=${ - data.joinToString(separator = " ") { - String.format( - "%02X", - it - ) - } - }" + override fun toString(): String { + val dataHex = data.joinToString(separator = " ") { String.format("%02X", it.toByte()) } + return "ProximityPairing.Message(type=$type, length=$length, data=$dataHex)" + } } @Reusable