Разработка PTT-радиостанции на базе протокола Reticulum (iOS)
- Общее описание Создание мобильного приложения для защищенной голосовой связи в режиме Push-to-Talk (PTT). Приложение должно поддерживать работу как через глобальную сеть (IP), так и через локальные Mesh-сети (Wi-Fi/Bluetooth) без центральных серверов, сохраняя активность в фоновом режиме.
- Технологический стек Frontend & UI/UX
- SwiftUI: Основной фреймворк интерфейса.
- ActivityKit: Реализация виджетов Live Activities для управления рацией с экрана блокировки и через Dynamic Island. Core Frameworks (Системный уровень)
- PushToTalk (PTT) Framework: Обеспечение фонового режима работы аудио-сессии и системного интерфейса передачи.
- Network.framework: Высокоуровневая работа с UDP-сокетами и Multicast-группами для Mesh-взаимодействия.
- PushKit (VoIP): Пробуждение приложения для приема вызова через интернет. Network & Mesh Layer
- Reticulum-rs (Rust): Ядро протокола Reticulum, скомпилированное под iOS (через Mozilla UniFFI или Swift-Rust-Bridge).
- Libp2p / Multipeer Connectivity: Вспомогательные уровни для обнаружения соседей в локальной сети. Audio & Crypto
- Opus (C-library): Кодирование голоса (битрейт 8–24 kbps).
- AVAudioEngine: Захват и воспроизведение звука, микширование.
- Swift-Crypto: Дополнительный слой шифрования (ED25519, AES-GCM), если возможностей RNS недостаточно.
- Ключевые модули системы
| Модуль | Технология | Функционал |
|---|---|---|
| Transport Manager | Network.framework | Управление интерфейсами (Wi-Fi, Bluetooth, Ethernet). |
| RNS Node | Reticulum-rs | Маршрутизация пакетов, работа с "путями" (Paths) и именами. |
| PTT Controller | PTChannelManager | Взаимодействие с ОС: запрос прав на микрофон. |
| Audio Engine | AVAudioEngine + Opus | Обработка звука: эхоподавление, сжатие. |
| Live Activity | WidgetKit | Отображение активного канала в Dynamic Island. |
- Требования к разрешениям (Entitlements) Для работы проекта в Apple Developer Account должны быть активированы следующие пункты:
- Multicast Networking: Для отправки/приема пакетов Reticulum в локальном Wi-Fi.
- Background Modes: * Audio, AirPlay, and Picture in Picture
- Voice over IP
- Background fetch
- PushToTalk Capability: Специфическое разрешение для использования PTT фреймворка.
- Жизненный цикл фонового процесса (Workflow)
- Ожидание: Приложение находится в фоне. Reticulum-узел работает в режиме пониженного потребления.
- Событие: Получен входящий пакет от Reticulum (через UDP) или VoIP Push.
- Активация: Приложение вызывает PTChannelManager. Система активирует аудио-сессию.
- Воспроизведение: Декодирование Opus-пакетов и вывод звука через динамик.
- Индикация: Пользователь видит активную сессию в Dynamic Island и может нажать "Ответить", не разблокируя телефон.