Some minor whitespace corrections.

pull/1469/head
Dean Camera 15 years ago
parent 462fb500d7
commit b2330934b9

@ -42,18 +42,18 @@
#include <avr/power.h> #include <avr/power.h>
#include "Descriptors.h" #include "Descriptors.h"
#include <LUFA/Version.h> #include <LUFA/Version.h>
#include <LUFA/Drivers/Board/LEDs.h> #include <LUFA/Drivers/Board/LEDs.h>
#include <LUFA/Drivers/Board/Joystick.h> #include <LUFA/Drivers/Board/Joystick.h>
#include <LUFA/Drivers/Peripheral/ADC.h> #include <LUFA/Drivers/Peripheral/ADC.h>
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/Device/Audio.h> #include <LUFA/Drivers/USB/Class/Device/Audio.h>
/* Macros: */ /* Macros: */
/** ADC channel number for the microphone input. */ /** ADC channel number for the microphone input. */
#define MIC_IN_ADC_CHANNEL 2 #define MIC_IN_ADC_CHANNEL 2
/** Maximum ADC sample value for the microphone input. */ /** Maximum ADC sample value for the microphone input. */
#define SAMPLE_MAX_RANGE 0xFFFF #define SAMPLE_MAX_RANGE 0xFFFF
@ -71,11 +71,11 @@
/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
#define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
/* Function Prototypes: */ /* Function Prototypes: */
void SetupHardware(void); void SetupHardware(void);
void ProcessNextSample(void); void ProcessNextSample(void);
void EVENT_USB_Connect(void); void EVENT_USB_Connect(void);
void EVENT_USB_Disconnect(void); void EVENT_USB_Disconnect(void);
void EVENT_USB_ConfigurationChanged(void); void EVENT_USB_ConfigurationChanged(void);

@ -45,22 +45,22 @@
USB_Descriptor_Device_t PROGMEM DeviceDescriptor = USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
.USBSpecification = VERSION_BCD(02.00), .USBSpecification = VERSION_BCD(02.00),
.Class = 0x00, .Class = 0x00,
.SubClass = 0x00, .SubClass = 0x00,
.Protocol = 0x00, .Protocol = 0x00,
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = 0x03EB,
.ProductID = 0x2047, .ProductID = 0x2047,
.ReleaseNumber = 0x0000, .ReleaseNumber = 0x0000,
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
.ProductStrIndex = 0x02, .ProductStrIndex = 0x02,
.SerialNumStrIndex = NO_DESCRIPTOR, .SerialNumStrIndex = NO_DESCRIPTOR,
.NumberOfConfigurations = 1 .NumberOfConfigurations = 1
}; };
@ -80,12 +80,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
.ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigurationStrIndex = NO_DESCRIPTOR,
.ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100) .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
}, },
.AudioControlInterface = .AudioControlInterface =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
@ -94,40 +94,40 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 0, .TotalEndpoints = 0,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x01, .SubClass = 0x01,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioControlInterface_SPC = .AudioControlInterface_SPC =
{ {
.Header = {.Size = sizeof(USB_AudioInterface_AC_t), .Type = DTYPE_AudioInterface}, .Header = {.Size = sizeof(USB_AudioInterface_AC_t), .Type = DTYPE_AudioInterface},
.Subtype = DSUBTYPE_Header, .Subtype = DSUBTYPE_Header,
.ACSpecification = VERSION_BCD(01.00), .ACSpecification = VERSION_BCD(01.00),
.TotalLength = (sizeof(USB_AudioInterface_AC_t) + .TotalLength = (sizeof(USB_AudioInterface_AC_t) +
sizeof(USB_AudioInputTerminal_t) + sizeof(USB_AudioInputTerminal_t) +
sizeof(USB_AudioOutputTerminal_t)), sizeof(USB_AudioOutputTerminal_t)),
.InCollection = 1, .InCollection = 1,
.InterfaceNumbers = {1}, .InterfaceNumbers = {1},
}, },
.InputTerminal = .InputTerminal =
{ {
.Header = {.Size = sizeof(USB_AudioInputTerminal_t), .Type = DTYPE_AudioInterface}, .Header = {.Size = sizeof(USB_AudioInputTerminal_t), .Type = DTYPE_AudioInterface},
.Subtype = DSUBTYPE_InputTerminal, .Subtype = DSUBTYPE_InputTerminal,
.TerminalID = 0x01, .TerminalID = 0x01,
.TerminalType = TERMINAL_IN_MIC, .TerminalType = TERMINAL_IN_MIC,
.AssociatedOutputTerminal = 0x00, .AssociatedOutputTerminal = 0x00,
.TotalChannels = 1, .TotalChannels = 1,
.ChannelConfig = 0, .ChannelConfig = 0,
.ChannelStrIndex = NO_DESCRIPTOR, .ChannelStrIndex = NO_DESCRIPTOR,
.TerminalStrIndex = NO_DESCRIPTOR .TerminalStrIndex = NO_DESCRIPTOR
}, },
@ -136,14 +136,14 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
{ {
.Header = {.Size = sizeof(USB_AudioOutputTerminal_t), .Type = DTYPE_AudioInterface}, .Header = {.Size = sizeof(USB_AudioOutputTerminal_t), .Type = DTYPE_AudioInterface},
.Subtype = DSUBTYPE_OutputTerminal, .Subtype = DSUBTYPE_OutputTerminal,
.TerminalID = 0x02, .TerminalID = 0x02,
.TerminalType = TERMINAL_STREAMING, .TerminalType = TERMINAL_STREAMING,
.AssociatedInputTerminal = 0x00, .AssociatedInputTerminal = 0x00,
.SourceID = 0x01, .SourceID = 0x01,
.TerminalStrIndex = NO_DESCRIPTOR .TerminalStrIndex = NO_DESCRIPTOR
}, },
.AudioStreamInterface_Alt0 = .AudioStreamInterface_Alt0 =
@ -152,13 +152,13 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.InterfaceNumber = 1, .InterfaceNumber = 1,
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 0, .TotalEndpoints = 0,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -168,27 +168,27 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.InterfaceNumber = 1, .InterfaceNumber = 1,
.AlternateSetting = 1, .AlternateSetting = 1,
.TotalEndpoints = 1, .TotalEndpoints = 1,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioStreamInterface_SPC = .AudioStreamInterface_SPC =
{ {
.Header = {.Size = sizeof(USB_AudioInterface_AS_t), .Type = DTYPE_AudioInterface}, .Header = {.Size = sizeof(USB_AudioInterface_AS_t), .Type = DTYPE_AudioInterface},
.Subtype = DSUBTYPE_General, .Subtype = DSUBTYPE_General,
.TerminalLink = 0x02, .TerminalLink = 0x02,
.FrameDelay = 1, .FrameDelay = 1,
.AudioFormat = 0x0001 .AudioFormat = 0x0001
}, },
.AudioFormat = .AudioFormat =
{ {
.Header = {.Size = sizeof(USB_AudioFormat_t), .Type = DTYPE_AudioInterface}, .Header = {.Size = sizeof(USB_AudioFormat_t), .Type = DTYPE_AudioInterface},
@ -239,7 +239,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
USB_Descriptor_String_t PROGMEM LanguageString = USB_Descriptor_String_t PROGMEM LanguageString =
{ {
.Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
.UnicodeString = {LANGUAGE_ID_ENG} .UnicodeString = {LANGUAGE_ID_ENG}
}; };
@ -250,7 +250,7 @@ USB_Descriptor_String_t PROGMEM LanguageString =
USB_Descriptor_String_t PROGMEM ManufacturerString = USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = L"Dean Camera" .UnicodeString = L"Dean Camera"
}; };
@ -261,7 +261,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString =
USB_Descriptor_String_t PROGMEM ProductString = USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(18), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(18), .Type = DTYPE_String},
.UnicodeString = L"LUFA Audio In Demo" .UnicodeString = L"LUFA Audio In Demo"
}; };

@ -47,7 +47,7 @@
/** Endpoint number of the Audio isochronous streaming data endpoint. */ /** Endpoint number of the Audio isochronous streaming data endpoint. */
#define AUDIO_STREAM_EPNUM 1 #define AUDIO_STREAM_EPNUM 1
#else #else
#define AUDIO_STREAM_EPNUM 3 #define AUDIO_STREAM_EPNUM 3
#endif #endif
/** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires
@ -55,10 +55,10 @@
* USB AVR models will result in unavoidable distorted output. * USB AVR models will result in unavoidable distorted output.
*/ */
#define AUDIO_STREAM_EPSIZE ENDPOINT_MAX_SIZE(AUDIO_STREAM_EPNUM) #define AUDIO_STREAM_EPSIZE ENDPOINT_MAX_SIZE(AUDIO_STREAM_EPNUM)
/** Sample frequency of the data being transmitted through the streaming endpoint. */ /** Sample frequency of the data being transmitted through the streaming endpoint. */
#define AUDIO_SAMPLE_FREQUENCY 48000 #define AUDIO_SAMPLE_FREQUENCY 48000
/* Type Defines: */ /* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the /** Type define for the device configuration descriptor structure. This must be defined in the
* application code, as the configuration descriptor contains several sub-descriptors which * application code, as the configuration descriptor contains several sub-descriptors which
@ -78,7 +78,7 @@
USB_AudioStreamEndpoint_Std_t AudioEndpoint; USB_AudioStreamEndpoint_Std_t AudioEndpoint;
USB_AudioStreamEndpoint_Spc_t AudioEndpoint_SPC; USB_AudioStreamEndpoint_Spc_t AudioEndpoint_SPC;
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);

@ -99,7 +99,7 @@ void ProcessNextSample(void)
/* Massage signed 16-bit left and right audio samples into signed 8-bit */ /* Massage signed 16-bit left and right audio samples into signed 8-bit */
int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8); int8_t LeftSample_8Bit = (LeftSample_16Bit >> 8);
int8_t RightSample_8Bit = (RightSample_16Bit >> 8); int8_t RightSample_8Bit = (RightSample_16Bit >> 8);
/* Mix the two channels together to produce a mono, 8-bit sample */ /* Mix the two channels together to produce a mono, 8-bit sample */
int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1); int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
@ -160,9 +160,9 @@ void EVENT_USB_Connect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO)) #if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* PWM speaker timer initialization */ /* PWM speaker timer initialization */
TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0) TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0)
| (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP | (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP
TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed
#endif #endif
} }
/** Event handler for the library USB Disconnection event. */ /** Event handler for the library USB Disconnection event. */
@ -176,7 +176,7 @@ void EVENT_USB_Disconnect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO)) #if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* Stop the PWM generation timer */ /* Stop the PWM generation timer */
TCCRxB = 0; TCCRxB = 0;
#endif #endif
#if defined(AUDIO_OUT_MONO) #if defined(AUDIO_OUT_MONO)
/* Set speaker as input to reduce current draw */ /* Set speaker as input to reduce current draw */

@ -45,22 +45,22 @@
USB_Descriptor_Device_t PROGMEM DeviceDescriptor = USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
.USBSpecification = VERSION_BCD(02.00), .USBSpecification = VERSION_BCD(02.00),
.Class = 0x00, .Class = 0x00,
.SubClass = 0x00, .SubClass = 0x00,
.Protocol = 0x00, .Protocol = 0x00,
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = 0x03EB,
.ProductID = 0x2046, .ProductID = 0x2046,
.ReleaseNumber = 0x0000, .ReleaseNumber = 0x0000,
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
.ProductStrIndex = 0x02, .ProductStrIndex = 0x02,
.SerialNumStrIndex = NO_DESCRIPTOR, .SerialNumStrIndex = NO_DESCRIPTOR,
.NumberOfConfigurations = 1 .NumberOfConfigurations = 1
}; };
@ -80,7 +80,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
.ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigurationStrIndex = NO_DESCRIPTOR,
.ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100) .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
@ -94,12 +94,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 0, .TotalEndpoints = 0,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x01, .SubClass = 0x01,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioControlInterface_SPC = .AudioControlInterface_SPC =
@ -109,11 +109,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ACSpecification = VERSION_BCD(01.00), .ACSpecification = VERSION_BCD(01.00),
.TotalLength = (sizeof(USB_AudioInterface_AC_t) + .TotalLength = (sizeof(USB_AudioInterface_AC_t) +
sizeof(USB_AudioInputTerminal_t) + sizeof(USB_AudioInputTerminal_t) +
sizeof(USB_AudioOutputTerminal_t)), sizeof(USB_AudioOutputTerminal_t)),
.InCollection = 1, .InCollection = 1,
.InterfaceNumbers = {1}, .InterfaceNumbers = {1},
}, },
.InputTerminal = .InputTerminal =
@ -143,7 +143,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.SourceID = 0x01, .SourceID = 0x01,
.TerminalStrIndex = NO_DESCRIPTOR .TerminalStrIndex = NO_DESCRIPTOR
}, },
.AudioStreamInterface_Alt0 = .AudioStreamInterface_Alt0 =
@ -154,11 +154,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 0, .TotalEndpoints = 0,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -170,11 +170,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 1, .AlternateSetting = 1,
.TotalEndpoints = 1, .TotalEndpoints = 1,
.Class = 0x01, .Class = 0x01,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -239,7 +239,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
USB_Descriptor_String_t PROGMEM LanguageString = USB_Descriptor_String_t PROGMEM LanguageString =
{ {
.Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
.UnicodeString = {LANGUAGE_ID_ENG} .UnicodeString = {LANGUAGE_ID_ENG}
}; };
@ -250,7 +250,7 @@ USB_Descriptor_String_t PROGMEM LanguageString =
USB_Descriptor_String_t PROGMEM ManufacturerString = USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = L"Dean Camera" .UnicodeString = L"Dean Camera"
}; };
@ -261,7 +261,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString =
USB_Descriptor_String_t PROGMEM ProductString = USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(19), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(19), .Type = DTYPE_String},
.UnicodeString = L"LUFA Audio Out Demo" .UnicodeString = L"LUFA Audio Out Demo"
}; };

@ -47,7 +47,7 @@
/** Endpoint number of the Audio isochronous streaming data endpoint. */ /** Endpoint number of the Audio isochronous streaming data endpoint. */
#define AUDIO_STREAM_EPNUM 1 #define AUDIO_STREAM_EPNUM 1
#else #else
#define AUDIO_STREAM_EPNUM 3 #define AUDIO_STREAM_EPNUM 3
#endif #endif
/** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires /** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires
@ -81,6 +81,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -45,22 +45,22 @@
USB_Descriptor_Device_t PROGMEM DeviceDescriptor = USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
.USBSpecification = VERSION_BCD(01.10), .USBSpecification = VERSION_BCD(01.10),
.Class = 0x02, .Class = 0x02,
.SubClass = 0x00, .SubClass = 0x00,
.Protocol = 0x00, .Protocol = 0x00,
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = 0x03EB,
.ProductID = 0x2044, .ProductID = 0x2044,
.ReleaseNumber = 0x0000, .ReleaseNumber = 0x0000,
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
.ProductStrIndex = 0x02, .ProductStrIndex = 0x02,
.SerialNumStrIndex = NO_DESCRIPTOR, .SerialNumStrIndex = NO_DESCRIPTOR,
.NumberOfConfigurations = 1 .NumberOfConfigurations = 1
}; };
@ -77,10 +77,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
.TotalInterfaces = 2, .TotalInterfaces = 2,
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
.ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigurationStrIndex = NO_DESCRIPTOR,
.ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100) .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
@ -94,11 +94,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 1, .TotalEndpoints = 1,
.Class = 0x02, .Class = 0x02,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x01, .Protocol = 0x01,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -137,7 +137,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ManagementEndpoint = .ManagementEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = CDC_NOTIFICATION_EPSIZE, .EndpointSize = CDC_NOTIFICATION_EPSIZE,
@ -163,7 +163,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataOutEndpoint = .DataOutEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -173,7 +173,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataInEndpoint = .DataInEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -188,7 +188,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
USB_Descriptor_String_t PROGMEM LanguageString = USB_Descriptor_String_t PROGMEM LanguageString =
{ {
.Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
.UnicodeString = {LANGUAGE_ID_ENG} .UnicodeString = {LANGUAGE_ID_ENG}
}; };
@ -199,7 +199,7 @@ USB_Descriptor_String_t PROGMEM LanguageString =
USB_Descriptor_String_t PROGMEM ManufacturerString = USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = L"Dean Camera" .UnicodeString = L"Dean Camera"
}; };
@ -210,7 +210,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString =
USB_Descriptor_String_t PROGMEM ProductString = USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
.UnicodeString = L"LUFA CDC Demo" .UnicodeString = L"LUFA CDC Demo"
}; };
@ -258,6 +258,6 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex,
break; break;
} }
*DescriptorAddress = Address; *DescriptorAddress = Address;
return Size; return Size;
} }

@ -42,21 +42,21 @@
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#include <LUFA/Drivers/USB/Class/Device/CDC.h> #include <LUFA/Drivers/USB/Class/Device/CDC.h>
/* Macros: */ /* Macros: */
/** Endpoint number of the CDC device-to-host notification IN endpoint. */ /** Endpoint number of the CDC device-to-host notification IN endpoint. */
#define CDC_NOTIFICATION_EPNUM 2 #define CDC_NOTIFICATION_EPNUM 2
/** Endpoint number of the CDC device-to-host data IN endpoint. */ /** Endpoint number of the CDC device-to-host data IN endpoint. */
#define CDC_TX_EPNUM 3 #define CDC_TX_EPNUM 3
/** Endpoint number of the CDC host-to-device data OUT endpoint. */ /** Endpoint number of the CDC host-to-device data OUT endpoint. */
#define CDC_RX_EPNUM 4 #define CDC_RX_EPNUM 4
/** Size in bytes of the CDC device-to-host notification IN endpoint. */ /** Size in bytes of the CDC device-to-host notification IN endpoint. */
#define CDC_NOTIFICATION_EPSIZE 8 #define CDC_NOTIFICATION_EPSIZE 8
/** Size in bytes of the CDC data IN and OUT endpoints. */ /** Size in bytes of the CDC data IN and OUT endpoints. */
#define CDC_TXRX_EPSIZE 16 #define CDC_TXRX_EPSIZE 16
/* Type Defines: */ /* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the /** Type define for the device configuration descriptor structure. This must be defined in the
@ -79,6 +79,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -45,22 +45,22 @@
USB_Descriptor_Device_t PROGMEM DeviceDescriptor = USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device}, .Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
.USBSpecification = VERSION_BCD(01.10), .USBSpecification = VERSION_BCD(01.10),
.Class = 0xEF, .Class = 0xEF,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x01, .Protocol = 0x01,
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = 0x03EB,
.ProductID = 0x204E, .ProductID = 0x204E,
.ReleaseNumber = 0x0000, .ReleaseNumber = 0x0000,
.ManufacturerStrIndex = 0x01, .ManufacturerStrIndex = 0x01,
.ProductStrIndex = 0x02, .ProductStrIndex = 0x02,
.SerialNumStrIndex = NO_DESCRIPTOR, .SerialNumStrIndex = NO_DESCRIPTOR,
.NumberOfConfigurations = 1 .NumberOfConfigurations = 1
}; };
@ -77,10 +77,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
.TotalInterfaces = 4, .TotalInterfaces = 4,
.ConfigurationNumber = 1, .ConfigurationNumber = 1,
.ConfigurationStrIndex = NO_DESCRIPTOR, .ConfigurationStrIndex = NO_DESCRIPTOR,
.ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED), .ConfigAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELFPOWERED),
.MaxPowerConsumption = USB_CONFIG_POWER_MA(100) .MaxPowerConsumption = USB_CONFIG_POWER_MA(100)
@ -108,11 +108,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 1, .TotalEndpoints = 1,
.Class = 0x02, .Class = 0x02,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x01, .Protocol = 0x01,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -151,7 +151,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.CDC1_ManagementEndpoint = .CDC1_ManagementEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC1_NOTIFICATION_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC1_NOTIFICATION_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = CDC_NOTIFICATION_EPSIZE, .EndpointSize = CDC_NOTIFICATION_EPSIZE,
@ -166,18 +166,18 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 2, .TotalEndpoints = 2,
.Class = 0x0A, .Class = 0x0A,
.SubClass = 0x00, .SubClass = 0x00,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.CDC1_DataOutEndpoint = .CDC1_DataOutEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC1_RX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC1_RX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -187,7 +187,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.CDC1_DataInEndpoint = .CDC1_DataInEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC1_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC1_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -216,11 +216,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.AlternateSetting = 0, .AlternateSetting = 0,
.TotalEndpoints = 1, .TotalEndpoints = 1,
.Class = 0x02, .Class = 0x02,
.SubClass = 0x02, .SubClass = 0x02,
.Protocol = 0x01, .Protocol = 0x01,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
@ -259,7 +259,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.CDC2_ManagementEndpoint = .CDC2_ManagementEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC2_NOTIFICATION_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC2_NOTIFICATION_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = CDC_NOTIFICATION_EPSIZE, .EndpointSize = CDC_NOTIFICATION_EPSIZE,
@ -285,7 +285,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.CDC2_DataOutEndpoint = .CDC2_DataOutEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC2_RX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC2_RX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -295,7 +295,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.CDC2_DataInEndpoint = .CDC2_DataInEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC2_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC2_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -310,7 +310,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
USB_Descriptor_String_t PROGMEM LanguageString = USB_Descriptor_String_t PROGMEM LanguageString =
{ {
.Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
.UnicodeString = {LANGUAGE_ID_ENG} .UnicodeString = {LANGUAGE_ID_ENG}
}; };
@ -321,7 +321,7 @@ USB_Descriptor_String_t PROGMEM LanguageString =
USB_Descriptor_String_t PROGMEM ManufacturerString = USB_Descriptor_String_t PROGMEM ManufacturerString =
{ {
.Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
.UnicodeString = L"Dean Camera" .UnicodeString = L"Dean Camera"
}; };
@ -332,7 +332,7 @@ USB_Descriptor_String_t PROGMEM ManufacturerString =
USB_Descriptor_String_t PROGMEM ProductString = USB_Descriptor_String_t PROGMEM ProductString =
{ {
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String}, .Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
.UnicodeString = L"LUFA Dual CDC Demo" .UnicodeString = L"LUFA Dual CDC Demo"
}; };
@ -380,6 +380,6 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex,
break; break;
} }
*DescriptorAddress = Address; *DescriptorAddress = Address;
return Size; return Size;
} }

@ -47,25 +47,25 @@
#define CDC1_NOTIFICATION_EPNUM 3 #define CDC1_NOTIFICATION_EPNUM 3
/** Endpoint number of the first CDC interface's device-to-host data IN endpoint. */ /** Endpoint number of the first CDC interface's device-to-host data IN endpoint. */
#define CDC1_TX_EPNUM 1 #define CDC1_TX_EPNUM 1
/** Endpoint number of the first CDC interface's host-to-device data OUT endpoint. */ /** Endpoint number of the first CDC interface's host-to-device data OUT endpoint. */
#define CDC1_RX_EPNUM 2 #define CDC1_RX_EPNUM 2
/** Endpoint number of the second CDC interface's device-to-host notification IN endpoint. */ /** Endpoint number of the second CDC interface's device-to-host notification IN endpoint. */
#define CDC2_NOTIFICATION_EPNUM 4 #define CDC2_NOTIFICATION_EPNUM 4
/** Endpoint number of the second CDC interface's device-to-host data IN endpoint. */ /** Endpoint number of the second CDC interface's device-to-host data IN endpoint. */
#define CDC2_TX_EPNUM 5 #define CDC2_TX_EPNUM 5
/** Endpoint number of the second CDC interface's host-to-device data OUT endpoint. */ /** Endpoint number of the second CDC interface's host-to-device data OUT endpoint. */
#define CDC2_RX_EPNUM 6 #define CDC2_RX_EPNUM 6
/** Size in bytes of the CDC device-to-host notification IN endpoints. */ /** Size in bytes of the CDC device-to-host notification IN endpoints. */
#define CDC_NOTIFICATION_EPSIZE 8 #define CDC_NOTIFICATION_EPSIZE 8
/** Size in bytes of the CDC data IN and OUT endpoints. */ /** Size in bytes of the CDC data IN and OUT endpoints. */
#define CDC_TXRX_EPSIZE 16 #define CDC_TXRX_EPSIZE 16
/* Type Defines: */ /* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the /** Type define for the device configuration descriptor structure. This must be defined in the
@ -99,6 +99,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -86,7 +86,7 @@ USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
.Class = 0x00, .Class = 0x00,
.SubClass = 0x00, .SubClass = 0x00,
.Protocol = 0x00, .Protocol = 0x00,
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
.VendorID = 0x03EB, .VendorID = 0x03EB,
@ -141,7 +141,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.JoystickHID = .JoystickHID =
{ {
.Header = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID}, .Header = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
.HIDSpec = VERSION_BCD(01.11), .HIDSpec = VERSION_BCD(01.11),
.CountryCode = 0x00, .CountryCode = 0x00,
.TotalReportDescriptors = 1, .TotalReportDescriptors = 1,
@ -152,7 +152,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.JoystickEndpoint = .JoystickEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | JOYSTICK_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | JOYSTICK_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = JOYSTICK_EPSIZE, .EndpointSize = JOYSTICK_EPSIZE,

@ -54,7 +54,7 @@
USB_Descriptor_HID_t JoystickHID; USB_Descriptor_HID_t JoystickHID;
USB_Descriptor_Endpoint_t JoystickEndpoint; USB_Descriptor_Endpoint_t JoystickEndpoint;
} USB_Descriptor_Configuration_t; } USB_Descriptor_Configuration_t;
/* Macros: */ /* Macros: */
/** Endpoint number of the Joystick HID reporting IN endpoint. */ /** Endpoint number of the Joystick HID reporting IN endpoint. */
#define JOYSTICK_EPNUM 1 #define JOYSTICK_EPNUM 1
@ -64,6 +64,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -43,14 +43,14 @@
*/ */
USB_ClassInfo_HID_t Keyboard_HID_Interface = USB_ClassInfo_HID_t Keyboard_HID_Interface =
{ {
.InterfaceNumber = 0, .InterfaceNumber = 0,
.ReportINEndpointNumber = KEYBOARD_EPNUM, .ReportINEndpointNumber = KEYBOARD_EPNUM,
.ReportINEndpointSize = KEYBOARD_EPSIZE, .ReportINEndpointSize = KEYBOARD_EPSIZE,
.ReportINBufferSize = sizeof(USB_KeyboardReport_Data_t), .ReportINBufferSize = sizeof(USB_KeyboardReport_Data_t),
.IdleCount = 500, .IdleCount = 500,
}; };
/** Main program entry point. This routine contains the overall program flow, including initial /** Main program entry point. This routine contains the overall program flow, including initial
@ -58,32 +58,32 @@ USB_ClassInfo_HID_t Keyboard_HID_Interface =
*/ */
int main(void) int main(void)
{ {
SetupHardware(); SetupHardware();
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
for (;;) for (;;)
{ {
USB_HID_USBTask(&Keyboard_HID_Interface); USB_HID_USBTask(&Keyboard_HID_Interface);
USB_USBTask(); USB_USBTask();
} }
} }
/** Configures the board hardware and chip peripherals for the demo's functionality. */ /** Configures the board hardware and chip peripherals for the demo's functionality. */
void SetupHardware() void SetupHardware()
{ {
/* Disable watchdog if enabled by bootloader/fuses */ /* Disable watchdog if enabled by bootloader/fuses */
MCUSR &= ~(1 << WDRF); MCUSR &= ~(1 << WDRF);
wdt_disable(); wdt_disable();
/* Disable clock division */ /* Disable clock division */
clock_prescale_set(clock_div_1); clock_prescale_set(clock_div_1);
/* Hardware Initialization */ /* Hardware Initialization */
Joystick_Init(); Joystick_Init();
LEDs_Init(); LEDs_Init();
Buttons_Init(); Buttons_Init();
USB_Init(); USB_Init();
/* Millisecond timer initialization, with output compare interrupt enabled for the idle timing */ /* Millisecond timer initialization, with output compare interrupt enabled for the idle timing */
OCR0A = ((F_CPU / 64) / 1000); OCR0A = ((F_CPU / 64) / 1000);
@ -95,28 +95,28 @@ void SetupHardware()
/** Event handler for the library USB Connection event. */ /** Event handler for the library USB Connection event. */
void EVENT_USB_Connect(void) void EVENT_USB_Connect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
} }
/** Event handler for the library USB Disconnection event. */ /** Event handler for the library USB Disconnection event. */
void EVENT_USB_Disconnect(void) void EVENT_USB_Disconnect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
} }
/** Event handler for the library USB Configuration Changed event. */ /** Event handler for the library USB Configuration Changed event. */
void EVENT_USB_ConfigurationChanged(void) void EVENT_USB_ConfigurationChanged(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_READY); LEDs_SetAllLEDs(LEDMASK_USB_READY);
if (!(USB_HID_ConfigureEndpoints(&Keyboard_HID_Interface))) if (!(USB_HID_ConfigureEndpoints(&Keyboard_HID_Interface)))
LEDs_SetAllLEDs(LEDMASK_USB_ERROR); LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
} }
/** Event handler for the library USB Unhandled Control Packet event. */ /** Event handler for the library USB Unhandled Control Packet event. */
void EVENT_USB_UnhandledControlPacket(void) void EVENT_USB_UnhandledControlPacket(void)
{ {
USB_HID_ProcessControlPacket(&Keyboard_HID_Interface); USB_HID_ProcessControlPacket(&Keyboard_HID_Interface);
} }
/** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */ /** ISR to keep track of each millisecond interrupt, for determining the HID class idle period remaining when set. */
@ -135,28 +135,28 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
*/ */
uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, uint8_t* ReportID, void* ReportData) uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, uint8_t* ReportID, void* ReportData)
{ {
USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData; USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
uint8_t JoyStatus_LCL = Joystick_GetStatus(); uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus(); uint8_t ButtonStatus_LCL = Buttons_GetStatus();
if (JoyStatus_LCL & JOY_UP) if (JoyStatus_LCL & JOY_UP)
KeyboardReport->KeyCode[0] = 0x04; // A KeyboardReport->KeyCode[0] = 0x04; // A
else if (JoyStatus_LCL & JOY_DOWN) else if (JoyStatus_LCL & JOY_DOWN)
KeyboardReport->KeyCode[0] = 0x05; // B KeyboardReport->KeyCode[0] = 0x05; // B
if (JoyStatus_LCL & JOY_LEFT) if (JoyStatus_LCL & JOY_LEFT)
KeyboardReport->KeyCode[0] = 0x06; // C KeyboardReport->KeyCode[0] = 0x06; // C
else if (JoyStatus_LCL & JOY_RIGHT) else if (JoyStatus_LCL & JOY_RIGHT)
KeyboardReport->KeyCode[0] = 0x07; // D KeyboardReport->KeyCode[0] = 0x07; // D
if (JoyStatus_LCL & JOY_PRESS) if (JoyStatus_LCL & JOY_PRESS)
KeyboardReport->KeyCode[0] = 0x08; // E KeyboardReport->KeyCode[0] = 0x08; // E
if (ButtonStatus_LCL & BUTTONS_BUTTON1) if (ButtonStatus_LCL & BUTTONS_BUTTON1)
KeyboardReport->KeyCode[0] = 0x09; // F KeyboardReport->KeyCode[0] = 0x09; // F
return sizeof(USB_KeyboardReport_Data_t); return sizeof(USB_KeyboardReport_Data_t);
} }
/** HID class driver callback function for the processing of HID reports from the host. /** HID class driver callback function for the processing of HID reports from the host.
@ -168,17 +168,17 @@ uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceI
void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, uint8_t ReportID, void CALLBACK_USB_HID_ProcessReceivedHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, uint8_t ReportID,
void* ReportData, uint16_t ReportSize) void* ReportData, uint16_t ReportSize)
{ {
uint8_t LEDMask = LEDS_NO_LEDS; uint8_t LEDMask = LEDS_NO_LEDS;
uint8_t* LEDReport = (uint8_t*)ReportData; uint8_t* LEDReport = (uint8_t*)ReportData;
if (*LEDReport & 0x01) // NUM Lock if (*LEDReport & 0x01) // NUM Lock
LEDMask |= LEDS_LED1; LEDMask |= LEDS_LED1;
if (*LEDReport & 0x02) // CAPS Lock if (*LEDReport & 0x02) // CAPS Lock
LEDMask |= LEDS_LED3; LEDMask |= LEDS_LED3;
if (*LEDReport & 0x04) // SCROLL Lock if (*LEDReport & 0x04) // SCROLL Lock
LEDMask |= LEDS_LED4; LEDMask |= LEDS_LED4;
LEDs_SetAllLEDs(LEDMask); LEDs_SetAllLEDs(LEDMask);
} }

@ -71,6 +71,6 @@
/* Function Prototypes: */ /* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress) uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3); ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif #endif

@ -99,7 +99,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.SubClass = 0x01, .SubClass = 0x01,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioControlInterface_SPC = .AudioControlInterface_SPC =
@ -111,7 +111,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.TotalLength = sizeof(USB_AudioInterface_AC_t), .TotalLength = sizeof(USB_AudioInterface_AC_t),
.InCollection = 1, .InCollection = 1,
.InterfaceNumbers = {1}, .InterfaceNumbers = {1},
}, },
.AudioStreamInterface = .AudioStreamInterface =

@ -141,7 +141,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.MouseHID = .MouseHID =
{ {
.Header = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID}, .Header = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
.HIDSpec = VERSION_BCD(01.11), .HIDSpec = VERSION_BCD(01.11),
.CountryCode = 0x00, .CountryCode = 0x00,
.TotalReportDescriptors = 1, .TotalReportDescriptors = 1,
@ -152,12 +152,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.MouseEndpoint = .MouseEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | MOUSE_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | MOUSE_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = MOUSE_EPSIZE, .EndpointSize = MOUSE_EPSIZE,
.PollingIntervalMS = 0x02 .PollingIntervalMS = 0x02
} }
}; };
/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests /** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests

@ -92,13 +92,13 @@ void SetupHardware(void)
/** Event handler for the library USB Connection event. */ /** Event handler for the library USB Connection event. */
void EVENT_USB_Connect(void) void EVENT_USB_Connect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
} }
/** Event handler for the library USB Disconnection event. */ /** Event handler for the library USB Disconnection event. */
void EVENT_USB_Disconnect(void) void EVENT_USB_Disconnect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
} }
/** Event handler for the library USB Configuration Changed event. */ /** Event handler for the library USB Configuration Changed event. */

@ -137,7 +137,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ManagementEndpoint = .ManagementEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = CDC_NOTIFICATION_EPSIZE, .EndpointSize = CDC_NOTIFICATION_EPSIZE,
@ -163,7 +163,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataOutEndpoint = .DataOutEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -173,7 +173,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataInEndpoint = .DataInEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,

@ -106,13 +106,13 @@ void SetupHardware(void)
/** Event handler for the library USB Connection event. */ /** Event handler for the library USB Connection event. */
void EVENT_USB_Connect(void) void EVENT_USB_Connect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
} }
/** Event handler for the library USB Disconnection event. */ /** Event handler for the library USB Disconnection event. */
void EVENT_USB_Disconnect(void) void EVENT_USB_Disconnect(void)
{ {
LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
} }
/** Event handler for the library USB Configuration Changed event. */ /** Event handler for the library USB Configuration Changed event. */

@ -137,7 +137,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ManagementEndpoint = .ManagementEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM),
.Attributes = EP_TYPE_INTERRUPT, .Attributes = EP_TYPE_INTERRUPT,
.EndpointSize = CDC_NOTIFICATION_EPSIZE, .EndpointSize = CDC_NOTIFICATION_EPSIZE,
@ -163,7 +163,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataOutEndpoint = .DataOutEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
@ -173,11 +173,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.DataInEndpoint = .DataInEndpoint =
{ {
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
.PollingIntervalMS= 0x00 .PollingIntervalMS = 0x00
} }
}; };

@ -99,7 +99,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.SubClass = 0x01, .SubClass = 0x01,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioControlInterface_SPC = .AudioControlInterface_SPC =
@ -110,10 +110,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ACSpecification = VERSION_BCD(01.00), .ACSpecification = VERSION_BCD(01.00),
.TotalLength = (sizeof(USB_AudioInterface_AC_t) + .TotalLength = (sizeof(USB_AudioInterface_AC_t) +
sizeof(USB_AudioInputTerminal_t) + sizeof(USB_AudioInputTerminal_t) +
sizeof(USB_AudioOutputTerminal_t)), sizeof(USB_AudioOutputTerminal_t)),
.InCollection = 1, .InCollection = 1,
.InterfaceNumbers = {1}, .InterfaceNumbers = {1},
}, },
.InputTerminal = .InputTerminal =
@ -143,7 +143,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.SourceID = 0x01, .SourceID = 0x01,
.TerminalStrIndex = NO_DESCRIPTOR .TerminalStrIndex = NO_DESCRIPTOR
}, },
.AudioStreamInterface_Alt0 = .AudioStreamInterface_Alt0 =

@ -97,7 +97,7 @@ void EVENT_USB_Connect(void)
#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO)) #if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
/* PWM speaker timer initialization */ /* PWM speaker timer initialization */
TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0) TCCRxA = ((1 << WGMx0) | (1 << COMxA1) | (1 << COMxA0)
| (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP | (1 << COMxB1) | (1 << COMxB0)); // Set on match, clear on TOP
TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed TCCRxB = ((1 << WGMx2) | (1 << CSx0)); // Fast 8-Bit PWM, Fcpu speed
#endif #endif
} }

@ -99,7 +99,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.SubClass = 0x01, .SubClass = 0x01,
.Protocol = 0x00, .Protocol = 0x00,
.InterfaceStrIndex = NO_DESCRIPTOR .InterfaceStrIndex = NO_DESCRIPTOR
}, },
.AudioControlInterface_SPC = .AudioControlInterface_SPC =
@ -109,11 +109,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.ACSpecification = VERSION_BCD(01.00), .ACSpecification = VERSION_BCD(01.00),
.TotalLength = (sizeof(USB_AudioInterface_AC_t) + .TotalLength = (sizeof(USB_AudioInterface_AC_t) +
sizeof(USB_AudioInputTerminal_t) + sizeof(USB_AudioInputTerminal_t) +
sizeof(USB_AudioOutputTerminal_t)), sizeof(USB_AudioOutputTerminal_t)),
.InCollection = 1, .InCollection = 1,
.InterfaceNumbers = {1}, .InterfaceNumbers = {1},
}, },
.InputTerminal = .InputTerminal =

@ -175,9 +175,9 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
.EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM), .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
.Attributes = EP_TYPE_BULK, .Attributes = EP_TYPE_BULK,
.EndpointSize = CDC_TXRX_EPSIZE, .EndpointSize = CDC_TXRX_EPSIZE,
.PollingIntervalMS= 0x00 .PollingIntervalMS = 0x00
} }
}; };

Loading…
Cancel
Save