Sun Sep 1 11:05:59 EDT 2013


Reading the full spec seems like a waste of time as only the bare
minimum of functionalit is necessary.  Let's start from working code.

In the at91lib code, the reply to GET_DESCRIPTOR CONFIGURATION is
described by the type:

typedef struct {
    USBConfigurationDescriptor configuration;
    USBInterfaceDescriptor  communication;
    CDCHeaderDescriptor header;
    CDCCallManagementDescriptor callManagement;
    CDCAbstractControlManagementDescriptor abstractControlManagement;
    CDCUnionDescriptor union1;
    USBEndpointDescriptor notification;
    USBInterfaceDescriptor data;
    USBEndpointDescriptor dataOut;
    USBEndpointDescriptor dataIn;
} __attribute__ ((packed)) CDCDSerialDriverConfigurationDescriptors;

First, figure out the size of this to see if it fits in the Staapl

-> 67 bytes, so we need to implement multiple IN packets first.

This contains two interfaces.