diff --git a/app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt b/app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt index 9cfb92cfb..c907a05fd 100644 --- a/app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt +++ b/app/src/main/kotlin/org/meshtastic/app/di/AppKoinModule.kt @@ -37,6 +37,7 @@ import org.meshtastic.core.database.di.CoreDatabaseAndroidModule import org.meshtastic.core.database.di.CoreDatabaseModule import org.meshtastic.core.datastore.di.CoreDatastoreAndroidModule import org.meshtastic.core.datastore.di.CoreDatastoreModule +import org.meshtastic.core.network.di.CoreNetworkAndroidModule import org.meshtastic.core.network.di.CoreNetworkModule import org.meshtastic.core.prefs.di.CorePrefsAndroidModule import org.meshtastic.core.prefs.di.CorePrefsModule @@ -44,7 +45,7 @@ import org.meshtastic.core.service.di.CoreServiceAndroidModule import org.meshtastic.core.service.di.CoreServiceModule import org.meshtastic.core.ui.di.CoreUiModule import org.meshtastic.feature.connections.di.FeatureConnectionsModule -import org.meshtastic.feature.connections.repository.ProbeTableProvider +import org.meshtastic.core.network.repository.ProbeTableProvider import org.meshtastic.feature.firmware.di.FeatureFirmwareModule import org.meshtastic.feature.intro.di.FeatureIntroModule import org.meshtastic.feature.map.di.FeatureMapModule @@ -72,6 +73,7 @@ import org.meshtastic.feature.settings.di.FeatureSettingsModule CoreServiceModule::class, CoreServiceAndroidModule::class, CoreNetworkModule::class, + CoreNetworkAndroidModule::class, CoreUiModule::class, FeatureNodeModule::class, FeatureMessagingModule::class, diff --git a/conductor/tracks/extract_services_20260317/plan.md b/conductor/tracks/extract_services_20260317/plan.md index 821f7890e..c2e582188 100644 --- a/conductor/tracks/extract_services_20260317/plan.md +++ b/conductor/tracks/extract_services_20260317/plan.md @@ -19,9 +19,9 @@ - [x] Task: Conductor - User Manual Verification 'Extraction to core:service' (Protocol in workflow.md) ## Phase 3: Extraction to `core:network` -- [ ] Task: Move Radio connection and networking files from `app` to `core:network/androidMain` - - [ ] Move the files - - [ ] Update imports and Koin injections +- [~] Task: Move Radio connection and networking files from `app` to `core:network/androidMain` + - [x] Move the files + - [x] Update imports and Koin injections - [ ] Task: Abstract shared radio/network logic into `core:network/commonMain` - [ ] Write failing tests for abstracted radio logic (TDD Red) - [ ] Extract platform-agnostic business logic (TDD Green) diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 06ac5016b..4fd91682f 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -51,7 +51,10 @@ kotlin { val jvmMain by getting { dependencies { implementation(libs.ktor.client.java) } } androidMain.dependencies { + implementation(projects.core.ble) + implementation(projects.core.prefs) implementation(libs.org.eclipse.paho.client.mqttv3) + implementation(libs.usb.serial.android) implementation(libs.coil.network.okhttp) implementation(libs.coil.svg) implementation(libs.ktor.client.okhttp) diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/AndroidRadioInterfaceService.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/AndroidRadioInterfaceService.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/AndroidRadioInterfaceService.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/AndroidRadioInterfaceService.kt index 88d739fe0..78da98714 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/AndroidRadioInterfaceService.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/AndroidRadioInterfaceService.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import android.app.Application import android.provider.Settings @@ -37,7 +37,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import org.koin.core.annotation.Named import org.koin.core.annotation.Single -import org.meshtastic.app.BuildConfig +import org.meshtastic.core.common.BuildConfigProvider import org.meshtastic.core.ble.BluetoothRepository import org.meshtastic.core.common.util.BinaryLogFile import org.meshtastic.core.common.util.handledLaunch @@ -53,7 +53,7 @@ import org.meshtastic.core.repository.PlatformAnalytics import org.meshtastic.core.repository.RadioInterfaceService import org.meshtastic.core.repository.RadioPrefs import org.meshtastic.core.repository.RadioTransport -import org.meshtastic.feature.connections.repository.NetworkRepository +import org.meshtastic.core.network.repository.NetworkRepository import org.meshtastic.proto.Heartbeat import org.meshtastic.proto.ToRadio @@ -73,6 +73,7 @@ class AndroidRadioInterfaceService( private val dispatchers: CoroutineDispatchers, private val bluetoothRepository: BluetoothRepository, private val networkRepository: NetworkRepository, + private val buildConfigProvider: BuildConfigProvider, @Named("ProcessLifecycle") private val processLifecycle: Lifecycle, private val radioPrefs: RadioPrefs, private val interfaceFactory: Lazy, @@ -187,7 +188,7 @@ class AndroidRadioInterfaceService( interfaceFactory.value.toInterfaceAddress(interfaceId, rest) override fun isMockInterface(): Boolean = - BuildConfig.DEBUG || Settings.System.getString(context.contentResolver, "firebase.test.lab") == "true" + buildConfigProvider.isDebug || Settings.System.getString(context.contentResolver, "firebase.test.lab") == "true" override fun getDeviceAddress(): String? { // If the user has unpaired our device, treat things as if we don't have one diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterface.kt similarity index 99% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterface.kt index b37fa1c53..46b6aa349 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterface.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import android.annotation.SuppressLint import co.touchlab.kermit.Logger diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceFactory.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceFactory.kt index 341fe1afe..26956824c 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceFactory.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.ble.BleConnectionFactory diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceSpec.kt similarity index 97% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceSpec.kt index aaa39b9bd..461ac4b65 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/BleRadioInterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceSpec.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactory.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactory.kt index 91f16e0d9..47a1365d2 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactory.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.model.InterfaceId diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactorySpi.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactorySpi.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactorySpi.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactorySpi.kt index b9856af82..5354f5500 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceFactorySpi.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceFactorySpi.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.meshtastic.core.repository.RadioTransport diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceSpec.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceSpec.kt index 7ac3619da..aec9ec667 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/InterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/InterfaceSpec.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.meshtastic.core.repository.RadioInterfaceService import org.meshtastic.core.repository.RadioTransport diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterface.kt similarity index 99% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterface.kt index 776729bba..8de3000af 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterface.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import co.touchlab.kermit.Logger import kotlinx.coroutines.delay diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceFactory.kt similarity index 95% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceFactory.kt index 5f8328d3a..492b5782c 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceFactory.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceSpec.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceSpec.kt index 13dcadd50..0f77cb5dc 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/MockInterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/MockInterfaceSpec.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterface.kt similarity index 95% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterface.kt index e9eed976a..27348635c 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterface.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.meshtastic.core.repository.RadioTransport diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceFactory.kt similarity index 95% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceFactory.kt index 56d58b846..5d9991e34 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceFactory.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceSpec.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceSpec.kt index 149a2469a..df77578bf 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/NopInterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/NopInterfaceSpec.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterface.kt similarity index 95% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterface.kt index c1f509499..8356e8a59 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterface.kt @@ -14,14 +14,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import co.touchlab.kermit.Logger import org.meshtastic.core.common.util.nowMillis import org.meshtastic.core.repository.RadioInterfaceService -import org.meshtastic.feature.connections.repository.SerialConnection -import org.meshtastic.feature.connections.repository.SerialConnectionListener -import org.meshtastic.feature.connections.repository.UsbRepository +import org.meshtastic.core.network.repository.SerialConnection +import org.meshtastic.core.network.repository.SerialConnectionListener +import org.meshtastic.core.network.repository.UsbRepository import java.util.concurrent.atomic.AtomicReference /** An interface that assumes we are talking to a meshtastic device via USB serial */ diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceFactory.kt similarity index 90% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceFactory.kt index c7a123cc3..830358c16 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceFactory.kt @@ -14,11 +14,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService -import org.meshtastic.feature.connections.repository.UsbRepository +import org.meshtastic.core.network.repository.UsbRepository /** Factory for creating `SerialInterface` instances. */ @Single diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceSpec.kt similarity index 94% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceSpec.kt index 54a44485b..b00491444 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/SerialInterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/SerialInterfaceSpec.kt @@ -14,13 +14,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import android.hardware.usb.UsbManager import com.hoho.android.usbserial.driver.UsbSerialDriver import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService -import org.meshtastic.feature.connections.repository.UsbRepository +import org.meshtastic.core.network.repository.UsbRepository /** Serial/USB interface backend implementation. */ @Single diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/StreamInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/StreamInterface.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/StreamInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/StreamInterface.kt index 477bd50d2..7414def38 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/StreamInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/StreamInterface.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import co.touchlab.kermit.Logger import kotlinx.coroutines.launch diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterface.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterface.kt similarity index 98% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterface.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterface.kt index 8217302ce..adab96d4d 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterface.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterface.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import co.touchlab.kermit.Logger import org.meshtastic.core.common.util.handledLaunch diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceFactory.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceFactory.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceFactory.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceFactory.kt index b11916940..003294448 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceFactory.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceFactory.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.di.CoroutineDispatchers diff --git a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceSpec.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceSpec.kt similarity index 96% rename from app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceSpec.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceSpec.kt index b48ee826c..2539bc13c 100644 --- a/app/src/main/kotlin/org/meshtastic/app/repository/radio/TCPInterfaceSpec.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/radio/TCPInterfaceSpec.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import org.koin.core.annotation.Single import org.meshtastic.core.repository.RadioInterfaceService diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ConnectivityManager.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ConnectivityManager.kt similarity index 97% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ConnectivityManager.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ConnectivityManager.kt index e245f2419..559b873d3 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ConnectivityManager.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ConnectivityManager.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.net.ConnectivityManager import android.net.Network diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NetworkRepository.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NetworkRepository.kt similarity index 98% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NetworkRepository.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NetworkRepository.kt index f44f7f173..2e0f797ef 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NetworkRepository.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NetworkRepository.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.net.ConnectivityManager import android.net.nsd.NsdManager diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NsdManager.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NsdManager.kt similarity index 99% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NsdManager.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NsdManager.kt index 6e7bf2eec..ab3926510 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/NsdManager.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/NsdManager.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.annotation.SuppressLint import android.net.nsd.NsdManager diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ProbeTableProvider.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ProbeTableProvider.kt similarity index 96% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ProbeTableProvider.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ProbeTableProvider.kt index 7d091f2ff..433d96de5 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/ProbeTableProvider.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/ProbeTableProvider.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import com.hoho.android.usbserial.driver.CdcAcmSerialDriver import com.hoho.android.usbserial.driver.ProbeTable diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnection.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnection.kt similarity index 95% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnection.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnection.kt index cb9dc679b..2ec10b7f1 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnection.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnection.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository /** USB serial connection. */ interface SerialConnection : AutoCloseable { diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionImpl.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionImpl.kt similarity index 98% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionImpl.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionImpl.kt index a06d5492d..e2d787920 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionImpl.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionImpl.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.hardware.usb.UsbManager import co.touchlab.kermit.Logger diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionListener.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionListener.kt similarity index 95% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionListener.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionListener.kt index 4dbc2b90d..b56236f5b 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/SerialConnectionListener.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/SerialConnectionListener.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository /** Callbacks indicating state changes in the USB serial connection. */ interface SerialConnectionListener { diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbBroadcastReceiver.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbBroadcastReceiver.kt similarity index 97% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbBroadcastReceiver.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbBroadcastReceiver.kt index d472e3bf8..79d09639a 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbBroadcastReceiver.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbBroadcastReceiver.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.content.BroadcastReceiver import android.content.Context diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbManager.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbManager.kt similarity index 97% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbManager.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbManager.kt index 66b3bb515..b36c5c3e9 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbManager.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbManager.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.content.BroadcastReceiver import android.content.Context diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbRepository.kt b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbRepository.kt similarity index 98% rename from feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbRepository.kt rename to core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbRepository.kt index e73871336..b4773dff3 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/repository/UsbRepository.kt +++ b/core/network/src/androidMain/kotlin/org/meshtastic/core/network/repository/UsbRepository.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository import android.app.Application import android.hardware.usb.UsbDevice diff --git a/core/network/src/androidUnitTest/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceTest.kt b/core/network/src/androidUnitTest/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceTest.kt index 706a47340..457a3a9d9 100644 --- a/core/network/src/androidUnitTest/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceTest.kt +++ b/core/network/src/androidUnitTest/kotlin/org/meshtastic/core/network/radio/BleRadioInterfaceTest.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.app.repository.radio +package org.meshtastic.core.network.radio import io.mockk.coEvery import io.mockk.every diff --git a/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/repository/NetworkConstants.kt b/core/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/NetworkConstants.kt similarity index 93% rename from feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/repository/NetworkConstants.kt rename to core/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/NetworkConstants.kt index 8a7cab5b6..e35abf554 100644 --- a/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/repository/NetworkConstants.kt +++ b/core/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/NetworkConstants.kt @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package org.meshtastic.feature.connections.repository +package org.meshtastic.core.network.repository object NetworkConstants { const val SERVICE_PORT = 4403 diff --git a/feature/connections/build.gradle.kts b/feature/connections/build.gradle.kts index 6b43d6376..292ebfa15 100644 --- a/feature/connections/build.gradle.kts +++ b/feature/connections/build.gradle.kts @@ -50,6 +50,7 @@ kotlin { implementation(projects.core.service) implementation(projects.core.ui) implementation(projects.core.ble) + implementation(projects.core.network) implementation(projects.feature.settings) implementation(libs.jetbrains.lifecycle.viewmodel.compose) diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/AndroidScannerViewModel.kt b/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/AndroidScannerViewModel.kt index fd97362c8..d701930ad 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/AndroidScannerViewModel.kt +++ b/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/AndroidScannerViewModel.kt @@ -32,7 +32,7 @@ import org.meshtastic.core.repository.ServiceRepository import org.meshtastic.feature.connections.model.AndroidUsbDeviceData import org.meshtastic.feature.connections.model.DeviceListEntry import org.meshtastic.feature.connections.model.GetDiscoveredDevicesUseCase -import org.meshtastic.feature.connections.repository.UsbRepository +import org.meshtastic.core.network.repository.UsbRepository @KoinViewModel @Suppress("LongParameterList", "TooManyFunctions") diff --git a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/domain/usecase/AndroidGetDiscoveredDevicesUseCase.kt b/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/domain/usecase/AndroidGetDiscoveredDevicesUseCase.kt index 5289f10c3..6a5ec0528 100644 --- a/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/domain/usecase/AndroidGetDiscoveredDevicesUseCase.kt +++ b/feature/connections/src/androidMain/kotlin/org/meshtastic/feature/connections/domain/usecase/AndroidGetDiscoveredDevicesUseCase.kt @@ -38,9 +38,9 @@ import org.meshtastic.feature.connections.model.DeviceListEntry import org.meshtastic.feature.connections.model.DiscoveredDevices import org.meshtastic.feature.connections.model.GetDiscoveredDevicesUseCase import org.meshtastic.feature.connections.model.getMeshtasticShortName -import org.meshtastic.feature.connections.repository.NetworkRepository -import org.meshtastic.feature.connections.repository.NetworkRepository.Companion.toAddressString -import org.meshtastic.feature.connections.repository.UsbRepository +import org.meshtastic.core.network.repository.NetworkRepository +import org.meshtastic.core.network.repository.NetworkRepository.Companion.toAddressString +import org.meshtastic.core.network.repository.UsbRepository import java.util.Locale @Suppress("LongParameterList") diff --git a/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/ui/components/NetworkDevices.kt b/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/ui/components/NetworkDevices.kt index ce530bac7..e179941f3 100644 --- a/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/ui/components/NetworkDevices.kt +++ b/feature/connections/src/commonMain/kotlin/org/meshtastic/feature/connections/ui/components/NetworkDevices.kt @@ -60,7 +60,7 @@ import org.meshtastic.core.resources.no_network_devices_found import org.meshtastic.core.resources.recent_network_devices import org.meshtastic.feature.connections.ScannerViewModel import org.meshtastic.feature.connections.model.DeviceListEntry -import org.meshtastic.feature.connections.repository.NetworkConstants +import org.meshtastic.core.network.repository.NetworkConstants @OptIn(ExperimentalMaterial3Api::class) @Composable