Можно ли использовать OTG Host Negotiation Protocol для изменения режимов при подключении двух устройств?
У меня есть два телефона Android, подключенных с помощью кабеля OTG. Очевидно, что кабель заставляет один телефон в режиме хоста, а другой становится периферийным. Я хотел бы иметь возможность динамически чередовать состояние хоста / периферии устройств без переключения кабеля, и спецификация OTG HNP, кажется, указывает на то, что это возможно. Я нашел дополнительную информацию об этом здесь, но я не уверен, куда идти с этим - https://android.googlesource.com/kernel/msm/+/android-msm-bullhead-3.10-marshmallow-dr/Documentation/usb/msm_otg.txt
1 ответ
Да, это возможно. Хорошая находка по самой технической документации. Однако сайт Developer.android.com и USB.org содержат больше информации о реализации:
USB-аксессуары и режимы хоста напрямую поддерживаются в Android 3.1 (уровень API 12) или более новых платформах. Режим аксессуаров USB также перенесен в Android 2.3.4 (уровень API 10) в качестве дополнительной библиотеки для поддержки более широкого спектра устройств. Производители устройств могут выбрать, следует ли включать библиотеку надстроек в образ системы устройства. Ссылка на сайт
Насколько я могу судить, согласование хоста всегда отдает предпочтение традиционным хост-контроллерам, таким как компьютеры. Устройства Android традиционно были аксессуарами USB. Однако очень сложная ситуация возникает, когда у вас есть концентратор с хостом (например, ПК) и другим подключенным аксессуаром. Кажется, что нет никакого способа урегулировать спор о том, какое устройство должно быть хостом - Android или ПК. Например, я подключил хост-компьютер к устройству Android с подключенным концентратором и гигабитным сетевым ключом. Я никогда не мог установить связь с ключом. На самом деле ГНП никогда не происходило.
Наконец, документация предполагает, что хост отвечает за работу USB-потока. Что кажется наиболее перспективным, так это документация, которая определяет направление USBEndpoint.