Moved calls to Device mode Class Driver events to after the request has been acknowle...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / CDC.c
index 3915460..bf852c7 100644 (file)
@@ -64,21 +64,24 @@ 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));
-                               EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
                                Endpoint_ClearIN();
+
+                               EVENT_CDC_Device_LineEncodingChanged(CDCInterfaceInfo);
                        }
        
                        break;
                case REQ_SetControlLineState:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {                               
-                               Endpoint_ClearSETUP();
-                               
+                               Endpoint_ClearSETUP();                          
+
                                CDCInterfaceInfo->State.ControlLineStates.HostToDevice = USB_ControlRequest.wValue;
-                               EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
 
                                Endpoint_ClearStatusStage();
+
+                               EVENT_CDC_Device_ControLineStateChanged(CDCInterfaceInfo);
                        }
        
                        break;
@@ -86,10 +89,9 @@ void CDC_Device_ProcessControlRequest(USB_ClassInfo_CDC_Device_t* const CDCInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {                               
                                Endpoint_ClearSETUP();
-                               
-                               EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
-
                                Endpoint_ClearStatusStage();
+
+                               EVENT_CDC_Device_BreakSent(CDCInterfaceInfo, (uint8_t)USB_ControlRequest.wValue);
                        }
 
                        break;