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"