diff --git a/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/SelectionRepoSearchTest.kt b/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/SelectionRepoSearchTest.kt index 3449e2f5..156ca94b 100644 --- a/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/SelectionRepoSearchTest.kt +++ b/core/data/src/test/java/com/rtbishop/look4sat/core/data/repository/SelectionRepoSearchTest.kt @@ -124,6 +124,22 @@ class SelectionRepoSearchTest { assertEquals(setOf(25544, 61781), results.map { it.catnum }.toSet()) } + @Test + fun `FM virtual type includes the BA7OPF RS95S and UNNE-1B additions`() = runTest { + // RS95S / QMR-KWT-2 (67291) and UNNE-1B (98205) joined the hardcoded + // AMSAT Live FM set on 2026-10-09; both carry a V/U FM repeater in + // SatNOGS ("V/U FM Transponder CTCSS 67.0 Hz" / "Mode V/U - FM Repeater + // (Voice + (A)FSK)"). sampleItems contributes ISS (25544) only. + val items = sampleItems + listOf( + SatItem(catnum = 67291, name = "QMR-KWT-2 (RS95S)"), + SatItem(catnum = 98205, name = "UNNE-1B") + ) + val repo = createRepo(items) + repo.setTypes(listOf("AMSAT Live FM")) + val results = repo.getEntriesFlow().first() + assertEquals(setOf(25544, 67291, 98205), results.map { it.catnum }.toSet()) + } + @Test fun `Linear virtual type shows only hardcoded linear satellites`() = runTest { val repo = createRepo(sampleItems) diff --git a/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/source/Sources.kt b/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/source/Sources.kt index 9e1d9665..8609ef23 100644 --- a/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/source/Sources.kt +++ b/core/domain/src/main/java/com/rtbishop/look4sat/core/domain/source/Sources.kt @@ -50,11 +50,26 @@ object Sources { ) /** * Hardcoded AMSAT Live FM satellites (NORAD catnums): - * SO-50 (27607), ISS ZARYA (25544), AO-123 ASRTU-1 (61781). + * SO-50 (27607), ISS ZARYA (25544), AO-123 ASRTU-1 (61781), + * RS95S/QMR-KWT-2 (67291), UNNE-1B (98205). * Replaces the AMSAT live-page fetch: stable on any network, no * sync-time dependency, no stale-list or timeout failure modes. + * + * BA7OPF additions (2026-10-09): + * - RS95S / QMR-KWT-2 (67291): V/U FM transponder 145.920/436.950 CTCSS 67.0 + * (SatNOGS "QMR-KWT-2 (RS95S)", R4UAB "QMR-KWT-2 (RS95S)", AMSAT "RS95S + * (QMR-KWT-2)"; the LoTW alias table maps the tracker name to ARRL's "RS95S"). + * - UNNE-1B (98205): AMSAT-EA 1.5P PocketQube released from the T-18 OTV + * "OSSIE" with a V/U FM repeater ("Voice + (A)FSK"). + * ⚠ 98205 is SatNOGS' analysis number (designator 26227BL) for the freshly + * released object — Space-Track assigns the permanent catalogue number later, + * so this entry must be re-pointed then; the ephem-watch cron job tracks it. + * + * The set is shared: the satellite page / mutual page "AMSAT Live FM" filters + * and the radar Log page (FM satellites are logged on the fixed nominal + * voice-repeater pair). */ - val amSatFmCatnums = setOf(27607, 25544, 61781) + val amSatFmCatnums = setOf(27607, 25544, 61781, 67291, 98205) /** * Hardcoded AMSAT Live linear (SSB/CW) satellites: