Added return values to the CDC and MIDI class driver transmit functions.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / CDC.c
index cbb9a85..003a6b3 100644 (file)
@@ -121,46 +121,55 @@ void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
        CDC_Device_Flush(CDCInterfaceInfo);\r
 }\r
 \r
-void CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, char* const Data, const uint16_t Length)\r
+uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, char* const Data, const uint16_t Length)\r
 {\r
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))\r
-         return;\r
+         return ENDPOINT_READYWAIT_NoError;\r
        \r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);\r
-       Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);\r
+       return Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);\r
 }\r
 \r
-void CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data)\r
+uint8_t CDC_Device_SendByte(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo, const uint8_t Data)\r
 {\r
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))\r
-         return;\r
+         return ENDPOINT_READYWAIT_NoError;\r
 \r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);\r
 \r
        if (!(Endpoint_IsReadWriteAllowed()))\r
        {\r
+               uint8_t ErrorCode;\r
+       \r
                Endpoint_ClearIN();\r
-               Endpoint_WaitUntilReady();\r
+\r
+               if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)\r
+                 return ErrorCode;\r
        }\r
 \r
-       Endpoint_Write_Byte(Data);      \r
+       Endpoint_Write_Byte(Data);\r
+       return ENDPOINT_READYWAIT_NoError;\r
 }\r
 \r
-void CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)\r
+uint8_t CDC_Device_Flush(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)\r
 {\r
        if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))\r
-         return;\r
+         return ENDPOINT_READYWAIT_NoError;\r
 \r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataINEndpointNumber);\r
        \r
        if (Endpoint_BytesInEndpoint())\r
        {\r
+               uint8_t ErrorCode;\r
+\r
                Endpoint_ClearIN();\r
-               Endpoint_WaitUntilReady();\r
+               \r
+               if ((ErrorCode = Endpoint_WaitUntilReady()) != ENDPOINT_READYWAIT_NoError)\r
+                 return ErrorCode;\r
        }\r
        \r
        Endpoint_ClearIN();\r
-       Endpoint_WaitUntilReady();      \r
+       return Endpoint_WaitUntilReady();\r
 }\r
 \r
 uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)\r
@@ -175,7 +184,7 @@ uint16_t CDC_Device_BytesReceived(USB_ClassInfo_CDC_Device_t* const CDCInterface
 \r
 uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)\r
 {\r
-       if (USB_DeviceState != DEVICE_STATE_Configured)\r
+       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))\r
          return 0;\r
 \r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.DataOUTEndpointNumber);\r
@@ -190,7 +199,7 @@ uint8_t CDC_Device_ReceiveByte(USB_ClassInfo_CDC_Device_t* CDCInterfaceInfo)
 \r
 void CDC_Device_SendControlLineStateChange(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)\r
 {\r
-       if (USB_DeviceState != DEVICE_STATE_Configured)\r
+       if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))\r
          return;\r
 \r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->Config.NotificationEndpointNumber);\r