Oops - Bootloader optimizations to GetDescriptor() don't work, as the Configuration...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / Printer.c
index 9229922..bd960e2 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
@@ -29,7 +29,8 @@
 */
 
 #define  __INCLUDE_FROM_USB_DRIVER
 */
 
 #define  __INCLUDE_FROM_USB_DRIVER
-#include "../../HighLevel/USBMode.h"
+#include "../../Core/USBMode.h"
+
 #if defined(USB_CAN_BE_HOST)
 
 #define  __INCLUDE_FROM_PRINTER_DRIVER
 #if defined(USB_CAN_BE_HOST)
 
 #define  __INCLUDE_FROM_PRINTER_DRIVER
@@ -287,8 +288,31 @@ uint8_t PRNT_Host_SendByte(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 }
 
 uint8_t PRNT_Host_SendString(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
 }
 
 uint8_t PRNT_Host_SendString(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
-                             void* Buffer,
-                             const uint16_t Length)
+                             void* String)
+{
+       uint8_t ErrorCode;
+
+       if ((USB_HostState != HOST_STATE_Configured) || !(PRNTInterfaceInfo->State.IsActive))
+         return PIPE_RWSTREAM_DeviceDisconnected;
+
+       Pipe_SelectPipe(PRNTInterfaceInfo->Config.DataOUTPipeNumber);
+       Pipe_Unfreeze();
+
+       if ((ErrorCode = Pipe_Write_Stream_LE(String, strlen(String), NULL)) != PIPE_RWSTREAM_NoError)
+         return ErrorCode;
+
+       Pipe_ClearOUT();
+
+       ErrorCode = Pipe_WaitUntilReady();
+
+       Pipe_Freeze();
+
+       return ErrorCode;
+}
+
+uint8_t PRNT_Host_SendData(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
+                           void* Buffer,
+                           const uint16_t Length)
 {
        uint8_t ErrorCode;
 
 {
        uint8_t ErrorCode;
 
@@ -298,7 +322,7 @@ uint8_t PRNT_Host_SendString(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
        Pipe_SelectPipe(PRNTInterfaceInfo->Config.DataOUTPipeNumber);
        Pipe_Unfreeze();
 
        Pipe_SelectPipe(PRNTInterfaceInfo->Config.DataOUTPipeNumber);
        Pipe_Unfreeze();
 
-       if ((ErrorCode = Pipe_Write_Stream_LE(Buffer, Length, NO_STREAM_CALLBACK)) != PIPE_RWSTREAM_NoError)
+       if ((ErrorCode = Pipe_Write_Stream_LE(Buffer, Length, NULL)) != PIPE_RWSTREAM_NoError)
          return ErrorCode;
 
        Pipe_ClearOUT();
          return ErrorCode;
 
        Pipe_ClearOUT();