diff --git a/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt index 14e7d2b1..82eec9b2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/database/SatelliteDao.kt @@ -32,9 +32,6 @@ interface SatelliteDao { @Query("SELECT catNum, name, isSelected FROM entries ORDER BY name ASC") fun getAllSatItems(): Flow> - @Query("SELECT tle FROM entries WHERE isSelected = 1") - fun getSelectedSatellitesFlow(): Flow> - @Query("SELECT * FROM transmitters WHERE isAlive = 1 ORDER BY mode ASC") fun getAllTransmitters(): Flow> diff --git a/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt b/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt index dfa5034d..707c2d16 100644 --- a/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt +++ b/app/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt @@ -52,10 +52,6 @@ class SatelliteRepo @Inject constructor( return satelliteDao.getAllSatItems() } - fun getSelectedSatellitesFlow(): Flow> { - return satelliteDao.getSelectedSatellitesFlow() - } - fun getAllTransmitters(): Flow> { return satelliteDao.getAllTransmitters() } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt index 4825c165..2d3d70d1 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/mapScreen/MapViewModel.kt @@ -29,7 +29,6 @@ import com.rtbishop.look4sat.data.repository.SatelliteRepo import com.rtbishop.look4sat.utility.* import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.* -import kotlinx.coroutines.flow.collect import org.osmdroid.util.GeoPoint import org.osmdroid.views.overlay.FolderOverlay import org.osmdroid.views.overlay.Overlay @@ -77,21 +76,16 @@ class MapViewModel @Inject constructor( init { viewModelScope.launch { - satelliteRepo.getSelectedSatellitesFlow().collect { satellites -> - if (satellites.isNotEmpty()) { - filteredSats = satellites - selectedSat = satellites.first() - try { - while (true) { - ensureActive() - dateNow.time = System.currentTimeMillis() - _selectedSat.value = getDataForSelSatellite(selectedSat) - _satMarkers.value = getDataForAllSatellites(filteredSats) - delay(2000) - } - } catch (e: Exception) { - - } + val satellites = satelliteRepo.getSelectedSatellites() + if (satellites.isNotEmpty()) { + filteredSats = satellites + selectedSat = satellites.first() + while (true) { + ensureActive() + dateNow.time = System.currentTimeMillis() + _selectedSat.value = getDataForSelSatellite(selectedSat) + _satMarkers.value = getDataForAllSatellites(filteredSats) + delay(2000) } } } @@ -147,7 +141,7 @@ class MapViewModel @Inject constructor( } private fun getSatTrack(satellite: Satellite): Overlay { - val positions = satellite.getPredictor(gsp).getPositions(dateNow, 20, 5, 2) + val positions = satellite.getPredictor(gsp).getPositions(dateNow, 15, 3, 3.2) val trackOverlay = FolderOverlay() val trackPoints = mutableListOf() var oldLon = 0.0 diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PassPredictor.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PassPredictor.kt index ef130225..b1b2755e 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PassPredictor.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PassPredictor.kt @@ -42,14 +42,15 @@ class PassPredictor(private val satellite: Satellite, private val qth: GroundSta return satellite.getPosition(qth, date) } - fun getPositions(refDate: Date, stepSeconds: Int, minBefore: Int, minAfter: Int): List { + fun getPositions(refDate: Date, stepSec: Int, minBefore: Int, orbits: Double): List { val positions = mutableListOf() - val endDate = Date(refDate.time + minAfter * 60L * 1000L) + val orbitalPeriod = 24 * 60 / satellite.tle.meanmo + val endDate = Date(refDate.time + (orbitalPeriod * orbits * 60L * 1000L).toLong()) val startDate = Date(refDate.time - minBefore * 60L * 1000L) var currentDate = startDate while (currentDate.before(endDate)) { positions.add(getSatPos(currentDate)) - currentDate = Date(currentDate.time + stepSeconds * 1000) + currentDate = Date(currentDate.time + stepSec * 1000) } return positions }