X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/5a4def747897c1c6ffbe465506d846c7c686d3e9..477a2047f48d4c59bdcef37a18847f0c6a4d758b:/LUFA/Drivers/USB/Class/Host/CDC.h diff --git a/LUFA/Drivers/USB/Class/Host/CDC.h b/LUFA/Drivers/USB/Class/Host/CDC.h index 8a4b576ca..cc7465d3a 100644 --- a/LUFA/Drivers/USB/Class/Host/CDC.h +++ b/LUFA/Drivers/USB/Class/Host/CDC.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2010. + Copyright (C) Dean Camera, 2011. dean [at] fourwalledcubicle [dot] com - www.fourwalledcubicle.com + www.lufa-lib.org */ /* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com) Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted @@ -33,8 +33,8 @@ * * Host mode driver for the library USB CDC Class driver. * - * \note This file should not be included directly. It is automatically included as needed by the class driver - * dispatch header located in LUFA/Drivers/USB/Class/CDC.h. + * \note This file should not be included directly. It is automatically included as needed by the USB module driver + * dispatch header located in LUFA/Drivers/USB.h. */ /** \ingroup Group_USBClassCDC @@ -44,7 +44,7 @@ * The following files must be built with any user project that uses this module: * - LUFA/Drivers/USB/Class/Host/CDC.c (Makefile source module name: LUFA_SRC_USBCLASS) * - * \section Module Description + * \section Sec_ModDescription Module Description * Host Mode USB Class driver framework interface, for the CDC USB Class driver. * * @{ @@ -67,15 +67,19 @@ /* Preprocessor Checks: */ #if !defined(__INCLUDE_FROM_CDC_DRIVER) - #error Do not include this file directly. Include LUFA/Drivers/Class/CDC.h instead. + #error Do not include this file directly. Include LUFA/Drivers/USB.h instead. #endif + #if defined(__INCLUDE_FROM_CDC_HOST_C) && defined(NO_STREAM_CALLBACKS) + #error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers. + #endif + /* Public Interface - May be used in end-application: */ /* Type Defines: */ /** \brief CDC Class Host Mode Configuration and State Structure. * * Class state structure. An instance of this structure should be made within the user application, - * and passed to each of the CDC class driver functions as the CDCInterfaceInfo parameter. This + * and passed to each of the CDC class driver functions as the \c CDCInterfaceInfo parameter. This * stores each CDC interface's configuration and state information. */ typedef struct @@ -107,30 +111,21 @@ struct { - uint8_t HostToDevice; /**< Control line states from the host to device, as a set of CDC_CONTROL_LINE_OUT_* + uint8_t HostToDevice; /**< Control line states from the host to device, as a set of \c CDC_CONTROL_LINE_OUT_* * masks - to notify the device of changes to these values, call the * \ref CDC_Host_SendControlLineStateChange() function. */ - uint8_t DeviceToHost; /**< Control line states from the device to host, as a set of CDC_CONTROL_LINE_IN_* + uint8_t DeviceToHost; /**< Control line states from the device to host, as a set of \c CDC_CONTROL_LINE_IN_* * masks. This value is updated each time \ref CDC_Host_USBTask() is called. */ } ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */ - 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 - * \ref CDC_LineEncodingFormats_t enum. - */ - uint8_t ParityType; /**< Parity setting of the virtual serial port, a value from the - * \ref CDC_LineEncodingParity_t enum. - */ - uint8_t DataBits; /**< Bits of data per character of the virtual serial port. */ - } LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information. This is generally - * only used if the virtual serial port data is to be reconstructed on a physical UART. When set - * by the host application, the \ref CDC_Host_SetLineEncoding() function must be called to push - * the changes to the device. - */ + CDC_LineEncoding_t LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information. + * This is generally only used if the virtual serial port data is to be + * reconstructed on a physical UART. When set by the host application, the + * \ref CDC_Host_SetLineEncoding() function must be called to push the changes + * to the device. + */ } State; /**< State data for the USB class interface within the device. All elements in this section * may be set to initial values, but may also be ignored to default to sane values when * the interface is enumerated. @@ -144,6 +139,7 @@ CDC_ENUMERROR_NoError = 0, /**< Configuration Descriptor was processed successfully. */ CDC_ENUMERROR_InvalidConfigDescriptor = 1, /**< The device returned an invalid Configuration Descriptor. */ CDC_ENUMERROR_NoCompatibleInterfaceFound = 2, /**< A compatible CDC interface was not found in the device's Configuration Descriptor. */ + CDC_ENUMERROR_PipeConfigurationFailed = 3, /**< One or more pipes for the specified interface could not be configured correctly. */ }; /* Function Prototypes: */ @@ -174,7 +170,7 @@ uint16_t ConfigDescriptorSize, void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3); - /** Sets the line encoding for the attached device's virtual serial port. This should be called when the LineEncoding + /** Sets the line encoding for the attached device's virtual serial port. This should be called when the \c LineEncoding * values of the interface have been changed to push the new settings to the USB device. * * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. @@ -185,7 +181,7 @@ /** Sends a Serial Control Line State Change notification to the device. This should be called when the virtual serial * control lines (DTR, RTS, etc.) have changed states. Line states persist until they are cleared via a second - * notification. This should be called each time the CDC class driver's ControlLineStates.HostToDevice value is updated + * notification. This should be called each time the CDC class driver's \c ControlLineStates.HostToDevice value is updated * to push the new states to the USB device. * * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. @@ -278,10 +274,10 @@ uint8_t CDC_Host_Flush(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1); /** Creates a standard character stream for the given CDC Device instance so that it can be used with all the regular - * functions in the avr-libc library that accept a FILE stream as a destination (e.g. fprintf). The created + * functions in the avr-libc \c library that accept a FILE stream as a destination (e.g. fprintf). The created * stream is bidirectional and can be used for both input and output functions. * - * \note The created stream can be given as stdout if desired to direct the standard output from all functions + * \note The created stream can be given as stdout if desired to direct the standard output from all \c functions * to the given CDC interface. * * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. @@ -303,7 +299,7 @@ * the host of a control line state change (containing the virtual serial control line states, such as DCD) and may be hooked in the * user program by declaring a handler function with the same name and parameters listed here. The new control line states * are available in the ControlLineStates.DeviceToHost value inside the CDC host interface structure passed as a parameter, set as - * a mask of CDC_CONTROL_LINE_IN_* masks. + * a mask of \c CDC_CONTROL_LINE_IN_* masks. * * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class host configuration and state. */ @@ -311,22 +307,14 @@ /* Private Interface - For use in library only: */ #if !defined(__DOXYGEN__) - /* Macros: */ - #define CDC_CONTROL_CLASS 0x02 - #define CDC_CONTROL_SUBCLASS 0x02 - #define CDC_CONTROL_PROTOCOL 0x01 - #define CDC_DATA_CLASS 0x0A - #define CDC_DATA_SUBCLASS 0x00 - #define CDC_DATA_PROTOCOL 0x00 - /* Function Prototypes: */ - #if defined(__INCLUDE_FROM_CDC_CLASS_HOST_C) + #if defined(__INCLUDE_FROM_CDC_HOST_C) static int CDC_Host_putchar(char c, FILE* Stream) ATTR_NON_NULL_PTR_ARG(2); static int CDC_Host_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); static int CDC_Host_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1); - void CDC_Host_Event_Stub(void); + void CDC_Host_Event_Stub(void) ATTR_CONST; void EVENT_CDC_Host_ControLineStateChanged(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo) ATTR_WEAK ATTR_NON_NULL_PTR_ARG(1) ATTR_ALIAS(CDC_Host_Event_Stub);