PRAKTIKA.plyask.in

Разработка кроссплатформенной библиотеки HDLC-протокола на C#

Реализовать библиотеку HDLC-протокола на C# с акцентом на модульность, читаемость и независимость от конкретной платформы или среды. Библиотека должна уметь собирать и парсить HDLC-фреймы, отслеживать порядок кадров, управлять таймерами (в ручном режиме), и поддерживать основные режимы работы HDLC.

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

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

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

Цель — создать C#-библиотеку, реализующую HDLC-протокол, независимую от транспорта и платформы, легко встраиваемую в разные типы проектов — от микроконтроллеров до серверных приложений. Основная задача — построить модульный, расширяемый, тестируемый код с чистым API, не зависящий от сокетов, сериал-портов или таймеров ОС.

В рамках задачи тебе предстоит:

  • изучить HDLC и описать его ключевые режимы;
  • реализовать HDLC-логику в виде классов с разделением ответственности;
  • продумать взаимодействие с внешним миром через ввод-вывод байтов и вызовы таймера;
  • протестировать реализацию и подготовить примеры использования.

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

Тебе нужно:

  • Ознакомиться с протоколом HDLC и кратко задокументировать его режимы: NRM, ARM, ABM, и фреймы (I, S, U).
  • Спроектировать архитектуру библиотеки:
    • HdlcSession, HdlcFrame, HdlcEncoder, HdlcDecoder, IHdlcTransport или подобное;
    • строгая типизация и разграничение ответственности;
    • опционально — использование Span<byte> или Memory<byte> для повышения производительности.
  • Реализовать:
    • Сборку фрейма (кадры I/S/U, FCS, экранирование, адресация);
    • Разбор полученных байтов в кадры с проверкой CRC и порядком;
    • API верхнего уровня:
      • void Send(byte[] data)
      • byte[]? Receive()
      • void InputFromLink(byte[] data)
      • byte[]? GetDataToSend()