Как обеспечить DEXT для интерфейса USB ACM, имеющего два дескриптора интерфейса (Control/Data)?

Интерфейс USB ACM имеет два дескриптора интерфейса: интерфейс управления ACM и интерфейс данных ACM. Управление ACM имеет EP прерывания, а интерфейс данных имеет EP BULK IN/OUT.

ACM Control используется для отправки и чтения данных прерывания с устройства, в настоящее время DEXT загружен с подклассом IOUserUSBSerial и записью tty, созданной для связи (/dev/cu.usbmodem1481). И реализация работает, способная обрабатывать методы HW Instance.

class UserUsbACMControl: public public IOUserUSBSerial
{

}

Данные ACM используются для записи и чтения данных, таких как AT-команды Req и Response с устройства, в настоящее время DEXT загружается с подклассом IOUserUSBSerial и записью tty, созданной для связи (/dev/cu.usbmodem1482). И реализация работает AT Req и response.

class UserUsbACMData: public public IOUserUSBSerial
{

}

Теперь проблема заключается в создании двух записей tty, возможно ли иметь одну запись TTY, где приложения открывают порт и обмениваются данными? Поскольку для функциональности ACM существуют два дескриптора интерфейса, как мы можем продолжить реализацию DEXT?

В драйверах kext драйверы данных загружаются как IOSerialDriverSync, а драйвер управления загружается как IOService, а при выполнении сопоставления служб (IOService::serviceMatching) вызываются пользовательские методы драйверов управления.

В случае разборки и проверки встроенных в Apple драйверов ECM DEXT, в них есть данные ECM/ ECM. ECM попытался открыть интерфейс данных, найдя дескрипторы, и смог отправить BULK USB Pipes, используя класс IOUSBHostPipes.

ECM - IOUserNetworkEthernet (info.plist)

Данные ECM - IOUserService (info.plist)

0 ответов

Другие вопросы по тегам