Added new Host mode Audio Class driver.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / Printer.h
index 99df01f..096cc59 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] 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
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
  */
 
 /** \ingroup Group_USBClassPrinter
  */
 
 /** \ingroup Group_USBClassPrinter
- *  @defgroup Group_USBClassPrinterHost Printer Class Host Mode Driver
+ *  \defgroup Group_USBClassPrinterHost Printer Class Host Mode Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *    - LUFA/Drivers/USB/Class/Host/Printer.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
  *
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
  *    - LUFA/Drivers/USB/Class/Host/Printer.c <i>(Makefile source module name: LUFA_SRC_USBCLASS)</i>
  *
- *  \section Module Description
+ *  \section Sec_ModDescription Module Description
  *  Host Mode USB Class driver framework interface, for the Printer USB Class driver.
  *
  *  @{
  *  Host Mode USB Class driver framework interface, for the Printer USB Class driver.
  *
  *  @{
                        #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
                #endif
 
                        #error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
                #endif
 
-               #if defined(__INCLUDE_FROM_PRINTER_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 Printer Class Host Mode Configuration and State Structure.
                         *
                         *  Class state structure. An instance of this structure should be made within the user application,
        /* Public Interface - May be used in end-application: */
                /* Type Defines: */
                        /** \brief Printer 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 Printer class driver functions as the PRNTInterfaceInfo parameter. This
+                        *  and passed to each of the Printer class driver functions as the \c PRNTInterfaceInfo parameter. This
                         *  stores each Printer interface's configuration and state information.
                         */
                        typedef struct
                         *  stores each Printer interface's configuration and state information.
                         */
                        typedef struct
                        uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
                        /** Retrieves the status of the virtual Printer port's inbound status lines. The result can then be masked against the
                        uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
                        /** Retrieves the status of the virtual Printer port's inbound status lines. The result can then be masked against the
-                        *  PRNT_PORTSTATUS_* macros to determine the printer port's status.
+                        *  \c PRNT_PORTSTATUS_* macros to determine the printer port's status.
                         *
                         *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state.
                         *  \param[out]    PortStatus         Location where the retrieved port status should be stored.
                         *
                         *  \param[in,out] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state.
                         *  \param[out]    PortStatus         Location where the retrieved port status should be stored.
                         */
                        uint8_t PRNT_Host_Flush(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
                         */
                        uint8_t PRNT_Host_Flush(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 
+                       /** Sends the given null terminated string to the attached printer's input endpoint.
+                        *
+                        *  \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] PRNTInterfaceInfo  Pointer to a structure containing a Printer Class host configuration and state.
+                        *  \param[in]     String             Pointer to a null terminated string to send.
+                        *
+                        *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
+                        */
+                       uint8_t PRNT_Host_SendString(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
+                                                    void* String) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+
                        /** Sends the given raw data stream to the attached printer's input endpoint. This should contain commands that the
                         *  printer is able to understand - for example, PCL data. Not all printers accept all printer languages; see
                         *  \ref PRNT_Host_GetDeviceID() for details on determining acceptable languages for an attached printer.
                        /** Sends the given raw data stream to the attached printer's input endpoint. This should contain commands that the
                         *  printer is able to understand - for example, PCL data. Not all printers accept all printer languages; see
                         *  \ref PRNT_Host_GetDeviceID() for details on determining acceptable languages for an attached printer.
                         *
                         *  \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 PRNT_Host_SendString(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
-                                                    void* Buffer,
-                                                    const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+                       uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
+                                                  void* Buffer,
+                                                  const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 
                        /** 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