A USB Composite Device is a USB Device which uses more than one USB class. In this use case, the "USB CDC (Composite Device)" module is used to create a USB composite device. Thus, this USB module can be associated with another "Composite Device" module, like "USB HID Mouse (Composite Device)".
Also, you can refer to application note AVR4902 ASF - USB Composite Device.
Setup steps
For the setup code of this use case to work, the basic use case must be followed.
Usage steps
Example code
Content of conf_usb.h: 
#define USB_DEVICE_EP_CTRL_SIZE  64
#define USB_DEVICE_NB_INTERFACE (X+2)
#define USB_DEVICE_MAX_EP (X+3)
#define  UDI_CDC_DATA_EP_IN_0          (1 | USB_EP_DIR_IN)  // TX
#define  UDI_CDC_DATA_EP_OUT_0         (2 | USB_EP_DIR_OUT) // RX
#define  UDI_CDC_COMM_EP_0             (3 | USB_EP_DIR_IN)  // Notify endpoint
#define  UDI_CDC_COMM_IFACE_NUMBER_0   X+0
#define  UDI_CDC_DATA_IFACE_NUMBER_0   X+1
#define UDI_COMPOSITE_DESC_T \
   usb_iad_desc_t udi_cdc_iad; \
   udi_cdc_comm_desc_t udi_cdc_comm; \
   udi_cdc_data_desc_t udi_cdc_data; \
   ...
#define UDI_COMPOSITE_DESC_FS \
   .udi_cdc_iad               = UDI_CDC_IAD_DESC_0, \
   .udi_cdc_comm              = UDI_CDC_COMM_DESC_0, \
   .udi_cdc_data              = UDI_CDC_DATA_DESC_0_FS, \
   ...
#define UDI_COMPOSITE_DESC_HS \
   .udi_cdc_iad               = UDI_CDC_IAD_DESC_0, \
   .udi_cdc_comm              = UDI_CDC_COMM_DESC_0, \
   .udi_cdc_data              = UDI_CDC_DATA_DESC_0_HS, \
   ...
#define UDI_COMPOSITE_API \
   &udi_api_cdc_comm,       \
   &udi_api_cdc_data,       \
   ...
Workflow
- Ensure that conf_usb.h is available and contains the following parameters required for a USB composite device configuration:
       
       
       #define USB_DEVICE_EP_CTRL_SIZE  64
       
       
       #define USB_DEVICE_NB_INTERFACE (X+2)
       
       
       
       #define USB_DEVICE_MAX_EP (X+3) 
 
 
- Ensure that conf_usb.h contains the description of composite device:
       
       #define  UDI_CDC_DATA_EP_IN_0            (1 | USB_EP_DIR_IN)  // TX
       #define  UDI_CDC_DATA_EP_OUT_0           (2 | USB_EP_DIR_OUT) // RX
       #define  UDI_CDC_COMM_EP_0               (3 | USB_EP_DIR_IN)  // Notify endpoint
       
       #define  UDI_CDC_COMM_IFACE_NUMBER_0     X+0
       #define  UDI_CDC_DATA_IFACE_NUMBER_0     X+1 
 
 
- Ensure that conf_usb.h contains the following parameters required for a USB composite device configuration:
       #define UDI_COMPOSITE_DESC_T \
          ...
          udi_cdc_comm_desc_t udi_cdc_comm; \
          udi_cdc_data_desc_t udi_cdc_data; \
          ...
       
       #define UDI_COMPOSITE_DESC_FS \
          ...
          ...
       
       #define UDI_COMPOSITE_DESC_HS \
          ...
          ...
       
       #define UDI_COMPOSITE_API \
          ...
          ... 
 
- Note
 - The descriptors order given in the four lists above must be the same as the order defined by all interface indexes. The interface index orders are defined through UDI_X_IFACE_NUMBER defines.
 Also, the CDC requires a USB Interface Association Descriptor (IAD) for composite device.