- /* Macros: */\r
- /** CDC Class specific request to get the current virtual serial port configuration settings. */\r
- #define REQ_GetLineEncoding 0x21\r
-\r
- /** CDC Class specific request to set the current virtual serial port configuration settings. */\r
- #define REQ_SetLineEncoding 0x20\r
-\r
- /** CDC Class specific request to set the current virtual serial port handshake line states. */\r
- #define REQ_SetControlLineState 0x22\r
- \r
- /** Notification type constant for a change in the virtual serial port handshake line states, for\r
- * use with a USB_Notification_Header_t notification structure when sent to the host via the CDC \r
- * notification endpoint.\r
- */\r
- #define NOTIF_SerialState 0x20\r
-\r
- /** Mask for the DTR handshake line for use with the REQ_SetControlLineState class specific request\r
- * from the host, to indicate that the DTR line state should be high.\r
- */\r
- #define CDC_CONTROL_LINE_OUT_DTR (1 << 0)\r
-\r
- /** Mask for the RTS handshake line for use with the REQ_SetControlLineState class specific request\r
- * from the host, to indicate that theRTS line state should be high.\r
- */\r
- #define CDC_CONTROL_LINE_OUT_RTS (1 << 1)\r
- \r
- /** Mask for the DCD handshake line for use with the a NOTIF_SerialState class specific notification\r
- * from the device to the host, to indicate that the DCD line state is currently high.\r
- */\r
- #define CDC_CONTROL_LINE_IN_DCD (1 << 0)\r
-\r
- /** Mask for the DSR handshake line for use with the a NOTIF_SerialState class specific notification\r
- * from the device to the host, to indicate that the DSR line state is currently high.\r
- */\r
- #define CDC_CONTROL_LINE_IN_DSR (1 << 1)\r
-\r
- /** Mask for the BREAK handshake line for use with the a NOTIF_SerialState class specific notification\r
- * from the device to the host, to indicate that the BREAK line state is currently high.\r
- */\r
- #define CDC_CONTROL_LINE_IN_BREAK (1 << 2)\r
-\r
- /** Mask for the RING handshake line for use with the a NOTIF_SerialState class specific notification\r
- * from the device to the host, to indicate that the RING line state is currently high.\r
- */\r
- #define CDC_CONTROL_LINE_IN_RING (1 << 3)\r
-\r
- /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
- * to indicate that a framing error has occurred on the virtual serial port.\r
- */\r
- #define CDC_CONTROL_LINE_IN_FRAMEERROR (1 << 4)\r
-\r
- /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
- * to indicate that a parity error has occurred on the virtual serial port.\r
- */\r
- #define CDC_CONTROL_LINE_IN_PARITYERROR (1 << 5)\r
-\r
- /** Mask for use with the a NOTIF_SerialState class specific notification from the device to the host,\r
- * to indicate that a data overrun error has occurred on the virtual serial port.\r
- */\r
- #define CDC_CONTROL_LINE_IN_OVERRUNERROR (1 << 6)\r
- \r
- /** Macro to define a CDC class-specific functional descriptor. CDC functional descriptors have a\r
- * uniform structure but variable sized data payloads, thus cannot be represented accurately by\r
- * a single typedef struct. A macro is used instead so that functional descriptors can be created\r
- * easily by specifying the size of the payload. This allows sizeof() to work correctly.\r
- *\r
- * \param DataSize Size in bytes of the CDC functional descriptor's data payload\r
- */\r
- #define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \\r
- struct \\r
- { \\r
- USB_Descriptor_Header_t Header; \\r
- uint8_t SubType; \\r
- uint8_t Data[DataSize]; \\r
- }\r
-\r
- /* Enums: */\r
- /** Enum for the possible line encoding formats of a virtual serial port. */\r
- enum CDCDevice_CDC_LineCodingFormats_t\r
- {\r
- CDC_LINEENCODING_OneStopBit = 0, /**< Each frame contains one stop bit */\r
- CDC_LINEENCODING_OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits */\r
- CDC_LINEENCODING_TwoStopBits = 2, /**< Each frame contains two stop bits */\r
- };\r
- \r
- /** Enum for the possible line encoding parity settings of a virtual serial port. */\r
- enum CDCDevice_LineCodingParity_t\r
- {\r
- CDC_PARITY_None = 0, /**< No parity bit mode on each frame */\r
- CDC_PARITY_Odd = 1, /**< Odd parity bit mode on each frame */\r
- CDC_PARITY_Even = 2, /**< Even parity bit mode on each frame */\r
- CDC_PARITY_Mark = 3, /**< Mark parity bit mode on each frame */\r
- CDC_PARITY_Space = 4, /**< Space parity bit mode on each frame */\r
- };\r
-\r
- /* Type Defines: */\r
- /** Class state structure. An instance of this structure should be made for each CDC interface\r
- * within the user application, and passed to each of the CDC class driver functions as the\r
- * CDCInterfaceInfo parameter. The contents of this structure should be set to their correct\r
- * values when used, or ommitted to force the library to use default values.\r
- */\r
- typedef struct\r
- {\r
- uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device */\r
-\r
- uint8_t DataINEndpointNumber; /**< Endpoint number of the CDC interface's IN data endpoint */\r
- uint16_t DataINEndpointSize; /**< Size in bytes of the CDC interface's IN data endpoint */\r
-\r
- uint8_t DataOUTEndpointNumber; /**< Endpoint number of the CDC interface's OUT data endpoint */\r
- uint16_t DataOUTEndpointSize; /**< Size in bytes of the CDC interface's OUT data endpoint */\r
-\r
- uint8_t NotificationEndpointNumber; /**< Endpoint number of the CDC interface's IN notification endpoint, if used */\r
- uint16_t NotificationEndpointSize; /**< Size in bytes of the CDC interface's IN notification endpoint, if used */\r
-\r
- uint8_t ControlLineState; /**< Current control line states, as set by the host */\r
-\r
- struct\r