diff --git a/core/data/src/main/assets/lotw/config.tq6 b/core/data/src/main/assets/lotw/config.tq6 index 04fdfe4c..8e506e0a 100644 Binary files a/core/data/src/main/assets/lotw/config.tq6 and b/core/data/src/main/assets/lotw/config.tq6 differ diff --git a/core/data/src/main/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfig.kt b/core/data/src/main/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfig.kt index 431dd86a..29db90fc 100644 --- a/core/data/src/main/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfig.kt +++ b/core/data/src/main/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfig.kt @@ -36,7 +36,7 @@ import java.util.Locale import java.util.zip.GZIPInputStream import javax.xml.parsers.DocumentBuilderFactory -/** Bundled ARRL configuration 11.34 from https://lotw.arrl.org/lotw/config.tq6. */ +/** Bundled ARRL configuration 11.35 from https://lotw.arrl.org/lotw/config.tq6. */ internal class LoTWConfig(input: InputStream) { private val root = input.use { source -> GZIPInputStream(source).use { gzip -> val xml = gzip.bufferedReader(Charsets.UTF_8).readText() diff --git a/core/data/src/test/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfigTest.kt b/core/data/src/test/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfigTest.kt index 8434b62b..1b030489 100644 --- a/core/data/src/test/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfigTest.kt +++ b/core/data/src/test/java/com/rtbishop/look4sat/core/data/lotw/LoTWConfigTest.kt @@ -87,6 +87,7 @@ class LoTWConfigTest { assertEquals("AO-91", config.resolveSatellite("FOX-1B")) assertEquals("IO-86", config.resolveSatellite("LAPAN-A2")) assertEquals("RS-44", config.resolveSatellite("DOSAAF-85")) + assertEquals("RS95S", config.resolveSatellite("QMR-KWT 2")) assertEquals("BO-102", config.resolveSatellite("CAS-7B")) assertEquals("SO-50", config.resolveSatellite("SO-50")) } diff --git a/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/logbook/LoTWSatelliteAliases.kt b/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/logbook/LoTWSatelliteAliases.kt index c04f96ff..51b4c5ea 100644 --- a/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/logbook/LoTWSatelliteAliases.kt +++ b/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/logbook/LoTWSatelliteAliases.kt @@ -34,6 +34,8 @@ import java.util.Locale * - live SatNOGS 3LE names and Celestrak amateur names joined to the same NORAD id, * - designator tokens of the config.tq6 satellite descriptions (e.g. CAS-7B -> BO-102), * - the ISS family, which SatNOGS does not list under its ARRL name "ARISS". + * Added 2026-10-08: config.tq6 v11.35 lists QMR-KWT 2 as "RS95S"; SatNOGS DB carries it as + * "QMR-KWT 2" (alias "RS95S") and other sources spell it "RS-95S", hence the identity entry. * Placeholder names ("OBJECT AY" and friends) are deliberately NOT mapped: they are recycled * between objects and would sign the wrong satellite. LoTWConfigTest asserts that every target * here is a real config.tq6 name. @@ -79,11 +81,11 @@ object LoTWSatelliteAliases { "OSCAR16PACSAT" to "AO-16", "OSCAR19LUSAT" to "LO-19", "OSCAR64" to "DO-64", "OSCAR7" to "AO-7", "PACSAT" to "AO-16", "PARKINSONSAT" to "NO-84", "PCSAT" to "NO-44", "PHILLIPINESOSCAR101" to "PO-101", "PO101" to "PO-101", - "PSAT" to "NO-84", "PSAT2" to "NO-104", "QB50P1" to "EO-79", + "PSAT" to "NO-84", "PSAT2" to "NO-104", "QB50P1" to "EO-79", "QMRKWT2" to "RS95S", "QO100" to "QO-100", "RADFXSAT" to "AO-91", "RADIOROSTO" to "RS-15", "RS0ISS" to "ARISS", "RS14" to "AO-21", "RS15" to "RS-15", - "RS44" to "RS-44", "RS64S" to "AO-123", "SAUDISAT1C" to "SO-50", - "SO121" to "SO-121", "SO124" to "SO-124", "SO125" to "SO-125", + "RS44" to "RS-44", "RS64S" to "AO-123", "RS95S" to "RS95S", + "SAUDISAT1C" to "SO-50", "SO121" to "SO-121", "SO124" to "SO-124", "SO125" to "SO-125", "SO50" to "SO-50", "SOLUTUSNANOSATTELITE" to "SONATE", "SONATE2" to "SONATE", "TAURUS1" to "TAURUS", "TEVEL21" to "TEV2-1", "TEVEL22" to "TEV2-2", "TEVEL23" to "TEV2-3", "TEVEL24" to "TEV2-4", "TEVEL25" to "TEV2-5", diff --git a/core/domain/src/test/java/com/rtbishop/look4sat/core/domain/LoTWSatelliteAliasesTest.kt b/core/domain/src/test/java/com/rtbishop/look4sat/core/domain/LoTWSatelliteAliasesTest.kt index 45390742..d2ad78ce 100644 --- a/core/domain/src/test/java/com/rtbishop/look4sat/core/domain/LoTWSatelliteAliasesTest.kt +++ b/core/domain/src/test/java/com/rtbishop/look4sat/core/domain/LoTWSatelliteAliasesTest.kt @@ -27,7 +27,7 @@ import org.junit.Test /** Alias table that maps tracker catalogue names onto the names ARRL's config.tq6 uses. */ class LoTWSatelliteAliasesTest { - private val catalogue = listOf("SO-50", "ARISS", "PO-101", "BO-102", "AO-91", "RS-44", "IO-117") + private val catalogue = listOf("SO-50", "ARISS", "PO-101", "BO-102", "AO-91", "RS-44", "IO-117", "RS95S") @Test fun `lookup maps SatNOGS catalogue names to ARRL names`() { @@ -37,6 +37,7 @@ class LoTWSatelliteAliasesTest { assertEquals("AO-91", LoTWSatelliteAliases.lookup("FOX-1B")) assertEquals("RS-44", LoTWSatelliteAliases.lookup("DOSAAF-85")) assertEquals("IO-117", LoTWSatelliteAliases.lookup("GREENCUBE")) + assertEquals("RS95S", LoTWSatelliteAliases.lookup("QMR-KWT 2")) } @Test @@ -59,6 +60,8 @@ class LoTWSatelliteAliasesTest { assertEquals("SO-50", LoTWSatelliteAliases.resolve("SAUDISAT 1C (SO-50)", catalogue)) assertEquals("ARISS", LoTWSatelliteAliases.resolve("ISS (ZARYA)", catalogue)) assertEquals("AO-91", LoTWSatelliteAliases.resolve("AO-91 (RadFxSat)", catalogue)) + assertEquals("RS95S", LoTWSatelliteAliases.resolve("RS-95S", catalogue)) + assertEquals("RS95S", LoTWSatelliteAliases.resolve("QMR-KWT 2", catalogue)) } @Test