mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(dxcluster): мода спота по бэндплану, когда комментарий молчит
В CW и SSB спотеры сплошь и рядом не пишут моду, и такой спот оставался dxmUnknown: ни фильтр по модам его не видел, ни QSY по нему моду не ставил. Теперь порядок такой: сначала комментарий (как было), и только если он молчит — участок бэндплана. DXSpotStore.DXModeFromFreq — таблица участков, читается сверху вниз, первое попадание выигрывает. Узкие «водопои» цифры стоят РАНЬШЕ широких сегментов: FT8 на 7074 живёт посреди телефонного участка R1, FT4 на 21140 — посреди 15-метрового, и без такого порядка они утонули бы в SSB. ★ Границы — по IARU Region 1 (наш регион), а споты прилетают со всего мира, поэтому там, где регионы расходятся, мода НЕ выводится вовсе: пропуск честнее ошибки. Отсюда дырки 1843-1850 (R1 телефон против R2 CW), 60 м (канальный), маячные щели, 2 м/70 см кроме FT8-окон. Два спорных куска всё же отданы R1: 3570-3600 — цифре (у R2 это ещё CW, но споты там почти сплошь FT8/RTTY) и 7053-7300 — телефону (у R2 ниже 7125 данные). QO-100 (даунлинк 10489.5-10490.0) — отдельной веткой по плану AMSAT-DL, теми же границами, что рисует BandPlanOverlay: CW, NB/DIGI, две SSB-зоны. Маяки и mixed modes не гадаем. Угаданное помечено (TDXSpot.ModeGuessed) и в окне списка выводится с '?' — 'CW?' против 'CW': спотер моду не называл, а на границах участков таблица может ошибаться, поэтому разницу видно. На спектре в чипе только позывной — там ничего не изменилось. Проверено консольным тестом на этих же юнитах: 25 частот + 6 полных строк кластера (комментарий перебивает таблицу; 7012.5 → CW guessed, 7145 → SSB guessed, 10489.680 → SSB guessed; 1846, 60 м и 144.300 остаются без моды). Сборка ewsdr (--ws=qt6) и ewsdrd — ОК. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -263,6 +263,15 @@ begin
|
||||
Spot.Comment := Trim(Rest);
|
||||
|
||||
Spot.Mode := DXModeFromComment(Spot.Comment);
|
||||
// Комментарий молчит — берём моду с участка бэндплана: в CW и SSB её сплошь
|
||||
// и рядом просто не пишут, а участок эти две моды разделяет надёжно.
|
||||
// Помечаем такой спот: угаданное не должно выглядеть как сказанное спотером.
|
||||
Spot.ModeGuessed := False;
|
||||
if Spot.Mode = dxmUnknown then
|
||||
begin
|
||||
Spot.Mode := DXModeFromFreq(Spot.FreqHz);
|
||||
Spot.ModeGuessed := Spot.Mode <> dxmUnknown;
|
||||
end;
|
||||
Spot.Stamp := Now;
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user