Разработка кроссплатформенной библиотеки 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()