CI: Build on Arch (bleeding-ege) and Ubuntu (stable) AVR-GCC toolchains.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / CDCClassHost.h
index 2a81572..da55773 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2015.
+     Copyright (C) Dean Camera, 2018.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2015  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2018  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
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
                        uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
                                                   const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 
                        uint8_t CDC_Host_SendBreak(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
                                                   const uint8_t Duration) ATTR_NON_NULL_PTR_ARG(1);
 
-                       /** Sends a given data buffer to the attached USB device, if connected. If a device is not connected when the function is
-                        *  called, the data will be discarded. Bytes will be queued for transmission to the device until either the pipe bank
-                        *  becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows for
-                        *  multiple bytes to be packed into a single pipe packet, increasing data throughput.
-                        *
-                        *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the
-                        *       call will fail.
-                        *
-                        *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host 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 device.
-                        *
-                        *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
-                        */
-                       uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
-                                                 const void* const Buffer,
-                                                 const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
-
-                       /** Sends a given data buffer from PROGMEM space to the attached USB device, if connected. If a device is not connected when the
-                        *  function is called, the string is discarded. Bytes will be queued for transmission to the host until either the pipe
-                        *  bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
-                        *  for multiple bytes to be packed into a single pipe packet, increasing data throughput.
-                        *
-                        *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
-                        *       the call will fail.
-                        *
-                        *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host 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 Pipe_Stream_RW_ErrorCodes_t enum.
-                        */
-                       uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
-                                                   const void* const Buffer,
-                                                   const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
-
                        /** Sends a given null-terminated string to the attached USB device, if connected. If a device is not connected when the
                         *  function is called, the string is discarded. Bytes will be queued for transmission to the device until either the pipe
                         *  bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
                        /** Sends a given null-terminated string to the attached USB device, if connected. If a device is not connected when the
                         *  function is called, the string is discarded. Bytes will be queued for transmission to the device until either the pipe
                         *  bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
                        uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
                                                    const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 
                        uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_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 device, if connected. If a device is not connected
-                        *  when the function is called, the string is discarded. Bytes will be queued for transmission to the device until either
-                        *  the pipe bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to
-                        *  the device. This allows for multiple bytes to be packed into a single pipe packet, increasing data throughput.
+                       /** Sends a given data buffer to the attached USB device, if connected. If a device is not connected when the function is
+                        *  called, the data will be discarded. Bytes will be queued for transmission to the device until either the pipe bank
+                        *  becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows for
+                        *  multiple bytes to be packed into a single pipe packet, increasing data throughput.
                         *
                         *
-                        *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
-                        *       the call will fail.
+                        *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the
+                        *       call will fail.
                         *
                         *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host configuration and state.
                         *
                         *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host configuration and state.
-                        *  \param[in]     String            Pointer to the null terminated string to send to the host.
+                        *  \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 device.
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
                         */
                         *
                         *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
                         */
-                       uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
-                                                     const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+                       uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
+                                                 const void* const Buffer,
+                                                 const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
+
+                       #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+                               /** Sends a given null terminated string from PROGMEM space to the attached USB device, if connected. If a device is not connected
+                                *  when the function is called, the string is discarded. Bytes will be queued for transmission to the device until either
+                                *  the pipe bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to
+                                *  the device. This allows for multiple bytes to be packed into a single pipe packet, increasing data throughput.
+                                *
+                                *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
+                                *       the call will fail.
+                                *
+                                *  \note This function does not exist on architectures that do not have a separate flash memory space.
+                                *
+                                *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host configuration and state.
+                                *  \param[in]     String            Pointer to the null terminated string to send to the host.
+                                *
+                                *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
+                                */
+                               uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
+                                                         const char* const String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+                       #endif
+
+                       #if defined(ARCH_HAS_FLASH_ADDRESS_SPACE)
+                               /** Sends a given data buffer from PROGMEM space to the attached USB device, if connected. If a device is not connected when the
+                                *  function is called, the string is discarded. Bytes will be queued for transmission to the host until either the pipe
+                                *  bank becomes full, or the \ref CDC_Host_Flush() function is called to flush the pending data to the device. This allows
+                                *  for multiple bytes to be packed into a single pipe packet, increasing data throughput.
+                                *
+                                *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or
+                                *       the call will fail.
+                                *
+                                *  \note This function does not exist on architectures that do not have a separate flash memory space.
+                                *
+                                *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class host 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 Pipe_Stream_RW_ErrorCodes_t enum.
+                                */
+                               uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
+                                                       const void* const Buffer,
+                                                       const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
+                       #endif
 
                        /** Sends a given byte to the attached USB device, if connected. If a device is not connected when the function is called, the
                         *  byte is discarded. Bytes will be queued for transmission to the device until either the pipe bank becomes full, or the
 
                        /** Sends a given byte to the attached USB device, if connected. If a device is not connected when the function is called, the
                         *  byte is discarded. Bytes will be queued for transmission to the device until either the pipe bank becomes full, or the
                                static int CDC_Host_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
                                #endif
 
                                static int CDC_Host_getchar_Blocking(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
                                #endif
 
-                               void CDC_Host_Event_Stub(void) ATTR_CONST;
+                               void CDC_Host_Event_Stub(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo);
 
                                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);
 
                                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);