diff --git a/app-common/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt b/app-common/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt index 6d01d43f..d1f08dcb 100644 --- a/app-common/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt +++ b/app-common/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt @@ -10,13 +10,18 @@ import eu.darken.capod.pods.core.SinglePodDevice interface SingleApplePods : ApplePods, SinglePodDevice, HasAppleColor { override val batteryHeadsetPercent: Float? - get() = when (val value = pubPodsBattery.lowerNibble.toInt()) { - 15 -> null - else -> if (value > 10) { - log { "Headset above 100% battery: $value" } - 1.0f - } else { - (value / 10f) + get() { + payload.private?.asBatteryState(1)?.let { + return it.level + } + return when (val value = pubPodsBattery.lowerNibble.toInt()) { + 15 -> null + else -> if (value > 10) { + log { "Headset above 100% battery: $value" } + 1.0f + } else { + (value / 10f) + } } } } \ No newline at end of file diff --git a/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt b/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt index 122360d3..e37a18ca 100644 --- a/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt +++ b/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt @@ -35,7 +35,12 @@ data class AirPodsMax( get() = rssiAverage ?: super.rssi override val isHeadsetBeingCharged: Boolean - get() = pubFlags.isBitSet(0) + get() { + payload.private?.asBatteryState(1)?.let { + return it.isCharging + } + return pubFlags.isBitSet(0) + } override val isBeingWorn: Boolean get() = pubStatus.isBitSet(5) diff --git a/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt b/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt index e6ef5cbf..213e4573 100644 --- a/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt +++ b/app-common/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt @@ -35,7 +35,12 @@ data class AirPodsMaxUsbc( get() = rssiAverage ?: super.rssi override val isHeadsetBeingCharged: Boolean - get() = pubFlags.isBitSet(0) + get() { + payload.private?.asBatteryState(1)?.let { + return it.isCharging + } + return pubFlags.isBitSet(0) + } override val isBeingWorn: Boolean get() = pubStatus.isBitSet(5)