неожиданный ввод с внешнего устройства - iOS

Мой iPod Touch (4G, взломанный, iOS 5.0) подключен к док-станции (Сделано для iPod), которая отправляет команды через разъем док-станции (скорее всего, используя протокол Apple Accessory Protocol) на iPod, например для запуска и остановки воспроизведения. Поскольку iPod взломан, я могу видеть команды, поступающие, когда я подключаюсь к iPod по ssh, как показано ниже (здесь многократное нажатие кнопки воспроизведения / паузы на док-станции, каждая строка соответствует одному нажатию кнопки):

iPod Touch:~ mobile$ od /dev/tty.iap
0000000 102000 177020 004017 000360 004017 000360 144204 004317
0000020 000340 002020 000376 004017 177430 002010 000376 000440
0000040 147730 160010 004377 147740 160010 020000 154001 102000
0000060 177020 020400 177000 102000 177710 160010 007400 014010
0000100 000377 004417 177430 007400 014011 000377 002020 020400
0000120 177000 004000 000300 140010 004377 000340 000440 000344

Я не понимаю, почему ввод здесь всегда разный. Поскольку я нажимаю ту же кнопку, я ожидаю, что каждая строка ввода будет одинаковой (очевидно, игнорируя маркер смещения в начале). В остальном кнопка воспроизведения / паузы работает должным образом (когда эта команда od не запущена).

Итак, мой вопрос: есть ли лучший способ вызвать od или другую утилиту, которую я могу использовать, чтобы правильно увидеть запрос? Или мне нужно изменить скорость передачи данных или что-то в этом роде?

РЕДАКТИРОВАТЬ: Время от времени отображаются две строки ввода для одного нажатия кнопки вместо одной. Может быть проблема с выравниванием / буферизацией?


person newenglander    schedule 02.05.2012    source источник


Ответы (1)


Очевидно, проблема была в скорости передачи данных, которая была (по умолчанию) 9600 для /dev/tty.iap. В небольшой программе на C (не знаю, как установить скорость передачи для od или hexdump или напрямую изменить ее для последовательного порта), которая изменила скорость передачи на 19200 с помощью cfsetspeed, ввод команд от внешнего устройства был неизменно идентичным .

person newenglander    schedule 04.05.2012
comment
stty -F /dev/tty.iap 19200 - это способ установить скорость последовательного порта через командную строку. Чтобы отобразить текущие настройки, попробуйте stty -F /dev/tty.iap, а чтобы узнать больше о stty: stty --help. - person Mackie Messer; 26.02.2013
comment
Кажется, у меня не работает, см. Мой вопрос здесь: unix.stackexchange.com/q/37972/18401 - person newenglander; 26.02.2013
comment
Это действительно должно сработать. Но похоже, что какой-то другой процесс меняет его обратно. Я вижу такие системные сообщения, как: отказ от iap последовательного порта с последующим повторным подключением последовательного порта iap, поэтому я предполагаю, что изменение сохраняется только до тех пор, пока вы не закроете tty, а затем какой-то системный процесс вернет исходные настройки. - person Mackie Messer; 26.02.2013
comment
Интересно, спасибо, что заглянули. Если вы хотите ответить на вопрос с этой информацией на сайте UNIX, я приму ответ. - person newenglander; 26.02.2013