Rename the Doxygen page source directory from ManPages/ to DoxygenPages/ to prevent...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / CDC.c
index 838bd71..dc8c1e7 100644 (file)
 */
 
 #define  __INCLUDE_FROM_USB_DRIVER
-#include "../../HighLevel/USBMode.h"
+#include "../../Core/USBMode.h"
+
 #if defined(USB_CAN_BE_DEVICE)
 
 #define  __INCLUDE_FROM_CDC_DRIVER
 #define  __INCLUDE_FROM_CDC_DEVICE_C
 #include "CDC.h"
 
-void CDC_Device_Event_Stub(void)
-{
-
-}
-
 void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 {
        if (!(Endpoint_IsSETUPReceived()))
@@ -55,8 +51,12 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
-                               Endpoint_Write_Control_Stream_LE(&CDCInterfaceInfo->State.LineEncoding, sizeof(CDCInterfaceInfo->State.LineEncoding));
-                               Endpoint_ClearOUT();
+                               Endpoint_Write_32_LE(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS);
+                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.CharFormat);
+                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.ParityType);
+                               Endpoint_Write_8(CDCInterfaceInfo->State.LineEncoding.DataBits);
+                               Endpoint_ClearIN();
+                               Endpoint_ClearStatusStage();
                        }
 
                        break;
@@ -64,8 +64,12 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
-                               Endpoint_Read_Control_Stream_LE(&CDCInterfaceInfo->State.LineEncoding, sizeof(CDCInterfaceInfo->State.LineEncoding));
-                               Endpoint_ClearIN();
+                               CDCInterfaceInfo->State.LineEncoding.BaudRateBPS = Endpoint_Read_32_LE();
+                               CDCInterfaceInfo->State.LineEncoding.CharFormat  = Endpoint_Read_8();
+                               CDCInterfaceInfo->State.LineEncoding.ParityType  = Endpoint_Read_8();
+                               CDCInterfaceInfo->State.LineEncoding.DataBits    = Endpoint_Read_8();
+                               Endpoint_ClearOUT();
+                               Endpoint_ClearStatusStage();
 
                                EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
                        }
@@ -192,7 +196,7 @@ uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                  return ErrorCode;
        }
 
-       Endpoint_Write_Byte(Data);
+       Endpoint_Write_8(Data);
        return ENDPOINT_READYWAIT_NoError;
 }
 
@@ -260,7 +264,7 @@ int16_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInf
        if (Endpoint_IsOUTReceived())
        {
                if (Endpoint_BytesInEndpoint())
-                 ReceivedByte = Endpoint_Read_Byte();
+                 ReceivedByte = Endpoint_Read_8();
 
                if (!(Endpoint_BytesInEndpoint()))
                  Endpoint_ClearOUT();
@@ -280,9 +284,9 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
                        .bRequest      = CDC_NOTIF_SerialState,
-                       .wValue        = 0,
-                       .wIndex        = 0,
-                       .wLength       = sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost),
+                       .wValue        = CPU_TO_LE16(0),
+                       .wIndex        = CPU_TO_LE16(0),
+                       .wLength       = CPU_TO_LE16(sizeof(CDCInterfaceInfo->State.ControlLineStates.DeviceToHost)),
                };
 
        Endpoint_Write_Stream_LE(&Notification, sizeof(USB_Request_Header_t), NULL);
@@ -292,6 +296,7 @@ void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDC
        Endpoint_ClearIN();
 }
 
+#if defined(FDEV_SETUP_STREAM)
 void CDC_Device_CreateStream(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
                              FILE* const Stream)
 {
@@ -337,6 +342,12 @@ static int CDC_Device_getchar_Blocking(FILE* Stream)
 
        return ReceivedByte;
 }
+#endif
+
+void CDC_Device_Event_Stub(void)
+{
+
+}
 
 #endif