Цитата(galjoen @ Mar 19 2009, 04:17)

Я такое неоднократно делал. Конфигурация одна д.б., а интерфейсов два или больше. Там у каждого интерфейса свои EP. А в SETUP пакетах есть специальное поле, в котором N интерфейса указывается, к которому этот пакет относится. Всё это решается. НО. Раньше CDC класс виндой определялся только по полю bDeviceClass в дескрипторе DEVICE. А он один на весь девайс. А при попытке CDC класс задать в дескрипторе INTERFACE у меня что-то ничего не работало. Хотя м.б. это у меня руки кривые. Или м.б. сейчас уже и работает - ошибку в винде исправили. Не знаю - мне с тех пор не надо было.
Единственно у них там ещё один глюк был. Дескриптор интерфейса у MassStorage должен первым идти и bInterfaceNumber у него соответственно д.б. =0. Иначе MS работать не будет.
Поясните, плиз, про интерфейсы поподробнее, может видели такую проблему :
делаю три интерфейса,
bNumInterfaces 03h
и одну конфигурацию
bConfigurationValue 01h
дальше пишу дискриптор, с номером "0" , и EP1IN для него. (соответсвенно и дискриптор EP1)
дальше пишу дискриптор, с номером "1" , и EP2 и EP4 для него. (соответсвенно и дискрипторы их по-порядку)
дальше пишу дискриптор, с номером "2" , и EP6 и EP8 для него. (соответсвенно и дискрипторы их тоже по-порядку)
компилю, зашиваю, смотрю в CYconsol, видит только интерфейс "0"....
в INIT функции ничего не пишу.
если оставляю один интерфейс, то в нем видны все заданные фифошки... если два - то тоже самое что и при трех...
куда смотреть?