mirror of
https://github.com/rt-bishop/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
+229
-135
No files matched your search
@@ -53,6 +53,7 @@ kotlin {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":data")
|
||||
implementation project(":domain")
|
||||
// Android
|
||||
implementation "androidx.core:core-splashscreen:$splashscreen_version"
|
||||
|
||||
@@ -2,13 +2,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
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.BLUETOOTH"
|
||||
android:maxSdkVersion="30" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<application
|
||||
@@ -23,6 +17,7 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.Look4Sat.Main"
|
||||
tools:targetApi="31">
|
||||
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
@@ -34,5 +29,7 @@
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<SatPos> = emptyList())
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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
|
||||
* 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.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() {
|
||||
+4
-4
@@ -15,12 +15,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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 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 {
|
||||
+2
-2
@@ -15,11 +15,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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)
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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(
|
||||
val catnum: Int,
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.PrimaryKey
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.rtbishop.look4sat.framework
|
||||
package com.rtbishop.look4sat.data.framework
|
||||
|
||||
import android.bluetooth.BluetoothManager
|
||||
import android.util.Log
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.nio.ByteBuffer
|
||||
+3
-3
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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
|
||||
+2
-2
@@ -15,10 +15,10 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.predict.OrbitalData
|
||||
import kotlinx.coroutines.CoroutineDispatcher
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.json.JSONArray
|
||||
+5
-3
@@ -15,13 +15,15 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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
|
||||
+7
-6
@@ -15,15 +15,16 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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
|
||||
+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.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
|
||||
+2
-2
@@ -15,11 +15,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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
|
||||
+6
-5
@@ -15,17 +15,18 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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 {
|
||||
|
||||
+2
-2
@@ -15,14 +15,14 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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
|
||||
+2
-2
@@ -15,9 +15,9 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.test.StandardTestDispatcher
|
||||
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 {
|
||||
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"
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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(
|
||||
val latitude: Double,
|
||||
@@ -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
|
||||
|
||||
+2
-10
@@ -15,14 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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)
|
||||
}
|
||||
+1
-3
@@ -15,9 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
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,
|
||||
+2
-7
@@ -15,12 +15,8 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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))
|
||||
}
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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 {
|
||||
|
||||
+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.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 {
|
||||
+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 kotlinx.coroutines.flow.Flow
|
||||
+2
-2
@@ -15,12 +15,12 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.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 {
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* 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.SatItem
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.rtbishop.look4sat.domain.data
|
||||
package com.rtbishop.look4sat.domain.source
|
||||
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -14,4 +14,5 @@ dependencyResolutionManagement {
|
||||
}
|
||||
rootProject.name = "Look4Sat"
|
||||
include ":app"
|
||||
include ":data"
|
||||
include ":domain"
|
||||
Reference in new issue
Block a user