Hallo Thorsten,
das ist so nicht vorgesehen, da dann zwei Interfaces angegeben werden müssen.
Der USB_Smart kann da nicht geändert werden aber der große USB schon, der aber nicht im Boot funktioniert.
Evtl langt es ja wenn du in der Win App dem User die Möglichkeit gibst auf Update zu klicken und dein Xmega meldet sich dann als MSD. Der kann dann gemütlich das Update draufschieben oder doe Logfiles sicher ...
Dann ins Boot springen und das Update durchführen.
Mann könnte den großen USB auch anpassen, so das man x Interfaces definieren kann, da habe ich aber keine Zeit zu und das ist alles nicht so einfach im AVRco, da er Const Record+ Array nur sehr rudimentär unterstützt.
Und z.Z werden ja nur Vendorrequest an den User weitergeleitet aber du brachst für die SCSI Commands die Classrequest durchgereicht, was nicht im implementiert ist.
Um deinen eigenen USB Setup Descriptor anzulegen musst du VOR dem laden des USB Treibers {$define USBDescFile} anlegen im "USBDescFile" File deine Sachen ausfüllen:
Code
{$IFDEF USBDescFile}
{$I USBDescFile } // load User Interface Descriptor
{$ELSE}
Const
FS_DEVICE_DESCRIPTOR : TDevice_desc = (
18, // Descriptor length (18 bytes)
$01, // Descriptor type (Device)
$01, $01, // Complies to USB Spec. Release (1.01)
$0, // Class code (0)
$0, // Subclass code (0)
$00, // Protocol (No specific protocol)
64, // Max. packet size for EP0 (64 bytes) Valid Sizes are 8, 16, 32, 64
Lo(USBvid), Hi(USBvid), // Vendor
Lo(USBpid), Hi(USBpid), // Product
Lo(USBprodRel), Hi(USBprodRel), // Device release number (1.00)
$01, // Mfr string descriptor index (None)
$02, // Product string descriptor index (None)
$03, // Serial Number string descriptor index (None)
$01 // Number of possible configurations (1)
);
FS_CONFIG_DESCRIPTOR : TConfigAll =
(SizeOf(TConfiguration_desc), // Length of the configuration Descriptor
2, // Configuration Descriptor
SizeOf(TConfigAll), // Total length of the configurations,interface and class/endpoint
0,
1, // Num of interface supported
1, // Configuration Value
0, // Index of string descriptor
$80, // Configurations Attributes
$FA, // Maximun Power (500mA)
SizeOf(TInterface_Desc), // Length of standard interface descriptor
4, // Standard Interface Type
0, // Num of Interface
0, // Alternate Setting Selector
USBendPoints, // Num of Endpoints !!!!!!!!!!!!!!!!!!!!!!
$0, // Interface Class
$0, // Interface Sub Class
0, // Interface Protocol
0, // Index of interface string desriptor
//################## USB Endpoints #########################################
SizeOf(TEndpoint_Desc), // Length of Standard Endpoint Descriptor
5, // Standard Endpoint Type
$81, // Endpoint Address
2, // Endpoint Attributes
64, 0, // Endpoint Max Packet Size
0, // Interval for Polling Endpoint for data transfer
SizeOf(TEndpoint_Desc), // Length of Standard Endpoint Descriptor
5, // Standard Endpoint Type
1, // Endpoint Address
2, // Endpoint Attributes
64, 0, // Endpoint Max Packet Size
0 // Interval for Polling Endpoint for data transfer
);
{$ENDIF}
{$Validate_off}
miparo