Знающие люди, подскажите, пожалуйста, по HDLC.
Ситуация такая. Устройство работает по USB, два FALCа на борту. Работаю с E1.
Наш драйвер поддерживает всего один поток Bulk, по нему и нужно организовать всю передачу данных. Все бы хорошо, если бы все передаваемые данные были бы синхронные - отсчеты голосовых каналов. Но к этим данным добавляются HDLC, скорость передачи которых отличается от скорости передачи голосовых данных. Чтобы быть точным, она может быть равна этой скорости (для E1 это 8 кГц), либо быть меньшей (поскольку фреймер добавляет сам контрольную сумму и делает битстаффинг). Данные нужно подсовывать фреймеру непрерывно иначе он оборвет передачу.
Есть идея рассмотреть ситуацию как коммутацию двух разноскоростных каналов. В случае переполнения буфера просто забить на потерявшиеся пакеты. Но в HDLC кажется нет органичения по размеру кадра, я не знаю какой буфер делать, чтобы гарантированно уметь передавать самый большой пакет.
Либо если есть возможность фрагментировать пакеты, то может просто их еще в компе разделять допустим на 1кбайтные части.
Это решение вообще корректно? Или может есть более рациональные решения?