X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/43c473530552acabcf5bb1db29555bfb5ea70b79..e9029d49d5455ec146d2e87436d43d747d6c657a:/LUFA/Drivers/USB/Class/Device/CDC.c diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c index 838bd712d..dc8c1e7a6 100644 --- a/LUFA/Drivers/USB/Class/Device/CDC.c +++ b/LUFA/Drivers/USB/Class/Device/CDC.c @@ -29,18 +29,14 @@ */ #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