Atmel Studio 7 has a newer AVRISP-MKII firmware payload.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / CDCClassHost.c
index 146d501..94ec943 100644 (file)
@@ -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
@@ -112,13 +112,13 @@ uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo
        CDCInterfaceInfo->Config.NotificationPipe.Type = EP_TYPE_INTERRUPT;
 
        if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.DataINPipe, 1)))
-         return false;
+         return CDC_ENUMERROR_PipeConfigurationFailed;
 
        if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.DataOUTPipe, 1)))
-         return false;
+         return CDC_ENUMERROR_PipeConfigurationFailed;
 
        if (!(Pipe_ConfigurePipeTable(&CDCInterfaceInfo->Config.NotificationPipe, 1)))
-         return false;
+         return CDC_ENUMERROR_PipeConfigurationFailed;
 
        CDCInterfaceInfo->State.ControlInterfaceNumber = CDCControlInterface->InterfaceNumber;
        CDCInterfaceInfo->State.ControlLineStates.HostToDevice = (CDC_CONTROL_LINE_OUT_RTS | CDC_CONTROL_LINE_OUT_DTR);
@@ -294,6 +294,24 @@ uint8_t CDC_Host_SendData(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
        return ErrorCode;
 }
 
+uint8_t CDC_Host_SendData_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
+                          const void* const Buffer,
+                          const uint16_t Length)
+{
+       if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
+         return PIPE_READYWAIT_DeviceDisconnected;
+
+       uint8_t ErrorCode;
+
+       Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address);
+
+       Pipe_Unfreeze();
+       ErrorCode = Pipe_Write_PStream_LE(Buffer, Length, NULL);
+       Pipe_Freeze();
+
+       return ErrorCode;
+}
+
 uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
                             const char* const String)
 {
@@ -311,6 +329,23 @@ uint8_t CDC_Host_SendString(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
        return ErrorCode;
 }
 
+uint8_t CDC_Host_SendString_P(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
+                            const char* const String)
+{
+       if ((USB_HostState != HOST_STATE_Configured) || !(CDCInterfaceInfo->State.IsActive))
+         return PIPE_READYWAIT_DeviceDisconnected;
+
+       uint8_t ErrorCode;
+
+       Pipe_SelectPipe(CDCInterfaceInfo->Config.DataOUTPipe.Address);
+
+       Pipe_Unfreeze();
+       ErrorCode = Pipe_Write_PStream_LE(String, strlen_P(String), NULL);
+       Pipe_Freeze();
+
+       return ErrorCode;
+}
+
 uint8_t CDC_Host_SendByte(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
                           const uint8_t Data)
 {