Skip to content

anastas93/testing_satping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

testing_satping

Диагностика узкополосного приёма SX1262

В прошивке добавлена функция configureNarrowbandRxOptions(), которая автоматически подтягивает критичные настройки для полосы 7.81 кГц и близких значений:

  • переводит радиомодуль в непрерывный SetRx (timeout = 0) для тестов без окон, либо держит окно не менее 2.15 с, если нужно ограничение;
  • включает остановку RX-таймера по преамбуле (SetStopRxTimerOnPreamble(true)), чтобы окно не закрывалось посреди пакета;
  • увеличивает преамбулу до 16–24 символов, давая запас на CAD→RX и прогрев TCXO;
  • принудительно активирует LDRO, когда длительность символа превышает 16 мс;
  • расширяет LoRaSymbNumTimeout, чтобы поиск заголовка покрывал преамбулу;
  • ведёт журнал таймингов с префиксом [RX t=…], фиксируя команды SetRx, PreambleDetected, SyncWordValid, HeaderValid, RxDone и задержку относительно последнего SetRx.

По умолчанию диагностика держит флаг state.rxTiming.forceContinuousRx = true. Для боевого режима его можно отключить в коде, чтобы вернуть оконный приём.

Журналы доступны в веб-интерфейсе и по GET /api/log.

Управление SF и программный FHSS

  • В веб-интерфейсе добавлен выпадающий список для выбора любого фактора расширения SF5–SF12. Выбранное значение отправляется на POST /api/sf с параметром sf.
  • Реализован программный частотный прыжковый режим (FHSS) по всем каналам банка HOME. Переключение осуществляется чекбоксом в вебе или POST /api/fhss с параметром enable (1/0).
  • Длительность стоянки на частоте задаётся в коде (state.fhss.dwellTimeMs, по умолчанию 250 мс), а автоматический перебор используется и в передаче, и в приёме.
  • Для узкополосных экспериментов FHSS теперь удерживает прыжки в пределах ±5 кГц от выбранного канала HOME (общая ширина 10 кГц), синхронно смещая частоты RX и TX. Это позволяет укладываться в жёсткий спектральный бюджет без ручной перенастройки.

Адаптивные окна ACK и коррекция ошибок

  • Окна подтверждений теперь используют динамический тайм-аут, вычисляемый из текущих настроек LoRa (BW, SF, преамбула) и статистики RTT. Это ускоряет подтверждение при хорошем канале и автоматически расширяет ожидание при ухудшении условий.
  • Пауза между кадрами также рассчитывается на основе времени эфирной передачи, что сокращает межкадровые задержки без увеличения числа коллизий.
  • При активном HARQ передаётся XOR-паритет всего окна DATA-блоков, что позволяет автоматически восстановить один потерянный кадр без переотправки. Приёмник отслеживает наличие паритета и проводит реконструкцию перед отправкой ACK.
  • Если приёмнику всё ещё требуются избыточные данные, он отмечает это в ACK, и передатчик повторно отправляет паритет, после чего выполняет повторное ожидание подтверждения.
  • В код добавлена функция formatWindowReceptionStatus(), формирующая строку вида |✅|⛔️|✅| для отображения состояния каждого пакета окна в журнале событий, чтобы сразу видеть доставленные и потерянные кадры.

Кодовый модуль Reed–Solomon для окон по 8 байт

  • В папке src/libs/fec добавлен модуль fec_rs.h/.cpp с таблицами поля GF(2^8) на примитивном полиноме 0x11D и шаблонными функциями encode_window<K,P>()/decode_window<K,P>() для формирования и восстановления RS-пакетов длиной 8 байт.
  • Кодер использует систематическую матрицу Вандермонда и формирует P паритетных блоков, совместимых с профилями K=8,P=2, K=8,P=4, K=10,P=6.
  • Декодер решает систему линейных уравнений методом Гаусса в GF(256) по любому набору из K принятых пакетов и возвращает false, если доступных столбцов меньше K.
  • Для верификации добавлен утилитарный тест tests/test_rs.cpp, который перебирает все допустимые комбинации стираний, а также проверяет восстановление бурстов длиной до K/2 с использованием новых функций.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published