Improve feature support for fake AirPods Gen3 (#72)

Remove microphone detection and add ear detection.
This commit is contained in:
Matthias Urhahn
2023-01-06 16:40:03 +01:00
committed by GitHub
parent 4101fddc5b
commit fcbeda4888
2 changed files with 15 additions and 14 deletions
@@ -28,7 +28,7 @@ data class FakeAirPodsGen3 constructor(
override val confidence: Float = PodDevice.BASE_CONFIDENCE, override val confidence: Float = PodDevice.BASE_CONFIDENCE,
private val rssiAverage: Int? = null, private val rssiAverage: Int? = null,
private val cachedBatteryPercentage: Float? = null, private val cachedBatteryPercentage: Float? = null,
) : ApplePods, DualPodDevice, HasDualMicrophone, HasCase, HasChargeDetectionDual { ) : ApplePods, DualPodDevice, HasEarDetectionDual, HasChargeDetectionDual, HasCase {
override val model: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_GEN3 override val model: PodDevice.Model = PodDevice.Model.FAKE_AIRPODS_GEN3
@@ -88,22 +88,20 @@ data class FakeAirPodsGen3 constructor(
true -> rawFlags.isBitSet(0) true -> rawFlags.isBitSet(0)
} }
val isThisPodInThecase: Boolean private val isThisPodInThecase: Boolean
get() = rawStatus.isBitSet(6) get() = rawStatus.isBitSet(6)
/** override val isLeftPodInEar: Boolean
* The data flip bit is set if the left pod is primary. get() = when (areValuesFlipped xor isThisPodInThecase) {
* For the pod that is in the case, this is flipped again though. true -> rawStatus.isBitSet(3)
*/ false -> rawStatus.isBitSet(1)
override val isLeftPodMicrophone: Boolean }
get() = rawStatus.isBitSet(5) xor isThisPodInThecase
/** override val isRightPodInEar: Boolean
* The data flip bit is UNset if the right pod is primary. get() = when (areValuesFlipped xor isThisPodInThecase) {
* For the pod that is in the case, this is flipped again though. true -> rawStatus.isBitSet(1)
*/ false -> rawStatus.isBitSet(3)
override val isRightPodMicrophone: Boolean }
get() = !rawStatus.isBitSet(5) xor isThisPodInThecase
override val batteryCasePercent: Float? override val batteryCasePercent: Float?
get() = when (val value = rawCaseBattery.toInt()) { get() = when (val value = rawCaseBattery.toInt()) {
@@ -24,6 +24,9 @@ class FakeAirPodsGen3Test : BaseAirPodsTest() {
batteryLeftPodPercent shouldBe 1f batteryLeftPodPercent shouldBe 1f
batteryRightPodPercent shouldBe 1f batteryRightPodPercent shouldBe 1f
isLeftPodInEar shouldBe false
isRightPodInEar shouldBe false
isCaseCharging shouldBe false isCaseCharging shouldBe false
isLeftPodCharging shouldBe true isLeftPodCharging shouldBe true
isRightPodCharging shouldBe true isRightPodCharging shouldBe true