Finished CDC device class driver documentation.
authorDean Camera <dean@fourwalledcubicle.com>
Mon, 8 Jun 2009 10:06:49 +0000 (10:06 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Mon, 8 Jun 2009 10:06:49 +0000 (10:06 +0000)
Bootloaders/DFU/BootloaderDFU.c
LUFA/ChangeLog.txt
LUFA/Drivers/USB/Class/Device/CDC.c
LUFA/Drivers/USB/Class/Device/CDC.h
LUFA/Drivers/USB/Class/Device/HID.h

index 1850803..6da741e 100644 (file)
@@ -462,8 +462,10 @@ static void DiscardFillerBytes(uint8_t NumberOfBytes)
                        /* Wait until next data packet received */\r
                        while (!(Endpoint_IsOUTReceived()));\r
                }\r
-\r
-               Endpoint_Discard_Byte();                                                \r
+               else\r
+               {\r
+                       Endpoint_Discard_Byte();\r
+               }\r
        }\r
 }\r
 \r
index 7e37ac4..0eea9c4 100644 (file)
@@ -5,13 +5,12 @@
  */\r
    \r
 ========== TODO: ===========\r
-       - Fix bootloaders - make compatible with smaller USB AVRS (USB_IsConnected)\r
        - Document new device class drivers\r
-       - Made new host class drivers\r
+       - Make new host class drivers\r
        - Document new host class drivers\r
        - Convert Host mode demos to class drivers\r
-       - Convert Host mode demos to schedulerless\r
        - Add standardized descriptor names to class driver structures, controlled by USE_NONSTANDARD_DESCRIPTOR_NAMES\r
+       - Add multiple-report HID demo to the library\r
 ============================\r
 \r
  /** \page Page_ChangeLog Project Changelog\r
index dface2a..c551fb7 100644 (file)
@@ -130,6 +130,9 @@ void USB_CDC_USBTask(USB_ClassInfo_CDC_t* CDCInterfaceInfo)
 \r
 void USB_CDC_SendString(USB_ClassInfo_CDC_t* CDCInterfaceInfo, char* Data, uint16_t Length)\r
 {\r
+       if (!(USB_IsConnected))\r
+         return;\r
+\r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->DataINEndpointNumber);\r
        Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);\r
 }\r
@@ -159,6 +162,9 @@ uint16_t USB_CDC_BytesReceived(USB_ClassInfo_CDC_t* CDCInterfaceInfo)
 \r
 uint8_t USB_CDC_ReceiveByte(USB_ClassInfo_CDC_t* CDCInterfaceInfo)\r
 {\r
+       if (!(USB_IsConnected))\r
+         return 0;\r
+\r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->DataOUTEndpointNumber);\r
        \r
        uint8_t DataByte = Endpoint_Read_Byte();\r
@@ -171,6 +177,9 @@ uint8_t USB_CDC_ReceiveByte(USB_ClassInfo_CDC_t* CDCInterfaceInfo)
 \r
 void USB_CDC_SendSerialLineStateChange(USB_ClassInfo_CDC_t* CDCInterfaceInfo, uint16_t LineStateMask)\r
 {\r
+       if (!(USB_IsConnected))\r
+         return;\r
+\r
        Endpoint_SelectEndpoint(CDCInterfaceInfo->NotificationEndpointNumber);\r
        \r
        USB_Request_Header_t Notification = (USB_Request_Header_t)\r
index ee9e376..feb7ff2 100644 (file)
                 */             \r
                void EVENT_USB_CDC_ControLineStateChanged(USB_ClassInfo_CDC_t* CDCInterfaceInfo);\r
 \r
+               /** Sends a given string to the attached USB host, if connected. If a host is not connected when the function is called, the\r
+                *  string is discarded.\r
+                *\r
+                *  \param CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.\r
+                *  \param Data  Pointer to the string to send to the host\r
+                *  \param Length  Size in bytes of the string to send to the host\r
+                */\r
                void     USB_CDC_SendString(USB_ClassInfo_CDC_t* CDCInterfaceInfo, char* Data, uint16_t Length);\r
+               \r
+               /** Sends a given byte to the attached USB host, if connected. If a host is not connected when the function is called, the\r
+                *  byte is discarded.\r
+                *\r
+                *  \param CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.\r
+                *  \param Data  Byte of data to send to the host\r
+                */\r
                void     USB_CDC_SendByte(USB_ClassInfo_CDC_t* CDCInterfaceInfo, uint8_t Data);\r
+               \r
+               /** Determines the number of bytes received by the CDC interface from the host, waiting to be read.\r
+                *\r
+                *  \param CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.\r
+                *\r
+                *  \return Total number of buffered bytes received from the host\r
+                */\r
                uint16_t USB_CDC_BytesReceived(USB_ClassInfo_CDC_t* CDCInterfaceInfo);\r
+               \r
+               /** Reads a byte of data from the host. If no data is waiting to be read of if a USB host is not connected, the function\r
+                *  returns 0. The USB_CDC_BytesReceived() function should be queried before data is recieved to ensure that no data\r
+                *  underflow occurs.\r
+                *\r
+                *  \param CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.\r
+                *\r
+                *  \return Next received byte from the host, or 0 if no data received\r
+                */\r
                uint8_t  USB_CDC_ReceiveByte(USB_ClassInfo_CDC_t* CDCInterfaceInfo);\r
+               \r
+               /** Sends a Serial Control Line State Change notification to the host. This should be called when the virtual serial control\r
+                *  lines (DCD, DSR, etc.) have changed states, or to give BREAK notfications to the host. Line states persist until they are\r
+                *  cleared via a second notification.\r
+                *\r
+                *  \param CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.\r
+                *  \param LineStateMask  Mask of CDC_CONTROL_LINE_IN_* masks giving the current control line states\r
+                */\r
                void     USB_CDC_SendSerialLineStateChange(USB_ClassInfo_CDC_t* CDCInterfaceInfo, uint16_t LineStateMask);\r
 \r
        /* Disable C linkage for C++ Compilers: */\r
index f863f81..e812a39 100644 (file)
                        uint8_t  ReportINEndpointNumber; /**< Endpoint number of the HID interface's IN report endpoint */\r
                        uint16_t ReportINEndpointSize; /**< Size in bytes of the HID interface's IN report endpoint */\r
                        \r
-                       uint8_t  ReportINBufferSize;\r
+                       uint8_t  ReportINBufferSize; /**< Size of the largest possible report to send to the host, for buffer allocation purposes */\r
 \r
                        bool     UsingReportProtocol; /**< Indicates if the HID interface is set to Boot or Report protocol mode */\r
                        uint16_t IdleCount; /**< Report idle period, in ms, set by the host */\r