From 63e2ea88b7e67b9c2b454019e68538b6fd397c64 Mon Sep 17 00:00:00 2001 From: atsunatsu Date: Fri, 9 Oct 2026 03:04:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(satellites):=20AMSAT=20Live=20FM=20?= =?UTF-8?q?=E7=BB=84=E8=A1=A5=20IO-86=20/=20LAPAN-A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sources.amSatFmCatnums 加 IO-86 / LAPAN-A2 (40931):SatNOGS 有 V/U FM 话音转发器 "V/U FM Voice (PL 88.5Hz)" 145.880 / 435.880;R4UAB 名 "LAPAN-A2 (IO-86)"、 SatNOGS 3LE 名 "LAPAN-A2"、AMSAT 名 "IO-86"。LoTW 别名表早就有 LAPAN-A2 → IO-86 (ARRL 官方名),所以这颗星只是筛选里看不到,上传链路本来通。 同一集合共用三处:卫星页与互通页的 FM 筛选、雷达页 Log 的 useRepeater 判定 (voiceRepeater() 排序下唯一含 "voice" 的 FM 双工行命中,记账固定取 145.880 / 435.880 名义对;APRS/SSDV 两行是 AFSK、Mode X 无上行,都进不了候选)。 测试:SelectionRepoSearchTest 的 FM 虚拟类型用例扩到三颗(67291 / 98205 / 40931)。 --- .../data/repository/SelectionRepoSearchTest.kt | 16 +++++++++------- .../look4sat/core/domain/source/Sources.kt | 6 +++++- 2 files changed, 14 insertions(+), 8 deletions(-) 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 156ca94b..3102066b 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 @@ -125,19 +125,21 @@ class SelectionRepoSearchTest { } @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. + fun `FM virtual type includes the BA7OPF RS95S UNNE-1B and IO-86 additions`() = runTest { + // RS95S / QMR-KWT-2 (67291), UNNE-1B (98205) and IO-86 / LAPAN-A2 (40931) + // joined the hardcoded AMSAT Live FM set on 2026-10-09; each carries a V/U + // FM repeater in SatNOGS ("V/U FM Transponder CTCSS 67.0 Hz", + // "Mode V/U - FM Repeater (Voice + (A)FSK)", "V/U FM Voice (PL 88.5Hz)"). + // sampleItems contributes ISS (25544) only. val items = sampleItems + listOf( SatItem(catnum = 67291, name = "QMR-KWT-2 (RS95S)"), - SatItem(catnum = 98205, name = "UNNE-1B") + SatItem(catnum = 98205, name = "UNNE-1B"), + SatItem(catnum = 40931, name = "LAPAN-A2 (IO-86)") ) 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()) + assertEquals(setOf(25544, 67291, 98205, 40931), results.map { it.catnum }.toSet()) } @Test 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 8609ef23..9a38ed19 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 @@ -61,6 +61,10 @@ object Sources { * (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"). + * - IO-86 / LAPAN-A2 (40931): V/U FM voice repeater 145.880/435.880 PL 88.5 + * (SatNOGS "V/U FM Voice (PL 88.5Hz)"; R4UAB "LAPAN-A2 (IO-86)", SatNOGS + * 3LE "LAPAN-A2", AMSAT "IO-86"; the LoTW alias table maps LAPAN-A2 to + * ARRL's "IO-86"). This fork's first TLE source keeps its elements fresh. * ⚠ 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. @@ -69,7 +73,7 @@ object Sources { * and the radar Log page (FM satellites are logged on the fixed nominal * voice-repeater pair). */ - val amSatFmCatnums = setOf(27607, 25544, 61781, 67291, 98205) + val amSatFmCatnums = setOf(27607, 25544, 61781, 67291, 98205, 40931) /** * Hardcoded AMSAT Live linear (SSB/CW) satellites: