diff --git a/app/build.gradle b/app/build.gradle index 0af4ebbe..e40829cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ kotlin { } dependencies { + implementation project(":data") implementation project(":domain") // Android implementation "androidx.core:core-splashscreen:$splashscreen_version" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a3488121..1bcd7b01 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,13 +2,7 @@ - - - - + + + diff --git a/app/src/main/java/com/rtbishop/look4sat/MainContainer.kt b/app/src/main/java/com/rtbishop/look4sat/MainContainer.kt index ef60bcdf..d5ab8064 100644 --- a/app/src/main/java/com/rtbishop/look4sat/MainContainer.kt +++ b/app/src/main/java/com/rtbishop/look4sat/MainContainer.kt @@ -6,23 +6,23 @@ import android.hardware.Sensor import android.hardware.SensorManager import android.location.LocationManager import androidx.room.Room -import com.rtbishop.look4sat.domain.data.DataParser -import com.rtbishop.look4sat.domain.data.DatabaseRepo -import com.rtbishop.look4sat.domain.data.ISensorSource -import com.rtbishop.look4sat.domain.data.SatelliteRepo -import com.rtbishop.look4sat.domain.data.SelectionRepo -import com.rtbishop.look4sat.domain.predict.IDatabaseRepo -import com.rtbishop.look4sat.domain.predict.ISatelliteRepo -import com.rtbishop.look4sat.domain.predict.ISelectionRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo -import com.rtbishop.look4sat.framework.BluetoothReporter -import com.rtbishop.look4sat.framework.NetworkReporter -import com.rtbishop.look4sat.framework.SettingsRepo -import com.rtbishop.look4sat.framework.data.DataSource -import com.rtbishop.look4sat.framework.data.LocalStorage -import com.rtbishop.look4sat.framework.data.MIGRATION_1_2 -import com.rtbishop.look4sat.framework.data.MainDatabase -import com.rtbishop.look4sat.framework.data.SensorSource +import com.rtbishop.look4sat.data.database.MIGRATION_1_2 +import com.rtbishop.look4sat.data.database.MainDatabase +import com.rtbishop.look4sat.data.framework.BluetoothReporter +import com.rtbishop.look4sat.data.framework.NetworkReporter +import com.rtbishop.look4sat.data.framework.SettingsRepo +import com.rtbishop.look4sat.data.repository.DataParser +import com.rtbishop.look4sat.data.repository.DatabaseRepo +import com.rtbishop.look4sat.data.repository.SatelliteRepo +import com.rtbishop.look4sat.data.repository.SelectionRepo +import com.rtbishop.look4sat.data.source.DataSource +import com.rtbishop.look4sat.data.source.LocalStorage +import com.rtbishop.look4sat.data.source.SensorSource +import com.rtbishop.look4sat.domain.repository.IDatabaseRepo +import com.rtbishop.look4sat.domain.repository.ISatelliteRepo +import com.rtbishop.look4sat.domain.repository.ISelectionRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo +import com.rtbishop.look4sat.domain.source.ISensorSource import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesViewModel.kt index e0f894df..24265703 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entries/EntriesViewModel.kt @@ -24,7 +24,7 @@ import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import com.rtbishop.look4sat.MainApplication -import com.rtbishop.look4sat.domain.predict.ISelectionRepo +import com.rtbishop.look4sat.domain.repository.ISelectionRepo import kotlinx.coroutines.delay import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapData.kt index a0ecd2a6..839fdc0a 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapData.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapData.kt @@ -17,7 +17,7 @@ */ package com.rtbishop.look4sat.presentation.map -import com.rtbishop.look4sat.domain.model.GeoPos +import com.rtbishop.look4sat.domain.predict.GeoPos data class MapData( val catNum: Int, diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt index cb4121b2..020ec7ac 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapScreen.kt @@ -28,8 +28,8 @@ import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.viewmodel.compose.viewModel import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.SatPos +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.predict.SatPos import com.rtbishop.look4sat.domain.predict.Satellite import org.osmdroid.tileprovider.tilesource.XYTileSource import org.osmdroid.util.GeoPoint diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt index ed8b0c32..7a28d6a2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt @@ -23,11 +23,11 @@ import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import com.rtbishop.look4sat.MainApplication -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.SatPos -import com.rtbishop.look4sat.domain.predict.ISatelliteRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.predict.SatPos import com.rtbishop.look4sat.domain.predict.Satellite +import com.rtbishop.look4sat.domain.repository.ISatelliteRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo import com.rtbishop.look4sat.domain.utility.QthConverter import com.rtbishop.look4sat.domain.utility.toDegrees import com.rtbishop.look4sat.domain.utility.toTimerString @@ -44,9 +44,7 @@ import kotlin.collections.set import kotlin.math.max import kotlin.math.min -class MapViewModel( - private val satelliteRepo: ISatelliteRepo, private val settingsRepo: ISettingsRepo -) : ViewModel() { +class MapViewModel(private val satelliteRepo: ISatelliteRepo, settingsRepo: ISettingsRepo) : ViewModel() { private val stationPos = settingsRepo.stationPosition.value private var allPasses = satelliteRepo.passes.value diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt index 8a194f9b..51cd2551 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesScreen.kt @@ -23,9 +23,9 @@ import androidx.compose.ui.unit.* import androidx.lifecycle.viewmodel.compose.viewModel import com.rtbishop.look4sat.R import com.rtbishop.look4sat.domain.model.DataState -import com.rtbishop.look4sat.domain.model.OrbitalData -import com.rtbishop.look4sat.domain.model.SatPass import com.rtbishop.look4sat.domain.predict.NearEarthSatellite +import com.rtbishop.look4sat.domain.predict.OrbitalData +import com.rtbishop.look4sat.domain.predict.SatPass import com.rtbishop.look4sat.presentation.* import com.rtbishop.look4sat.presentation.dialogs.FilterDialog import com.rtbishop.look4sat.presentation.pullRefresh.PullRefreshIndicator diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesViewModel.kt index 1e2f9cdc..83000990 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passes/PassesViewModel.kt @@ -25,9 +25,9 @@ import androidx.lifecycle.viewmodel.viewModelFactory import com.rtbishop.look4sat.MainApplication import com.rtbishop.look4sat.domain.model.DataState import com.rtbishop.look4sat.domain.model.PassesSettings -import com.rtbishop.look4sat.domain.model.SatPass -import com.rtbishop.look4sat.domain.predict.ISatelliteRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.predict.SatPass +import com.rtbishop.look4sat.domain.repository.ISatelliteRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo import com.rtbishop.look4sat.domain.utility.toTimerString import kotlinx.coroutines.Job import kotlinx.coroutines.cancelAndJoin diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarData.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarData.kt index dde0e8c0..7a27df5b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarData.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarData.kt @@ -17,6 +17,6 @@ */ package com.rtbishop.look4sat.presentation.radar -import com.rtbishop.look4sat.domain.model.SatPos +import com.rtbishop.look4sat.domain.predict.SatPos data class RadarData(val satPos: SatPos, val satTrack: List = emptyList()) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarView.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarView.kt index ae6bae5e..dcfc1884 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarView.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarView.kt @@ -14,8 +14,8 @@ import androidx.compose.ui.graphics.* import androidx.compose.ui.graphics.drawscope.* import androidx.compose.ui.text.* import androidx.compose.ui.unit.sp -import com.rtbishop.look4sat.domain.model.SatPos import com.rtbishop.look4sat.domain.predict.PI_2 +import com.rtbishop.look4sat.domain.predict.SatPos import com.rtbishop.look4sat.domain.utility.toRadians import kotlin.math.cos import kotlin.math.sin diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt index 68d9b52f..383ba360 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt @@ -28,18 +28,18 @@ import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import com.rtbishop.look4sat.MainApplication -import com.rtbishop.look4sat.domain.data.ISensorSource -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.SatPass -import com.rtbishop.look4sat.domain.model.SatPos +import com.rtbishop.look4sat.data.framework.BluetoothReporter +import com.rtbishop.look4sat.data.framework.NetworkReporter import com.rtbishop.look4sat.domain.model.SatRadio -import com.rtbishop.look4sat.domain.predict.ISatelliteRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.predict.SatPass +import com.rtbishop.look4sat.domain.predict.SatPos import com.rtbishop.look4sat.domain.predict.Satellite +import com.rtbishop.look4sat.domain.repository.ISatelliteRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo +import com.rtbishop.look4sat.domain.source.ISensorSource import com.rtbishop.look4sat.domain.utility.round import com.rtbishop.look4sat.domain.utility.toDegrees -import com.rtbishop.look4sat.framework.BluetoothReporter -import com.rtbishop.look4sat.framework.NetworkReporter import kotlinx.coroutines.delay import kotlinx.coroutines.flow.flow import kotlinx.coroutines.isActive diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt index 45028511..985ef0f3 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt @@ -37,8 +37,8 @@ import androidx.compose.ui.unit.sp import androidx.lifecycle.viewmodel.compose.viewModel import com.rtbishop.look4sat.BuildConfig import com.rtbishop.look4sat.R -import com.rtbishop.look4sat.domain.model.GeoPos import com.rtbishop.look4sat.domain.model.OtherSettings +import com.rtbishop.look4sat.domain.predict.GeoPos import com.rtbishop.look4sat.presentation.CardButton import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.dialogs.LocatorDialog diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsUiState.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsUiState.kt index c1c2fdd9..2ad41bdb 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsUiState.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsUiState.kt @@ -1,6 +1,6 @@ package com.rtbishop.look4sat.presentation.settings -import com.rtbishop.look4sat.domain.model.GeoPos +import com.rtbishop.look4sat.domain.predict.GeoPos data class PositionSettings(val isUpdating: Boolean, val stationPos: GeoPos, val messageResId: Int) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsViewModel.kt index 37c86747..2df66b57 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsViewModel.kt @@ -27,8 +27,8 @@ import androidx.lifecycle.viewmodel.viewModelFactory import com.rtbishop.look4sat.MainApplication import com.rtbishop.look4sat.R import com.rtbishop.look4sat.domain.model.OtherSettings -import com.rtbishop.look4sat.domain.predict.IDatabaseRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.repository.IDatabaseRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo import kotlinx.coroutines.launch class SettingsViewModel( diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/data/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/build.gradle b/data/build.gradle new file mode 100644 index 00000000..e7478ddd --- /dev/null +++ b/data/build.gradle @@ -0,0 +1,56 @@ +plugins { + id "com.android.library" + id "com.google.devtools.ksp" + id "org.jetbrains.kotlin.android" +} + +android { + namespace "com.rtbishop.look4sat.data" + compileSdk 33 + + defaultConfig { + minSdk 21 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + testOptions { + animationsDisabled true + unitTests.includeAndroidResources true + } +} + +kotlin { + jvmToolchain(17) +} + +dependencies { + implementation project(":domain") + // Android + implementation "androidx.core:core-ktx:1.10.1" + implementation "androidx.room:room-runtime:$room_version" + implementation "androidx.room:room-ktx:$room_version" + ksp "androidx.room:room-compiler:$room_version" + // Utility + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_test_version" + implementation "com.squareup.okhttp3:okhttp:$okhttp_version" + // Test + testImplementation "junit:junit:$junit_version" + testImplementation "io.mockk:mockk:$mockk_version" + testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_test_version" + androidTestImplementation "androidx.test.ext:junit:1.1.5" + androidTestImplementation "androidx.test.espresso:espresso-core:3.5.1" +} diff --git a/data/src/androidTest/java/com/rtbishop/look4sat/data/ExampleInstrumentedTest.kt b/data/src/androidTest/java/com/rtbishop/look4sat/data/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..704a0cb6 --- /dev/null +++ b/data/src/androidTest/java/com/rtbishop/look4sat/data/ExampleInstrumentedTest.kt @@ -0,0 +1,22 @@ +package com.rtbishop.look4sat.data + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.* +import org.junit.Test +import org.junit.runner.RunWith + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.rtbishop.look4sat.data.test", appContext.packageName) + } +} diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml new file mode 100644 index 00000000..297151a1 --- /dev/null +++ b/data/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/data/MainDatabase.kt b/data/src/main/java/com/rtbishop/look4sat/data/database/MainDatabase.kt similarity index 90% rename from app/src/main/java/com/rtbishop/look4sat/framework/data/MainDatabase.kt rename to data/src/main/java/com/rtbishop/look4sat/data/database/MainDatabase.kt index c26a9b18..7ebf68d1 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/data/MainDatabase.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/database/MainDatabase.kt @@ -15,14 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.data +package com.rtbishop.look4sat.data.database import androidx.room.Database import androidx.room.RoomDatabase import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase -import com.rtbishop.look4sat.framework.model.SatEntry -import com.rtbishop.look4sat.framework.model.SatRadio +import com.rtbishop.look4sat.data.database.dao.StorageDao +import com.rtbishop.look4sat.data.database.entity.SatEntry +import com.rtbishop.look4sat.data.database.entity.SatRadio @Database(entities = [SatEntry::class, SatRadio::class], version = 2, exportSchema = false) abstract class MainDatabase : RoomDatabase() { diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/data/StorageDao.kt b/data/src/main/java/com/rtbishop/look4sat/data/database/dao/StorageDao.kt similarity index 88% rename from app/src/main/java/com/rtbishop/look4sat/framework/data/StorageDao.kt rename to data/src/main/java/com/rtbishop/look4sat/data/database/dao/StorageDao.kt index faad00f8..cefc1560 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/data/StorageDao.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/database/dao/StorageDao.kt @@ -15,12 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.data +package com.rtbishop.look4sat.data.database.dao import androidx.room.* -import com.rtbishop.look4sat.framework.model.SatEntry -import com.rtbishop.look4sat.framework.model.SatItem -import com.rtbishop.look4sat.framework.model.SatRadio +import com.rtbishop.look4sat.data.database.entity.SatEntry +import com.rtbishop.look4sat.data.database.entity.SatItem +import com.rtbishop.look4sat.data.database.entity.SatRadio @Dao interface StorageDao { diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatEntry.kt similarity index 90% rename from app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt rename to data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatEntry.kt index 7c9f2dad..15a975c2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatEntry.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatEntry.kt @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.model +package com.rtbishop.look4sat.data.database.entity import androidx.room.Embedded import androidx.room.Entity -import com.rtbishop.look4sat.domain.model.OrbitalData +import com.rtbishop.look4sat.domain.predict.OrbitalData @Entity(tableName = "entries", primaryKeys = ["catnum"]) data class SatEntry(@Embedded val data: OrbitalData, var comment: String? = null) diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatItem.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt rename to data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatItem.kt index 70f377f6..004b5bd2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatItem.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatItem.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.model +package com.rtbishop.look4sat.data.database.entity data class SatItem( val catnum: Int, diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatRadio.kt b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatRadio.kt similarity index 95% rename from app/src/main/java/com/rtbishop/look4sat/framework/model/SatRadio.kt rename to data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatRadio.kt index d37975fc..f53756cd 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/model/SatRadio.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/database/entity/SatRadio.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.model +package com.rtbishop.look4sat.data.database.entity import androidx.room.Entity import androidx.room.PrimaryKey diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/BluetoothReporter.kt b/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothReporter.kt similarity index 98% rename from app/src/main/java/com/rtbishop/look4sat/framework/BluetoothReporter.kt rename to data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothReporter.kt index 6b075bb0..30fe8f92 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/BluetoothReporter.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothReporter.kt @@ -1,4 +1,4 @@ -package com.rtbishop.look4sat.framework +package com.rtbishop.look4sat.data.framework import android.bluetooth.BluetoothManager import android.util.Log diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/NetworkReporter.kt b/data/src/main/java/com/rtbishop/look4sat/data/framework/NetworkReporter.kt similarity index 98% rename from app/src/main/java/com/rtbishop/look4sat/framework/NetworkReporter.kt rename to data/src/main/java/com/rtbishop/look4sat/data/framework/NetworkReporter.kt index 89128137..c8583354 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/NetworkReporter.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/framework/NetworkReporter.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework +package com.rtbishop.look4sat.data.framework import java.net.InetSocketAddress import java.nio.ByteBuffer diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/SettingsRepo.kt b/data/src/main/java/com/rtbishop/look4sat/data/framework/SettingsRepo.kt similarity index 98% rename from app/src/main/java/com/rtbishop/look4sat/framework/SettingsRepo.kt rename to data/src/main/java/com/rtbishop/look4sat/data/framework/SettingsRepo.kt index 204087d9..bf07d0f2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/SettingsRepo.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/framework/SettingsRepo.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework +package com.rtbishop.look4sat.data.framework import android.content.SharedPreferences import android.location.Criteria @@ -24,10 +24,10 @@ import androidx.core.content.edit import androidx.core.location.LocationManagerCompat import androidx.core.os.CancellationSignal import com.rtbishop.look4sat.domain.model.DatabaseState -import com.rtbishop.look4sat.domain.model.GeoPos import com.rtbishop.look4sat.domain.model.OtherSettings import com.rtbishop.look4sat.domain.model.PassesSettings -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.repository.ISettingsRepo import com.rtbishop.look4sat.domain.utility.QthConverter import com.rtbishop.look4sat.domain.utility.round import kotlinx.coroutines.flow.MutableStateFlow diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/DataParser.kt b/data/src/main/java/com/rtbishop/look4sat/data/repository/DataParser.kt similarity index 98% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/DataParser.kt rename to data/src/main/java/com/rtbishop/look4sat/data/repository/DataParser.kt index 21f4161d..fa825fad 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/DataParser.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/repository/DataParser.kt @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.data.repository -import com.rtbishop.look4sat.domain.model.OrbitalData import com.rtbishop.look4sat.domain.model.SatRadio +import com.rtbishop.look4sat.domain.predict.OrbitalData import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import org.json.JSONArray diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/DatabaseRepo.kt b/data/src/main/java/com/rtbishop/look4sat/data/repository/DatabaseRepo.kt similarity index 94% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/DatabaseRepo.kt rename to data/src/main/java/com/rtbishop/look4sat/data/repository/DatabaseRepo.kt index 63c4503e..4a343a78 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/DatabaseRepo.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/repository/DatabaseRepo.kt @@ -15,13 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.data.repository import com.rtbishop.look4sat.domain.model.DatabaseState import com.rtbishop.look4sat.domain.model.SatEntry import com.rtbishop.look4sat.domain.model.SatRadio -import com.rtbishop.look4sat.domain.predict.IDatabaseRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.repository.IDatabaseRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo +import com.rtbishop.look4sat.domain.source.IDataSource +import com.rtbishop.look4sat.domain.source.ILocalStorage import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.async import kotlinx.coroutines.withContext diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/SatelliteRepo.kt b/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt similarity index 96% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/SatelliteRepo.kt rename to data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt index 2dace970..701b8893 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/SatelliteRepo.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt @@ -15,15 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.data.repository -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.SatPass -import com.rtbishop.look4sat.domain.model.SatPos import com.rtbishop.look4sat.domain.model.SatRadio -import com.rtbishop.look4sat.domain.predict.ISatelliteRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.predict.SatPass +import com.rtbishop.look4sat.domain.predict.SatPos import com.rtbishop.look4sat.domain.predict.Satellite +import com.rtbishop.look4sat.domain.repository.ISatelliteRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo +import com.rtbishop.look4sat.domain.source.ILocalStorage import com.rtbishop.look4sat.domain.utility.round import com.rtbishop.look4sat.domain.utility.toDegrees import kotlinx.coroutines.CoroutineDispatcher diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/SelectionRepo.kt b/data/src/main/java/com/rtbishop/look4sat/data/repository/SelectionRepo.kt similarity index 93% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/SelectionRepo.kt rename to data/src/main/java/com/rtbishop/look4sat/data/repository/SelectionRepo.kt index 6ad093b8..8eb0c7ef 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/SelectionRepo.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/repository/SelectionRepo.kt @@ -1,8 +1,9 @@ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.data.repository import com.rtbishop.look4sat.domain.model.SatItem -import com.rtbishop.look4sat.domain.predict.ISelectionRepo -import com.rtbishop.look4sat.domain.predict.ISettingsRepo +import com.rtbishop.look4sat.domain.repository.ISelectionRepo +import com.rtbishop.look4sat.domain.repository.ISettingsRepo +import com.rtbishop.look4sat.domain.source.ILocalStorage import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/data/DataSource.kt b/data/src/main/java/com/rtbishop/look4sat/data/source/DataSource.kt similarity index 94% rename from app/src/main/java/com/rtbishop/look4sat/framework/data/DataSource.kt rename to data/src/main/java/com/rtbishop/look4sat/data/source/DataSource.kt index ae4635b7..61e17726 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/data/DataSource.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/source/DataSource.kt @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.data +package com.rtbishop.look4sat.data.source import android.content.ContentResolver import android.net.Uri -import com.rtbishop.look4sat.domain.data.IDataSource +import com.rtbishop.look4sat.domain.source.IDataSource import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext import okhttp3.OkHttpClient diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/data/LocalStorage.kt b/data/src/main/java/com/rtbishop/look4sat/data/source/LocalStorage.kt similarity index 89% rename from app/src/main/java/com/rtbishop/look4sat/framework/data/LocalStorage.kt rename to data/src/main/java/com/rtbishop/look4sat/data/source/LocalStorage.kt index 6eaa5b51..ad7f7c16 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/data/LocalStorage.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/source/LocalStorage.kt @@ -15,17 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.data +package com.rtbishop.look4sat.data.source -import com.rtbishop.look4sat.domain.data.ILocalStorage +import com.rtbishop.look4sat.data.database.dao.StorageDao import com.rtbishop.look4sat.domain.model.SatRadio import com.rtbishop.look4sat.domain.predict.Satellite +import com.rtbishop.look4sat.domain.source.ILocalStorage +import com.rtbishop.look4sat.data.database.entity.SatEntry as FrameworkEntry +import com.rtbishop.look4sat.data.database.entity.SatItem as FrameworkItem +import com.rtbishop.look4sat.data.database.entity.SatRadio as FrameworkRadio import com.rtbishop.look4sat.domain.model.SatEntry as DomainEntry import com.rtbishop.look4sat.domain.model.SatItem as DomainItem import com.rtbishop.look4sat.domain.model.SatRadio as DomainRadio -import com.rtbishop.look4sat.framework.model.SatEntry as FrameworkEntry -import com.rtbishop.look4sat.framework.model.SatItem as FrameworkItem -import com.rtbishop.look4sat.framework.model.SatRadio as FrameworkRadio class LocalStorage(private val storageDao: StorageDao) : ILocalStorage { diff --git a/app/src/main/java/com/rtbishop/look4sat/framework/data/SensorSource.kt b/data/src/main/java/com/rtbishop/look4sat/data/source/SensorSource.kt similarity index 96% rename from app/src/main/java/com/rtbishop/look4sat/framework/data/SensorSource.kt rename to data/src/main/java/com/rtbishop/look4sat/data/source/SensorSource.kt index de440c70..89122f74 100644 --- a/app/src/main/java/com/rtbishop/look4sat/framework/data/SensorSource.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/source/SensorSource.kt @@ -15,14 +15,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.framework.data +package com.rtbishop.look4sat.data.source import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager -import com.rtbishop.look4sat.domain.data.ISensorSource import com.rtbishop.look4sat.domain.predict.RAD2DEG +import com.rtbishop.look4sat.domain.source.ISensorSource import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlin.math.round diff --git a/domain/src/test/java/com/rtbishop/look4sat/domain/DataParserTest.kt b/data/src/test/java/com/rtbishop/look4sat/data/DataParserTest.kt similarity index 98% rename from domain/src/test/java/com/rtbishop/look4sat/domain/DataParserTest.kt rename to data/src/test/java/com/rtbishop/look4sat/data/DataParserTest.kt index 65aa1575..bf166e21 100644 --- a/domain/src/test/java/com/rtbishop/look4sat/domain/DataParserTest.kt +++ b/data/src/test/java/com/rtbishop/look4sat/data/DataParserTest.kt @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain +package com.rtbishop.look4sat.data -import com.rtbishop.look4sat.domain.data.DataParser +import com.rtbishop.look4sat.data.repository.DataParser import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.runTest diff --git a/data/src/test/java/com/rtbishop/look4sat/data/ExampleUnitTest.kt b/data/src/test/java/com/rtbishop/look4sat/data/ExampleUnitTest.kt new file mode 100644 index 00000000..8da4fe90 --- /dev/null +++ b/data/src/test/java/com/rtbishop/look4sat/data/ExampleUnitTest.kt @@ -0,0 +1,16 @@ +package com.rtbishop.look4sat.data + +import org.junit.Assert.assertEquals +import org.junit.Test + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} diff --git a/domain/build.gradle b/domain/build.gradle index fd4e9c1e..04873064 100644 --- a/domain/build.gradle +++ b/domain/build.gradle @@ -8,7 +8,6 @@ kotlin { dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_test_version" - implementation "org.json:json:$json_version" testImplementation "junit:junit:$junit_version" testImplementation "io.mockk:mockk:$mockk_version" diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt index c0740813..6c0580c7 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatEntry.kt @@ -17,4 +17,6 @@ */ package com.rtbishop.look4sat.domain.model +import com.rtbishop.look4sat.domain.predict.OrbitalData + data class SatEntry(val data: OrbitalData, var comment: String? = null) diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/DeepSpaceSatellite.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/DeepSpaceSatellite.kt index bfc0138d..1fb69237 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/DeepSpaceSatellite.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/DeepSpaceSatellite.kt @@ -17,7 +17,6 @@ */ package com.rtbishop.look4sat.domain.predict -import com.rtbishop.look4sat.domain.model.OrbitalData import kotlin.math.abs import kotlin.math.atan2 import kotlin.math.cos @@ -67,16 +66,16 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) { val coef = qoms24 * tsi.pow(4.0) val coef1 = coef / psisq.pow(3.5) val c2 = coef1 * dsv.xnodp * (dsv.aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq)) - + 0.75 * CK2 * tsi / psisq * x3thm1 * (8.0 + 3.0 * etasq * (8.0 + etasq))) + + 0.75 * CK2 * tsi / psisq * x3thm1 * (8.0 + 3.0 * etasq * (8.0 + etasq))) c1 = data.bstar * c2 dsv.sinio = sin(data.xincl) val a3ovk2 = -J3_HARMONIC / CK2 x1mth2 = 1.0 - dsv.theta2 c4 = 2 * dsv.xnodp * coef1 * dsv.aodp * dsv.betao2 * (eta * (2.0 + 0.5 * etasq) + data.eccn - * (0.5 + 2 * etasq) - 2 * CK2 * tsi / (dsv.aodp * psisq) - * (-3 * x3thm1 * (1.0 - 2 * eeta + etasq * (1.5 - 0.5 * eeta)) + (0.75 * x1mth2 - * (2.0 * etasq - eeta * (1.0 + etasq)) * cos(2.0 * data.omegao)))) + * (0.5 + 2 * etasq) - 2 * CK2 * tsi / (dsv.aodp * psisq) + * (-3 * x3thm1 * (1.0 - 2 * eeta + etasq * (1.5 - 0.5 * eeta)) + (0.75 * x1mth2 + * (2.0 * etasq - eeta * (1.0 + etasq)) * cos(2.0 * data.omegao)))) val theta4 = dsv.theta2 * dsv.theta2 val temp1 = 3.0 * CK2 * pinvsq * dsv.xnodp val temp2 = temp1 * CK2 * pinvsq @@ -180,6 +179,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) { var omgdot = 0.0 var xnodot = 0.0 var xnodp = 0.0 + // Used by dpsec and dpper parts of Deep() var xll = 0.0 var omgadf = 0.0 @@ -188,6 +188,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) { var xinc = 0.0 var xn = 0.0 var t = 0.0 + // Used by thetg and Deep() var ds50 = 0.0 } @@ -222,6 +223,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) { private val omegaq: Double private var zmol = 0.0 private var zmos = 0.0 + // Many fields below cannot be final because they are iteratively refined private var savtsn = 0.0 private var ee2 = 0.0 @@ -796,16 +798,16 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) { x2li = xli + xli xndot = d2201 * sin(x2omi + xli - g22) + d2211 * sin(xli - g22) + (d3210 - * sin(xomi + xli - g32)) + d3222 * sin(-xomi + xli - g32) + (d4410 - * sin(x2omi + x2li - g44)) + d4422 * sin(x2li - g44) + (d5220 - * sin(xomi + xli - g52)) + d5232 * sin(-xomi + xli - g52) + (d5421 - * sin(xomi + x2li - g54)) + d5433 * sin(-xomi + x2li - g54) + * sin(xomi + xli - g32)) + d3222 * sin(-xomi + xli - g32) + (d4410 + * sin(x2omi + x2li - g44)) + d4422 * sin(x2li - g44) + (d5220 + * sin(xomi + xli - g52)) + d5232 * sin(-xomi + xli - g52) + (d5421 + * sin(xomi + x2li - g54)) + d5433 * sin(-xomi + x2li - g54) xnddt = d2201 * cos(x2omi + xli - g22) + d2211 * cos(xli - g22) + (d3210 - * cos(xomi + xli - g32)) + d3222 * cos(-xomi + xli - g32) + (d5220 - * cos(xomi + xli - g52)) + d5232 * cos(-xomi + xli - g52) + (2 - * (d4410 * cos(x2omi + x2li - g44) + d4422 * cos(x2li - g44) + (d5421 - * cos(xomi + x2li - g54)) + d5433 * cos(-xomi + x2li - g54))) + * cos(xomi + xli - g32)) + d3222 * cos(-xomi + xli - g32) + (d5220 + * cos(xomi + xli - g52)) + d5232 * cos(-xomi + xli - g52) + (2 + * (d4410 * cos(x2omi + x2li - g44) + d4422 * cos(x2li - g44) + (d5421 + * cos(xomi + x2li - g54)) + d5433 * cos(-xomi + x2li - g54))) } xldot = xni + xfact xnddt *= xldot diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/model/GeoPos.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/GeoPos.kt similarity index 95% rename from domain/src/main/java/com/rtbishop/look4sat/domain/model/GeoPos.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/predict/GeoPos.kt index 02c2f8b7..20528cdb 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/model/GeoPos.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/GeoPos.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.model +package com.rtbishop.look4sat.domain.predict data class GeoPos( val latitude: Double, diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/NearEarthSatellite.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/NearEarthSatellite.kt index f324a318..7c9e6098 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/NearEarthSatellite.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/NearEarthSatellite.kt @@ -17,7 +17,6 @@ */ package com.rtbishop.look4sat.domain.predict -import com.rtbishop.look4sat.domain.model.OrbitalData import kotlin.math.abs import kotlin.math.atan2 import kotlin.math.cos @@ -88,7 +87,7 @@ class NearEarthSatellite(data: OrbitalData) : Satellite(data) { val coef1 = coef / psisq.pow(3.5) val bstar = data.bstar val c2 = coef1 * xnodp * (aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq)) + 0.75 - * CK2 * tsi / psisq * x3thm1 * (8.0 + 3.0 * etasq * (8.0 + etasq))) + * CK2 * tsi / psisq * x3thm1 * (8.0 + 3.0 * etasq * (8.0 + etasq))) c1 = bstar * c2 sinio = sin(data.xincl) val a3ovk2 = -J3_HARMONIC / CK2 @@ -96,9 +95,9 @@ class NearEarthSatellite(data: OrbitalData) : Satellite(data) { x1mth2 = 1.0 - theta2 val omegao = data.omegao c4 = 2 * xnodp * coef1 * aodp * betao2 * (eta * (2.0 + 0.5 * etasq) + eo * (0.5 + 2 * etasq) - - 2 * CK2 * tsi / (aodp * psisq) * (-3 * x3thm1 * (1.0 - 2 * eeta + etasq - * (1.5 - 0.5 * eeta)) + 0.75 * x1mth2 * (2.0 * etasq - eeta * (1.0 + etasq)) - * cos(2.0 * omegao))) + - 2 * CK2 * tsi / (aodp * psisq) * (-3 * x3thm1 * (1.0 - 2 * eeta + etasq + * (1.5 - 0.5 * eeta)) + 0.75 * x1mth2 * (2.0 * etasq - eeta * (1.0 + etasq)) + * cos(2.0 * omegao))) c5 = 2.0 * coef1 * aodp * betao2 * (1.0 + 2.75 * (etasq + eeta) + eeta * etasq) val theta4 = sqr(theta2) val temp1 = 3.0 * CK2 * pinvsq * xnodp diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/model/OrbitalData.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/OrbitalData.kt similarity index 74% rename from domain/src/main/java/com/rtbishop/look4sat/domain/model/OrbitalData.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/predict/OrbitalData.kt index c4393ea1..7f7e249d 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/model/OrbitalData.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/OrbitalData.kt @@ -15,14 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.model - -import com.rtbishop.look4sat.domain.predict.DEG2RAD -import com.rtbishop.look4sat.domain.predict.DeepSpaceSatellite -import com.rtbishop.look4sat.domain.predict.MIN_PER_DAY -import com.rtbishop.look4sat.domain.predict.NearEarthSatellite -import com.rtbishop.look4sat.domain.predict.Satellite -import com.rtbishop.look4sat.domain.predict.TWO_PI +package com.rtbishop.look4sat.domain.predict data class OrbitalData( val name: String, @@ -44,6 +37,5 @@ data class OrbitalData( // Space objects are classified as NearEarth (period < 225 min) or DeepSpace (period >= 225 min) val isDeepSpace: Boolean = orbitalPeriod >= 225.0 ) { - fun getSatellite(): Satellite = - if (isDeepSpace) DeepSpaceSatellite(this) else NearEarthSatellite(this) + fun getSatellite(): Satellite = if (isDeepSpace) DeepSpaceSatellite(this) else NearEarthSatellite(this) } diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt similarity index 92% rename from domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt index db1557d1..f939fce4 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPass.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPass.kt @@ -15,9 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.model - -import com.rtbishop.look4sat.domain.predict.Satellite +package com.rtbishop.look4sat.domain.predict data class SatPass( val aosTime: Long = 0L, diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPos.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPos.kt similarity index 87% rename from domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPos.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPos.kt index 40b414b9..623fc276 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/model/SatPos.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/SatPos.kt @@ -15,12 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.model +package com.rtbishop.look4sat.domain.predict -import com.rtbishop.look4sat.domain.predict.DEG2RAD -import com.rtbishop.look4sat.domain.predict.EARTH_RADIUS -import com.rtbishop.look4sat.domain.predict.RAD2DEG -import com.rtbishop.look4sat.domain.predict.SPEED_OF_LIGHT import kotlin.math.acos import kotlin.math.asin import kotlin.math.atan2 @@ -67,8 +63,7 @@ data class SatPos( val rads = azimuth * DEG2RAD val lat = asin(sin(latitude) * cos(beta) + (cos(latitude) * sin(beta) * cos(rads))) val lon = (longitude + atan2( - sin(rads) * sin(beta) * cos(latitude), - cos(beta) - sin(latitude) * sin(lat) + sin(rads) * sin(beta) * cos(latitude), cos(beta) - sin(latitude) * sin(lat) )) rangeCirclePoints.add(GeoPos(lat * RAD2DEG, lon * RAD2DEG)) } diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/Satellite.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/Satellite.kt index fe4392f5..870924e4 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/Satellite.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/predict/Satellite.kt @@ -17,9 +17,6 @@ */ package com.rtbishop.look4sat.domain.predict -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.OrbitalData -import com.rtbishop.look4sat.domain.model.SatPos import kotlin.math.abs import kotlin.math.acos import kotlin.math.asin @@ -64,7 +61,7 @@ abstract class Satellite(val data: OrbitalData) { var qoms24 = 0.0 var s4 = 0.0 - internal fun willBeSeen(pos: GeoPos): Boolean { + fun willBeSeen(pos: GeoPos): Boolean { return if (data.meanmo < 1e-8) false else { val sma = 331.25 * exp(ln(MIN_PER_DAY / data.meanmo) * (2.0 / 3.0)) @@ -75,7 +72,7 @@ abstract class Satellite(val data: OrbitalData) { } } - internal fun getPosition(pos: GeoPos, time: Long): SatPos { + fun getPosition(pos: GeoPos, time: Long): SatPos { satPos = SatPos() // Date/time at which the position and velocity were calculated julUTC = calcCurrentDaynum(time) + 2444238.5 @@ -352,7 +349,7 @@ abstract class Satellite(val data: OrbitalData) { val e = 0.01675104 - (0.0000418 + 0.000000126 * solTime) * solTime val c = radians( ((1.919460 - (0.004789 + 0.000014 * solTime) * solTime) * sin(m)) - + ((0.020094 - 0.000100 * solTime) * sin(2 * m)) + 0.000293 * sin(3 * m) + + ((0.020094 - 0.000100 * solTime) * sin(2 * m)) + 0.000293 * sin(3 * m) ) val o = radians(modulus(259.18 - 1934.142 * solTime, 360.0)) val lsa = modulus(l + c - radians(0.00569 - 0.00479 * sin(o)), TWO_PI) @@ -360,7 +357,7 @@ abstract class Satellite(val data: OrbitalData) { var r = (1.0000002 * (1.0 - sqr(e)) / (1.0 + e * cos(nu))) val eps = radians( 23.452294 - (0.0130125 + (0.00000164 - 0.000000503 * solTime) * solTime) - * solTime + 0.00256 * cos(o) + * solTime + 0.00256 * cos(o) ) r *= ASTRONOMICAL_UNIT return Vector4(r, r * cos(lsa), r * sin(lsa) * cos(eps), r * sin(lsa) * sin(eps)) diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/IDatabaseRepo.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/IDatabaseRepo.kt similarity index 95% rename from domain/src/main/java/com/rtbishop/look4sat/domain/predict/IDatabaseRepo.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/repository/IDatabaseRepo.kt index 5e465383..845d7087 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/IDatabaseRepo.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/IDatabaseRepo.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.predict +package com.rtbishop.look4sat.domain.repository interface IDatabaseRepo { diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISatelliteRepo.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISatelliteRepo.kt similarity index 75% rename from domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISatelliteRepo.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISatelliteRepo.kt index 944cc5cf..4a6ad3c4 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISatelliteRepo.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISatelliteRepo.kt @@ -1,9 +1,10 @@ -package com.rtbishop.look4sat.domain.predict +package com.rtbishop.look4sat.domain.repository -import com.rtbishop.look4sat.domain.model.GeoPos -import com.rtbishop.look4sat.domain.model.SatPass -import com.rtbishop.look4sat.domain.model.SatPos import com.rtbishop.look4sat.domain.model.SatRadio +import com.rtbishop.look4sat.domain.predict.GeoPos +import com.rtbishop.look4sat.domain.predict.SatPass +import com.rtbishop.look4sat.domain.predict.SatPos +import com.rtbishop.look4sat.domain.predict.Satellite import kotlinx.coroutines.flow.StateFlow interface ISatelliteRepo { diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISelectionRepo.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISelectionRepo.kt similarity index 90% rename from domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISelectionRepo.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISelectionRepo.kt index a57f52d0..7df489e0 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISelectionRepo.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISelectionRepo.kt @@ -1,4 +1,4 @@ -package com.rtbishop.look4sat.domain.predict +package com.rtbishop.look4sat.domain.repository import com.rtbishop.look4sat.domain.model.SatItem import kotlinx.coroutines.flow.Flow diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISettingsRepo.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISettingsRepo.kt similarity index 98% rename from domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISettingsRepo.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISettingsRepo.kt index b8ff60f1..efa57f4f 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/predict/ISettingsRepo.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/repository/ISettingsRepo.kt @@ -15,12 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.predict +package com.rtbishop.look4sat.domain.repository import com.rtbishop.look4sat.domain.model.DatabaseState -import com.rtbishop.look4sat.domain.model.GeoPos import com.rtbishop.look4sat.domain.model.OtherSettings import com.rtbishop.look4sat.domain.model.PassesSettings +import com.rtbishop.look4sat.domain.predict.GeoPos import kotlinx.coroutines.flow.StateFlow interface ISettingsRepo { diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/IDataSource.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/source/IDataSource.kt similarity index 95% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/IDataSource.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/source/IDataSource.kt index d5b97c32..329915e8 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/IDataSource.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/source/IDataSource.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.domain.source import java.io.InputStream diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/ILocalStorage.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/source/ILocalStorage.kt similarity index 97% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/ILocalStorage.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/source/ILocalStorage.kt index 1b0f5034..5b226faf 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/ILocalStorage.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/source/ILocalStorage.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.domain.source import com.rtbishop.look4sat.domain.model.SatEntry import com.rtbishop.look4sat.domain.model.SatItem diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/data/ISensorSource.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/source/ISensorSource.kt similarity index 79% rename from domain/src/main/java/com/rtbishop/look4sat/domain/data/ISensorSource.kt rename to domain/src/main/java/com/rtbishop/look4sat/domain/source/ISensorSource.kt index d7d5b7b3..92e34f8d 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/data/ISensorSource.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/source/ISensorSource.kt @@ -1,4 +1,4 @@ -package com.rtbishop.look4sat.domain.data +package com.rtbishop.look4sat.domain.source import kotlinx.coroutines.flow.StateFlow diff --git a/domain/src/main/java/com/rtbishop/look4sat/domain/utility/QthConverter.kt b/domain/src/main/java/com/rtbishop/look4sat/domain/utility/QthConverter.kt index ce6a7811..1e67cb3f 100644 --- a/domain/src/main/java/com/rtbishop/look4sat/domain/utility/QthConverter.kt +++ b/domain/src/main/java/com/rtbishop/look4sat/domain/utility/QthConverter.kt @@ -17,7 +17,7 @@ */ package com.rtbishop.look4sat.domain.utility -import com.rtbishop.look4sat.domain.model.GeoPos +import com.rtbishop.look4sat.domain.predict.GeoPos object QthConverter { diff --git a/settings.gradle b/settings.gradle index 076288fc..427a54ea 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,4 +14,5 @@ dependencyResolutionManagement { } rootProject.name = "Look4Sat" include ":app" +include ":data" include ":domain"