From a8593eecd354ab9e7006b05dfb5c1582a30aba41 Mon Sep 17 00:00:00 2001 From: darken Date: Mon, 30 Mar 2026 21:13:46 +0200 Subject: [PATCH] refactor: Reorganize pods package into ble/ and aap/ domains Move BLE-specific code (snapshots, devices, factories, protocol) under apple/ble/. Move AAP code under apple/aap/ with protocol/ subdirectory. PodModel stays in apple/ as the only shared type. --- .../capod/screenshots/ScreenshotContent.kt | 2 +- .../common/bluetooth/BluetoothManager2.kt | 2 +- .../compose/preview/MockPodDataProvider.kt | 24 +-- .../darken/capod/main/core/GeneralSettings.kt | 6 +- .../capod/main/ui/overview/OverviewScreen.kt | 4 +- .../main/ui/overview/OverviewViewModel.kt | 6 +- .../main/ui/overview/cards/DualPodsCard.kt | 18 +- .../ui/overview/cards/PodCardComponents.kt | 2 +- .../main/ui/overview/cards/SinglePodsCard.kt | 6 +- .../ui/overview/cards/UnknownPodDeviceCard.kt | 2 +- .../main/ui/widget/ComposeWidgetPreview.kt | 2 +- .../main/ui/widget/GlanceWidgetContent.kt | 2 +- .../ui/widget/WidgetConfigurationScreen.kt | 2 +- .../main/ui/widget/WidgetRenderStateMapper.kt | 6 +- .../capod/monitor/core/BlePodMonitor.kt | 6 +- .../capod/monitor/core/DeviceMonitor.kt | 2 +- .../eu/darken/capod/monitor/core/PodDevice.kt | 26 +-- .../monitor/core/PodMonitorExtensions.kt | 2 +- .../core/receiver/BluetoothEventReceiver.kt | 2 +- .../ui/MonitorNotificationViewFactory.kt | 6 +- .../capod/monitor/ui/MonitorNotifications.kt | 4 +- .../capod/pods/core/{ => apple}/PodModel.kt | 4 +- .../apple/{protocol => }/aap/AapConnection.kt | 10 +- .../aap/AapConnectionManager.kt | 9 +- .../apple/{protocol => }/aap/AapPodState.kt | 4 +- .../aap => aap/protocol}/AapCommand.kt | 2 +- .../aap => aap/protocol}/AapDeviceInfo.kt | 2 +- .../aap => aap/protocol}/AapDeviceProfile.kt | 5 +- .../aap => aap/protocol}/AapMessage.kt | 2 +- .../aap => aap/protocol}/AapSetting.kt | 2 +- .../protocol}/DefaultAapDeviceProfile.kt | 5 +- .../aap => aap/protocol}/KeyExchangeResult.kt | 2 +- .../pods/core/apple/{ => ble}/AppleFactory.kt | 19 +- .../apple/{ => ble}/AppleFactoryModule.kt | 53 ++--- .../core/{ => apple/ble}/BlePodSnapshot.kt | 3 +- .../{ => apple/ble}/DualBlePodSnapshot.kt | 2 +- .../{ => apple/ble}/PodDeviceExtensions.kt | 2 +- .../pods/core/{ => apple/ble}/PodFactory.kt | 3 +- .../{ => apple/ble}/SingleBlePodSnapshot.kt | 2 +- .../core/apple/{ => ble/devices}/ApplePods.kt | 6 +- .../{ => ble/devices}/ApplePodsFactory.kt | 8 +- .../apple/{ => ble/devices}/DualApplePods.kt | 10 +- .../apple/{ => ble/devices}/HasAppleColor.kt | 7 +- .../core/{ => apple/ble/devices}/HasCase.kt | 2 +- .../ble/devices}/HasChargeDetection.kt | 2 +- .../ble/devices}/HasChargeDetectionDual.kt | 2 +- .../ble/devices}/HasDualMicrophone.kt | 2 +- .../ble/devices}/HasEarDetection.kt | 2 +- .../ble/devices}/HasEarDetectionDual.kt | 2 +- .../{ => apple/ble/devices}/HasPodStyle.kt | 2 +- .../ble/devices}/HasStateDetection.kt | 2 +- .../{ => ble/devices}/SingleApplePods.kt | 4 +- .../{ => ble/devices}/airpods/AirPodsGen1.kt | 20 +- .../{ => ble/devices}/airpods/AirPodsGen2.kt | 20 +- .../{ => ble/devices}/airpods/AirPodsGen3.kt | 20 +- .../{ => ble/devices}/airpods/AirPodsGen4.kt | 20 +- .../devices}/airpods/AirPodsGen4Anc.kt | 20 +- .../{ => ble/devices}/airpods/AirPodsMax.kt | 26 +-- .../devices}/airpods/AirPodsMaxUsbc.kt | 26 +-- .../{ => ble/devices}/airpods/AirPodsPro.kt | 22 +- .../{ => ble/devices}/airpods/AirPodsPro2.kt | 22 +- .../devices}/airpods/AirPodsPro2Usbc.kt | 22 +- .../{ => ble/devices}/airpods/AirPodsPro3.kt | 22 +- .../airpods/HasStateDetectionAirPods.kt | 6 +- .../{ => ble/devices}/beats/BeatsFitPro.kt | 20 +- .../{ => ble/devices}/beats/BeatsFlex.kt | 20 +- .../{ => ble/devices}/beats/BeatsSolo3.kt | 20 +- .../{ => ble/devices}/beats/BeatsStudio3.kt | 20 +- .../apple/{ => ble/devices}/beats/BeatsX.kt | 20 +- .../{ => ble/devices}/beats/PowerBeats3.kt | 20 +- .../{ => ble/devices}/beats/PowerBeats4.kt | 22 +- .../{ => ble/devices}/beats/PowerBeatsPro.kt | 20 +- .../{ => ble/devices}/beats/PowerBeatsPro2.kt | 20 +- .../{ => ble/devices}/misc/FakeAirPodsGen1.kt | 24 +-- .../{ => ble/devices}/misc/FakeAirPodsGen2.kt | 24 +-- .../{ => ble/devices}/misc/FakeAirPodsGen3.kt | 24 +-- .../{ => ble/devices}/misc/FakeAirPodsPro.kt | 24 +-- .../{ => ble/devices}/misc/FakeAirPodsPro2.kt | 28 +-- .../devices}/misc/UnknownAppleSnapshotBle.kt | 16 +- .../apple/{ => ble}/history/KnownDevice.kt | 8 +- .../apple/{ => ble}/history/PodHistoryRepo.kt | 16 +- .../{ => ble}/protocol/ContinuityProtocol.kt | 2 +- .../ble/protocol/IdentityResolvingKey.kt | 3 + .../ble/protocol/ProximityEncryptionKey.kt | 3 + .../ble => ble/protocol}/ProximityMessage.kt | 2 +- .../ble => ble/protocol}/ProximityPairing.kt | 3 +- .../ble => ble/protocol}/ProximityPayload.kt | 2 +- .../apple/{ => ble}/protocol/RPAChecker.kt | 2 +- .../apple/protocol/IdentityResolvingKey.kt | 3 - .../protocol/ble/ProximityEncryptionKey.kt | 3 - .../pods/core/unknown/UnknownDeviceFactory.kt | 2 +- .../pods/core/unknown/UnknownSnapshotBle.kt | 4 +- .../capod/profiles/core/AppleDeviceProfile.kt | 6 +- .../capod/profiles/core/DeviceProfile.kt | 2 +- .../capod/profiles/ui/DeviceManagerScreen.kt | 2 +- .../creation/DeviceProfileCreationScreen.kt | 2 +- .../DeviceProfileCreationViewModel.kt | 6 +- .../capod/reaction/core/aap/AapAutoConnect.kt | 4 +- .../reaction/core/aap/AapKeyPersister.kt | 2 +- .../reaction/core/autoconnect/AutoConnect.kt | 2 +- .../reaction/core/popup/PopUpReaction.kt | 2 +- .../capod/reaction/ui/popup/PopUpContent.kt | 10 +- .../ui/TroubleShooterViewModel.kt | 2 +- .../datastore/DataStoreMigrationCompatTest.kt | 2 +- .../DataStoreValueSerializationTest.kt | 2 +- .../main/ui/overview/OverviewViewModelTest.kt | 2 +- .../capod/monitor/core/PodDeviceTest.kt | 21 +- .../capod/monitor/core/RPACheckerTest.kt | 2 +- .../core/{ => apple}/ModelFeaturesTest.kt | 4 +- .../aap/AapConnectionManagerTest.kt | 6 +- .../{protocol => }/aap/AapPodStateTest.kt | 55 ++++- .../devices}/DefaultAapDeviceProfileTest.kt | 194 +++++++++--------- .../airpods}/AirPodsPro3AapSessionTest.kt | 75 +++---- .../aap => aap/protocol}/AapFramerTest.kt | 2 +- .../aap => aap/protocol}/AapMessageTest.kt | 2 +- .../protocol}/BaseAapSessionTest.kt | 6 +- .../apple/{ => ble}/AirPodsFactoryTest.kt | 12 +- .../{ => ble/devices}/BaseBlePodsTest.kt | 8 +- .../devices}/BasicSingleApplePodsTest.kt | 2 +- .../{ => ble/devices}/DualApplePodsTest.kt | 4 +- .../{ => ble/devices}/SingleApplePodsTest.kt | 2 +- .../devices}/airpods/AirPodsGen1Test.kt | 10 +- .../devices}/airpods/AirPodsGen2Test.kt | 10 +- .../devices}/airpods/AirPodsGen3Test.kt | 10 +- .../devices}/airpods/AirPodsGen4AncTest.kt | 10 +- .../devices}/airpods/AirPodsGen4Test.kt | 10 +- .../devices}/airpods/AirPodsMaxTest.kt | 8 +- .../devices}/airpods/AirPodsMaxUsbcTest.kt | 6 +- .../devices}/airpods/AirPodsPro2Test.kt | 8 +- .../devices}/airpods/AirPodsPro2UsbcTest.kt | 8 +- .../devices}/airpods/AirPodsPro3Test.kt | 8 +- .../devices}/airpods/AirPodsProTest.kt | 8 +- .../devices}/beats/BeatsFitProTest.kt | 8 +- .../{ => ble/devices}/beats/BeatsFlexText.kt | 6 +- .../{ => ble/devices}/beats/BeatsSolo3Test.kt | 6 +- .../devices}/beats/BeatsStudio3Test.kt | 6 +- .../{ => ble/devices}/beats/BeatsXTest.kt | 6 +- .../devices}/beats/PowerBeats3Test.kt | 6 +- .../devices}/beats/PowerBeats4Test.kt | 8 +- .../devices}/beats/PowerBeatsPro2Test.kt | 8 +- .../devices}/beats/PowerBeatsProTest.kt | 8 +- .../devices}/misc/FakeAirPodsGen1Test.kt | 6 +- .../devices}/misc/FakeAirPodsGen2Test.kt | 6 +- .../devices}/misc/FakeAirPodsGen3Test.kt | 6 +- .../devices}/misc/FakeAirPodsPro2Test.kt | 6 +- .../devices}/misc/FakeAirPodsProTest.kt | 6 +- .../reaction/core/aap/AapAutoConnectTest.kt | 11 +- .../core/autoconnect/AutoConnectLogicTest.kt | 2 +- .../core/popup/PopUpReactionLogicTest.kt | 2 +- 149 files changed, 808 insertions(+), 771 deletions(-) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple}/PodModel.kt (99%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol => }/aap/AapConnection.kt (95%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol => }/aap/AapConnectionManager.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol => }/aap/AapPodState.kt (94%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapCommand.kt (95%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapDeviceInfo.kt (83%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapDeviceProfile.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapMessage.kt (97%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapSetting.kt (98%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/DefaultAapDeviceProfile.kt (98%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/KeyExchangeResult.kt (94%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/AppleFactory.kt (87%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/AppleFactoryModule.kt (58%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble}/BlePodSnapshot.kt (95%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble}/DualBlePodSnapshot.kt (91%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble}/PodDeviceExtensions.kt (98%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble}/PodFactory.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble}/SingleBlePodSnapshot.kt (67%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/ApplePods.kt (90%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/ApplePodsFactory.kt (83%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/DualApplePods.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/HasAppleColor.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasCase.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasChargeDetection.kt (58%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasChargeDetectionDual.kt (85%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasDualMicrophone.kt (67%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasEarDetection.kt (53%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasEarDetectionDual.kt (84%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasPodStyle.kt (85%) rename app/src/main/java/eu/darken/capod/pods/core/{ => apple/ble/devices}/HasStateDetection.kt (75%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/SingleApplePods.kt (86%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen1.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen2.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen3.kt (83%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen4.kt (83%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen4Anc.kt (83%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsMax.kt (75%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsMaxUsbc.kt (75%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro2.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro2Usbc.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro3.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/HasStateDetectionAirPods.kt (85%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsFitPro.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsFlex.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsSolo3.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsStudio3.kt (76%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsX.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeats3.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeats4.kt (75%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeatsPro.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeatsPro2.kt (82%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen1.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen2.kt (77%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen3.kt (79%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsPro.kt (80%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsPro2.kt (78%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/UnknownAppleSnapshotBle.kt (81%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/history/KnownDevice.kt (89%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/history/PodHistoryRepo.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/protocol/ContinuityProtocol.kt (97%) create mode 100644 app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/IdentityResolvingKey.kt create mode 100644 app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityEncryptionKey.kt rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/ble => ble/protocol}/ProximityMessage.kt (97%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/ble => ble/protocol}/ProximityPairing.kt (93%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{protocol/ble => ble/protocol}/ProximityPayload.kt (79%) rename app/src/main/java/eu/darken/capod/pods/core/apple/{ => ble}/protocol/RPAChecker.kt (97%) delete mode 100644 app/src/main/java/eu/darken/capod/pods/core/apple/protocol/IdentityResolvingKey.kt delete mode 100644 app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityEncryptionKey.kt rename app/src/test/java/eu/darken/capod/pods/core/{ => apple}/ModelFeaturesTest.kt (98%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol => }/aap/AapConnectionManagerTest.kt (94%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol => }/aap/AapPodStateTest.kt (76%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/devices}/DefaultAapDeviceProfileTest.kt (63%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/devices/airpods}/AirPodsPro3AapSessionTest.kt (62%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapFramerTest.kt (98%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/AapMessageTest.kt (97%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{protocol/aap => aap/protocol}/BaseAapSessionTest.kt (95%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble}/AirPodsFactoryTest.kt (69%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/BaseBlePodsTest.kt (89%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/BasicSingleApplePodsTest.kt (95%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/DualApplePodsTest.kt (98%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/SingleApplePodsTest.kt (93%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen1Test.kt (82%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen2Test.kt (82%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen3Test.kt (87%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen4AncTest.kt (82%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsGen4Test.kt (82%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsMaxTest.kt (93%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsMaxUsbcTest.kt (85%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro2Test.kt (91%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro2UsbcTest.kt (90%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsPro3Test.kt (93%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/airpods/AirPodsProTest.kt (97%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsFitProTest.kt (91%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsFlexText.kt (87%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsSolo3Test.kt (84%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsStudio3Test.kt (84%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/BeatsXTest.kt (84%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeats3Test.kt (84%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeats4Test.kt (90%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeatsPro2Test.kt (89%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/beats/PowerBeatsProTest.kt (91%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen1Test.kt (87%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen2Test.kt (87%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsGen3Test.kt (87%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsPro2Test.kt (91%) rename app/src/test/java/eu/darken/capod/pods/core/apple/{ => ble/devices}/misc/FakeAirPodsProTest.kt (87%) diff --git a/app/src/debug/java/eu/darken/capod/screenshots/ScreenshotContent.kt b/app/src/debug/java/eu/darken/capod/screenshots/ScreenshotContent.kt index 42636f2d..8c7192be 100644 --- a/app/src/debug/java/eu/darken/capod/screenshots/ScreenshotContent.kt +++ b/app/src/debug/java/eu/darken/capod/screenshots/ScreenshotContent.kt @@ -27,7 +27,7 @@ import eu.darken.capod.main.ui.widget.WidgetConfigurationScreen import eu.darken.capod.main.ui.widget.WidgetConfigurationViewModel import eu.darken.capod.main.ui.widget.WidgetRenderState import eu.darken.capod.main.ui.widget.WidgetTheme -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.ui.DeviceManagerScreen import eu.darken.capod.profiles.ui.DeviceManagerViewModel import eu.darken.capod.profiles.ui.creation.DeviceProfileCreationScreen diff --git a/app/src/main/java/eu/darken/capod/common/bluetooth/BluetoothManager2.kt b/app/src/main/java/eu/darken/capod/common/bluetooth/BluetoothManager2.kt index 06b11d28..3466086d 100644 --- a/app/src/main/java/eu/darken/capod/common/bluetooth/BluetoothManager2.kt +++ b/app/src/main/java/eu/darken/capod/common/bluetooth/BluetoothManager2.kt @@ -22,7 +22,7 @@ import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.flow.setupCommonEventHandlers -import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol +import eu.darken.capod.pods.core.apple.ble.protocol.ContinuityProtocol import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.delay diff --git a/app/src/main/java/eu/darken/capod/common/compose/preview/MockPodDataProvider.kt b/app/src/main/java/eu/darken/capod/common/compose/preview/MockPodDataProvider.kt index 311c89d2..6dc50703 100644 --- a/app/src/main/java/eu/darken/capod/common/compose/preview/MockPodDataProvider.kt +++ b/app/src/main/java/eu/darken/capod/common/compose/preview/MockPodDataProvider.kt @@ -5,18 +5,18 @@ import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.upgrade.UpgradeRepo import eu.darken.capod.monitor.core.PodDevice -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.DualBlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetection -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasDualMicrophone -import eu.darken.capod.pods.core.HasEarDetection -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.SingleBlePodSnapshot -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.DualBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasDualMicrophone +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.SingleBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import eu.darken.capod.pods.core.unknown.UnknownSnapshotBle import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfile diff --git a/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt b/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt index db8ea766..6325930b 100644 --- a/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt +++ b/app/src/main/java/eu/darken/capod/main/core/GeneralSettings.kt @@ -16,9 +16,9 @@ import eu.darken.capod.common.serialization.SerializationCapod import eu.darken.capod.common.theming.ThemeColor import eu.darken.capod.common.theming.ThemeMode import eu.darken.capod.common.theming.ThemeStyle -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.IdentityResolvingKey -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityEncryptionKey +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.protocol.IdentityResolvingKey +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityEncryptionKey import kotlinx.serialization.builtins.nullable import kotlinx.serialization.json.Json import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewScreen.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewScreen.kt index 5daecb26..30fc251d 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewScreen.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewScreen.kt @@ -54,8 +54,8 @@ import eu.darken.capod.main.ui.overview.cards.SinglePodsCard import eu.darken.capod.main.ui.overview.cards.UnknownPodDeviceCard import eu.darken.capod.main.ui.overview.cards.UnmatchedDevicesCard import eu.darken.capod.monitor.core.PodDevice -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import java.time.Instant @Composable diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt index ac6a79fc..dfcc07e9 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt @@ -20,9 +20,9 @@ import eu.darken.capod.main.core.PermissionTool import eu.darken.capod.monitor.core.DeviceMonitor import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.worker.MonitorControl -import eu.darken.capod.pods.core.apple.protocol.aap.AapCommand -import eu.darken.capod.pods.core.apple.protocol.aap.AapConnectionManager -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting +import eu.darken.capod.pods.core.apple.aap.protocol.AapCommand +import eu.darken.capod.pods.core.apple.aap.AapConnectionManager +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo import kotlinx.coroutines.delay diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt index 45924bc7..65b576d1 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt @@ -48,15 +48,15 @@ import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.firstSeenFormatted import eu.darken.capod.monitor.core.getSignalQuality import eu.darken.capod.monitor.core.lastSeenFormatted -import eu.darken.capod.pods.core.HasPodStyle -import eu.darken.capod.pods.core.HasStateDetection -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting -import eu.darken.capod.pods.core.formatBatteryPercent -import eu.darken.capod.pods.core.toBatteryFloat -import eu.darken.capod.pods.core.toBatteryOrNull +import eu.darken.capod.pods.core.apple.ble.devices.HasPodStyle +import eu.darken.capod.pods.core.apple.ble.devices.HasStateDetection +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting +import eu.darken.capod.pods.core.apple.ble.formatBatteryPercent +import eu.darken.capod.pods.core.apple.ble.toBatteryFloat +import eu.darken.capod.pods.core.apple.ble.toBatteryOrNull import java.time.Duration import java.time.Instant diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/PodCardComponents.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/PodCardComponents.kt index 49a10620..56f25a96 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/PodCardComponents.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/PodCardComponents.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import eu.darken.capod.R -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting private val CapsuleShape = RoundedCornerShape(6.dp) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt index 5ee76c0c..1f9a6a73 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt @@ -48,9 +48,9 @@ import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.firstSeenFormatted import eu.darken.capod.monitor.core.getSignalQuality import eu.darken.capod.monitor.core.lastSeenFormatted -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting -import eu.darken.capod.pods.core.formatBatteryPercent +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting +import eu.darken.capod.pods.core.apple.ble.formatBatteryPercent import java.time.Duration import java.time.Instant diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/UnknownPodDeviceCard.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/UnknownPodDeviceCard.kt index 9d30a2cf..67e90146 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/UnknownPodDeviceCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/UnknownPodDeviceCard.kt @@ -27,7 +27,7 @@ import eu.darken.capod.common.compose.preview.MockPodDataProvider import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.getSignalQuality import eu.darken.capod.monitor.core.lastSeenFormatted -import eu.darken.capod.pods.core.apple.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods import java.time.Instant @Composable diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/ComposeWidgetPreview.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/ComposeWidgetPreview.kt index 46fa5c80..b043893c 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/ComposeWidgetPreview.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/ComposeWidgetPreview.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.unit.sp import eu.darken.capod.R import eu.darken.capod.common.compose.Preview2 import eu.darken.capod.common.compose.PreviewWrapper -import eu.darken.capod.pods.core.toBatteryOrNull +import eu.darken.capod.pods.core.apple.ble.toBatteryOrNull import kotlin.math.roundToInt @Composable diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/GlanceWidgetContent.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/GlanceWidgetContent.kt index 9952ef96..b000c510 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/GlanceWidgetContent.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/GlanceWidgetContent.kt @@ -26,7 +26,7 @@ import androidx.glance.text.TextAlign import androidx.glance.text.TextStyle import eu.darken.capod.R import eu.darken.capod.main.ui.MainActivity -import eu.darken.capod.pods.core.toBatteryOrNull +import eu.darken.capod.pods.core.apple.ble.toBatteryOrNull import kotlin.math.roundToInt @Composable diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationScreen.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationScreen.kt index 6258c32e..6c0ddc22 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationScreen.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetConfigurationScreen.kt @@ -77,7 +77,7 @@ import eu.darken.capod.R import eu.darken.capod.common.compose.Preview2 import eu.darken.capod.common.compose.PreviewWrapper import eu.darken.capod.common.compose.preview.MockPodDataProvider -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.DeviceProfile @OptIn(ExperimentalLayoutApi::class) diff --git a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetRenderStateMapper.kt b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetRenderStateMapper.kt index 26627f99..f8058473 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetRenderStateMapper.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/widget/WidgetRenderStateMapper.kt @@ -5,9 +5,9 @@ import androidx.annotation.ColorInt import androidx.appcompat.view.ContextThemeWrapper import eu.darken.capod.R import eu.darken.capod.monitor.core.PodDevice -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.getBatteryDrawable -import eu.darken.capod.pods.core.toBatteryFloat +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.getBatteryDrawable +import eu.darken.capod.pods.core.apple.ble.toBatteryFloat object WidgetRenderStateMapper { diff --git a/app/src/main/java/eu/darken/capod/monitor/core/BlePodMonitor.kt b/app/src/main/java/eu/darken/capod/monitor/core/BlePodMonitor.kt index bf6be1b7..6eee861f 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/BlePodMonitor.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/BlePodMonitor.kt @@ -16,9 +16,9 @@ import eu.darken.capod.common.flow.replayingShare import eu.darken.capod.common.flow.throttleLatest import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.main.core.PermissionTool -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodFactory -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.PodFactory +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing import eu.darken.capod.profiles.core.DeviceProfilesRepo import eu.darken.capod.profiles.core.currentProfiles import kotlinx.coroutines.CoroutineScope diff --git a/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt b/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt index c4bd7a71..800bf90c 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt @@ -2,7 +2,7 @@ package eu.darken.capod.monitor.core import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.apple.protocol.aap.AapConnectionManager +import eu.darken.capod.pods.core.apple.aap.AapConnectionManager import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.firstOrNull diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt b/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt index a03ea2a0..2bd1f2fd 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt @@ -2,19 +2,19 @@ package eu.darken.capod.monitor.core import android.content.Context import eu.darken.capod.common.bluetooth.BluetoothAddress -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.DualBlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetection -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasDualMicrophone -import eu.darken.capod.pods.core.HasEarDetection -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.SingleBlePodSnapshot -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.DualBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasDualMicrophone +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.SingleBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import java.time.Instant /** diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitorExtensions.kt b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitorExtensions.kt index 545982aa..4ffefc4f 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitorExtensions.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitorExtensions.kt @@ -1,6 +1,6 @@ package eu.darken.capod.monitor.core -import eu.darken.capod.pods.core.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map diff --git a/app/src/main/java/eu/darken/capod/monitor/core/receiver/BluetoothEventReceiver.kt b/app/src/main/java/eu/darken/capod/monitor/core/receiver/BluetoothEventReceiver.kt index d1580c0c..69c7046a 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/receiver/BluetoothEventReceiver.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/receiver/BluetoothEventReceiver.kt @@ -12,7 +12,7 @@ import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.monitor.core.worker.MonitorControl -import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol +import eu.darken.capod.pods.core.apple.ble.protocol.ContinuityProtocol import javax.inject.Inject @AndroidEntryPoint diff --git a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotificationViewFactory.kt b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotificationViewFactory.kt index 2d945cd8..61fd2c98 100644 --- a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotificationViewFactory.kt +++ b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotificationViewFactory.kt @@ -6,9 +6,9 @@ import android.widget.RemoteViews import dagger.hilt.android.qualifiers.ApplicationContext import eu.darken.capod.R import eu.darken.capod.monitor.core.PodDevice -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.formatBatteryPercent -import eu.darken.capod.pods.core.getBatteryDrawable +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.formatBatteryPercent +import eu.darken.capod.pods.core.apple.ble.getBatteryDrawable import javax.inject.Inject import kotlin.math.roundToInt diff --git a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt index 9ab78e7e..9a2a5198 100644 --- a/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt +++ b/app/src/main/java/eu/darken/capod/monitor/ui/MonitorNotifications.kt @@ -16,8 +16,8 @@ import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.notifications.PendingIntentCompat import eu.darken.capod.main.ui.MainActivity import eu.darken.capod.monitor.core.PodDevice -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.formatBatteryPercent +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.formatBatteryPercent import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/PodModel.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/PodModel.kt similarity index 99% rename from app/src/main/java/eu/darken/capod/pods/core/PodModel.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/PodModel.kt index 9b90fdc8..93653ed5 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/PodModel.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/PodModel.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple import androidx.annotation.DrawableRes import eu.darken.capod.R @@ -377,4 +377,4 @@ enum class PodModel( // Protocol val needsInitExt: Boolean = false, ) -} +} \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnection.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnection.kt similarity index 95% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnection.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnection.kt index 237f3e85..b0f93149 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnection.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnection.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap import android.annotation.SuppressLint import android.bluetooth.BluetoothDevice @@ -6,9 +6,13 @@ import android.bluetooth.BluetoothSocket import eu.darken.capod.common.bluetooth.l2cap.L2capSocketFactory import eu.darken.capod.common.debug.logging.Logging.Priority.ERROR import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE -import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag +import eu.darken.capod.pods.core.apple.aap.protocol.AapCommand +import eu.darken.capod.pods.core.apple.aap.protocol.AapDeviceProfile +import eu.darken.capod.pods.core.apple.aap.protocol.AapFramer +import eu.darken.capod.pods.core.apple.aap.protocol.AapMessage +import eu.darken.capod.pods.core.apple.aap.protocol.KeyExchangeResult import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -147,7 +151,7 @@ internal class AapConnection( // L2CAP SEQPACKET: each read() returns exactly one complete message val raw = buf.copyOfRange(0, len) - val message = AapMessage.parse(raw) + val message = AapMessage.Companion.parse(raw) if (message != null) { processMessage(message) if (!handshakeResponseReceived && message.commandType != 0x0009) { diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManager.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManager.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManager.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManager.kt index b8878eb1..00ad1f56 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManager.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManager.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap import android.bluetooth.BluetoothDevice import eu.darken.capod.common.bluetooth.BluetoothAddress @@ -6,7 +6,10 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.bluetooth.l2cap.L2capSocketFactory import eu.darken.capod.common.coroutine.AppScope -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.protocol.AapCommand +import eu.darken.capod.pods.core.apple.aap.protocol.AapDeviceProfile +import eu.darken.capod.pods.core.apple.aap.protocol.KeyExchangeResult import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.cancel @@ -68,7 +71,7 @@ class AapConnectionManager @Inject constructor( // Clear stale intentional-disconnect flag from previous connection lifecycle intentionalDisconnects.remove(address) - val profile = AapDeviceProfile.forModel(model) + val profile = AapDeviceProfile.Companion.forModel(model) val connection = AapConnection(device, profile, socketFactory) connections[address] = connection diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodState.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapPodState.kt similarity index 94% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodState.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapPodState.kt index eceaeeda..90776921 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodState.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/AapPodState.kt @@ -1,5 +1,7 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap +import eu.darken.capod.pods.core.apple.aap.protocol.AapDeviceInfo +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import kotlin.reflect.KClass /** diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapCommand.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapCommand.kt similarity index 95% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapCommand.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapCommand.kt index d22a0504..ff53ea01 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapCommand.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapCommand.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol /** * Outbound commands to change device settings. Pure domain — no wire protocol bytes. diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceInfo.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceInfo.kt similarity index 83% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceInfo.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceInfo.kt index 28cc21b6..f9442e73 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceInfo.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceInfo.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol /** * Device identity parsed from the AAP handshake response (message type 0x1D). diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceProfile.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceProfile.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceProfile.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceProfile.kt index a4f4a6c9..e941f20c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapDeviceProfile.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapDeviceProfile.kt @@ -1,6 +1,7 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.AapPodState import kotlin.reflect.KClass /** diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessage.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessage.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessage.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessage.kt index c8043978..621b1c38 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessage.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessage.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol /** * A parsed AAP protocol message. diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapSetting.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapSetting.kt similarity index 98% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapSetting.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapSetting.kt index c5e6f0a7..c4878fac 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/AapSetting.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/AapSetting.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol /** * Device-reported settings. Pure domain — no wire protocol bytes. diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfile.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/DefaultAapDeviceProfile.kt similarity index 98% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfile.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/DefaultAapDeviceProfile.kt index 9e2b09b2..668de891 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfile.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/DefaultAapDeviceProfile.kt @@ -1,6 +1,7 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.AapPodState import kotlin.reflect.KClass /** diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/KeyExchangeResult.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/KeyExchangeResult.kt similarity index 94% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/KeyExchangeResult.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/KeyExchangeResult.kt index 7cfc5f6a..cd5bc10d 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/aap/KeyExchangeResult.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/aap/protocol/KeyExchangeResult.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol /** * Result of parsing an AAP private key response (command 0x31). 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/ble/AppleFactory.kt similarity index 87% rename from app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactory.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/AppleFactory.kt index 96ae4169..076ff9b4 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/ble/AppleFactory.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE @@ -6,14 +6,15 @@ import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.asLog import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.misc.UnknownAppleSnapshotBle -import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload -import eu.darken.capod.pods.core.apple.protocol.RPAChecker +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.misc.UnknownAppleSnapshotBle +import eu.darken.capod.pods.core.apple.ble.protocol.ContinuityProtocol +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.protocol.RPAChecker import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo import eu.darken.capod.profiles.core.currentProfiles diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactoryModule.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/AppleFactoryModule.kt similarity index 58% rename from app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactoryModule.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/AppleFactoryModule.kt index 57c59cb9..ebda0ef9 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/AppleFactoryModule.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/AppleFactoryModule.kt @@ -1,35 +1,36 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import dagger.multibindings.IntoSet -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen1 -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen2 -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen3 -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen4 -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen4Anc -import eu.darken.capod.pods.core.apple.airpods.AirPodsMax -import eu.darken.capod.pods.core.apple.airpods.AirPodsMaxUsbc -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro2 -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro2Usbc -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro3 -import eu.darken.capod.pods.core.apple.beats.BeatsFitPro -import eu.darken.capod.pods.core.apple.beats.BeatsFlex -import eu.darken.capod.pods.core.apple.beats.BeatsSolo3 -import eu.darken.capod.pods.core.apple.beats.BeatsStudio3 -import eu.darken.capod.pods.core.apple.beats.BeatsX -import eu.darken.capod.pods.core.apple.beats.PowerBeats3 -import eu.darken.capod.pods.core.apple.beats.PowerBeats4 -import eu.darken.capod.pods.core.apple.beats.PowerBeatsPro -import eu.darken.capod.pods.core.apple.beats.PowerBeatsPro2 -import eu.darken.capod.pods.core.apple.misc.FakeAirPodsGen1 -import eu.darken.capod.pods.core.apple.misc.FakeAirPodsGen2 -import eu.darken.capod.pods.core.apple.misc.FakeAirPodsGen3 -import eu.darken.capod.pods.core.apple.misc.FakeAirPodsPro -import eu.darken.capod.pods.core.apple.misc.FakeAirPodsPro2 +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen1 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen2 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen3 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen4 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen4Anc +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsMax +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsMaxUsbc +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsPro +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsPro2 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsPro2Usbc +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsPro3 +import eu.darken.capod.pods.core.apple.ble.devices.beats.BeatsFitPro +import eu.darken.capod.pods.core.apple.ble.devices.beats.BeatsFlex +import eu.darken.capod.pods.core.apple.ble.devices.beats.BeatsSolo3 +import eu.darken.capod.pods.core.apple.ble.devices.beats.BeatsStudio3 +import eu.darken.capod.pods.core.apple.ble.devices.beats.BeatsX +import eu.darken.capod.pods.core.apple.ble.devices.beats.PowerBeats3 +import eu.darken.capod.pods.core.apple.ble.devices.beats.PowerBeats4 +import eu.darken.capod.pods.core.apple.ble.devices.beats.PowerBeatsPro +import eu.darken.capod.pods.core.apple.ble.devices.beats.PowerBeatsPro2 +import eu.darken.capod.pods.core.apple.ble.devices.misc.FakeAirPodsGen1 +import eu.darken.capod.pods.core.apple.ble.devices.misc.FakeAirPodsGen2 +import eu.darken.capod.pods.core.apple.ble.devices.misc.FakeAirPodsGen3 +import eu.darken.capod.pods.core.apple.ble.devices.misc.FakeAirPodsPro +import eu.darken.capod.pods.core.apple.ble.devices.misc.FakeAirPodsPro2 @InstallIn(SingletonComponent::class) @Module diff --git a/app/src/main/java/eu/darken/capod/pods/core/BlePodSnapshot.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/BlePodSnapshot.kt similarity index 95% rename from app/src/main/java/eu/darken/capod/pods/core/BlePodSnapshot.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/BlePodSnapshot.kt index bc343d57..6058dd71 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/BlePodSnapshot.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/BlePodSnapshot.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble import android.content.Context import androidx.annotation.DrawableRes @@ -6,6 +6,7 @@ import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.bluetooth.BluetoothAddress import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE import eu.darken.capod.common.debug.logging.log +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.DeviceProfile import java.time.Duration import java.time.Instant diff --git a/app/src/main/java/eu/darken/capod/pods/core/DualBlePodSnapshot.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/DualBlePodSnapshot.kt similarity index 91% rename from app/src/main/java/eu/darken/capod/pods/core/DualBlePodSnapshot.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/DualBlePodSnapshot.kt index 0d2efd08..7e373297 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/DualBlePodSnapshot.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/DualBlePodSnapshot.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble import androidx.annotation.DrawableRes import eu.darken.capod.R diff --git a/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodDeviceExtensions.kt similarity index 98% rename from app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodDeviceExtensions.kt index c6e1c005..e8d5973d 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodDeviceExtensions.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble import android.content.Context import android.icu.text.RelativeDateTimeFormatter diff --git a/app/src/main/java/eu/darken/capod/pods/core/PodFactory.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodFactory.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/PodFactory.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodFactory.kt index 2a6315a7..d73c8407 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/PodFactory.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/PodFactory.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble import dagger.Reusable import eu.darken.capod.common.bluetooth.BleScanResult @@ -6,7 +6,6 @@ import eu.darken.capod.common.debug.logging.Logging.Priority.INFO import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.apple.AppleFactory import eu.darken.capod.pods.core.unknown.UnknownDeviceFactory import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/SingleBlePodSnapshot.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/SingleBlePodSnapshot.kt similarity index 67% rename from app/src/main/java/eu/darken/capod/pods/core/SingleBlePodSnapshot.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/SingleBlePodSnapshot.kt index fbd7ce58..245d3514 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/SingleBlePodSnapshot.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/SingleBlePodSnapshot.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble interface SingleBlePodSnapshot : BlePodSnapshot { diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/ApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePods.kt similarity index 90% rename from app/src/main/java/eu/darken/capod/pods/core/apple/ApplePods.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePods.kt index b30d7086..bdd2c4ed 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/ApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePods.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import eu.darken.capod.common.lowerNibble import eu.darken.capod.common.upperNibble -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import eu.darken.capod.profiles.core.AppleDeviceProfile interface ApplePods : BlePodSnapshot { diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePodsFactory.kt similarity index 83% rename from app/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePodsFactory.kt index 997ea072..98840a78 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/ApplePodsFactory.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import eu.darken.capod.common.bluetooth.BleScanResult -import eu.darken.capod.pods.core.apple.history.KnownDevice -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.history.KnownDevice +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload interface ApplePodsFactory { fun isResponsible(message: ProximityMessage): Boolean diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePods.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePods.kt index 4d08a686..671af13f 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/DualApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePods.kt @@ -1,15 +1,11 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.isBitSet import eu.darken.capod.common.lowerNibble import eu.darken.capod.common.upperNibble -import eu.darken.capod.pods.core.DualBlePodSnapshot -import eu.darken.capod.pods.core.DualBlePodSnapshot.Pod -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasDualMicrophone -import eu.darken.capod.pods.core.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.ble.DualBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.DualBlePodSnapshot.Pod interface DualApplePods : ApplePods, HasChargeDetectionDual, DualBlePodSnapshot, HasEarDetectionDual, HasCase, HasDualMicrophone, HasAppleColor { diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/HasAppleColor.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasAppleColor.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/HasAppleColor.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasAppleColor.kt index 54017cde..d620c72b 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/HasAppleColor.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasAppleColor.kt @@ -1,8 +1,7 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices +import android.R import android.content.Context -import eu.darken.capod.pods.core.HasPodStyle -import eu.darken.capod.R interface HasAppleColor : ApplePods, HasPodStyle { @@ -29,7 +28,7 @@ interface HasAppleColor : ApplePods, HasPodStyle { override fun getLabel(context: Context): String = this.name - override fun getColor(context: Context): Int = android.R.color.white + override fun getColor(context: Context): Int = R.color.white override val identifier: String get() = name diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasCase.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasCase.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/HasCase.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasCase.kt index 88a63f54..a196d909 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasCase.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasCase.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices import androidx.annotation.DrawableRes import eu.darken.capod.R diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasChargeDetection.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetection.kt similarity index 58% rename from app/src/main/java/eu/darken/capod/pods/core/HasChargeDetection.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetection.kt index 83d66f03..75601404 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasChargeDetection.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetection.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices interface HasChargeDetection { diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasChargeDetectionDual.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetectionDual.kt similarity index 85% rename from app/src/main/java/eu/darken/capod/pods/core/HasChargeDetectionDual.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetectionDual.kt index 34000a86..783e4704 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasChargeDetectionDual.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasChargeDetectionDual.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices interface HasChargeDetectionDual : HasChargeDetection { diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasDualMicrophone.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasDualMicrophone.kt similarity index 67% rename from app/src/main/java/eu/darken/capod/pods/core/HasDualMicrophone.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasDualMicrophone.kt index e20215e8..1b80aa21 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasDualMicrophone.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasDualMicrophone.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices interface HasDualMicrophone { diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasEarDetection.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetection.kt similarity index 53% rename from app/src/main/java/eu/darken/capod/pods/core/HasEarDetection.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetection.kt index ee88849c..6a72cb5d 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasEarDetection.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetection.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices interface HasEarDetection { diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasEarDetectionDual.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetectionDual.kt similarity index 84% rename from app/src/main/java/eu/darken/capod/pods/core/HasEarDetectionDual.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetectionDual.kt index 98946d24..6a7269c9 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasEarDetectionDual.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasEarDetectionDual.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices interface HasEarDetectionDual : HasEarDetection { diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasPodStyle.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasPodStyle.kt similarity index 85% rename from app/src/main/java/eu/darken/capod/pods/core/HasPodStyle.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasPodStyle.kt index 2d848be1..0d727889 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasPodStyle.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasPodStyle.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices import android.content.Context import androidx.annotation.ColorRes diff --git a/app/src/main/java/eu/darken/capod/pods/core/HasStateDetection.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasStateDetection.kt similarity index 75% rename from app/src/main/java/eu/darken/capod/pods/core/HasStateDetection.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasStateDetection.kt index 3aa6cd2c..5d56468c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/HasStateDetection.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/HasStateDetection.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple.ble.devices import android.content.Context diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePods.kt similarity index 86% rename from app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePods.kt index 32f9e1d2..1ae0fc3a 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/SingleApplePods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePods.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.lowerNibble -import eu.darken.capod.pods.core.SingleBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.SingleBlePodSnapshot /** * Devices that only present a single charge level, e.g. most Beats devices diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1.kt index 21270446..52c214a4 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2.kt index 02209024..82746db7 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3.kt similarity index 83% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3.kt index 56a6d4a2..7ef94c16 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4.kt similarity index 83% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4.kt index 148cfc16..ea5c72d3 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Anc.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Anc.kt similarity index 83% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Anc.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Anc.kt index 02a89823..e71f38cb 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Anc.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Anc.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMax.kt similarity index 75% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMax.kt index 7d768e18..c8c902c7 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMax.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMax.kt @@ -1,20 +1,20 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.isBitSet -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasChargeDetection -import eu.darken.capod.pods.core.HasEarDetection -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.HasAppleColor -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetection +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbc.kt similarity index 75% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbc.kt index dae6a032..d66a07e9 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbc.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbc.kt @@ -1,20 +1,20 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.isBitSet -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasChargeDetection -import eu.darken.capod.pods.core.HasEarDetection -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.HasAppleColor -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetection +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro.kt index 86c3bb1e..c851464c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro.kt @@ -1,19 +1,19 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2.kt index b9bdc2e9..ec1ba28d 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2.kt @@ -1,19 +1,19 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Usbc.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Usbc.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Usbc.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Usbc.kt index 6ebcfd68..bbf04f61 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Usbc.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Usbc.kt @@ -1,19 +1,19 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3.kt index 82419463..9eb711bd 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3.kt @@ -1,19 +1,19 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/HasStateDetectionAirPods.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/HasStateDetectionAirPods.kt similarity index 85% rename from app/src/main/java/eu/darken/capod/pods/core/apple/airpods/HasStateDetectionAirPods.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/HasStateDetectionAirPods.kt index 24bb9f01..24e5ee79 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/airpods/HasStateDetectionAirPods.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/HasStateDetectionAirPods.kt @@ -1,10 +1,10 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import android.content.Context import androidx.annotation.StringRes import eu.darken.capod.R -import eu.darken.capod.pods.core.HasStateDetection -import eu.darken.capod.pods.core.apple.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasStateDetection +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods interface HasStateDetectionAirPods : HasStateDetection, ApplePods { diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFitPro.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitPro.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFitPro.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitPro.kt index 6e7fde37..7ba1c8e4 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFitPro.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitPro.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFlex.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlex.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFlex.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlex.kt index fcd632b0..91b1ff22 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsFlex.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlex.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3.kt index 47d1af57..70abf1d1 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3.kt similarity index 76% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3.kt index 76b03b27..e81c3a66 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsX.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsX.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsX.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsX.kt index 1ea82f64..63f366da 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/BeatsX.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsX.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3.kt index c2d71d30..55a469f5 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4.kt similarity index 75% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4.kt index 6e469ebb..c337f32f 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4.kt @@ -1,17 +1,17 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.SingleApplePods -import eu.darken.capod.pods.core.apple.airpods.HasStateDetectionAirPods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.SingleApplePods +import eu.darken.capod.pods.core.apple.ble.devices.airpods.HasStateDetectionAirPods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro.kt index f090fbb4..5096bc92 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2.kt similarity index 82% rename from app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2.kt index 2c3e4935..fd56ce8c 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPairing -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPairing +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1.kt index 443a7003..48516241 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2.kt similarity index 77% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2.kt index 3929c8d2..ea6b667d 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2.kt @@ -1,18 +1,18 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3.kt similarity index 79% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3.kt index 7c6fe37c..baf48f37 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3.kt @@ -1,20 +1,20 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro.kt similarity index 80% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro.kt index f0b1ab41..77e22a9f 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro.kt @@ -1,20 +1,20 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2.kt similarity index 78% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2.kt index a209e022..994be3c0 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2.kt @@ -1,22 +1,22 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import androidx.annotation.DrawableRes import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.DualBlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.DualApplePods.LidState -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.DualBlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods.LidState +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/UnknownAppleSnapshotBle.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/UnknownAppleSnapshotBle.kt similarity index 81% rename from app/src/main/java/eu/darken/capod/pods/core/apple/misc/UnknownAppleSnapshotBle.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/UnknownAppleSnapshotBle.kt index f77d9fba..a87381bf 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/misc/UnknownAppleSnapshotBle.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/devices/misc/UnknownAppleSnapshotBle.kt @@ -1,16 +1,16 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc import android.content.Context import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.ApplePodsFactory -import eu.darken.capod.pods.core.apple.history.PodHistoryRepo -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityMessage -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.ApplePodsFactory +import eu.darken.capod.pods.core.apple.ble.history.PodHistoryRepo +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityMessage +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Instant import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/history/KnownDevice.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/KnownDevice.kt similarity index 89% rename from app/src/main/java/eu/darken/capod/pods/core/apple/history/KnownDevice.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/KnownDevice.kt index abc2278e..87db7f35 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/history/KnownDevice.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/KnownDevice.kt @@ -1,10 +1,10 @@ -package eu.darken.capod.pods.core.apple.history +package eu.darken.capod.pods.core.apple.ble.history import eu.darken.capod.common.bluetooth.BluetoothAddress import eu.darken.capod.common.collections.median -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload import java.time.Duration import java.time.Instant import kotlin.math.max diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/history/PodHistoryRepo.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/PodHistoryRepo.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/apple/history/PodHistoryRepo.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/PodHistoryRepo.kt index 2edbe5af..c9549ec1 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/history/PodHistoryRepo.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/history/PodHistoryRepo.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.history +package eu.darken.capod.pods.core.apple.ble.history import eu.darken.capod.common.debug.logging.Logging.Priority.DEBUG import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE @@ -7,13 +7,13 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.lowerNibble import eu.darken.capod.common.upperNibble -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.ApplePods -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityPayload -import eu.darken.capod.pods.core.apple.protocol.RPAChecker +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityPayload +import eu.darken.capod.pods.core.apple.ble.protocol.RPAChecker import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo import eu.darken.capod.profiles.core.currentProfiles diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ContinuityProtocol.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ContinuityProtocol.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ContinuityProtocol.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ContinuityProtocol.kt index 4c2b0cc5..83cebba7 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ContinuityProtocol.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ContinuityProtocol.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol +package eu.darken.capod.pods.core.apple.ble.protocol import android.os.ParcelUuid import dagger.Reusable diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/IdentityResolvingKey.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/IdentityResolvingKey.kt new file mode 100644 index 00000000..ccbc7760 --- /dev/null +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/IdentityResolvingKey.kt @@ -0,0 +1,3 @@ +package eu.darken.capod.pods.core.apple.ble.protocol + +typealias IdentityResolvingKey = ByteArray \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityEncryptionKey.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityEncryptionKey.kt new file mode 100644 index 00000000..b609c8e8 --- /dev/null +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityEncryptionKey.kt @@ -0,0 +1,3 @@ +package eu.darken.capod.pods.core.apple.ble.protocol + +typealias ProximityEncryptionKey = ByteArray \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityMessage.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityMessage.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityMessage.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityMessage.kt index c08cb7aa..160f5873 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityMessage.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityMessage.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.ble +package eu.darken.capod.pods.core.apple.ble.protocol import android.R.id.message import android.annotation.SuppressLint diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPairing.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPairing.kt similarity index 93% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPairing.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPairing.kt index 88126f4a..a8a9b591 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPairing.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPairing.kt @@ -1,9 +1,8 @@ -package eu.darken.capod.pods.core.apple.protocol.ble +package eu.darken.capod.pods.core.apple.ble.protocol import android.bluetooth.le.ScanFilter import dagger.Reusable import eu.darken.capod.common.debug.logging.log -import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol import javax.inject.Inject diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPayload.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPayload.kt similarity index 79% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPayload.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPayload.kt index c14fb9ae..f2719f7e 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityPayload.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/ProximityPayload.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.ble +package eu.darken.capod.pods.core.apple.ble.protocol data class ProximityPayload( val public: Public, diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/RPAChecker.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/RPAChecker.kt similarity index 97% rename from app/src/main/java/eu/darken/capod/pods/core/apple/protocol/RPAChecker.kt rename to app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/RPAChecker.kt index 72573027..1d5678bf 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/RPAChecker.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/apple/ble/protocol/RPAChecker.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol +package eu.darken.capod.pods.core.apple.ble.protocol import android.annotation.SuppressLint import eu.darken.capod.common.bluetooth.BluetoothAddress diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/IdentityResolvingKey.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/IdentityResolvingKey.kt deleted file mode 100644 index 8b57b148..00000000 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/IdentityResolvingKey.kt +++ /dev/null @@ -1,3 +0,0 @@ -package eu.darken.capod.pods.core.apple.protocol - -typealias IdentityResolvingKey = ByteArray \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityEncryptionKey.kt b/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityEncryptionKey.kt deleted file mode 100644 index b03f184d..00000000 --- a/app/src/main/java/eu/darken/capod/pods/core/apple/protocol/ble/ProximityEncryptionKey.kt +++ /dev/null @@ -1,3 +0,0 @@ -package eu.darken.capod.pods.core.apple.protocol.ble - -typealias ProximityEncryptionKey = ByteArray \ No newline at end of file diff --git a/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownDeviceFactory.kt b/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownDeviceFactory.kt index f58ae420..6719ea1b 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownDeviceFactory.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownDeviceFactory.kt @@ -4,7 +4,7 @@ import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import java.time.Duration diff --git a/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownSnapshotBle.kt b/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownSnapshotBle.kt index 92de2c75..69c8cc53 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownSnapshotBle.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/unknown/UnknownSnapshotBle.kt @@ -4,8 +4,8 @@ import android.content.Context import eu.darken.capod.R import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.debug.logging.logTag -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.DeviceProfile import java.time.Instant diff --git a/app/src/main/java/eu/darken/capod/profiles/core/AppleDeviceProfile.kt b/app/src/main/java/eu/darken/capod/profiles/core/AppleDeviceProfile.kt index 75140433..13cdf938 100644 --- a/app/src/main/java/eu/darken/capod/profiles/core/AppleDeviceProfile.kt +++ b/app/src/main/java/eu/darken/capod/profiles/core/AppleDeviceProfile.kt @@ -1,9 +1,9 @@ package eu.darken.capod.profiles.core import eu.darken.capod.common.serialization.ByteArrayBase64Serializer -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.IdentityResolvingKey -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityEncryptionKey +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.protocol.IdentityResolvingKey +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityEncryptionKey import kotlinx.parcelize.Parcelize import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/eu/darken/capod/profiles/core/DeviceProfile.kt b/app/src/main/java/eu/darken/capod/profiles/core/DeviceProfile.kt index 2205d6a7..2cca1619 100644 --- a/app/src/main/java/eu/darken/capod/profiles/core/DeviceProfile.kt +++ b/app/src/main/java/eu/darken/capod/profiles/core/DeviceProfile.kt @@ -1,7 +1,7 @@ package eu.darken.capod.profiles.core import android.os.Parcelable -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import kotlinx.serialization.Serializable @Serializable diff --git a/app/src/main/java/eu/darken/capod/profiles/ui/DeviceManagerScreen.kt b/app/src/main/java/eu/darken/capod/profiles/ui/DeviceManagerScreen.kt index 50504b3d..c8ac6edd 100644 --- a/app/src/main/java/eu/darken/capod/profiles/ui/DeviceManagerScreen.kt +++ b/app/src/main/java/eu/darken/capod/profiles/ui/DeviceManagerScreen.kt @@ -41,7 +41,7 @@ import eu.darken.capod.common.compose.PreviewWrapper import eu.darken.capod.common.compose.preview.MockPodDataProvider import eu.darken.capod.common.error.ErrorEventHandler import eu.darken.capod.common.navigation.NavigationEventHandler -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.DeviceProfile @Composable diff --git a/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationScreen.kt b/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationScreen.kt index 578af792..88475194 100644 --- a/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationScreen.kt +++ b/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationScreen.kt @@ -64,7 +64,7 @@ import eu.darken.capod.common.compose.PreviewWrapper import eu.darken.capod.common.error.ErrorEventHandler import eu.darken.capod.common.navigation.NavigationEventHandler import eu.darken.capod.common.toHex -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel @Composable fun DeviceProfileCreationScreenHost( diff --git a/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationViewModel.kt b/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationViewModel.kt index 05ae8dbe..04f81fa6 100644 --- a/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationViewModel.kt +++ b/app/src/main/java/eu/darken/capod/profiles/ui/creation/DeviceProfileCreationViewModel.kt @@ -14,9 +14,9 @@ import eu.darken.capod.common.flow.SingleEventFlow import eu.darken.capod.common.fromHex import eu.darken.capod.common.toHex import eu.darken.capod.common.uix.ViewModel4 -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.IdentityResolvingKey -import eu.darken.capod.pods.core.apple.protocol.ble.ProximityEncryptionKey +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.protocol.IdentityResolvingKey +import eu.darken.capod.pods.core.apple.ble.protocol.ProximityEncryptionKey import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo diff --git a/app/src/main/java/eu/darken/capod/reaction/core/aap/AapAutoConnect.kt b/app/src/main/java/eu/darken/capod/reaction/core/aap/AapAutoConnect.kt index c91c02be..2089a6c9 100644 --- a/app/src/main/java/eu/darken/capod/reaction/core/aap/AapAutoConnect.kt +++ b/app/src/main/java/eu/darken/capod/reaction/core/aap/AapAutoConnect.kt @@ -7,8 +7,8 @@ import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.flow.setupCommonEventHandlers import eu.darken.capod.monitor.core.BlePodMonitor -import eu.darken.capod.pods.core.apple.protocol.aap.AapConnectionManager -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.AapConnectionManager +import eu.darken.capod.pods.core.apple.aap.AapPodState import eu.darken.capod.profiles.core.DeviceProfilesRepo import kotlinx.coroutines.delay import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/eu/darken/capod/reaction/core/aap/AapKeyPersister.kt b/app/src/main/java/eu/darken/capod/reaction/core/aap/AapKeyPersister.kt index d3d37a92..a71ff2ea 100644 --- a/app/src/main/java/eu/darken/capod/reaction/core/aap/AapKeyPersister.kt +++ b/app/src/main/java/eu/darken/capod/reaction/core/aap/AapKeyPersister.kt @@ -3,7 +3,7 @@ package eu.darken.capod.reaction.core.aap import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag import eu.darken.capod.common.flow.setupCommonEventHandlers -import eu.darken.capod.pods.core.apple.protocol.aap.AapConnectionManager +import eu.darken.capod.pods.core.apple.aap.AapConnectionManager import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt b/app/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt index 53ca9f97..f952bd4e 100644 --- a/app/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt +++ b/app/src/main/java/eu/darken/capod/reaction/core/autoconnect/AutoConnect.kt @@ -9,7 +9,7 @@ import eu.darken.capod.common.flow.setupCommonEventHandlers import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.monitor.core.DeviceMonitor import eu.darken.capod.monitor.core.primaryDevice -import eu.darken.capod.pods.core.apple.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods import eu.darken.capod.profiles.core.DeviceProfilesRepo import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.Flow diff --git a/app/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt b/app/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt index c65a531b..a79a381c 100644 --- a/app/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt +++ b/app/src/main/java/eu/darken/capod/reaction/core/popup/PopUpReaction.kt @@ -10,7 +10,7 @@ import eu.darken.capod.common.flow.withPrevious import eu.darken.capod.monitor.core.DeviceMonitor import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.primaryDevice -import eu.darken.capod.pods.core.apple.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods import eu.darken.capod.reaction.core.ReactionSettings import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine diff --git a/app/src/main/java/eu/darken/capod/reaction/ui/popup/PopUpContent.kt b/app/src/main/java/eu/darken/capod/reaction/ui/popup/PopUpContent.kt index f564d87e..6cd9dafb 100644 --- a/app/src/main/java/eu/darken/capod/reaction/ui/popup/PopUpContent.kt +++ b/app/src/main/java/eu/darken/capod/reaction/ui/popup/PopUpContent.kt @@ -36,11 +36,11 @@ import eu.darken.capod.common.compose.PreviewWrapper import eu.darken.capod.common.compose.preview.MockPodDataProvider import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.getSignalQuality -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.formatBatteryPercent -import eu.darken.capod.pods.core.getBatteryDrawable -import eu.darken.capod.pods.core.toBatteryFloat -import eu.darken.capod.pods.core.toBatteryOrNull +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.formatBatteryPercent +import eu.darken.capod.pods.core.apple.ble.getBatteryDrawable +import eu.darken.capod.pods.core.apple.ble.toBatteryFloat +import eu.darken.capod.pods.core.apple.ble.toBatteryOrNull @Composable fun PopUpContent( diff --git a/app/src/main/java/eu/darken/capod/troubleshooter/ui/TroubleShooterViewModel.kt b/app/src/main/java/eu/darken/capod/troubleshooter/ui/TroubleShooterViewModel.kt index 70707bb3..c778a78b 100644 --- a/app/src/main/java/eu/darken/capod/troubleshooter/ui/TroubleShooterViewModel.kt +++ b/app/src/main/java/eu/darken/capod/troubleshooter/ui/TroubleShooterViewModel.kt @@ -16,7 +16,7 @@ import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.monitor.core.BlePodMonitor import eu.darken.capod.monitor.core.DeviceMonitor import eu.darken.capod.monitor.core.primaryDevice -import eu.darken.capod.pods.core.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot import eu.darken.capod.pods.core.unknown.UnknownSnapshotBle import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo diff --git a/app/src/test/java/eu/darken/capod/common/datastore/DataStoreMigrationCompatTest.kt b/app/src/test/java/eu/darken/capod/common/datastore/DataStoreMigrationCompatTest.kt index 355da649..4fced360 100644 --- a/app/src/test/java/eu/darken/capod/common/datastore/DataStoreMigrationCompatTest.kt +++ b/app/src/test/java/eu/darken/capod/common/datastore/DataStoreMigrationCompatTest.kt @@ -5,7 +5,7 @@ import eu.darken.capod.common.theming.ThemeColor import eu.darken.capod.common.theming.ThemeMode import eu.darken.capod.common.theming.ThemeStyle import eu.darken.capod.main.core.MonitorMode -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesContainer import eu.darken.capod.reaction.core.autoconnect.AutoConnectCondition diff --git a/app/src/test/java/eu/darken/capod/common/datastore/DataStoreValueSerializationTest.kt b/app/src/test/java/eu/darken/capod/common/datastore/DataStoreValueSerializationTest.kt index c4df5042..49d2cec0 100644 --- a/app/src/test/java/eu/darken/capod/common/datastore/DataStoreValueSerializationTest.kt +++ b/app/src/test/java/eu/darken/capod/common/datastore/DataStoreValueSerializationTest.kt @@ -8,7 +8,7 @@ import eu.darken.capod.common.theming.ThemeColor import eu.darken.capod.common.theming.ThemeMode import eu.darken.capod.common.theming.ThemeStyle import eu.darken.capod.main.core.MonitorMode -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesContainer diff --git a/app/src/test/java/eu/darken/capod/main/ui/overview/OverviewViewModelTest.kt b/app/src/test/java/eu/darken/capod/main/ui/overview/OverviewViewModelTest.kt index a5982cac..248baa46 100644 --- a/app/src/test/java/eu/darken/capod/main/ui/overview/OverviewViewModelTest.kt +++ b/app/src/test/java/eu/darken/capod/main/ui/overview/OverviewViewModelTest.kt @@ -11,7 +11,7 @@ import eu.darken.capod.main.core.PermissionTool import eu.darken.capod.monitor.core.DeviceMonitor import eu.darken.capod.monitor.core.PodDevice import eu.darken.capod.monitor.core.worker.MonitorControl -import eu.darken.capod.pods.core.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo diff --git a/app/src/test/java/eu/darken/capod/monitor/core/PodDeviceTest.kt b/app/src/test/java/eu/darken/capod/monitor/core/PodDeviceTest.kt index 09df9df0..5be599af 100644 --- a/app/src/test/java/eu/darken/capod/monitor/core/PodDeviceTest.kt +++ b/app/src/test/java/eu/darken/capod/monitor/core/PodDeviceTest.kt @@ -1,15 +1,16 @@ package eu.darken.capod.monitor.core -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.HasCase -import eu.darken.capod.pods.core.HasChargeDetectionDual -import eu.darken.capod.pods.core.HasEarDetection -import eu.darken.capod.pods.core.HasEarDetectionDual -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.DualApplePods +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.devices.HasCase +import eu.darken.capod.pods.core.apple.ble.devices.HasChargeDetectionDual +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetection +import eu.darken.capod.pods.core.apple.ble.devices.HasEarDetectionDual +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting +import eu.darken.capod.pods.core.apple.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe @@ -238,7 +239,7 @@ class PodDeviceTest : BaseTest() { val ble = mockk(relaxed = true) { every { model } returns PodModel.AIRPODS_PRO3 every { this@mockk.address } returns bleRpa - every { meta } returns eu.darken.capod.pods.core.apple.ApplePods.AppleMeta(profile = profile) + every { meta } returns ApplePods.AppleMeta(profile = profile) } val device = PodDevice(ble = ble, aap = null) device.address shouldBe bondedAddress diff --git a/app/src/test/java/eu/darken/capod/monitor/core/RPACheckerTest.kt b/app/src/test/java/eu/darken/capod/monitor/core/RPACheckerTest.kt index 671d49b2..cb301093 100644 --- a/app/src/test/java/eu/darken/capod/monitor/core/RPACheckerTest.kt +++ b/app/src/test/java/eu/darken/capod/monitor/core/RPACheckerTest.kt @@ -1,7 +1,7 @@ package eu.darken.capod.monitor.core import eu.darken.capod.common.fromHex -import eu.darken.capod.pods.core.apple.protocol.RPAChecker +import eu.darken.capod.pods.core.apple.ble.protocol.RPAChecker import io.kotest.matchers.shouldBe import org.junit.jupiter.api.Test import testhelpers.BaseTest diff --git a/app/src/test/java/eu/darken/capod/pods/core/ModelFeaturesTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ModelFeaturesTest.kt similarity index 98% rename from app/src/test/java/eu/darken/capod/pods/core/ModelFeaturesTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ModelFeaturesTest.kt index a4c99fea..c239d148 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/ModelFeaturesTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ModelFeaturesTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core +package eu.darken.capod.pods.core.apple import io.kotest.matchers.shouldBe import org.junit.jupiter.api.Test @@ -77,4 +77,4 @@ class ModelFeaturesTest : BaseTest() { model.features.hasDualPods shouldBe true } } -} +} \ No newline at end of file diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManagerTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManagerTest.kt similarity index 94% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManagerTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManagerTest.kt index f380dd9a..7f2e6d44 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapConnectionManagerTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapConnectionManagerTest.kt @@ -1,9 +1,11 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap import android.bluetooth.BluetoothDevice import android.bluetooth.BluetoothSocket import eu.darken.capod.common.bluetooth.l2cap.L2capSocketFactory -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.protocol.AapCommand +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import io.kotest.assertions.throwables.shouldThrow import io.kotest.matchers.maps.shouldBeEmpty import io.kotest.matchers.shouldBe diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodStateTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapPodStateTest.kt similarity index 76% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodStateTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapPodStateTest.kt index 917f39cc..a24f787d 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapPodStateTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/AapPodStateTest.kt @@ -1,5 +1,6 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe @@ -35,7 +36,10 @@ class AapPodStateTest : BaseTest() { val state = AapPodState( connectionState = AapPodState.ConnectionState.READY, settings = mapOf( - AapSetting.AncMode::class to AapSetting.AncMode(AapSetting.AncMode.Value.ON, listOf(AapSetting.AncMode.Value.ON)), + AapSetting.AncMode::class to AapSetting.AncMode( + AapSetting.AncMode.Value.ON, + listOf(AapSetting.AncMode.Value.ON) + ), ) ) val updated = state.withSetting( @@ -51,7 +55,10 @@ class AapPodStateTest : BaseTest() { val state = AapPodState( connectionState = AapPodState.ConnectionState.READY, settings = mapOf( - AapSetting.AncMode::class to AapSetting.AncMode(AapSetting.AncMode.Value.ON, listOf(AapSetting.AncMode.Value.ON)), + AapSetting.AncMode::class to AapSetting.AncMode( + AapSetting.AncMode.Value.ON, + listOf(AapSetting.AncMode.Value.ON) + ), ) ) val updated = state.withSetting( @@ -75,9 +82,21 @@ class AapPodStateTest : BaseTest() { fun `battery accessors map to correct types`() { val state = AapPodState( batteries = mapOf( - AapPodState.BatteryType.LEFT to AapPodState.Battery(AapPodState.BatteryType.LEFT, 0.8f, AapPodState.ChargingState.NOT_CHARGING), - AapPodState.BatteryType.RIGHT to AapPodState.Battery(AapPodState.BatteryType.RIGHT, 0.77f, AapPodState.ChargingState.CHARGING), - AapPodState.BatteryType.CASE to AapPodState.Battery(AapPodState.BatteryType.CASE, 0.48f, AapPodState.ChargingState.CHARGING), + AapPodState.BatteryType.LEFT to AapPodState.Battery( + AapPodState.BatteryType.LEFT, + 0.8f, + AapPodState.ChargingState.NOT_CHARGING + ), + AapPodState.BatteryType.RIGHT to AapPodState.Battery( + AapPodState.BatteryType.RIGHT, + 0.77f, + AapPodState.ChargingState.CHARGING + ), + AapPodState.BatteryType.CASE to AapPodState.Battery( + AapPodState.BatteryType.CASE, + 0.48f, + AapPodState.ChargingState.CHARGING + ), ), ) state.batteryLeft shouldBe 0.8f @@ -99,7 +118,11 @@ class AapPodStateTest : BaseTest() { fun `headset battery for single-pod devices`() { val state = AapPodState( batteries = mapOf( - AapPodState.BatteryType.SINGLE to AapPodState.Battery(AapPodState.BatteryType.SINGLE, 0.6f, AapPodState.ChargingState.NOT_CHARGING), + AapPodState.BatteryType.SINGLE to AapPodState.Battery( + AapPodState.BatteryType.SINGLE, + 0.6f, + AapPodState.ChargingState.NOT_CHARGING + ), ), ) state.batteryHeadset shouldBe 0.6f @@ -110,7 +133,11 @@ class AapPodStateTest : BaseTest() { fun `isCharging true for CHARGING state`() { val state = AapPodState( batteries = mapOf( - AapPodState.BatteryType.LEFT to AapPodState.Battery(AapPodState.BatteryType.LEFT, 0.8f, AapPodState.ChargingState.CHARGING), + AapPodState.BatteryType.LEFT to AapPodState.Battery( + AapPodState.BatteryType.LEFT, + 0.8f, + AapPodState.ChargingState.CHARGING + ), ), ) state.isLeftCharging shouldBe true @@ -120,7 +147,11 @@ class AapPodStateTest : BaseTest() { fun `isCharging true for CHARGING_OPTIMIZED state`() { val state = AapPodState( batteries = mapOf( - AapPodState.BatteryType.LEFT to AapPodState.Battery(AapPodState.BatteryType.LEFT, 0.8f, AapPodState.ChargingState.CHARGING_OPTIMIZED), + AapPodState.BatteryType.LEFT to AapPodState.Battery( + AapPodState.BatteryType.LEFT, + 0.8f, + AapPodState.ChargingState.CHARGING_OPTIMIZED + ), ), ) state.isLeftCharging shouldBe true @@ -130,7 +161,11 @@ class AapPodStateTest : BaseTest() { fun `isCharging false for NOT_CHARGING`() { val state = AapPodState( batteries = mapOf( - AapPodState.BatteryType.LEFT to AapPodState.Battery(AapPodState.BatteryType.LEFT, 0.8f, AapPodState.ChargingState.NOT_CHARGING), + AapPodState.BatteryType.LEFT to AapPodState.Battery( + AapPodState.BatteryType.LEFT, + 0.8f, + AapPodState.ChargingState.NOT_CHARGING + ), ), ) state.isLeftCharging shouldBe false diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfileTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/DefaultAapDeviceProfileTest.kt similarity index 63% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfileTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/DefaultAapDeviceProfileTest.kt index aa1007ab..3da8100c 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/DefaultAapDeviceProfileTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/DefaultAapDeviceProfileTest.kt @@ -1,22 +1,12 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.devices -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState.BatteryType -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState.ChargingState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.AncMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.AdaptiveAudioNoise -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ConversationalAwareness -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ConversationalAwarenessState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic.EndCallMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic.MuteMicMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.NcWithOneAirPod -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PersonalizedVolume -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PressHoldDuration -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PressSpeed -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ToneVolume -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.VolumeSwipe -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.VolumeSwipeLength +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.protocol.AapCommand +import eu.darken.capod.pods.core.apple.aap.protocol.AapMessage +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting +import eu.darken.capod.pods.core.apple.aap.protocol.BaseAapSessionTest +import eu.darken.capod.pods.core.apple.aap.protocol.DefaultAapDeviceProfile import io.kotest.matchers.collections.shouldContainExactly import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull @@ -66,10 +56,12 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class InitExtTests { - @Test fun `returned for Pro 2`() { DefaultAapDeviceProfile(PodModel.AIRPODS_PRO2).encodeInitExt().shouldNotBeNull() } + @Test + fun `returned for Pro 2`() { DefaultAapDeviceProfile(PodModel.AIRPODS_PRO2).encodeInitExt().shouldNotBeNull() } @Test fun `returned for Pro 3`() { DefaultAapDeviceProfile(PodModel.AIRPODS_PRO3).encodeInitExt().shouldNotBeNull() } @Test fun `returned for AP4 ANC`() { DefaultAapDeviceProfile(PodModel.AIRPODS_GEN4_ANC).encodeInitExt().shouldNotBeNull() } - @Test fun `null for basic AirPods`() { DefaultAapDeviceProfile(PodModel.AIRPODS_GEN3).encodeInitExt().shouldBeNull() } + @Test + fun `null for basic AirPods`() { DefaultAapDeviceProfile(PodModel.AIRPODS_GEN3).encodeInitExt().shouldBeNull() } @Test fun `null for Pro 1`() { DefaultAapDeviceProfile(PodModel.AIRPODS_PRO).encodeInitExt().shouldBeNull() } @Test fun `null for Max`() { DefaultAapDeviceProfile(PodModel.AIRPODS_MAX).encodeInitExt().shouldBeNull() } @@ -83,25 +75,25 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class SupportedAncModesTests { - private fun ancModesFor(model: PodModel): List { + private fun ancModesFor(model: PodModel): List { val p = DefaultAapDeviceProfile(model) - return decodeSetting(settingsMessage(0x0D, 0x02)).let { + return decodeSetting(settingsMessage(0x0D, 0x02)).let { // Can't use the outer profile, need per-model profile - (p.decodeSetting(settingsMessage(0x0D, 0x02))!!.second as AncMode).supported + (p.decodeSetting(settingsMessage(0x0D, 0x02))!!.second as AapSetting.AncMode).supported } } @Test fun `Pro 2 supports ON, TRANSPARENCY, ADAPTIVE`() { ancModesFor(PodModel.AIRPODS_PRO2) shouldContainExactly listOf( - AncMode.Value.ON, AncMode.Value.TRANSPARENCY, AncMode.Value.ADAPTIVE, + AapSetting.AncMode.Value.ON, AapSetting.AncMode.Value.TRANSPARENCY, AapSetting.AncMode.Value.ADAPTIVE, ) } @Test fun `Pro 1 supports ON, TRANSPARENCY only`() { ancModesFor(PodModel.AIRPODS_PRO) shouldContainExactly listOf( - AncMode.Value.ON, AncMode.Value.TRANSPARENCY, + AapSetting.AncMode.Value.ON, AapSetting.AncMode.Value.TRANSPARENCY, ) } @@ -113,7 +105,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `Max supports ON, TRANSPARENCY only`() { ancModesFor(PodModel.AIRPODS_MAX) shouldContainExactly listOf( - AncMode.Value.ON, AncMode.Value.TRANSPARENCY, + AapSetting.AncMode.Value.ON, AapSetting.AncMode.Value.TRANSPARENCY, ) } } @@ -122,22 +114,26 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class AncModeTests { - @Test fun `encode OFF`() { profile.encodeCommand(AapCommand.SetAncMode(AncMode.Value.OFF))[7] shouldBe 0x01.toByte() } - @Test fun `encode ON`() { profile.encodeCommand(AapCommand.SetAncMode(AncMode.Value.ON))[7] shouldBe 0x02.toByte() } - @Test fun `encode TRANSPARENCY`() { profile.encodeCommand(AapCommand.SetAncMode(AncMode.Value.TRANSPARENCY))[7] shouldBe 0x03.toByte() } - @Test fun `encode ADAPTIVE`() { profile.encodeCommand(AapCommand.SetAncMode(AncMode.Value.ADAPTIVE))[7] shouldBe 0x04.toByte() } + @Test fun `encode OFF`() { profile.encodeCommand(AapCommand.SetAncMode(AapSetting.AncMode.Value.OFF))[7] shouldBe 0x01.toByte() } + @Test fun `encode ON`() { profile.encodeCommand(AapCommand.SetAncMode(AapSetting.AncMode.Value.ON))[7] shouldBe 0x02.toByte() } + @Test fun `encode TRANSPARENCY`() { profile.encodeCommand(AapCommand.SetAncMode(AapSetting.AncMode.Value.TRANSPARENCY))[7] shouldBe 0x03.toByte() } + @Test fun `encode ADAPTIVE`() { profile.encodeCommand(AapCommand.SetAncMode(AapSetting.AncMode.Value.ADAPTIVE))[7] shouldBe 0x04.toByte() } - @Test fun `decode OFF`() { decodeSetting(settingsMessage(0x0D, 0x01)).current shouldBe AncMode.Value.OFF } - @Test fun `decode ON`() { decodeSetting(settingsMessage(0x0D, 0x02)).current shouldBe AncMode.Value.ON } - @Test fun `decode TRANSPARENCY`() { decodeSetting(settingsMessage(0x0D, 0x03)).current shouldBe AncMode.Value.TRANSPARENCY } - @Test fun `decode ADAPTIVE`() { decodeSetting(settingsMessage(0x0D, 0x04)).current shouldBe AncMode.Value.ADAPTIVE } + @Test + fun `decode OFF`() { decodeSetting(settingsMessage(0x0D, 0x01)).current shouldBe AapSetting.AncMode.Value.OFF } + @Test + fun `decode ON`() { decodeSetting(settingsMessage(0x0D, 0x02)).current shouldBe AapSetting.AncMode.Value.ON } + @Test + fun `decode TRANSPARENCY`() { decodeSetting(settingsMessage(0x0D, 0x03)).current shouldBe AapSetting.AncMode.Value.TRANSPARENCY } + @Test + fun `decode ADAPTIVE`() { decodeSetting(settingsMessage(0x0D, 0x04)).current shouldBe AapSetting.AncMode.Value.ADAPTIVE } @Test fun `decode unknown wire value returns null`() { profile.decodeSetting(settingsMessage(0x0D, 0x99)).shouldBeNull() } @Test fun `round-trip all modes`() { - for (mode in AncMode.Value.entries) { + for (mode in AapSetting.AncMode.Value.entries) { val encoded = profile.encodeCommand(AapCommand.SetAncMode(mode)) - val decoded = decodeSetting(AapMessage.parse(encoded)!!) + val decoded = decodeSetting(AapMessage.Companion.parse(encoded)!!) decoded.current shouldBe mode } } @@ -149,8 +145,8 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { inner class ConversationalAwarenessTests { @Test fun `encode enabled`() { profile.encodeCommand(AapCommand.SetConversationalAwareness(true))[7] shouldBe 0x01.toByte() } @Test fun `encode disabled`() { profile.encodeCommand(AapCommand.SetConversationalAwareness(false))[7] shouldBe 0x02.toByte() } - @Test fun `decode enabled`() { decodeSetting(settingsMessage(0x28, 0x01)).enabled shouldBe true } - @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x28, 0x02)).enabled shouldBe false } + @Test fun `decode enabled`() { decodeSetting(settingsMessage(0x28, 0x01)).enabled shouldBe true } + @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x28, 0x02)).enabled shouldBe false } @Test fun `decode unknown value returns null`() { profile.decodeSetting(settingsMessage(0x28, 0x00)).shouldBeNull() } } @@ -158,18 +154,20 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class PressSpeedTests { - @Test fun `encode default`() { profile.encodeCommand(AapCommand.SetPressSpeed(PressSpeed.Value.DEFAULT))[7] shouldBe 0x00.toByte() } - @Test fun `encode slower`() { profile.encodeCommand(AapCommand.SetPressSpeed(PressSpeed.Value.SLOWER))[7] shouldBe 0x01.toByte() } - @Test fun `encode slowest`() { profile.encodeCommand(AapCommand.SetPressSpeed(PressSpeed.Value.SLOWEST))[7] shouldBe 0x02.toByte() } - @Test fun `decode default`() { decodeSetting(settingsMessage(0x17, 0x00)).value shouldBe PressSpeed.Value.DEFAULT } - @Test fun `decode slower`() { decodeSetting(settingsMessage(0x17, 0x01)).value shouldBe PressSpeed.Value.SLOWER } + @Test fun `encode default`() { profile.encodeCommand(AapCommand.SetPressSpeed(AapSetting.PressSpeed.Value.DEFAULT))[7] shouldBe 0x00.toByte() } + @Test fun `encode slower`() { profile.encodeCommand(AapCommand.SetPressSpeed(AapSetting.PressSpeed.Value.SLOWER))[7] shouldBe 0x01.toByte() } + @Test fun `encode slowest`() { profile.encodeCommand(AapCommand.SetPressSpeed(AapSetting.PressSpeed.Value.SLOWEST))[7] shouldBe 0x02.toByte() } + @Test + fun `decode default`() { decodeSetting(settingsMessage(0x17, 0x00)).value shouldBe AapSetting.PressSpeed.Value.DEFAULT } + @Test + fun `decode slower`() { decodeSetting(settingsMessage(0x17, 0x01)).value shouldBe AapSetting.PressSpeed.Value.SLOWER } @Test fun `decode unknown returns null`() { profile.decodeSetting(settingsMessage(0x17, 0x99)).shouldBeNull() } @Test fun `round-trip all values`() { - for (v in PressSpeed.Value.entries) { + for (v in AapSetting.PressSpeed.Value.entries) { val encoded = profile.encodeCommand(AapCommand.SetPressSpeed(v)) - decodeSetting(AapMessage.parse(encoded)!!).value shouldBe v + decodeSetting(AapMessage.Companion.parse(encoded)!!).value shouldBe v } } } @@ -178,14 +176,16 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class PressHoldDurationTests { - @Test fun `encode shorter`() { profile.encodeCommand(AapCommand.SetPressHoldDuration(PressHoldDuration.Value.SHORTER))[7] shouldBe 0x01.toByte() } - @Test fun `decode shortest`() { decodeSetting(settingsMessage(0x18, 0x02)).value shouldBe PressHoldDuration.Value.SHORTEST } + @Test + fun `encode shorter`() { profile.encodeCommand(AapCommand.SetPressHoldDuration(AapSetting.PressHoldDuration.Value.SHORTER))[7] shouldBe 0x01.toByte() } + @Test + fun `decode shortest`() { decodeSetting(settingsMessage(0x18, 0x02)).value shouldBe AapSetting.PressHoldDuration.Value.SHORTEST } @Test fun `round-trip all values`() { - for (v in PressHoldDuration.Value.entries) { + for (v in AapSetting.PressHoldDuration.Value.entries) { val encoded = profile.encodeCommand(AapCommand.SetPressHoldDuration(v)) - decodeSetting(AapMessage.parse(encoded)!!).value shouldBe v + decodeSetting(AapMessage.Companion.parse(encoded)!!).value shouldBe v } } } @@ -196,8 +196,8 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { inner class NcOneAirPodTests { @Test fun `encode enabled`() { profile.encodeCommand(AapCommand.SetNcWithOneAirPod(true))[7] shouldBe 0x01.toByte() } @Test fun `encode disabled`() { profile.encodeCommand(AapCommand.SetNcWithOneAirPod(false))[7] shouldBe 0x02.toByte() } - @Test fun `decode enabled`() { decodeSetting(settingsMessage(0x1B, 0x01)).enabled shouldBe true } - @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x1B, 0x02)).enabled shouldBe false } + @Test fun `decode enabled`() { decodeSetting(settingsMessage(0x1B, 0x01)).enabled shouldBe true } + @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x1B, 0x02)).enabled shouldBe false } @Test fun `decode unknown returns null`() { profile.decodeSetting(settingsMessage(0x1B, 0x00)).shouldBeNull() } } @@ -208,22 +208,24 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `encode level 50`() { profile.encodeCommand(AapCommand.SetToneVolume(50))[7] shouldBe 50.toByte() } @Test fun `encode clamps to min 15`() { profile.encodeCommand(AapCommand.SetToneVolume(0))[7] shouldBe 0x0F.toByte() } @Test fun `encode clamps to max 100`() { profile.encodeCommand(AapCommand.SetToneVolume(200))[7] shouldBe 0x64.toByte() } - @Test fun `decode level`() { decodeSetting(settingsMessage(0x1F, 50)).level shouldBe 50 } + @Test fun `decode level`() { decodeSetting(settingsMessage(0x1F, 50)).level shouldBe 50 } } // ── Volume Swipe Length ────────────────────────────────── @Nested inner class VolumeSwipeLengthTests { - @Test fun `encode longest`() { profile.encodeCommand(AapCommand.SetVolumeSwipeLength(VolumeSwipeLength.Value.LONGEST))[7] shouldBe 0x02.toByte() } - @Test fun `decode longer`() { decodeSetting(settingsMessage(0x23, 0x01)).value shouldBe VolumeSwipeLength.Value.LONGER } + @Test + fun `encode longest`() { profile.encodeCommand(AapCommand.SetVolumeSwipeLength(AapSetting.VolumeSwipeLength.Value.LONGEST))[7] shouldBe 0x02.toByte() } + @Test + fun `decode longer`() { decodeSetting(settingsMessage(0x23, 0x01)).value shouldBe AapSetting.VolumeSwipeLength.Value.LONGER } @Test fun `decode unknown returns null`() { profile.decodeSetting(settingsMessage(0x23, 0x99)).shouldBeNull() } @Test fun `round-trip all values`() { - for (v in VolumeSwipeLength.Value.entries) { + for (v in AapSetting.VolumeSwipeLength.Value.entries) { val encoded = profile.encodeCommand(AapCommand.SetVolumeSwipeLength(v)) - decodeSetting(AapMessage.parse(encoded)!!).value shouldBe v + decodeSetting(AapMessage.Companion.parse(encoded)!!).value shouldBe v } } } @@ -233,7 +235,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class VolumeSwipeTests { @Test fun `encode enabled`() { profile.encodeCommand(AapCommand.SetVolumeSwipe(true))[7] shouldBe 0x01.toByte() } - @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x25, 0x02)).enabled shouldBe false } + @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x25, 0x02)).enabled shouldBe false } @Test fun `decode unknown returns null`() { profile.decodeSetting(settingsMessage(0x25, 0x00)).shouldBeNull() } } @@ -242,7 +244,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class PersonalizedVolumeTests { @Test fun `encode enabled`() { profile.encodeCommand(AapCommand.SetPersonalizedVolume(true))[7] shouldBe 0x01.toByte() } - @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x26, 0x02)).enabled shouldBe false } + @Test fun `decode disabled`() { decodeSetting(settingsMessage(0x26, 0x02)).enabled shouldBe false } @Test fun `decode unknown returns null`() { profile.decodeSetting(settingsMessage(0x26, 0x00)).shouldBeNull() } } @@ -253,7 +255,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `encode level 50`() { profile.encodeCommand(AapCommand.SetAdaptiveAudioNoise(50))[7] shouldBe 50.toByte() } @Test fun `encode clamps to 0`() { profile.encodeCommand(AapCommand.SetAdaptiveAudioNoise(-5))[7] shouldBe 0x00.toByte() } @Test fun `encode clamps to 100`() { profile.encodeCommand(AapCommand.SetAdaptiveAudioNoise(150))[7] shouldBe 0x64.toByte() } - @Test fun `decode level`() { decodeSetting(settingsMessage(0x2E, 64)).level shouldBe 64 } + @Test fun `decode level`() { decodeSetting(settingsMessage(0x2E, 64)).level shouldBe 64 } } // ── EndCall / MuteMic ──────────────────────────────────── @@ -262,7 +264,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { inner class EndCallMuteMicTests { @Test fun `encode single press mute, double press end call`() { - val bytes = profile.encodeCommand(AapCommand.SetEndCallMuteMic(MuteMicMode.SINGLE_PRESS, EndCallMode.DOUBLE_PRESS)) + val bytes = profile.encodeCommand(AapCommand.SetEndCallMuteMic(AapSetting.EndCallMuteMic.MuteMicMode.SINGLE_PRESS, AapSetting.EndCallMuteMic.EndCallMode.DOUBLE_PRESS)) bytes[6] shouldBe 0x24.toByte() bytes[7] shouldBe 0x21.toByte() bytes[8] shouldBe 0x23.toByte() @@ -271,30 +273,30 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `decode standard format 0x21`() { - val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 21 22 03 00")) - ecm.muteMic shouldBe MuteMicMode.DOUBLE_PRESS - ecm.endCall shouldBe EndCallMode.SINGLE_PRESS + val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 21 22 03 00")) + ecm.muteMic shouldBe AapSetting.EndCallMuteMic.MuteMicMode.DOUBLE_PRESS + ecm.endCall shouldBe AapSetting.EndCallMuteMic.EndCallMode.SINGLE_PRESS } @Test fun `decode compact format 0x20 combined 0x02`() { - val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 20 02 00 00")) - ecm.muteMic shouldBe MuteMicMode.SINGLE_PRESS - ecm.endCall shouldBe EndCallMode.DOUBLE_PRESS + val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 20 02 00 00")) + ecm.muteMic shouldBe AapSetting.EndCallMuteMic.MuteMicMode.SINGLE_PRESS + ecm.endCall shouldBe AapSetting.EndCallMuteMic.EndCallMode.DOUBLE_PRESS } @Test fun `decode compact format 0x20 combined 0x03`() { - val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 20 03 00 00")) - ecm.muteMic shouldBe MuteMicMode.DOUBLE_PRESS - ecm.endCall shouldBe EndCallMode.SINGLE_PRESS + val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 20 03 00 00")) + ecm.muteMic shouldBe AapSetting.EndCallMuteMic.MuteMicMode.DOUBLE_PRESS + ecm.endCall shouldBe AapSetting.EndCallMuteMic.EndCallMode.SINGLE_PRESS } @Test fun `decode compact format subtype 0x00 from real Pro 3`() { - val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 00 03 00 00")) - ecm.muteMic shouldBe MuteMicMode.DOUBLE_PRESS - ecm.endCall shouldBe EndCallMode.SINGLE_PRESS + val ecm = decodeSetting(aapMessage("04 00 04 00 09 00 24 00 03 00 00")) + ecm.muteMic shouldBe AapSetting.EndCallMuteMic.MuteMicMode.DOUBLE_PRESS + ecm.endCall shouldBe AapSetting.EndCallMuteMic.EndCallMode.SINGLE_PRESS } @Test @@ -307,8 +309,8 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Nested inner class ConversationAwarenessStateTests { - @Test fun `speaking start`() { decodeSetting(aapMessage("04 00 04 00 4B 00 01")).speaking shouldBe true } - @Test fun `speaking stop`() { decodeSetting(aapMessage("04 00 04 00 4B 00 04")).speaking shouldBe false } + @Test fun `speaking start`() { decodeSetting(aapMessage("04 00 04 00 4B 00 01")).speaking shouldBe true } + @Test fun `speaking stop`() { decodeSetting(aapMessage("04 00 04 00 4B 00 04")).speaking shouldBe false } @Test fun `empty payload returns null`() { profile.decodeSetting(aapMessage("04 00 04 00 4B 00")).shouldBeNull() } } @@ -319,8 +321,8 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `decode single left pod`() { val r = profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 85, 0x02, 0x00))!! - r[BatteryType.LEFT]!!.percent shouldBe 0.85f - r[BatteryType.LEFT]!!.charging shouldBe ChargingState.NOT_CHARGING + r[AapPodState.BatteryType.LEFT]!!.percent shouldBe 0.85f + r[AapPodState.BatteryType.LEFT]!!.charging shouldBe AapPodState.ChargingState.NOT_CHARGING } @Test @@ -332,17 +334,17 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { 0x08, 0x00, 50, 0x02, 0x00, ))!! r.size shouldBe 3 - r[BatteryType.RIGHT]!!.percent shouldBe 0.9f - r[BatteryType.RIGHT]!!.charging shouldBe ChargingState.CHARGING - r[BatteryType.LEFT]!!.percent shouldBe 0.8f - r[BatteryType.CASE]!!.percent shouldBe 0.5f + r[AapPodState.BatteryType.RIGHT]!!.percent shouldBe 0.9f + r[AapPodState.BatteryType.RIGHT]!!.charging shouldBe AapPodState.ChargingState.CHARGING + r[AapPodState.BatteryType.LEFT]!!.percent shouldBe 0.8f + r[AapPodState.BatteryType.CASE]!!.percent shouldBe 0.5f } @Test fun `decode headset (single)`() { val r = profile.decodeBattery(batteryMessage(0x01, 0x01, 0x00, 60, 0x04, 0x00))!! - r[BatteryType.SINGLE]!!.percent shouldBe 0.6f - r[BatteryType.SINGLE]!!.charging shouldBe ChargingState.DISCONNECTED + r[AapPodState.BatteryType.SINGLE]!!.percent shouldBe 0.6f + r[AapPodState.BatteryType.SINGLE]!!.charging shouldBe AapPodState.ChargingState.DISCONNECTED } @Test fun `skips percent above 100`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 127, 0x02, 0x00))!! shouldBe emptyMap() } @@ -351,22 +353,24 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `skips unknown type`() { profile.decodeBattery(batteryMessage(0x01, 0x10, 0x00, 50, 0x02, 0x00))!! shouldBe emptyMap() } @Test fun `handles truncated entry`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 50))!! shouldBe emptyMap() } @Test fun `non-battery message returns null`() { profile.decodeBattery(settingsMessage(0x0D, 0x02)).shouldBeNull() } - @Test fun `zero percent is valid`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 0, 0x01, 0x00))!![BatteryType.LEFT]!!.percent shouldBe 0f } - @Test fun `100 percent is valid`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 100, 0x02, 0x00))!![BatteryType.LEFT]!!.percent shouldBe 1f } + @Test + fun `zero percent is valid`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 0, 0x01, 0x00))!![AapPodState.BatteryType.LEFT]!!.percent shouldBe 0f } + @Test + fun `100 percent is valid`() { profile.decodeBattery(batteryMessage(0x01, 0x04, 0x00, 100, 0x02, 0x00))!![AapPodState.BatteryType.LEFT]!!.percent shouldBe 1f } @Test fun `CHARGING_OPTIMIZED state 0x05`() { val r = profile.decodeBattery(batteryMessage(0x03, 0x04, 0x01, 80, 0x05, 0x01, 0x02, 0x01, 79, 0x05, 0x01, 0x08, 0x01, 48, 0x01, 0x01))!! - r[BatteryType.LEFT]!!.charging shouldBe ChargingState.CHARGING_OPTIMIZED - r[BatteryType.RIGHT]!!.charging shouldBe ChargingState.CHARGING_OPTIMIZED - r[BatteryType.CASE]!!.charging shouldBe ChargingState.CHARGING + r[AapPodState.BatteryType.LEFT]!!.charging shouldBe AapPodState.ChargingState.CHARGING_OPTIMIZED + r[AapPodState.BatteryType.RIGHT]!!.charging shouldBe AapPodState.ChargingState.CHARGING_OPTIMIZED + r[AapPodState.BatteryType.CASE]!!.charging shouldBe AapPodState.ChargingState.CHARGING } @Test fun `pods out of case, case disconnected`() { val r = profile.decodeBattery(batteryMessage(0x03, 0x04, 0x01, 80, 0x02, 0x01, 0x02, 0x01, 77, 0x02, 0x01, 0x08, 0x01, 0, 0x04, 0x01))!! - r[BatteryType.CASE]!!.percent shouldBe 0f - r[BatteryType.CASE]!!.charging shouldBe ChargingState.DISCONNECTED + r[AapPodState.BatteryType.CASE]!!.percent shouldBe 0f + r[AapPodState.BatteryType.CASE]!!.charging shouldBe AapPodState.ChargingState.DISCONNECTED } @Test @@ -374,9 +378,9 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { val msg = aapMessage("04 00 04 00 04 00 03 04 01 50 05 01 02 01 4F 05 01 08 01 30 01 01") val r = profile.decodeBattery(msg)!! r.size shouldBe 3 - r[BatteryType.LEFT]!!.percent shouldBe 0.8f - r[BatteryType.RIGHT]!!.percent shouldBe 0.79f - r[BatteryType.CASE]!!.percent shouldBe 0.48f + r[AapPodState.BatteryType.LEFT]!!.percent shouldBe 0.8f + r[AapPodState.BatteryType.RIGHT]!!.percent shouldBe 0.79f + r[AapPodState.BatteryType.CASE]!!.percent shouldBe 0.48f } } @@ -397,7 +401,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { val enc = ByteArray(16) { 0x22.toByte() } val payload = byteArrayOf(0x02, 0x01, 0x00, 16, 0x00, *irk, 0x04, 0x00, 16, 0x00, *enc) val raw = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x31, 0x00) + payload - val result = profile.decodePrivateKeyResponse(AapMessage.parse(raw)!!)!! + val result = profile.decodePrivateKeyResponse(AapMessage.Companion.parse(raw)!!)!! result.irk shouldBe irk result.encKey shouldBe enc } @@ -406,7 +410,7 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { fun `decode response with only IRK`() { val irk = ByteArray(16) { 0xAA.toByte() } val raw = byteArrayOf(0x04, 0x00, 0x04, 0x00, 0x31, 0x00, 0x01, 0x01, 0x00, 16, 0x00, *irk) - val result = profile.decodePrivateKeyResponse(AapMessage.parse(raw)!!)!! + val result = profile.decodePrivateKeyResponse(AapMessage.Companion.parse(raw)!!)!! result.irk shouldBe irk result.encKey.shouldBeNull() } @@ -421,4 +425,4 @@ class DefaultAapDeviceProfileTest : BaseAapSessionTest() { @Test fun `unknown setting ID returns null`() { profile.decodeSetting(settingsMessage(0x7F, 0x01)).shouldBeNull() } @Test fun `non-settings command returns null`() { profile.decodeSetting(aapMessage("04 00 04 00 1D 00 01 02 03 04")).shouldBeNull() } @Test fun `payload too short returns null`() { profile.decodeSetting(aapMessage("04 00 04 00 09 00 0D")).shouldBeNull() } -} +} \ No newline at end of file diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AirPodsPro3AapSessionTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/airpods/AirPodsPro3AapSessionTest.kt similarity index 62% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AirPodsPro3AapSessionTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/airpods/AirPodsPro3AapSessionTest.kt index 0fb6c1ca..974c2257 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AirPodsPro3AapSessionTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/devices/airpods/AirPodsPro3AapSessionTest.kt @@ -1,22 +1,9 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState.BatteryType -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState.ChargingState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.AdaptiveAudioNoise -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.AncMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ConversationalAwareness -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ConversationalAwarenessState -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic.EndCallMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.EndCallMuteMic.MuteMicMode -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.NcWithOneAirPod -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PersonalizedVolume -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PressHoldDuration -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.PressSpeed -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.ToneVolume -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.VolumeSwipe -import eu.darken.capod.pods.core.apple.protocol.aap.AapSetting.VolumeSwipeLength +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.protocol.AapSetting +import eu.darken.capod.pods.core.apple.aap.protocol.BaseAapSessionTest import io.kotest.matchers.collections.shouldContainExactly import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.shouldBe @@ -79,18 +66,18 @@ class AirPodsPro3AapSessionTest : BaseAapSessionTest() { fun `in case charging - pods CHARGING_OPTIMIZED, case CHARGING`() { val r = profile.decodeBattery(aapMessage("04 00 04 00 04 00 03 04 01 50 05 01 02 01 4F 05 01 08 01 30 01 01"))!! - r[BatteryType.LEFT]!!.let { it.percent shouldBe 0.8f; it.charging shouldBe ChargingState.CHARGING_OPTIMIZED } - r[BatteryType.RIGHT]!!.let { it.percent shouldBe 0.79f; it.charging shouldBe ChargingState.CHARGING_OPTIMIZED } - r[BatteryType.CASE]!!.let { it.percent shouldBe 0.48f; it.charging shouldBe ChargingState.CHARGING } + r[AapPodState.BatteryType.LEFT]!!.let { it.percent shouldBe 0.8f; it.charging shouldBe AapPodState.ChargingState.CHARGING_OPTIMIZED } + r[AapPodState.BatteryType.RIGHT]!!.let { it.percent shouldBe 0.79f; it.charging shouldBe AapPodState.ChargingState.CHARGING_OPTIMIZED } + r[AapPodState.BatteryType.CASE]!!.let { it.percent shouldBe 0.48f; it.charging shouldBe AapPodState.ChargingState.CHARGING } } @Test fun `out of case - pods NOT_CHARGING, case DISCONNECTED`() { val r = profile.decodeBattery(aapMessage("04 00 04 00 04 00 03 02 01 4D 02 01 04 01 50 02 01 08 01 00 04 01"))!! - r[BatteryType.RIGHT]!!.charging shouldBe ChargingState.NOT_CHARGING - r[BatteryType.LEFT]!!.charging shouldBe ChargingState.NOT_CHARGING - r[BatteryType.CASE]!!.charging shouldBe ChargingState.DISCONNECTED + r[AapPodState.BatteryType.RIGHT]!!.charging shouldBe AapPodState.ChargingState.NOT_CHARGING + r[AapPodState.BatteryType.LEFT]!!.charging shouldBe AapPodState.ChargingState.NOT_CHARGING + r[AapPodState.BatteryType.CASE]!!.charging shouldBe AapPodState.ChargingState.DISCONNECTED } } @@ -116,57 +103,57 @@ class AirPodsPro3AapSessionTest : BaseAapSessionTest() { @Nested inner class SettingsSessionTests { @Test fun `ANC mode ON`() { - val anc = decodeSetting("04 00 04 00 09 00 0D 02 00 00 00") - anc.current shouldBe AncMode.Value.ON + val anc = decodeSetting("04 00 04 00 09 00 0D 02 00 00 00") + anc.current shouldBe AapSetting.AncMode.Value.ON anc.supported shouldContainExactly listOf( - AncMode.Value.ON, - AncMode.Value.TRANSPARENCY, - AncMode.Value.ADAPTIVE + AapSetting.AncMode.Value.ON, + AapSetting.AncMode.Value.TRANSPARENCY, + AapSetting.AncMode.Value.ADAPTIVE ) } @Test fun `press hold duration DEFAULT`() { - decodeSetting("04 00 04 00 09 00 18 00 00 00 00").value shouldBe PressHoldDuration.Value.DEFAULT + decodeSetting("04 00 04 00 09 00 18 00 00 00 00").value shouldBe AapSetting.PressHoldDuration.Value.DEFAULT } @Test fun `press speed DEFAULT`() { - decodeSetting("04 00 04 00 09 00 17 00 00 00 00").value shouldBe PressSpeed.Value.DEFAULT + decodeSetting("04 00 04 00 09 00 17 00 00 00 00").value shouldBe AapSetting.PressSpeed.Value.DEFAULT } @Test fun `volume swipe ON`() { - decodeSetting("04 00 04 00 09 00 25 01 00 00 00").enabled shouldBe true + decodeSetting("04 00 04 00 09 00 25 01 00 00 00").enabled shouldBe true } @Test fun `volume swipe length DEFAULT`() { - decodeSetting("04 00 04 00 09 00 23 00 00 00 00").value shouldBe VolumeSwipeLength.Value.DEFAULT + decodeSetting("04 00 04 00 09 00 23 00 00 00 00").value shouldBe AapSetting.VolumeSwipeLength.Value.DEFAULT } @Test fun `tone volume 80`() { - decodeSetting("04 00 04 00 09 00 1F 50 50 00 00").level shouldBe 0x50 + decodeSetting("04 00 04 00 09 00 1F 50 50 00 00").level shouldBe 0x50 } @Test fun `end call mute mic - subtype 0x00`() { - decodeSetting("04 00 04 00 09 00 24 00 03 00 00").let { it.muteMic shouldBe MuteMicMode.DOUBLE_PRESS; it.endCall shouldBe EndCallMode.SINGLE_PRESS } + decodeSetting("04 00 04 00 09 00 24 00 03 00 00").let { it.muteMic shouldBe AapSetting.EndCallMuteMic.MuteMicMode.DOUBLE_PRESS; it.endCall shouldBe AapSetting.EndCallMuteMic.EndCallMode.SINGLE_PRESS } } @Test fun `conversational awareness OFF`() { - decodeSetting("04 00 04 00 09 00 28 02 00 00 00").enabled shouldBe false + decodeSetting("04 00 04 00 09 00 28 02 00 00 00").enabled shouldBe false } @Test fun `conversational awareness ON after reconnect`() { - decodeSetting("04 00 04 00 09 00 28 01 00 00 00").enabled shouldBe true + decodeSetting("04 00 04 00 09 00 28 01 00 00 00").enabled shouldBe true } @Test fun `personalized volume OFF`() { - decodeSetting("04 00 04 00 09 00 26 02 00 00 00").enabled shouldBe false + decodeSetting("04 00 04 00 09 00 26 02 00 00 00").enabled shouldBe false } @Test fun `adaptive audio noise 50`() { - decodeSetting("04 00 04 00 09 00 2E 32 00 00 00").level shouldBe 0x32 + decodeSetting("04 00 04 00 09 00 2E 32 00 00 00").level shouldBe 0x32 } @Test fun `NC one airpod OFF`() { - decodeSetting("04 00 04 00 09 00 1B 02 00 00 00").enabled shouldBe false + decodeSetting("04 00 04 00 09 00 1B 02 00 00 00").enabled shouldBe false } } @@ -175,11 +162,11 @@ class AirPodsPro3AapSessionTest : BaseAapSessionTest() { @Nested inner class AncModeSwitchingTests { @Test fun `device echoes TRANSPARENCY`() { - decodeSetting("04 00 04 00 09 00 0D 03 00 00 00").current shouldBe AncMode.Value.TRANSPARENCY + decodeSetting("04 00 04 00 09 00 0D 03 00 00 00").current shouldBe AapSetting.AncMode.Value.TRANSPARENCY } @Test fun `device echoes ADAPTIVE`() { - decodeSetting("04 00 04 00 09 00 0D 04 00 00 00").current shouldBe AncMode.Value.ADAPTIVE + decodeSetting("04 00 04 00 09 00 0D 04 00 00 00").current shouldBe AapSetting.AncMode.Value.ADAPTIVE } } @@ -187,7 +174,7 @@ class AirPodsPro3AapSessionTest : BaseAapSessionTest() { @Test fun `conversation awareness state - not speaking`() { - decodeSetting("04 00 04 00 4B 00 00").speaking shouldBe false + decodeSetting("04 00 04 00 4B 00 00").speaking shouldBe false } // ── Unhandled Messages ─────────────────────────────────── @@ -210,4 +197,4 @@ class AirPodsPro3AapSessionTest : BaseAapSessionTest() { } } } -} +} \ No newline at end of file diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapFramerTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapFramerTest.kt similarity index 98% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapFramerTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapFramerTest.kt index 3f3906a3..65940bd7 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapFramerTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapFramerTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol import io.kotest.matchers.collections.shouldBeEmpty import io.kotest.matchers.collections.shouldHaveSize diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessageTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageTest.kt similarity index 97% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessageTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageTest.kt index 773ff337..ee76afa8 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/AapMessageTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/AapMessageTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/BaseAapSessionTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/BaseAapSessionTest.kt similarity index 95% rename from app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/BaseAapSessionTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/BaseAapSessionTest.kt index be925faa..bfabdacf 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/protocol/aap/BaseAapSessionTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/aap/protocol/BaseAapSessionTest.kt @@ -1,11 +1,11 @@ -package eu.darken.capod.pods.core.apple.protocol.aap +package eu.darken.capod.pods.core.apple.aap.protocol -import eu.darken.capod.pods.core.PodModel +import eu.darken.capod.pods.core.apple.PodModel import testhelpers.BaseTest /** * Shared base for AAP protocol tests. Provides hex parsing, message builders, - * and type-safe setting extraction — mirrors [eu.darken.capod.pods.core.apple.BaseBlePodsTest] + * and type-safe setting extraction — mirrors [eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest] * for the BLE path. * * Subclasses set [podModel] to get a correctly-configured [profile]. diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/AirPodsFactoryTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/AirPodsFactoryTest.kt similarity index 69% rename from app/src/test/java/eu/darken/capod/pods/core/apple/AirPodsFactoryTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/AirPodsFactoryTest.kt index d59a71fb..4241fb71 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/AirPodsFactoryTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/AirPodsFactoryTest.kt @@ -1,9 +1,11 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.apple.airpods.AirPodsGen1 -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro -import eu.darken.capod.pods.core.apple.misc.UnknownAppleSnapshotBle +import eu.darken.capod.pods.core.apple.ble.devices.ApplePods +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsGen1 +import eu.darken.capod.pods.core.apple.ble.devices.airpods.AirPodsPro +import eu.darken.capod.pods.core.apple.ble.devices.misc.UnknownAppleSnapshotBle import io.kotest.matchers.shouldBe import io.kotest.matchers.types.instanceOf import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/BaseBlePodsTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BaseBlePodsTest.kt similarity index 89% rename from app/src/test/java/eu/darken/capod/pods/core/apple/BaseBlePodsTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BaseBlePodsTest.kt index 3dd915ee..755db0d4 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/BaseBlePodsTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BaseBlePodsTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import dagger.BindsInstance import dagger.Component @@ -6,8 +6,10 @@ import eu.darken.capod.common.SystemClockWrap import eu.darken.capod.common.bluetooth.BleScanResult import eu.darken.capod.common.fromHex import eu.darken.capod.common.serialization.SerializationModule -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.apple.protocol.ContinuityProtocol +import eu.darken.capod.pods.core.apple.ble.AppleFactory +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.ble.AppleFactoryModule +import eu.darken.capod.pods.core.apple.ble.protocol.ContinuityProtocol import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo import io.mockk.MockKAnnotations diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/BasicSingleApplePodsTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BasicSingleApplePodsTest.kt similarity index 95% rename from app/src/test/java/eu/darken/capod/pods/core/apple/BasicSingleApplePodsTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BasicSingleApplePodsTest.kt index 3a86f71c..769e5edb 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/BasicSingleApplePodsTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/BasicSingleApplePodsTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/DualApplePodsTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePodsTest.kt similarity index 98% rename from app/src/test/java/eu/darken/capod/pods/core/apple/DualApplePodsTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePodsTest.kt index 88af27aa..2916ba4b 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/DualApplePodsTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/DualApplePodsTest.kt @@ -1,6 +1,6 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices -import eu.darken.capod.pods.core.apple.airpods.HasStateDetectionAirPods +import eu.darken.capod.pods.core.apple.ble.devices.airpods.HasStateDetectionAirPods import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/SingleApplePodsTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePodsTest.kt similarity index 93% rename from app/src/test/java/eu/darken/capod/pods/core/apple/SingleApplePodsTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePodsTest.kt index d7ed8839..c1e302bd 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/SingleApplePodsTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/SingleApplePodsTest.kt @@ -1,4 +1,4 @@ -package eu.darken.capod.pods.core.apple +package eu.darken.capod.pods.core.apple.ble.devices import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1Test.kt similarity index 82% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1Test.kt index 8150ae95..275eb5b5 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen1Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen1Test.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2Test.kt similarity index 82% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2Test.kt index 421e1160..9a631178 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen2Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen2Test.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3Test.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3Test.kt index 8ea772bd..0a58ce07 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen3Test.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4AncTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4AncTest.kt similarity index 82% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4AncTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4AncTest.kt index e932b615..95c9d299 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4AncTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4AncTest.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Test.kt similarity index 82% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Test.kt index 858ea20a..acd25181 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsGen4Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsGen4Test.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.DualApplePods -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxTest.kt similarity index 93% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxTest.kt index a3f8eacf..ea26f48a 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxTest.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.isBitSet -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbcTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbcTest.kt similarity index 85% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbcTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbcTest.kt index a61647a0..974427c2 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsMaxUsbcTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsMaxUsbcTest.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Test.kt similarity index 91% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Test.kt index 24ac2307..29d56405 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2Test.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2UsbcTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2UsbcTest.kt similarity index 90% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2UsbcTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2UsbcTest.kt index 4fb9c9da..368708f1 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro2UsbcTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro2UsbcTest.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3Test.kt similarity index 93% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3Test.kt index 779f6a0a..b79244f8 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsPro3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsPro3Test.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsProTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsProTest.kt similarity index 97% rename from app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsProTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsProTest.kt index bc4d39d6..05af391a 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/airpods/AirPodsProTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/airpods/AirPodsProTest.kt @@ -1,9 +1,9 @@ -package eu.darken.capod.pods.core.apple.airpods +package eu.darken.capod.pods.core.apple.ble.devices.airpods import eu.darken.capod.common.toHex -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import eu.darken.capod.profiles.core.AppleDeviceProfile import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFitProTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitProTest.kt similarity index 91% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFitProTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitProTest.kt index 3228b8c1..0d58978c 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFitProTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFitProTest.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFlexText.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlexText.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFlexText.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlexText.kt index 14acd01a..325d95a4 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsFlexText.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsFlexText.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3Test.kt similarity index 84% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3Test.kt index a9ab9174..2ca4e4df 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsSolo3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsSolo3Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3Test.kt similarity index 84% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3Test.kt index 79f86e6b..b03a8a17 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsStudio3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsStudio3Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsXTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsXTest.kt similarity index 84% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsXTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsXTest.kt index 2fde8514..298b1746 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/BeatsXTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/BeatsXTest.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3Test.kt similarity index 84% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3Test.kt index 60b0c36e..e4cc166c 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats3Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4Test.kt similarity index 90% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4Test.kt index 4d60f6dd..f294e8ea 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeats4Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeats4Test.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.airpods.HasStateDetectionAirPods +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.airpods.HasStateDetectionAirPods import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2Test.kt similarity index 89% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2Test.kt index 1909be41..c1b98ae1 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsPro2Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsPro2Test.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsProTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsProTest.kt similarity index 91% rename from app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsProTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsProTest.kt index b5125172..0a7de9f9 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/beats/PowerBeatsProTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/beats/PowerBeatsProTest.kt @@ -1,8 +1,8 @@ -package eu.darken.capod.pods.core.apple.beats +package eu.darken.capod.pods.core.apple.ble.devices.beats -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest -import eu.darken.capod.pods.core.apple.HasAppleColor +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.ble.devices.HasAppleColor import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1Test.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1Test.kt index ea101f6d..e14843d2 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen1Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen1Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2Test.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2Test.kt index 04aab399..c2981c9a 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen2Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen2Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3Test.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3Test.kt index e3e15230..7216b1fd 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsGen3Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsGen3Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2Test.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2Test.kt similarity index 91% rename from app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2Test.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2Test.kt index 7564642b..c20f68c8 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsPro2Test.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsPro2Test.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsProTest.kt b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsProTest.kt similarity index 87% rename from app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsProTest.kt rename to app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsProTest.kt index 55d5e89d..204f88cc 100644 --- a/app/src/test/java/eu/darken/capod/pods/core/apple/misc/FakeAirPodsProTest.kt +++ b/app/src/test/java/eu/darken/capod/pods/core/apple/ble/devices/misc/FakeAirPodsProTest.kt @@ -1,7 +1,7 @@ -package eu.darken.capod.pods.core.apple.misc +package eu.darken.capod.pods.core.apple.ble.devices.misc -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.BaseBlePodsTest +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.ble.devices.BaseBlePodsTest import io.kotest.matchers.shouldBe import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Test diff --git a/app/src/test/java/eu/darken/capod/reaction/core/aap/AapAutoConnectTest.kt b/app/src/test/java/eu/darken/capod/reaction/core/aap/AapAutoConnectTest.kt index 5c56f4cb..31ff379f 100644 --- a/app/src/test/java/eu/darken/capod/reaction/core/aap/AapAutoConnectTest.kt +++ b/app/src/test/java/eu/darken/capod/reaction/core/aap/AapAutoConnectTest.kt @@ -3,16 +3,14 @@ package eu.darken.capod.reaction.core.aap import eu.darken.capod.common.bluetooth.BluetoothDevice2 import eu.darken.capod.common.bluetooth.BluetoothManager2 import eu.darken.capod.monitor.core.BlePodMonitor -import eu.darken.capod.pods.core.BlePodSnapshot -import eu.darken.capod.pods.core.PodModel -import eu.darken.capod.pods.core.apple.protocol.aap.AapConnectionManager +import eu.darken.capod.pods.core.apple.ble.BlePodSnapshot +import eu.darken.capod.pods.core.apple.PodModel +import eu.darken.capod.pods.core.apple.aap.AapConnectionManager -import eu.darken.capod.pods.core.apple.protocol.aap.AapPodState +import eu.darken.capod.pods.core.apple.aap.AapPodState import eu.darken.capod.profiles.core.AppleDeviceProfile import eu.darken.capod.profiles.core.DeviceProfile import eu.darken.capod.profiles.core.DeviceProfilesRepo -import io.kotest.matchers.shouldBe -import io.mockk.coEvery import io.mockk.coVerify import io.mockk.every import io.mockk.mockk @@ -29,7 +27,6 @@ import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import testhelpers.BaseTest -import java.io.IOException @OptIn(ExperimentalCoroutinesApi::class) class AapAutoConnectTest : BaseTest() { diff --git a/app/src/test/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectLogicTest.kt b/app/src/test/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectLogicTest.kt index 6c5d7fa0..0f11600d 100644 --- a/app/src/test/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectLogicTest.kt +++ b/app/src/test/java/eu/darken/capod/reaction/core/autoconnect/AutoConnectLogicTest.kt @@ -1,6 +1,6 @@ package eu.darken.capod.reaction.core.autoconnect -import eu.darken.capod.pods.core.apple.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods import io.kotest.matchers.shouldBe import io.mockk.mockk import org.junit.jupiter.api.BeforeEach diff --git a/app/src/test/java/eu/darken/capod/reaction/core/popup/PopUpReactionLogicTest.kt b/app/src/test/java/eu/darken/capod/reaction/core/popup/PopUpReactionLogicTest.kt index 1ffd3757..6a9d564a 100644 --- a/app/src/test/java/eu/darken/capod/reaction/core/popup/PopUpReactionLogicTest.kt +++ b/app/src/test/java/eu/darken/capod/reaction/core/popup/PopUpReactionLogicTest.kt @@ -1,6 +1,6 @@ package eu.darken.capod.reaction.core.popup -import eu.darken.capod.pods.core.apple.DualApplePods +import eu.darken.capod.pods.core.apple.ble.devices.DualApplePods import io.kotest.matchers.shouldBe import io.mockk.mockk import org.junit.jupiter.api.BeforeEach