X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/eee252603be67c539f9986cde76454f756e55d95..e3ff5516598e8d9258b7ce17f5ecb9496a93cd46:/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 fa439de5e..39edc3846 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, 2012.
+     Copyright (C) Dean Camera, 2016.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2016  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
@@ -100,7 +100,7 @@
 				struct
 				{
 					uint8_t ControlInterfaceNumber; /**< Interface number of the CDC control interface within the device. */
-					
+
 					USB_Endpoint_Table_t DataINEndpoint; /**< Data IN endpoint configuration table. */
 					USB_Endpoint_Table_t DataOUTEndpoint; /**< Data OUT endpoint configuration table. */
 					USB_Endpoint_Table_t NotificationEndpoint; /**< Notification IN Endpoint configuration table. */
@@ -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.
 			 */
@@ -197,7 +197,25 @@
 			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 			 */
 			uint8_t CDC_Device_SendData(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
-			                            const char* const Buffer,
+			                            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
@@ -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
 			 *
@@ -316,7 +350,7 @@
 			void CDC_Device_CreateBlockingStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 			                                     FILE* const Stream) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 			#endif
-			
+
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Function Prototypes: */