blob: c5b90c3625ae11648a672bf4f444fc357d6aecdc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package org.terst.nav.ui
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import org.terst.nav.sensors.WindData
import org.terst.nav.track.TrackPoint
import org.terst.nav.track.TrackRepository
class MainViewModel {
private val trackRepository = TrackRepository()
private var latestWind: WindData? = null
private val _trackPoints = MutableStateFlow<List<TrackPoint>>(emptyList())
val trackPoints: StateFlow<List<TrackPoint>> = _trackPoints
fun startTrack() {
trackRepository.startTrack()
_trackPoints.value = emptyList()
}
fun stopTrack() {
trackRepository.stopTrack()
}
fun updateWind(wind: WindData) {
latestWind = wind
}
fun addGpsPoint(lat: Double, lon: Double, sogKnots: Double, cogDeg: Double) {
val wind = latestWind
val point = TrackPoint(
lat = lat, lon = lon,
sogKnots = sogKnots, cogDeg = cogDeg,
windSpeedKnots = wind?.windSpeed ?: 0.0,
windAngleDeg = wind?.windAngle ?: 0.0,
isTrueWind = wind?.isTrueWind ?: false,
timestampMs = System.currentTimeMillis()
)
if (trackRepository.addPoint(point)) {
_trackPoints.value = trackRepository.getPoints()
}
}
}
|