PRAKTIKA.plyask.in

JS/TS библиотека для кодирования и декодирования FSK сигнала

Нужно реализовать или существенно доработать существующую библиотеку на JavaScript/TypeScript, которая способна кодировать и декодировать FSK аудиосигнал, пригодный для работы с AX25 протоколом. Эта библиотека должна уметь принимать и передавать такие сигналы через аудиоканал (например, динамик и микрофон браузера), без использования специальных разрешений или дополнительных подключаемых устройств.

Предоплата 40 000 ₽

При идеальном результате могу вернуть до 100% — 40 000 ₽

Цель и задачи работы

Цель задачи — разработать, протестировать и подготовить к использованию модуль, реализующий кодирование и декодирование FSK-сигналов, подходящих для AX25-протокола. Эта библиотека станет частью инструментария для связи устройств через звук, без сетевых подключений. Задача включает как техническую реализацию, так и продуманную архитектуру, пригодную для встраивания в более крупный проект.

Основные задачи:

  • Провести анализ текущих open-source решений и их ограничений.
  • Выделить оптимальные параметры сигнала (частоты, скорость передачи, структура пакета).
  • Реализовать или переработать библиотеку под требования AX25 и работы в браузере.
  • Обеспечить стабильную синхронизацию и декодирование входящих сигналов.
  • Написать тесты и продемонстрировать работу на простом примере.

Содержание работы

Для начала нужно изучить две основные библиотеки:

  • modem.js — содержит базовую реализацию FSK, но с ошибками и плохой синхронизацией;
  • gibberlink — более музыкальная, но в ней сложно использовать AX25.

Важно понять ограничения этих реализаций и предложить способ их преодоления. Возможно, будет полезно вычленить рабочие фрагменты из обеих библиотек и объединить их с улучшенной логикой обработки сигнала.

Далее предстоит:

  • Создать новый репозиторий (или форк одного из указанных) с полноценной структурой проекта.
  • Реализовать кодировщик AX25 в виде аудиосигнала (используя Web Audio API).
  • Реализовать декодировщик, который способен различать приходящий аудиосигнал и корректно извлекать из него данные.
  • Продумать тестовую среду (например, генерация сигнала и одновременное его принятие для отладки).
  • Подготовить документацию по API библиотеки.

Всё должно работать в браузере, без специальных разрешений и внешних зависимостей (например, без WebUSB, WebSerial и т.п.).

Результат (его описание) и критерии завершения работы

На выходе должна получиться библиотека, написанная на TypeScript (допустим частичный JS, если необходимо), с открытым исходным кодом, доступная для подключения в любой браузерный проект. Основные функции:

  • Генерация FSK-сигнала из строки.
  • Воспроизведение FSK-сигнала через динамик.
  • Приём аудиосигнала с микрофона.
  • Распознавание и декодирование FSK в строку.
  • Поддержка AX25 формата или совместимость с ним.

Критерии завершения:

  • Работающий пример с передачей и приёмом в пределах одного устройства (замкнутый цикл).
  • Поддержка частот и скорости, совместимых с AX25.
  • Документация по использованию библиотеки.
  • Покрытие базовыми тестами.
  • Код в git, с чистыми коммитами и понятной историей.

Бонус: если библиотека покажет стабильную работу при передаче между двумя устройствами (например, двух браузеров на телефонах) — это может считаться выдающимся результатом, что открывает возможность полного возврата оплаты или дополнительного вознаграждения.