X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/cfa48f5987ee00f1ef44959cedc6e5248f2bdfb9..3642ea0b9715cdf0196b10c9fc97898940eaefa6:/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h diff --git a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h index 1f259f381..1c88fb841 100644 --- a/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h +++ b/LUFA/Drivers/USB/Class/Device/CDCClassDevice.h @@ -1,13 +1,13 @@ /* LUFA Library - Copyright (C) Dean Camera, 2013. + Copyright (C) Dean Camera, 2015. dean [at] fourwalledcubicle [dot] com www.lufa-lib.org */ /* - Copyright 2013 Dean Camera (dean [at] fourwalledcubicle [dot] com) + Copyright 2015 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 @@ -40,11 +40,11 @@ /** \ingroup Group_USBClassCDC * \defgroup Group_USBClassCDCDevice CDC Class Device Mode Driver * - * \section Sec_Dependencies Module Source Dependencies + * \section Sec_USBClassCDCDevice_Dependencies Module Source Dependencies * The following files must be built with any user project that uses this module: * - LUFA/Drivers/USB/Class/Device/CDCClassDevice.c (Makefile source module name: LUFA_SRC_USBCLASS) * - * \section Sec_ModDescription Module Description + * \section Sec_USBClassCDCDevice_ModDescription Module Description * Device Mode USB Class driver framework interface, for the CDC USB Class driver. * * \note There are several major drawbacks to the CDC-ACM standard USB class, however @@ -120,9 +120,9 @@ */ } ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */ - 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. + 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. */ } State; /**< State data for the USB class interface within the device. All elements in this section * are reset to their defaults when the interface is enumerated. @@ -157,7 +157,7 @@ /** CDC class driver event for a line encoding change on a CDC interface. This event fires each time the host requests a * line encoding change (containing the serial parity, baud and other configuration information) and may be hooked in the * user program by declaring a handler function with the same name and parameters listed here. The new line encoding - * settings are available in the LineEncoding structure inside the CDC interface structure passed as a parameter. + * settings are available in the \c LineEncoding structure inside the CDC interface structure passed as a parameter. * * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. */ @@ -200,6 +200,24 @@ const void* const Buffer, const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given data buffer from PROGMEM space to the attached USB host, if connected. If a host is not connected when the + * function is called, the string is discarded. Bytes will be queued for transmission to the host until either the endpoint + * bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows + * for multiple bytes to be packed into a single endpoint packet, increasing data throughput. + * + * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or + * the call will fail. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. + * \param[in] Buffer Pointer to a buffer containing the data to send to the device. + * \param[in] Length Length of the data to send to the host. + * + * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Device_SendData_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const void* const Buffer, + const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given null terminated string to the attached USB host, if connected. If a host is not connected when * the function is called, the string is discarded. Bytes will be queued for transmission to the host until either * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to @@ -216,6 +234,22 @@ uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given null terminated string from PROGMEM space to the attached USB host, if connected. If a host is not connected + * when the function is called, the string is discarded. Bytes will be queued for transmission to the host until either + * the endpoint bank becomes full, or the \ref CDC_Device_Flush() function is called to flush the pending data to + * the host. This allows for multiple bytes to be packed into a single endpoint packet, increasing data throughput. + * + * \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or + * the call will fail. + * + * \param[in,out] CDCInterfaceInfo Pointer to a structure containing a CDC Class configuration and state. + * \param[in] String Pointer to the null terminated string to send to the host. + * + * \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum. + */ + uint8_t CDC_Device_SendString_P(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, + const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2); + /** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the * byte is discarded. Bytes will be queued for transmission to the host until either the endpoint bank becomes full, or the * \ref CDC_Device_Flush() function is called to flush the pending data to the host. This allows for multiple bytes to be @@ -293,7 +327,7 @@ * be used when the read data is processed byte-per-bye (via \c getc()) or when the user application will implement its own * line buffering. * - * \note The created stream can be given as \c stdout if desired to direct the standard output from all functions + * \note The created stream can be given as \c stdout if desired to direct the standard output from all \c functions * to the given CDC interface. * \n\n *