mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Extracted implementation classes into data module
This commit is contained in:
1 parent
5a449d4133
commit
28e926eb86
54 files changed
+247
-153
No files matched your search
@@ -53,6 +53,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation project(":data")
|
||||||
implementation project(":domain")
|
implementation project(":domain")
|
||||||
// Android
|
// Android
|
||||||
implementation "androidx.core:core-splashscreen:$splashscreen_version"
|
implementation "androidx.core:core-splashscreen:$splashscreen_version"
|
||||||
|
|||||||
@@ -2,13 +2,7 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission
|
|
||||||
android:name="android.permission.BLUETOOTH"
|
|
||||||
android:maxSdkVersion="30" />
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
@@ -23,6 +17,7 @@
|
|||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.Look4Sat.Main"
|
android:theme="@style/Theme.Look4Sat.Main"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
@@ -34,5 +29,7 @@
|
|||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -6,23 +6,23 @@ import android.hardware.Sensor
|
|||||||
import android.hardware.SensorManager
|
import android.hardware.SensorManager
|
||||||
import android.location.LocationManager
|
import android.location.LocationManager
|
||||||
import androidx.room.Room
|
import androidx.room.Room
|
||||||
import com.rtbishop.look4sat.domain.data.DataParser
|
import com.rtbishop.look4sat.data.database.MIGRATION_1_2
|
||||||
import com.rtbishop.look4sat.domain.data.DatabaseRepo
|
import com.rtbishop.look4sat.data.database.MainDatabase
|
||||||
import com.rtbishop.look4sat.domain.data.ISensorSource
|
import com.rtbishop.look4sat.data.framework.BluetoothReporter
|
||||||
import com.rtbishop.look4sat.domain.data.SatelliteRepo
|
import com.rtbishop.look4sat.data.framework.NetworkReporter
|
||||||
import com.rtbishop.look4sat.domain.data.SelectionRepo
|
import com.rtbishop.look4sat.data.framework.SettingsRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.IDatabaseRepo
|
import com.rtbishop.look4sat.data.repository.DataParser
|
||||||
import com.rtbishop.look4sat.domain.predict.ISatelliteRepo
|
import com.rtbishop.look4sat.data.repository.DatabaseRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISelectionRepo
|
import com.rtbishop.look4sat.data.repository.SatelliteRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
import com.rtbishop.look4sat.data.repository.SelectionRepo
|
||||||
import com.rtbishop.look4sat.framework.BluetoothReporter
|
import com.rtbishop.look4sat.data.source.DataSource
|
||||||
import com.rtbishop.look4sat.framework.NetworkReporter
|
import com.rtbishop.look4sat.data.source.LocalStorage
|
||||||
import com.rtbishop.look4sat.framework.SettingsRepo
|
import com.rtbishop.look4sat.data.source.SensorSource
|
||||||
import com.rtbishop.look4sat.framework.data.DataSource
|
import com.rtbishop.look4sat.domain.repository.IDatabaseRepo
|
||||||
import com.rtbishop.look4sat.framework.data.LocalStorage
|
import com.rtbishop.look4sat.domain.repository.ISatelliteRepo
|
||||||
import com.rtbishop.look4sat.framework.data.MIGRATION_1_2
|
import com.rtbishop.look4sat.domain.repository.ISelectionRepo
|
||||||
import com.rtbishop.look4sat.framework.data.MainDatabase
|
import com.rtbishop.look4sat.domain.repository.ISettingsRepo
|
||||||
import com.rtbishop.look4sat.framework.data.SensorSource
|
import com.rtbishop.look4sat.domain.source.ISensorSource
|
||||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import androidx.lifecycle.viewmodel.initializer
|
import androidx.lifecycle.viewmodel.initializer
|
||||||
import androidx.lifecycle.viewmodel.viewModelFactory
|
import androidx.lifecycle.viewmodel.viewModelFactory
|
||||||
import com.rtbishop.look4sat.MainApplication
|
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.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.presentation.map
|
package com.rtbishop.look4sat.presentation.map
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
|
|
||||||
data class MapData(
|
data class MapData(
|
||||||
val catNum: Int,
|
val catNum: Int,
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ import androidx.lifecycle.Lifecycle
|
|||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
import com.rtbishop.look4sat.domain.model.SatPos
|
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
import com.rtbishop.look4sat.domain.predict.Satellite
|
||||||
import org.osmdroid.tileprovider.tilesource.XYTileSource
|
import org.osmdroid.tileprovider.tilesource.XYTileSource
|
||||||
import org.osmdroid.util.GeoPoint
|
import org.osmdroid.util.GeoPoint
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import androidx.lifecycle.viewmodel.initializer
|
import androidx.lifecycle.viewmodel.initializer
|
||||||
import androidx.lifecycle.viewmodel.viewModelFactory
|
import androidx.lifecycle.viewmodel.viewModelFactory
|
||||||
import com.rtbishop.look4sat.MainApplication
|
import com.rtbishop.look4sat.MainApplication
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
import com.rtbishop.look4sat.domain.model.SatPos
|
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||||
import com.rtbishop.look4sat.domain.predict.ISatelliteRepo
|
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
|
||||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
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.QthConverter
|
||||||
import com.rtbishop.look4sat.domain.utility.toDegrees
|
import com.rtbishop.look4sat.domain.utility.toDegrees
|
||||||
import com.rtbishop.look4sat.domain.utility.toTimerString
|
import com.rtbishop.look4sat.domain.utility.toTimerString
|
||||||
@@ -44,9 +44,7 @@ import kotlin.collections.set
|
|||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
class MapViewModel(
|
class MapViewModel(private val satelliteRepo: ISatelliteRepo, settingsRepo: ISettingsRepo) : ViewModel() {
|
||||||
private val satelliteRepo: ISatelliteRepo, private val settingsRepo: ISettingsRepo
|
|
||||||
) : ViewModel() {
|
|
||||||
|
|
||||||
private val stationPos = settingsRepo.stationPosition.value
|
private val stationPos = settingsRepo.stationPosition.value
|
||||||
private var allPasses = satelliteRepo.passes.value
|
private var allPasses = satelliteRepo.passes.value
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ import androidx.compose.ui.unit.*
|
|||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.domain.model.DataState
|
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.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.*
|
||||||
import com.rtbishop.look4sat.presentation.dialogs.FilterDialog
|
import com.rtbishop.look4sat.presentation.dialogs.FilterDialog
|
||||||
import com.rtbishop.look4sat.presentation.pullRefresh.PullRefreshIndicator
|
import com.rtbishop.look4sat.presentation.pullRefresh.PullRefreshIndicator
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ import androidx.lifecycle.viewmodel.viewModelFactory
|
|||||||
import com.rtbishop.look4sat.MainApplication
|
import com.rtbishop.look4sat.MainApplication
|
||||||
import com.rtbishop.look4sat.domain.model.DataState
|
import com.rtbishop.look4sat.domain.model.DataState
|
||||||
import com.rtbishop.look4sat.domain.model.PassesSettings
|
import com.rtbishop.look4sat.domain.model.PassesSettings
|
||||||
import com.rtbishop.look4sat.domain.model.SatPass
|
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||||
import com.rtbishop.look4sat.domain.predict.ISatelliteRepo
|
import com.rtbishop.look4sat.domain.repository.ISatelliteRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
import com.rtbishop.look4sat.domain.repository.ISettingsRepo
|
||||||
import com.rtbishop.look4sat.domain.utility.toTimerString
|
import com.rtbishop.look4sat.domain.utility.toTimerString
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.cancelAndJoin
|
import kotlinx.coroutines.cancelAndJoin
|
||||||
|
|||||||
@@ -17,6 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.presentation.radar
|
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<SatPos> = emptyList())
|
data class RadarData(val satPos: SatPos, val satTrack: List<SatPos> = emptyList())
|
||||||
@@ -14,8 +14,8 @@ import androidx.compose.ui.graphics.*
|
|||||||
import androidx.compose.ui.graphics.drawscope.*
|
import androidx.compose.ui.graphics.drawscope.*
|
||||||
import androidx.compose.ui.text.*
|
import androidx.compose.ui.text.*
|
||||||
import androidx.compose.ui.unit.sp
|
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.PI_2
|
||||||
|
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||||
import com.rtbishop.look4sat.domain.utility.toRadians
|
import com.rtbishop.look4sat.domain.utility.toRadians
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
import kotlin.math.sin
|
import kotlin.math.sin
|
||||||
|
|||||||
@@ -28,18 +28,18 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import androidx.lifecycle.viewmodel.initializer
|
import androidx.lifecycle.viewmodel.initializer
|
||||||
import androidx.lifecycle.viewmodel.viewModelFactory
|
import androidx.lifecycle.viewmodel.viewModelFactory
|
||||||
import com.rtbishop.look4sat.MainApplication
|
import com.rtbishop.look4sat.MainApplication
|
||||||
import com.rtbishop.look4sat.domain.data.ISensorSource
|
import com.rtbishop.look4sat.data.framework.BluetoothReporter
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
import com.rtbishop.look4sat.data.framework.NetworkReporter
|
||||||
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.model.SatRadio
|
||||||
import com.rtbishop.look4sat.domain.predict.ISatelliteRepo
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
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.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.round
|
||||||
import com.rtbishop.look4sat.domain.utility.toDegrees
|
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.delay
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.isActive
|
import kotlinx.coroutines.isActive
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ import androidx.compose.ui.unit.sp
|
|||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import com.rtbishop.look4sat.BuildConfig
|
import com.rtbishop.look4sat.BuildConfig
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
|
||||||
import com.rtbishop.look4sat.domain.model.OtherSettings
|
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.CardButton
|
||||||
import com.rtbishop.look4sat.presentation.MainTheme
|
import com.rtbishop.look4sat.presentation.MainTheme
|
||||||
import com.rtbishop.look4sat.presentation.dialogs.LocatorDialog
|
import com.rtbishop.look4sat.presentation.dialogs.LocatorDialog
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package com.rtbishop.look4sat.presentation.settings
|
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)
|
data class PositionSettings(val isUpdating: Boolean, val stationPos: GeoPos, val messageResId: Int)
|
||||||
|
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ import androidx.lifecycle.viewmodel.viewModelFactory
|
|||||||
import com.rtbishop.look4sat.MainApplication
|
import com.rtbishop.look4sat.MainApplication
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.domain.model.OtherSettings
|
import com.rtbishop.look4sat.domain.model.OtherSettings
|
||||||
import com.rtbishop.look4sat.domain.predict.IDatabaseRepo
|
import com.rtbishop.look4sat.domain.repository.IDatabaseRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
import com.rtbishop.look4sat.domain.repository.ISettingsRepo
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class SettingsViewModel(
|
class SettingsViewModel(
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
/build
|
||||||
@@ -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"
|
||||||
|
}
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
|
<uses-permission
|
||||||
|
android:name="android.permission.BLUETOOTH"
|
||||||
|
android:maxSdkVersion="30" />
|
||||||
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||||
|
|
||||||
|
</manifest>
|
||||||
+4
-3
@@ -15,14 +15,15 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.data
|
package com.rtbishop.look4sat.data.database
|
||||||
|
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
import androidx.room.RoomDatabase
|
import androidx.room.RoomDatabase
|
||||||
import androidx.room.migration.Migration
|
import androidx.room.migration.Migration
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
import com.rtbishop.look4sat.framework.model.SatEntry
|
import com.rtbishop.look4sat.data.database.dao.StorageDao
|
||||||
import com.rtbishop.look4sat.framework.model.SatRadio
|
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)
|
@Database(entities = [SatEntry::class, SatRadio::class], version = 2, exportSchema = false)
|
||||||
abstract class MainDatabase : RoomDatabase() {
|
abstract class MainDatabase : RoomDatabase() {
|
||||||
+4
-4
@@ -15,12 +15,12 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.data
|
package com.rtbishop.look4sat.data.database.dao
|
||||||
|
|
||||||
import androidx.room.*
|
import androidx.room.*
|
||||||
import com.rtbishop.look4sat.framework.model.SatEntry
|
import com.rtbishop.look4sat.data.database.entity.SatEntry
|
||||||
import com.rtbishop.look4sat.framework.model.SatItem
|
import com.rtbishop.look4sat.data.database.entity.SatItem
|
||||||
import com.rtbishop.look4sat.framework.model.SatRadio
|
import com.rtbishop.look4sat.data.database.entity.SatRadio
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface StorageDao {
|
interface StorageDao {
|
||||||
+2
-2
@@ -15,11 +15,11 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.model
|
package com.rtbishop.look4sat.data.database.entity
|
||||||
|
|
||||||
import androidx.room.Embedded
|
import androidx.room.Embedded
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import com.rtbishop.look4sat.domain.model.OrbitalData
|
import com.rtbishop.look4sat.domain.predict.OrbitalData
|
||||||
|
|
||||||
@Entity(tableName = "entries", primaryKeys = ["catnum"])
|
@Entity(tableName = "entries", primaryKeys = ["catnum"])
|
||||||
data class SatEntry(@Embedded val data: OrbitalData, var comment: String? = null)
|
data class SatEntry(@Embedded val data: OrbitalData, var comment: String? = null)
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.model
|
package com.rtbishop.look4sat.data.database.entity
|
||||||
|
|
||||||
data class SatItem(
|
data class SatItem(
|
||||||
val catnum: Int,
|
val catnum: Int,
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.model
|
package com.rtbishop.look4sat.data.database.entity
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.rtbishop.look4sat.framework
|
package com.rtbishop.look4sat.data.framework
|
||||||
|
|
||||||
import android.bluetooth.BluetoothManager
|
import android.bluetooth.BluetoothManager
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework
|
package com.rtbishop.look4sat.data.framework
|
||||||
|
|
||||||
import java.net.InetSocketAddress
|
import java.net.InetSocketAddress
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
+3
-3
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework
|
package com.rtbishop.look4sat.data.framework
|
||||||
|
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.location.Criteria
|
import android.location.Criteria
|
||||||
@@ -24,10 +24,10 @@ import androidx.core.content.edit
|
|||||||
import androidx.core.location.LocationManagerCompat
|
import androidx.core.location.LocationManagerCompat
|
||||||
import androidx.core.os.CancellationSignal
|
import androidx.core.os.CancellationSignal
|
||||||
import com.rtbishop.look4sat.domain.model.DatabaseState
|
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.OtherSettings
|
||||||
import com.rtbishop.look4sat.domain.model.PassesSettings
|
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.QthConverter
|
||||||
import com.rtbishop.look4sat.domain.utility.round
|
import com.rtbishop.look4sat.domain.utility.round
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
+2
-2
@@ -15,10 +15,10 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.model.SatRadio
|
||||||
|
import com.rtbishop.look4sat.domain.predict.OrbitalData
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.json.JSONArray
|
import org.json.JSONArray
|
||||||
+5
-3
@@ -15,13 +15,15 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.DatabaseState
|
||||||
import com.rtbishop.look4sat.domain.model.SatEntry
|
import com.rtbishop.look4sat.domain.model.SatEntry
|
||||||
import com.rtbishop.look4sat.domain.model.SatRadio
|
import com.rtbishop.look4sat.domain.model.SatRadio
|
||||||
import com.rtbishop.look4sat.domain.predict.IDatabaseRepo
|
import com.rtbishop.look4sat.domain.repository.IDatabaseRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
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.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
+7
-6
@@ -15,15 +15,16 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.model.SatRadio
|
||||||
import com.rtbishop.look4sat.domain.predict.ISatelliteRepo
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
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.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.round
|
||||||
import com.rtbishop.look4sat.domain.utility.toDegrees
|
import com.rtbishop.look4sat.domain.utility.toDegrees
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
+4
-3
@@ -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.model.SatItem
|
||||||
import com.rtbishop.look4sat.domain.predict.ISelectionRepo
|
import com.rtbishop.look4sat.domain.repository.ISelectionRepo
|
||||||
import com.rtbishop.look4sat.domain.predict.ISettingsRepo
|
import com.rtbishop.look4sat.domain.repository.ISettingsRepo
|
||||||
|
import com.rtbishop.look4sat.domain.source.ILocalStorage
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
+2
-2
@@ -15,11 +15,11 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.data
|
package com.rtbishop.look4sat.data.source
|
||||||
|
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.net.Uri
|
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.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
+6
-5
@@ -15,17 +15,18 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.model.SatRadio
|
||||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
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.SatEntry as DomainEntry
|
||||||
import com.rtbishop.look4sat.domain.model.SatItem as DomainItem
|
import com.rtbishop.look4sat.domain.model.SatItem as DomainItem
|
||||||
import com.rtbishop.look4sat.domain.model.SatRadio as DomainRadio
|
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 {
|
class LocalStorage(private val storageDao: StorageDao) : ILocalStorage {
|
||||||
|
|
||||||
+2
-2
@@ -15,14 +15,14 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.framework.data
|
package com.rtbishop.look4sat.data.source
|
||||||
|
|
||||||
import android.hardware.Sensor
|
import android.hardware.Sensor
|
||||||
import android.hardware.SensorEvent
|
import android.hardware.SensorEvent
|
||||||
import android.hardware.SensorEventListener
|
import android.hardware.SensorEventListener
|
||||||
import android.hardware.SensorManager
|
import android.hardware.SensorManager
|
||||||
import com.rtbishop.look4sat.domain.data.ISensorSource
|
|
||||||
import com.rtbishop.look4sat.domain.predict.RAD2DEG
|
import com.rtbishop.look4sat.domain.predict.RAD2DEG
|
||||||
|
import com.rtbishop.look4sat.domain.source.ISensorSource
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
import kotlin.math.round
|
import kotlin.math.round
|
||||||
+2
-2
@@ -15,9 +15,9 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.ExperimentalCoroutinesApi
|
||||||
import kotlinx.coroutines.test.StandardTestDispatcher
|
import kotlinx.coroutines.test.StandardTestDispatcher
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.test.runTest
|
||||||
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,7 +8,6 @@ kotlin {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_test_version"
|
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_test_version"
|
||||||
implementation "org.json:json:$json_version"
|
|
||||||
|
|
||||||
testImplementation "junit:junit:$junit_version"
|
testImplementation "junit:junit:$junit_version"
|
||||||
testImplementation "io.mockk:mockk:$mockk_version"
|
testImplementation "io.mockk:mockk:$mockk_version"
|
||||||
|
|||||||
@@ -17,4 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.model
|
package com.rtbishop.look4sat.domain.model
|
||||||
|
|
||||||
|
import com.rtbishop.look4sat.domain.predict.OrbitalData
|
||||||
|
|
||||||
data class SatEntry(val data: OrbitalData, var comment: String? = null)
|
data class SatEntry(val data: OrbitalData, var comment: String? = null)
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.predict
|
package com.rtbishop.look4sat.domain.predict
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.model.OrbitalData
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.atan2
|
import kotlin.math.atan2
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
@@ -67,16 +66,16 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
val coef = qoms24 * tsi.pow(4.0)
|
val coef = qoms24 * tsi.pow(4.0)
|
||||||
val coef1 = coef / psisq.pow(3.5)
|
val coef1 = coef / psisq.pow(3.5)
|
||||||
val c2 = coef1 * dsv.xnodp * (dsv.aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq))
|
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
|
c1 = data.bstar * c2
|
||||||
dsv.sinio = sin(data.xincl)
|
dsv.sinio = sin(data.xincl)
|
||||||
val a3ovk2 = -J3_HARMONIC / CK2
|
val a3ovk2 = -J3_HARMONIC / CK2
|
||||||
x1mth2 = 1.0 - dsv.theta2
|
x1mth2 = 1.0 - dsv.theta2
|
||||||
c4 =
|
c4 =
|
||||||
2 * dsv.xnodp * coef1 * dsv.aodp * dsv.betao2 * (eta * (2.0 + 0.5 * etasq) + data.eccn
|
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)
|
* (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
|
* (-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))))
|
* (2.0 * etasq - eeta * (1.0 + etasq)) * cos(2.0 * data.omegao))))
|
||||||
val theta4 = dsv.theta2 * dsv.theta2
|
val theta4 = dsv.theta2 * dsv.theta2
|
||||||
val temp1 = 3.0 * CK2 * pinvsq * dsv.xnodp
|
val temp1 = 3.0 * CK2 * pinvsq * dsv.xnodp
|
||||||
val temp2 = temp1 * CK2 * pinvsq
|
val temp2 = temp1 * CK2 * pinvsq
|
||||||
@@ -180,6 +179,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
var omgdot = 0.0
|
var omgdot = 0.0
|
||||||
var xnodot = 0.0
|
var xnodot = 0.0
|
||||||
var xnodp = 0.0
|
var xnodp = 0.0
|
||||||
|
|
||||||
// Used by dpsec and dpper parts of Deep()
|
// Used by dpsec and dpper parts of Deep()
|
||||||
var xll = 0.0
|
var xll = 0.0
|
||||||
var omgadf = 0.0
|
var omgadf = 0.0
|
||||||
@@ -188,6 +188,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
var xinc = 0.0
|
var xinc = 0.0
|
||||||
var xn = 0.0
|
var xn = 0.0
|
||||||
var t = 0.0
|
var t = 0.0
|
||||||
|
|
||||||
// Used by thetg and Deep()
|
// Used by thetg and Deep()
|
||||||
var ds50 = 0.0
|
var ds50 = 0.0
|
||||||
}
|
}
|
||||||
@@ -222,6 +223,7 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
private val omegaq: Double
|
private val omegaq: Double
|
||||||
private var zmol = 0.0
|
private var zmol = 0.0
|
||||||
private var zmos = 0.0
|
private var zmos = 0.0
|
||||||
|
|
||||||
// Many fields below cannot be final because they are iteratively refined
|
// Many fields below cannot be final because they are iteratively refined
|
||||||
private var savtsn = 0.0
|
private var savtsn = 0.0
|
||||||
private var ee2 = 0.0
|
private var ee2 = 0.0
|
||||||
@@ -796,16 +798,16 @@ class DeepSpaceSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
x2li = xli + xli
|
x2li = xli + xli
|
||||||
xndot =
|
xndot =
|
||||||
d2201 * sin(x2omi + xli - g22) + d2211 * sin(xli - g22) + (d3210
|
d2201 * sin(x2omi + xli - g22) + d2211 * sin(xli - g22) + (d3210
|
||||||
* sin(xomi + xli - g32)) + d3222 * sin(-xomi + xli - g32) + (d4410
|
* sin(xomi + xli - g32)) + d3222 * sin(-xomi + xli - g32) + (d4410
|
||||||
* sin(x2omi + x2li - g44)) + d4422 * sin(x2li - g44) + (d5220
|
* sin(x2omi + x2li - g44)) + d4422 * sin(x2li - g44) + (d5220
|
||||||
* sin(xomi + xli - g52)) + d5232 * sin(-xomi + xli - g52) + (d5421
|
* sin(xomi + xli - g52)) + d5232 * sin(-xomi + xli - g52) + (d5421
|
||||||
* sin(xomi + x2li - g54)) + d5433 * sin(-xomi + x2li - g54)
|
* sin(xomi + x2li - g54)) + d5433 * sin(-xomi + x2li - g54)
|
||||||
xnddt =
|
xnddt =
|
||||||
d2201 * cos(x2omi + xli - g22) + d2211 * cos(xli - g22) + (d3210
|
d2201 * cos(x2omi + xli - g22) + d2211 * cos(xli - g22) + (d3210
|
||||||
* cos(xomi + xli - g32)) + d3222 * cos(-xomi + xli - g32) + (d5220
|
* cos(xomi + xli - g32)) + d3222 * cos(-xomi + xli - g32) + (d5220
|
||||||
* cos(xomi + xli - g52)) + d5232 * cos(-xomi + xli - g52) + (2
|
* cos(xomi + xli - g52)) + d5232 * cos(-xomi + xli - g52) + (2
|
||||||
* (d4410 * cos(x2omi + x2li - g44) + d4422 * cos(x2li - g44) + (d5421
|
* (d4410 * cos(x2omi + x2li - g44) + d4422 * cos(x2li - g44) + (d5421
|
||||||
* cos(xomi + x2li - g54)) + d5433 * cos(-xomi + x2li - g54)))
|
* cos(xomi + x2li - g54)) + d5433 * cos(-xomi + x2li - g54)))
|
||||||
}
|
}
|
||||||
xldot = xni + xfact
|
xldot = xni + xfact
|
||||||
xnddt *= xldot
|
xnddt *= xldot
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.model
|
package com.rtbishop.look4sat.domain.predict
|
||||||
|
|
||||||
data class GeoPos(
|
data class GeoPos(
|
||||||
val latitude: Double,
|
val latitude: Double,
|
||||||
@@ -17,7 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.predict
|
package com.rtbishop.look4sat.domain.predict
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.model.OrbitalData
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
import kotlin.math.atan2
|
import kotlin.math.atan2
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
@@ -88,7 +87,7 @@ class NearEarthSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
val coef1 = coef / psisq.pow(3.5)
|
val coef1 = coef / psisq.pow(3.5)
|
||||||
val bstar = data.bstar
|
val bstar = data.bstar
|
||||||
val c2 = coef1 * xnodp * (aodp * (1.0 + 1.5 * etasq + eeta * (4.0 + etasq)) + 0.75
|
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
|
c1 = bstar * c2
|
||||||
sinio = sin(data.xincl)
|
sinio = sin(data.xincl)
|
||||||
val a3ovk2 = -J3_HARMONIC / CK2
|
val a3ovk2 = -J3_HARMONIC / CK2
|
||||||
@@ -96,9 +95,9 @@ class NearEarthSatellite(data: OrbitalData) : Satellite(data) {
|
|||||||
x1mth2 = 1.0 - theta2
|
x1mth2 = 1.0 - theta2
|
||||||
val omegao = data.omegao
|
val omegao = data.omegao
|
||||||
c4 = 2 * xnodp * coef1 * aodp * betao2 * (eta * (2.0 + 0.5 * etasq) + eo * (0.5 + 2 * etasq)
|
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
|
- 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))
|
* (1.5 - 0.5 * eeta)) + 0.75 * x1mth2 * (2.0 * etasq - eeta * (1.0 + etasq))
|
||||||
* cos(2.0 * omegao)))
|
* cos(2.0 * omegao)))
|
||||||
c5 = 2.0 * coef1 * aodp * betao2 * (1.0 + 2.75 * (etasq + eeta) + eeta * etasq)
|
c5 = 2.0 * coef1 * aodp * betao2 * (1.0 + 2.75 * (etasq + eeta) + eeta * etasq)
|
||||||
val theta4 = sqr(theta2)
|
val theta4 = sqr(theta2)
|
||||||
val temp1 = 3.0 * CK2 * pinvsq * xnodp
|
val temp1 = 3.0 * CK2 * pinvsq * xnodp
|
||||||
|
|||||||
+2
-10
@@ -15,14 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.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
|
|
||||||
|
|
||||||
data class OrbitalData(
|
data class OrbitalData(
|
||||||
val name: String,
|
val name: String,
|
||||||
@@ -44,6 +37,5 @@ data class OrbitalData(
|
|||||||
// Space objects are classified as NearEarth (period < 225 min) or DeepSpace (period >= 225 min)
|
// Space objects are classified as NearEarth (period < 225 min) or DeepSpace (period >= 225 min)
|
||||||
val isDeepSpace: Boolean = orbitalPeriod >= 225.0
|
val isDeepSpace: Boolean = orbitalPeriod >= 225.0
|
||||||
) {
|
) {
|
||||||
fun getSatellite(): Satellite =
|
fun getSatellite(): Satellite = if (isDeepSpace) DeepSpaceSatellite(this) else NearEarthSatellite(this)
|
||||||
if (isDeepSpace) DeepSpaceSatellite(this) else NearEarthSatellite(this)
|
|
||||||
}
|
}
|
||||||
+1
-3
@@ -15,9 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.model
|
package com.rtbishop.look4sat.domain.predict
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
|
||||||
|
|
||||||
data class SatPass(
|
data class SatPass(
|
||||||
val aosTime: Long = 0L,
|
val aosTime: Long = 0L,
|
||||||
+2
-7
@@ -15,12 +15,8 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.acos
|
||||||
import kotlin.math.asin
|
import kotlin.math.asin
|
||||||
import kotlin.math.atan2
|
import kotlin.math.atan2
|
||||||
@@ -67,8 +63,7 @@ data class SatPos(
|
|||||||
val rads = azimuth * DEG2RAD
|
val rads = azimuth * DEG2RAD
|
||||||
val lat = asin(sin(latitude) * cos(beta) + (cos(latitude) * sin(beta) * cos(rads)))
|
val lat = asin(sin(latitude) * cos(beta) + (cos(latitude) * sin(beta) * cos(rads)))
|
||||||
val lon = (longitude + atan2(
|
val lon = (longitude + atan2(
|
||||||
sin(rads) * sin(beta) * cos(latitude),
|
sin(rads) * sin(beta) * cos(latitude), cos(beta) - sin(latitude) * sin(lat)
|
||||||
cos(beta) - sin(latitude) * sin(lat)
|
|
||||||
))
|
))
|
||||||
rangeCirclePoints.add(GeoPos(lat * RAD2DEG, lon * RAD2DEG))
|
rangeCirclePoints.add(GeoPos(lat * RAD2DEG, lon * RAD2DEG))
|
||||||
}
|
}
|
||||||
@@ -17,9 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.predict
|
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.abs
|
||||||
import kotlin.math.acos
|
import kotlin.math.acos
|
||||||
import kotlin.math.asin
|
import kotlin.math.asin
|
||||||
@@ -64,7 +61,7 @@ abstract class Satellite(val data: OrbitalData) {
|
|||||||
var qoms24 = 0.0
|
var qoms24 = 0.0
|
||||||
var s4 = 0.0
|
var s4 = 0.0
|
||||||
|
|
||||||
internal fun willBeSeen(pos: GeoPos): Boolean {
|
fun willBeSeen(pos: GeoPos): Boolean {
|
||||||
return if (data.meanmo < 1e-8) false
|
return if (data.meanmo < 1e-8) false
|
||||||
else {
|
else {
|
||||||
val sma = 331.25 * exp(ln(MIN_PER_DAY / data.meanmo) * (2.0 / 3.0))
|
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()
|
satPos = SatPos()
|
||||||
// Date/time at which the position and velocity were calculated
|
// Date/time at which the position and velocity were calculated
|
||||||
julUTC = calcCurrentDaynum(time) + 2444238.5
|
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 e = 0.01675104 - (0.0000418 + 0.000000126 * solTime) * solTime
|
||||||
val c = radians(
|
val c = radians(
|
||||||
((1.919460 - (0.004789 + 0.000014 * solTime) * solTime) * sin(m))
|
((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 o = radians(modulus(259.18 - 1934.142 * solTime, 360.0))
|
||||||
val lsa = modulus(l + c - radians(0.00569 - 0.00479 * sin(o)), TWO_PI)
|
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)))
|
var r = (1.0000002 * (1.0 - sqr(e)) / (1.0 + e * cos(nu)))
|
||||||
val eps = radians(
|
val eps = radians(
|
||||||
23.452294 - (0.0130125 + (0.00000164 - 0.000000503 * solTime) * solTime)
|
23.452294 - (0.0130125 + (0.00000164 - 0.000000503 * solTime) * solTime)
|
||||||
* solTime + 0.00256 * cos(o)
|
* solTime + 0.00256 * cos(o)
|
||||||
)
|
)
|
||||||
r *= ASTRONOMICAL_UNIT
|
r *= ASTRONOMICAL_UNIT
|
||||||
return Vector4(r, r * cos(lsa), r * sin(lsa) * cos(eps), r * sin(lsa) * sin(eps))
|
return Vector4(r, r * cos(lsa), r * sin(lsa) * cos(eps), r * sin(lsa) * sin(eps))
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.predict
|
package com.rtbishop.look4sat.domain.repository
|
||||||
|
|
||||||
interface IDatabaseRepo {
|
interface IDatabaseRepo {
|
||||||
|
|
||||||
+5
-4
@@ -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.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
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|
||||||
interface ISatelliteRepo {
|
interface ISatelliteRepo {
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.rtbishop.look4sat.domain.predict
|
package com.rtbishop.look4sat.domain.repository
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.model.SatItem
|
import com.rtbishop.look4sat.domain.model.SatItem
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
+2
-2
@@ -15,12 +15,12 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.DatabaseState
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
|
||||||
import com.rtbishop.look4sat.domain.model.OtherSettings
|
import com.rtbishop.look4sat.domain.model.OtherSettings
|
||||||
import com.rtbishop.look4sat.domain.model.PassesSettings
|
import com.rtbishop.look4sat.domain.model.PassesSettings
|
||||||
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|
||||||
interface ISettingsRepo {
|
interface ISettingsRepo {
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.data
|
package com.rtbishop.look4sat.domain.source
|
||||||
|
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
|
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
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.SatEntry
|
||||||
import com.rtbishop.look4sat.domain.model.SatItem
|
import com.rtbishop.look4sat.domain.model.SatItem
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.rtbishop.look4sat.domain.data
|
package com.rtbishop.look4sat.domain.source
|
||||||
|
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.domain.utility
|
package com.rtbishop.look4sat.domain.utility
|
||||||
|
|
||||||
import com.rtbishop.look4sat.domain.model.GeoPos
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
|
|
||||||
object QthConverter {
|
object QthConverter {
|
||||||
|
|
||||||
|
|||||||
@@ -14,4 +14,5 @@ dependencyResolutionManagement {
|
|||||||
}
|
}
|
||||||
rootProject.name = "Look4Sat"
|
rootProject.name = "Look4Sat"
|
||||||
include ":app"
|
include ":app"
|
||||||
|
include ":data"
|
||||||
include ":domain"
|
include ":domain"
|
||||||
Reference in new issue
Block a user