Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

Commit

Permalink
Tidy up gojni
Browse files Browse the repository at this point in the history
  • Loading branch information
SanmerDev committed Jul 18, 2023
1 parent 7d1a1e3 commit 5355bcb
Show file tree
Hide file tree
Showing 15 changed files with 103 additions and 106 deletions.
2 changes: 1 addition & 1 deletion app/src/main/golang/Geomag.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package geomag

//go:generate bash -c "if [ ! -d libs ]; then mkdir libs; fi"
//go:generate gomobile bind -target android -androidapi 26 -javapkg go -trimpath -v -o libs/geomag.aar
//go:generate gomobile bind -target android -androidapi 26 -javapkg com.sanmer -trimpath -v -o libs/geomag.aar

import (
"github.com/proway2/go-igrf/igrf"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package com.sanmer.geomag

import com.sanmer.geomag.model.MagneticField
import com.sanmer.geomag.model.MagneticFieldExt
import com.sanmer.geomag.model.Position
import com.sanmer.geomag.model.Record
import com.sanmer.geomag.model.toField
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import kotlinx.datetime.LocalDateTime
import go.geomag.Geomag as GoGeomag

object Geomag {
object GeomagExt {
private fun toDecimalYears(
year: Int, month: Int, day: Int,
hour: Int, min: Int,
sec: Int, nsec: Int,
) = GoGeomag.toDecimalYears(
) = Geomag.toDecimalYears(
year.toLong(),
month.toLong(),
day.toLong(),
Expand All @@ -29,7 +27,7 @@ object Geomag {
longitude: Double,
altKm: Double,
decimalYears: Double
) = GoGeomag.igrf(
) = Geomag.igrf(
latitude,
longitude,
altKm,
Expand All @@ -41,7 +39,7 @@ object Geomag {
longitude: Double,
altKm: Double,
decimalYears: Double
) = GoGeomag.wmm(
) = Geomag.wmm(
latitude,
longitude,
altKm,
Expand All @@ -62,7 +60,7 @@ object Geomag {
longitude = position.longitude,
altKm = position.altitude,
decimalYears = toDecimalYears(dataTime)
).toField()
).let { MagneticFieldExt(it) }

fun wmm(
dataTime: LocalDateTime,
Expand All @@ -72,14 +70,14 @@ object Geomag {
longitude = position.longitude,
altKm = position.altitude,
decimalYears = toDecimalYears(dataTime)
).toField()
).let { MagneticFieldExt(it) }

suspend fun run(
model: Models,
dataTime: LocalDateTime,
position: Position
): Record = withContext(Dispatchers.Default) {
val cal: (LocalDateTime, Position) -> MagneticField = when (model) {
val cal: (LocalDateTime, Position) -> MagneticFieldExt = when (model) {
Models.IGRF -> ::igrf
Models.WMM -> ::wmm
}
Expand Down
12 changes: 6 additions & 6 deletions app/src/main/kotlin/com/sanmer/geomag/database/entity/Record.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import androidx.room.ColumnInfo
import androidx.room.Embedded
import androidx.room.Entity
import androidx.room.PrimaryKey
import com.sanmer.geomag.Geomag
import com.sanmer.geomag.model.MagneticField
import com.sanmer.geomag.GeomagExt
import com.sanmer.geomag.model.MagneticFieldExt
import com.sanmer.geomag.model.Position
import com.sanmer.geomag.model.Record
import kotlinx.datetime.toLocalDateTime
Expand All @@ -22,7 +22,7 @@ data class RecordEntity(
)

val Record.primaryKey: Double get() {
val decimal = Geomag.toDecimalYears(time)
val decimal = GeomagExt.toDecimalYears(time)
val position = position.altitude - position.latitude - position.longitude
return decimal + position + model.ordinal
}
Expand All @@ -38,7 +38,7 @@ fun Record.toEntity() = RecordEntity(
)

fun RecordEntity.toRecord() = Record(
model = Geomag.Models.valueOf(model),
model = GeomagExt.Models.valueOf(model),
time = time.toLocalDateTime(),
position = Position(
latitude = latitude,
Expand Down Expand Up @@ -66,7 +66,7 @@ data class MagneticFieldEntity(
@ColumnInfo(name = "total_sv") val totalSV: Double
)

fun MagneticField.toEntity() = MagneticFieldEntity(
fun MagneticFieldExt.toEntity() = MagneticFieldEntity(
declination, declinationSV,
inclination, inclinationSV,
horizontalIntensity, horizontalSV,
Expand All @@ -76,7 +76,7 @@ fun MagneticField.toEntity() = MagneticFieldEntity(
totalIntensity, totalSV
)

fun MagneticFieldEntity.toMF() = MagneticField(
fun MagneticFieldEntity.toMF() = MagneticFieldExt(
declination, declinationSV,
inclination, inclinationSV,
horizontalIntensity, horizontalSV,
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/kotlin/com/sanmer/geomag/datastore/UserData.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ package com.sanmer.geomag.datastore

import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import com.sanmer.geomag.Geomag
import com.sanmer.geomag.GeomagExt
import com.sanmer.geomag.app.utils.OsUtils
import com.sanmer.geomag.ui.theme.Colors

data class UserData(
val darkMode: DarkMode,
val themeColor: Int,
val fieldModel: Geomag.Models,
val fieldModel: GeomagExt.Models,
val enableRecords: Boolean
) {
companion object {
fun default() = UserData(
darkMode = DarkMode.FOLLOW_SYSTEM,
themeColor = if (OsUtils.atLeastS) Colors.Dynamic.id else Colors.Sakura.id,
fieldModel = Geomag.Models.IGRF,
fieldModel = GeomagExt.Models.IGRF,
enableRecords = true
)
}
Expand All @@ -39,6 +39,6 @@ fun UserData.toPreferences(): UserPreferences = UserPreferences.newBuilder()
fun UserPreferences.toUserData() = UserData(
darkMode = darkMode,
themeColor = themeColor,
fieldModel = Geomag.Models.valueOf(fieldModel),
fieldModel = GeomagExt.Models.valueOf(fieldModel),
enableRecords = enableRecords
)
51 changes: 0 additions & 51 deletions app/src/main/kotlin/com/sanmer/geomag/model/MagneticField.kt

This file was deleted.

51 changes: 51 additions & 0 deletions app/src/main/kotlin/com/sanmer/geomag/model/MagneticFieldExt.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com.sanmer.geomag.model

import com.sanmer.geomag.MagneticField

data class MagneticFieldExt(
val declination: Double,
val declinationSV: Double,
val inclination: Double,
val inclinationSV: Double,
val horizontalIntensity: Double,
val horizontalSV: Double,
val northComponent: Double,
val northSV: Double,
val eastComponent: Double,
val eastSV: Double,
val verticalComponent: Double,
val verticalSV: Double,
val totalIntensity: Double,
val totalSV: Double
) {
constructor(field: MagneticField) : this(
declination = field.declination,
declinationSV = field.declinationSV.orZero(),
inclination = field.inclination,
inclinationSV = field.inclinationSV.orZero(),
horizontalIntensity = field.horizontalIntensity,
horizontalSV = field.horizontalSV.orZero(),
northComponent = field.northComponent,
northSV = field.northSV.orZero(),
eastComponent = field.eastComponent,
eastSV = field.eastSV.orZero(),
verticalComponent = field.verticalComponent,
verticalSV = field.verticalSV.orZero(),
totalIntensity = field.totalIntensity,
totalSV = field.totalSV.orZero()
)

companion object {
fun empty() = MagneticFieldExt(
0.0, 0.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0,
0.0, 0.0
)
}
}

private fun Double.orZero() = if (isNaN()) 0.0 else this
14 changes: 7 additions & 7 deletions app/src/main/kotlin/com/sanmer/geomag/model/Position.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ class Position(
val longitude: Double,
val altitude: Double
) {
constructor(location: Location) : this(
latitude = location.latitude,
longitude = location.longitude,
altitude = location.altitude / 1000.0
)

val latitudeWithUnit get() = "${latitude}º N"
val longitudeWithUnit get() = "${longitude}º W"
val altitudeWithUnit get() = "$altitude km"
Expand Down Expand Up @@ -41,10 +47,4 @@ class Position(
companion object {
fun empty() = Position(0.0, 0.0, 0.0)
}
}

fun Location.toPosition() = Position(
latitude = latitude,
longitude = longitude,
altitude = altitude / 1000.0
)
}
10 changes: 5 additions & 5 deletions app/src/main/kotlin/com/sanmer/geomag/model/Record.kt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.sanmer.geomag.model

import com.sanmer.geomag.Geomag
import com.sanmer.geomag.GeomagExt
import com.sanmer.geomag.utils.expansion.now
import com.squareup.moshi.JsonClass
import kotlinx.datetime.LocalDateTime

@JsonClass(generateAdapter = true)
data class Record(
val model: Geomag.Models,
val model: GeomagExt.Models,
val time: LocalDateTime,
val position: Position,
val values: MagneticField
val values: MagneticFieldExt
) {
override fun equals(other: Any?): Boolean {
return when (other) {
Expand All @@ -33,10 +33,10 @@ data class Record(

companion object {
fun empty() = Record(
model = Geomag.Models.IGRF,
model = GeomagExt.Models.IGRF,
time = LocalDateTime.now(),
position = Position.empty(),
values = MagneticField.empty()
values = MagneticFieldExt.empty()
)
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sanmer.geomag.model.json

import com.sanmer.geomag.model.MagneticField
import com.sanmer.geomag.model.MagneticFieldExt
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass

Expand All @@ -22,7 +22,7 @@ data class MagneticFieldJson(
@Json(name = "total_sv") val totalSV: Double,
)

fun MagneticField.toJson() = MagneticFieldJson(
fun MagneticFieldExt.toJson() = MagneticFieldJson(
declination, declinationSV,
inclination, inclinationSV,
horizontalIntensity, horizontalSV,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.sanmer.geomag.repository

import com.sanmer.geomag.Geomag
import com.sanmer.geomag.GeomagExt
import com.sanmer.geomag.datastore.DarkMode
import com.sanmer.geomag.datastore.UserData
import com.sanmer.geomag.datastore.UserPreferencesDataSource
Expand Down Expand Up @@ -39,7 +39,7 @@ class UserDataRepository @Inject constructor(
userPreferencesDataSource.setThemeColor(value)
}

fun setFieldModel(value: Geomag.Models) = applicationScope.launch {
fun setFieldModel(value: GeomagExt.Models) = applicationScope.launch {
userPreferencesDataSource.setFieldModel(value.name)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import androidx.compose.runtime.setValue
import androidx.core.app.ServiceCompat
import androidx.lifecycle.LifecycleService
import androidx.lifecycle.lifecycleScope
import com.sanmer.geomag.Geomag
import com.sanmer.geomag.GeomagExt
import com.sanmer.geomag.R
import com.sanmer.geomag.app.utils.NotificationUtils
import com.sanmer.geomag.model.Position
Expand Down Expand Up @@ -57,7 +57,7 @@ class CalculateService : LifecycleService() {
parameters.sample(1000)
.distinctUntilChanged()
.onEach { (dataTime, position) ->
currentValue = Geomag.run(
currentValue = GeomagExt.run(
model = userData.fieldModel,
dataTime = dataTime,
position = position,
Expand Down
Loading

0 comments on commit 5355bcb

Please sign in to comment.