В общем такая ситуация. Имеется софтина под Windows, работающая с ИК-портом, переписываю ее под Линукс. Все бы хорошо, но при приеме данных функцией recv помимо собственно данных принимается еще что-то наподобие заголовка (28 байт в начале, далее идут реально отправляемые данные). В Windows подобная проблема также наблюдалась, но решилась переключением в 9-wire режим (IrCOMM) следующим кодом:
Код: Выделить всё
int x = 1;
setsockopt(ss, SOL_IRLMP, IRLMP_9WIRE_MODE, (char *)&x, sizeof(x));В Линуксе такое не срабатывает. Отсюда, собственно, вопрос: как принудительно установить 9-wire режим? Либо же есть другой способ избавиться от этого 28 байтового заголовка, ладно при приеме я могу его просто игнорировать, но при передаче данных он тоже требует что-то прописать в этот заголовок. В противном случае передача данных просто не идет.
PS Если кому интересно, первые 28 байт выглядят вот так:
0x1a, 0x10, 0x04, 0x00, 0x01, 0xc2, 0x00, 0x11,
0x01, 0x03, 0x12, 0x01, 0x00, 0x13, 0x02, 0x11,
0x13, 0x14, 0x02, 0x06, 0x05, 0x16, 0x01, 0x00,
0x20, 0x01, 0x03, 0x00