Skip to content
Snippets Groups Projects
Commit bde64666 authored by Dean Camera's avatar Dean Camera
Browse files

Finished CDC device class driver documentation.

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