...с выездом и ночевкой, но я не поехал. Поэтому день был не рабочий и решил добить Lora модуль для RNS-Gate. До этого исследовал вопрос по софту и оказалось, что все довольно грустно. Lora модули почему-то не ставят на одноплатники с Linux. Все проекты это или Arduino или что нибудь подобное на базе ESP32. Все что удалось найти это LoRaRF-Python и sx1262. Первый как можно догадаться на Python, второй на Си. Мне ближе Си - начал с него. Не заработал. Вообще никак. Регистры вроде пишет и читает, но ни приема и передачи нет. Беглый взгляд показал, что он работает через IRQ пин на DIO1 - а он почему-то не шевелиться.
Поковырял и перешел к Python библиотеке. С ней все сильно лучше. Если не указывать DIO1 пин - она опрашивает состояние IRQ из регистра и может работать без пина. И реально работает: прием и передача есть. "Ну к удавам, так к удавам", тем более что Reticulum написан на Python и правильно было бы сделать SPI Lora интерфейс прямо внутри него. Накидал тестовый скрипт и начал проверять. У RNS есть особенность - его интерфейсы должны уметь отправлять пакеты не менее 500 байт. У Lora ограничение 255. Штатный RNode (это Lora + ESP32 и работает через USB) обходит это, разбивая пакет и потом собирая его на другой стороне. Т.е. при отправке например 300 байт улетает 2 пакета с минимальным временем между ними. Так вот, оказалось Python библиотека не успевает поймать второй пакет. Потому что она работает в режиме Single RX, а нужен Continuous RX и вот в этом режиме она не принимает вообще ничего.
Убил на все это почти пол дня и решил таки делать свою реализацию на Си. Взял Python версию и на тестовом скрипте проверил какой минимум из функций нужен чтобы работал прием и передача. Начал с передачи - переписал Python функции на C и к вечеру передача завелась.
За субботу дописал прием и начал разбираться с Continious RX. К обеду воскресенья добил. Передаю через RNode большой пакет, и принимаю у себя два подряд - все успевает!
В итоге базовый функционал для работы с SPI модулями sx1261/1262/1268 получился всего на 700 строк кода
Осталось реализовать RNode протокол что-бы Reticulum думал что общается со своей обычной "нодой". Это уже просто. Благо что буквально на днях для работы RNode через WiFi автор добавил возможность подключения RNode через TCP (было только через serial)
