From b37d77eab32d171ad7b28157a924a4026e2aebd1 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 24 Oct 2010 22:53:57 +0000 Subject: All USB class drivers are now automatically included when LUFA/Drivers/USB.h is included, and no longer need to be seperately included. All LowLevel demos changed to use the constants and types defined in the USB class drivers. --- Demos/Device/LowLevel/VirtualSerial/Descriptors.c | 12 +-- Demos/Device/LowLevel/VirtualSerial/Descriptors.h | 40 +------- .../Device/LowLevel/VirtualSerial/VirtualSerial.c | 41 ++------ .../Device/LowLevel/VirtualSerial/VirtualSerial.h | 109 --------------------- 4 files changed, 18 insertions(+), 184 deletions(-) (limited to 'Demos/Device/LowLevel/VirtualSerial') diff --git a/Demos/Device/LowLevel/VirtualSerial/Descriptors.c b/Demos/Device/LowLevel/VirtualSerial/Descriptors.c index 9b3aea4b8..1d98fbb81 100644 --- a/Demos/Device/LowLevel/VirtualSerial/Descriptors.c +++ b/Demos/Device/LowLevel/VirtualSerial/Descriptors.c @@ -116,24 +116,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .CDC_Functional_Header = { - .Header = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x00, + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface}, + .Subtype = CDC_DSUBTYPE_CSInterface_Header, .CDCSpecification = VERSION_BCD(01.10), }, .CDC_Functional_ACM = { - .Header = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x02, + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface}, + .Subtype = CDC_DSUBTYPE_CSInterface_ACM, .Capabilities = 0x06, }, .CDC_Functional_Union = { - .Header = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface}, - .Subtype = 0x06, + .Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface}, + .Subtype = CDC_DSUBTYPE_CSInterface_Union, .MasterInterfaceNumber = 0, .SlaveInterfaceNumber = 1, diff --git a/Demos/Device/LowLevel/VirtualSerial/Descriptors.h b/Demos/Device/LowLevel/VirtualSerial/Descriptors.h index 7a8da898e..670e3433a 100644 --- a/Demos/Device/LowLevel/VirtualSerial/Descriptors.h +++ b/Demos/Device/LowLevel/VirtualSerial/Descriptors.h @@ -58,40 +58,6 @@ #define CDC_TXRX_EPSIZE 16 /* Type Defines: */ - /** Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device - * contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration. - * See the CDC class specification for more details. - */ - typedef struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */ - uint16_t CDCSpecification; /**< Version number of the CDC specification implemented by the device, - * encoded in BCD format. - */ - } USB_Descriptor_CDC_FunctionalHeader_t; - - /** Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface - * supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details. - */ - typedef struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */ - uint8_t Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. */ - } USB_Descriptor_CDC_FunctionalACM_t; - - /** Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific - * CDC control and data interfaces are related. See the CDC class specification for more details. - */ - typedef struct - { - USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */ - uint8_t Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */ - uint8_t MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */ - uint8_t SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */ - } USB_Descriptor_CDC_FunctionalUnion_t; - /** 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 * vary between devices, and which describe the device's usage to the host. @@ -100,9 +66,9 @@ { USB_Descriptor_Configuration_Header_t Config; USB_Descriptor_Interface_t CDC_CCI_Interface; - USB_Descriptor_CDC_FunctionalHeader_t CDC_Functional_Header; - USB_Descriptor_CDC_FunctionalACM_t CDC_Functional_ACM; - USB_Descriptor_CDC_FunctionalUnion_t CDC_Functional_Union; + USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; + USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; + USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; USB_Descriptor_Interface_t CDC_DCI_Interface; USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; diff --git a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c index 22d65ffe7..9cf958a06 100644 --- a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c +++ b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c @@ -44,10 +44,10 @@ * It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical * serial link characteristics and instead sends and receives data in endpoint streams. */ -CDC_Line_Coding_t LineEncoding = { .BaudRateBPS = 0, - .CharFormat = OneStopBit, - .ParityType = Parity_None, - .DataBits = 8 }; +CDC_LineEncoding_t LineEncoding = { .BaudRateBPS = 0, + .CharFormat = CDC_LINEENCODING_OneStopBit, + .ParityType = CDC_PARITY_None, + .DataBits = 8 }; /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. @@ -131,29 +131,29 @@ void EVENT_USB_Device_UnhandledControlRequest(void) /* Process CDC specific control requests */ switch (USB_ControlRequest.bRequest) { - case REQ_GetLineEncoding: + case CDC_REQ_GetLineEncoding: if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); /* Write the line coding data to the control endpoint */ - Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_Line_Coding_t)); + Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t)); Endpoint_ClearOUT(); } break; - case REQ_SetLineEncoding: + case CDC_REQ_SetLineEncoding: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); /* Read the line coding data in from the host into the global struct */ - Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_Line_Coding_t)); + Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t)); Endpoint_ClearIN(); } break; - case REQ_SetControlLineState: + case CDC_REQ_SetControlLineState: if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); @@ -180,29 +180,6 @@ void CDC_Task(void) if (USB_DeviceState != DEVICE_STATE_Configured) return; -#if 0 - /* NOTE: Here you can use the notification endpoint to send back line state changes to the host, for the special RS-232 - * handshake signal lines (and some error states), via the CONTROL_LINE_IN_* masks and the following code: - */ - USB_Notification_Header_t Notification = (USB_Notification_Header_t) - { - .NotificationType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), - .Notification = NOTIF_SerialState, - .wValue = 0, - .wIndex = 0, - .wLength = sizeof(uint16_t), - }; - - uint16_t LineStateMask; - - // Set LineStateMask here to a mask of CONTROL_LINE_IN_* masks to set the input handshake line states to send to the host - - Endpoint_SelectEndpoint(CDC_NOTIFICATION_EPNUM); - Endpoint_Write_Stream_LE(&Notification, sizeof(Notification)); - Endpoint_Write_Stream_LE(&LineStateMask, sizeof(LineStateMask)); - Endpoint_ClearIN(); -#endif - /* Determine if a joystick action has occurred */ if (JoyStatus_LCL & JOY_UP) ReportString = "Joystick Up\r\n"; diff --git a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h index b435cca6e..9634bd379 100644 --- a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h +++ b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h @@ -51,66 +51,6 @@ #include /* Macros: */ - /** CDC Class specific request to get the current virtual serial port configuration settings. */ - #define REQ_GetLineEncoding 0x21 - - /** CDC Class specific request to set the current virtual serial port configuration settings. */ - #define REQ_SetLineEncoding 0x20 - - /** CDC Class specific request to set the current virtual serial port handshake line states. */ - #define REQ_SetControlLineState 0x22 - - /** Notification type constant for a change in the virtual serial port handshake line states, for - * use with a USB_Notification_Header_t notification structure when sent to the host via the CDC - * notification endpoint. - */ - #define NOTIF_SerialState 0x20 - - /** Mask for the DTR handshake line for use with the REQ_SetControlLineState class specific request - * from the host, to indicate that the DTR line state should be high. - */ - #define CONTROL_LINE_OUT_DTR (1 << 0) - - /** Mask for the RTS handshake line for use with the REQ_SetControlLineState class specific request - * from the host, to indicate that theRTS line state should be high. - */ - #define CONTROL_LINE_OUT_RTS (1 << 1) - - /** Mask for the DCD handshake line for use with the NOTIF_SerialState class specific notification - * from the device to the host, to indicate that the DCD line state is currently high. - */ - #define CONTROL_LINE_IN_DCD (1 << 0) - - /** Mask for the DSR handshake line for use with the NOTIF_SerialState class specific notification - * from the device to the host, to indicate that the DSR line state is currently high. - */ - #define CONTROL_LINE_IN_DSR (1 << 1) - - /** Mask for the BREAK handshake line for use with the NOTIF_SerialState class specific notification - * from the device to the host, to indicate that the BREAK line state is currently high. - */ - #define CONTROL_LINE_IN_BREAK (1 << 2) - - /** Mask for the RING handshake line for use with the NOTIF_SerialState class specific notification - * from the device to the host, to indicate that the RING line state is currently high. - */ - #define CONTROL_LINE_IN_RING (1 << 3) - - /** Mask for use with the NOTIF_SerialState class specific notification from the device to the host, - * to indicate that a framing error has occurred on the virtual serial port. - */ - #define CONTROL_LINE_IN_FRAMEERROR (1 << 4) - - /** Mask for use with the NOTIF_SerialState class specific notification from the device to the host, - * to indicate that a parity error has occurred on the virtual serial port. - */ - #define CONTROL_LINE_IN_PARITYERROR (1 << 5) - - /** Mask for use with the NOTIF_SerialState class specific notification from the device to the host, - * to indicate that a data overrun error has occurred on the virtual serial port. - */ - #define CONTROL_LINE_IN_OVERRUNERROR (1 << 6) - /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ #define LEDMASK_USB_NOTREADY LEDS_LED1 @@ -123,55 +63,6 @@ /** 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) - /* Type Defines: */ - /** Type define for the virtual serial port line encoding settings, for storing the current USART configuration - * as set by the host via a class specific request. - */ - typedef struct - { - uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second */ - uint8_t CharFormat; /**< Character format of the virtual serial port, a value from the - * CDCDevice_CDC_LineCodingFormats_t enum - */ - uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the - * CDCDevice_LineCodingParity_t enum - */ - uint8_t DataBits; /**< Bits of data per character of the virtual serial port */ - } CDC_Line_Coding_t; - - /** Type define for a CDC notification, sent to the host via the CDC notification endpoint to indicate a - * change in the device state asynchronously. - */ - typedef struct - { - uint8_t NotificationType; /**< Notification type, a mask of REQDIR_*, REQTYPE_* and REQREC_* constants - * from the library StdRequestType.h header - */ - uint8_t Notification; /**< Notification value, a NOTIF_* constant */ - uint16_t wValue; /**< Notification wValue, notification-specific */ - uint16_t wIndex; /**< Notification wIndex, notification-specific */ - uint16_t wLength; /**< Notification wLength, notification-specific */ - } USB_Notification_Header_t; - - /* Enums: */ - /** Enum for the possible line encoding formats of a virtual serial port. */ - enum CDCDevice_CDC_LineCodingFormats_t - { - OneStopBit = 0, /**< Each frame contains one stop bit */ - OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits */ - TwoStopBits = 2, /**< Each frame contains two stop bits */ - }; - - /** Enum for the possible line encoding parity settings of a virtual serial port. */ - enum CDCDevice_LineCodingParity_t - { - Parity_None = 0, /**< No parity bit mode on each frame */ - Parity_Odd = 1, /**< Odd parity bit mode on each frame */ - Parity_Even = 2, /**< Even parity bit mode on each frame */ - Parity_Mark = 3, /**< Mark parity bit mode on each frame */ - Parity_Space = 4, /**< Space parity bit mode on each frame */ - }; - /* Function Prototypes: */ void SetupHardware(void); void CDC_Task(void); -- cgit v1.2.3