From fcec36ec68edc3651fbad7e81c1530c36c7948d6 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 22 Feb 2025 13:28:28 +0000 Subject: [PATCH] Updated dependencies and gradle plugin, minor fixes --- app/build.gradle.kts | 4 +-- app/src/main/AndroidManifest.xml | 8 ++--- .../com/rtbishop/look4sat/MainActivity.kt | 3 +- .../look4sat/presentation/map/MapViewModel.kt | 2 +- .../presentation/radar/RadarScreen.kt | 29 ++++++++----------- .../presentation/radar/RadarViewModel.kt | 21 +++++++++----- .../satellites/SatellitesDialog.kt | 2 +- .../look4sat/data/framework/BluetoothCIV.kt | 10 +++---- .../look4sat/data/repository/SatelliteRepo.kt | 4 +-- gradle/libs.versions.toml | 10 +++---- 10 files changed, 47 insertions(+), 46 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 385b941d..5ed56135 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,8 +13,8 @@ android { namespace = "com.rtbishop.look4sat" compileSdk = 35 defaultConfig { - applicationId = "com.rtbishop.look4satic705" - minSdk = 32 + applicationId = "com.rtbishop.look4sat" + minSdk = 24 targetSdk = 35 versionCode = 400 versionName = "4.0.0" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6db38f39..baa973ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,11 +1,11 @@ - - - - + + + + diff --git a/app/src/main/java/com/rtbishop/look4sat/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/MainActivity.kt index eb822950..392d7a06 100644 --- a/app/src/main/java/com/rtbishop/look4sat/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/MainActivity.kt @@ -28,6 +28,7 @@ import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.MainScreen class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { installSplashScreen() enableEdgeToEdge() @@ -39,5 +40,3 @@ class MainActivity : ComponentActivity() { } } } - -// Check and Request BT Permission? diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt index 75727e05..7a9982e3 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/map/MapViewModel.kt @@ -179,7 +179,7 @@ class MapViewModel(private val satelliteRepo: ISatelliteRepo, settingsRepo: ISet var orbitalPass = defaultPass var aosTime = 0L.toTimerString() var isTimeAos = true - allPasses.find { pass -> pass.catNum == sat.data.catnum && pass.progress < 100 } + allPasses.find { pass -> pass.catNum == sat.data.catnum && pass.progress < 1 } ?.let { satPass -> orbitalPass = satPass if (!satPass.isDeepSpace) { diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt index 8f9abc46..5a9f00af 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt @@ -1,6 +1,5 @@ package com.rtbishop.look4sat.presentation.radar -import android.util.Log import androidx.compose.animation.core.LinearEasing import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateFloat @@ -11,7 +10,6 @@ import androidx.compose.foundation.MarqueeSpacing import androidx.compose.foundation.background import androidx.compose.foundation.basicMarquee import androidx.compose.foundation.border -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -33,13 +31,11 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.rotate import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight @@ -55,7 +51,6 @@ import androidx.navigation.navArgument import com.rtbishop.look4sat.R import com.rtbishop.look4sat.domain.model.SatRadio import com.rtbishop.look4sat.domain.utility.toDegrees -import com.rtbishop.look4sat.framework.BluetoothCIV import com.rtbishop.look4sat.presentation.MainTheme import com.rtbishop.look4sat.presentation.Screen import com.rtbishop.look4sat.presentation.components.CardIcon @@ -79,7 +74,7 @@ fun NavGraphBuilder.radarDestination(navigateBack: () -> Unit) { @Composable private fun RadarScreen(uiState: RadarState, navigateBack: () -> Unit) { - BluetoothCIV.init(LocalContext.current) +// BluetoothCIV.init(LocalContext.current) val addToCalendar: () -> Unit = { uiState.currentPass?.let { pass -> @@ -257,19 +252,19 @@ private fun EclipsedIndicator() { @Composable private fun TransmitterItem(radio: SatRadio) { - LaunchedEffect(radio) { - BluetoothCIV.updateOnce(radio) - } +// LaunchedEffect(radio) { +// BluetoothCIV.updateOnce(radio) +// } Surface(color = MaterialTheme.colorScheme.background, - modifier = Modifier.clickable(onClick = { - Log.d("BluetoothCivManager", radio.toString()) - if(radio.uuid == BluetoothCIV.selected) BluetoothCIV.selected = "NONE" else - { - BluetoothCIV.connect(radio) - BluetoothCIV.updateOnce(radio) - } - }) +// modifier = Modifier.clickable(onClick = { +// Log.d("BluetoothCivManager", radio.toString()) +// if(radio.uuid == BluetoothCIV.selected) BluetoothCIV.selected = "NONE" else +// { +// BluetoothCIV.connect(radio) +// BluetoothCIV.updateOnce(radio) +// } +// }) ) { Surface(modifier = Modifier.padding(bottom = 2.dp)) { Column( diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt index 895f07c6..27cd7780 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarViewModel.kt @@ -95,17 +95,24 @@ class RadarViewModel( while (isActive) { val timeNow = System.currentTimeMillis() val pos = satelliteRepo.getPosition(satPass.orbitalObject, stationPos, timeNow) - if (satPass.aosTime > timeNow) { - val time = satPass.aosTime.minus(timeNow).toTimerString() - _uiState.update { it.copy(currentTime = time, isCurrentTimeAos = true) } - } else { - val time = satPass.losTime.minus(timeNow).toTimerString() - _uiState.update { it.copy(currentTime = time, isCurrentTimeAos = false) } + when { + satPass.isDeepSpace -> { + val time = 0L.toTimerString() + _uiState.update { it.copy(currentTime = time, isCurrentTimeAos = false) } + } + satPass.aosTime > timeNow -> { + val time = satPass.aosTime.minus(timeNow).toTimerString() + _uiState.update { it.copy(currentTime = time, isCurrentTimeAos = true) } + } + else -> { + val time = satPass.losTime.minus(timeNow).toTimerString() + _uiState.update { it.copy(currentTime = time, isCurrentTimeAos = false) } + } } sendPassData(satPass, pos, satPass.orbitalObject) sendPassDataBT(pos) processRadios(transmitters, satPass.orbitalObject, timeNow) - delay(1000) //TODO: Change me maybe if smaller freq steps are better?? maybe dynamically? + delay(1000) } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesDialog.kt index ec4b4642..96942282 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/satellites/SatellitesDialog.kt @@ -28,7 +28,7 @@ import com.rtbishop.look4sat.presentation.components.SharedDialog @Preview(showBackground = true) @Composable private fun MultiTypesDialogPreview() { - val types = listOf("All", "Amateur", "Geostationary", "Military", "Weather") + val types = listOf("Amateur", "Geostationary", "Military", "Weather") MainTheme { MultiTypesDialog(types, emptyList(), {}) {} } } diff --git a/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothCIV.kt b/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothCIV.kt index 08c08d0b..f2d8c0f4 100644 --- a/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothCIV.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/framework/BluetoothCIV.kt @@ -1,4 +1,4 @@ -package com.rtbishop.look4sat.framework +package com.rtbishop.look4sat.data.framework import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothSocket @@ -46,7 +46,7 @@ public object BluetoothCIV { private var inputStream: InputStream? = null public fun init(context: Context) { - bluetoothAdapter= getBluetoothAdapter(context) + bluetoothAdapter = getBluetoothAdapter(context) } private fun ensureConnected():Boolean { @@ -100,7 +100,7 @@ public object BluetoothCIV { } data class RMsg(val broadcast: Boolean, val cmd: Int, val payload: ByteArray) - private fun receiveCommand():RMsg? { + private fun receiveCommand(): RMsg? { if (inputStream!!.read()!=0xFE) { return null; } @@ -124,7 +124,7 @@ public object BluetoothCIV { return RMsg(to==0x00, cmd, buffer.toByteArray()) } - private fun receiveSpecificCommand():RMsg? { + private fun receiveSpecificCommand(): RMsg? { while (true) { val msg = receiveCommand() ?: return null if (!msg.broadcast) { @@ -144,7 +144,7 @@ public object BluetoothCIV { } data class Result(val subcmd: Int?, val data: ByteArray) - private fun callFunction(cmd: Int, sub: Int? = null, retsub: Boolean): Result{ + private fun callFunction(cmd: Int, sub: Int? = null, retsub: Boolean): Result { if(ensureConnected()){ sendCommand(cmd, sub) val res = receiveSpecificCommand(); diff --git a/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt b/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt index 2607f8e8..639b5188 100644 --- a/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt +++ b/data/src/main/java/com/rtbishop/look4sat/data/repository/SatelliteRepo.kt @@ -82,8 +82,8 @@ class SatelliteRepo( val copiedList = radios.map { it.copy() } copiedList.forEach { transmitter -> transmitter.downlinkLow?.let { transmitter.downlinkLow = satPos.getDownlinkFreq(it) } - transmitter.downlinkHigh?.let { transmitter.downlinkHigh = satPos.getDownlinkFreq(it) } - transmitter.uplinkLow?.let { transmitter.uplinkLow = satPos.getUplinkFreq(it) } + transmitter.downlinkHigh?.let { transmitter.downlinkHigh = satPos.getDownlinkFreq(it) } + transmitter.uplinkLow?.let { transmitter.uplinkLow = satPos.getUplinkFreq(it) } transmitter.uplinkHigh?.let { transmitter.uplinkHigh = satPos.getUplinkFreq(it) } } copiedList.map { it.copy() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bbf55fb8..66377895 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,16 +1,16 @@ [versions] -android-gradle-plugin = "8.8.0" -google-ksp = "2.0.21-1.0.26" -kotlin = "2.0.21" +android-gradle-plugin = "8.8.1" +google-ksp = "2.1.10-1.0.30" +kotlin = "2.1.10" androidx-core-ktx = "1.15.0" androidx-core-splashscreen = "1.0.1" androidx-room = "2.6.1" -compose-bom = "2025.01.00" +compose-bom = "2025.02.00" compose-activity = "1.10.0" compose-lifecycle = "2.8.7" -compose-navigation = "2.8.5" +compose-navigation = "2.8.7" other-coroutines = "1.10.1" other-json = "20240303"