История изменений
Исправление COKPOWEHEU, (текущая версия) :
Блин, а как твой дескриптор переписать на одно у-во, например на микрофон.
У меня архитектура аудиоустройства такая:
-
1 USB (на динамик)
-
2 MIC (виртуальный)
-
3 [->1], заглушка под feature
-
4 [->2], заглушка под feature
-
5 [->3], Speaker (виртуальный)
-
6 [->4], USB (на микрофон)
Соответственно если динамик не нужен, удаляете все нечетные сущности. Плюс можно в начале дескриптора изменить bNumInterfaces на 2, в заголовочном дескрипторе уменьшить количество интерфейсов до 1:
ARRLEN1(//AC interface header
bLENGTH, //bLength
USB_DESCR_CS_INTERFACE, //bDescriptorType
1, //bDescriptorSubType
USB_U16(0x0100), //bcdADC //AudioDeviceClass серийный номер
wTOTALLENGTH, //wTotalLength
/**/ 1, //bInCollection //количество интерфейсов в коллекции
1, //bInterfaceNr(1), //массив (список) номеров интерфейсов в коллекции
/**/ //bInterfaceNr(2), ...
)
Ну и лишний интерфейс вместе с эндпоинтом удалить. Само собой, в оставшемся эндпоинте поменять bTerminalLink.
У тебя там какая то магия в подсчете полей ))). Блин.
Ну магия, ну и что. С кем не бывает… А если серьезно, я как представил считать все это вручную, сразу стало лень, пришлось колдовать. Статьи-то мои почитайте, там ядро более-менее описано
Исходная версия COKPOWEHEU, :
Блин, а как твой дескриптор переписать на одно у-во, например на микрофон.
У меня архитектура аудиоустройства такая:
[list] [*]1. USB (на динамик) [*]2. MIC (виртуальный) [*]3. (подключено к 1), заглушка под feature [*]4. (подключено к 2), заглушка под feature [*]5. (подключено к 3), Speaker (виртуальный) [*]6. (подключено к 4), USB (на микрофон) [/list]
Соответственно если динамик не нужен, удаляете все нечетные сущности. Плюс можно в начале дескриптора изменить bNumInterfaces на 2, в заголовочном дескрипторе уменьшить количество интерфейсов до 1: [code=c] ARRLEN1(//AC interface header bLENGTH, //bLength USB_DESCR_CS_INTERFACE, //bDescriptorType 1, //bDescriptorSubType USB_U16(0x0100), //bcdADC //AudioDeviceClass серийный номер wTOTALLENGTH, //wTotalLength // 1, //bInCollection //количество интерфейсов в коллекции 1, //bInterfaceNr(1), //массив (список) номеров интерфейсов в коллекции // //bInterfaceNr(2), … ) [/code]
Ну и лишний интерфейс вместе с эндпоинтом удалить. Само собой, в оставшемся эндпоинте поменять bTerminalLink.
У тебя там какая то магия в подсчете полей ))). Блин.
Ну магия, ну и что. С кем не бывает… А если серьезно, я как представил считать все это вручную, сразу стало лень, пришлось колдовать. Статьи-то мои почитайте, там ядро более-менее описано