mirror of
https://github.com/mfulz/qmk_firmware.git
synced 2025-07-25 23:00:41 +02:00
Finished CDC device class driver documentation.
This commit is contained in:
parent
e6881fd166
commit
bde64666fb
@ -462,8 +462,10 @@ static void DiscardFillerBytes(uint8_t NumberOfBytes)
|
|||||||
/* Wait until next data packet received */
|
/* Wait until next data packet received */
|
||||||
while (!(Endpoint_IsOUTReceived()));
|
while (!(Endpoint_IsOUTReceived()));
|
||||||
}
|
}
|
||||||
|
else
|
||||||
Endpoint_Discard_Byte();
|
{
|
||||||
|
Endpoint_Discard_Byte();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,13 +5,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
========== TODO: ===========
|
========== TODO: ===========
|
||||||
- Fix bootloaders - make compatible with smaller USB AVRS (USB_IsConnected)
|
|
||||||
- Document new device class drivers
|
- Document new device class drivers
|
||||||
- Made new host class drivers
|
- Make new host class drivers
|
||||||
- Document new host class drivers
|
- Document new host class drivers
|
||||||
- Convert Host mode demos to 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 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
|
/** \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)
|
void USB_CDC_SendString(USB_ClassInfo_CDC_t* CDCInterfaceInfo, char* Data, uint16_t Length)
|
||||||
{
|
{
|
||||||
|
if (!(USB_IsConnected))
|
||||||
|
return;
|
||||||
|
|
||||||
Endpoint_SelectEndpoint(CDCInterfaceInfo->DataINEndpointNumber);
|
Endpoint_SelectEndpoint(CDCInterfaceInfo->DataINEndpointNumber);
|
||||||
Endpoint_Write_Stream_LE(Data, Length, NO_STREAM_CALLBACK);
|
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)
|
uint8_t USB_CDC_ReceiveByte(USB_ClassInfo_CDC_t* CDCInterfaceInfo)
|
||||||
{
|
{
|
||||||
|
if (!(USB_IsConnected))
|
||||||
|
return 0;
|
||||||
|
|
||||||
Endpoint_SelectEndpoint(CDCInterfaceInfo->DataOUTEndpointNumber);
|
Endpoint_SelectEndpoint(CDCInterfaceInfo->DataOUTEndpointNumber);
|
||||||
|
|
||||||
uint8_t DataByte = Endpoint_Read_Byte();
|
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)
|
void USB_CDC_SendSerialLineStateChange(USB_ClassInfo_CDC_t* CDCInterfaceInfo, uint16_t LineStateMask)
|
||||||
{
|
{
|
||||||
|
if (!(USB_IsConnected))
|
||||||
|
return;
|
||||||
|
|
||||||
Endpoint_SelectEndpoint(CDCInterfaceInfo->NotificationEndpointNumber);
|
Endpoint_SelectEndpoint(CDCInterfaceInfo->NotificationEndpointNumber);
|
||||||
|
|
||||||
USB_Request_Header_t Notification = (USB_Request_Header_t)
|
USB_Request_Header_t Notification = (USB_Request_Header_t)
|
||||||
|
@ -234,10 +234,48 @@
|
|||||||
*/
|
*/
|
||||||
void EVENT_USB_CDC_ControLineStateChanged(USB_ClassInfo_CDC_t* CDCInterfaceInfo);
|
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);
|
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);
|
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);
|
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);
|
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);
|
void USB_CDC_SendSerialLineStateChange(USB_ClassInfo_CDC_t* CDCInterfaceInfo, uint16_t LineStateMask);
|
||||||
|
|
||||||
/* Disable C linkage for C++ Compilers: */
|
/* Disable C linkage for C++ Compilers: */
|
||||||
|
@ -115,7 +115,7 @@
|
|||||||
uint8_t ReportINEndpointNumber; /**< Endpoint number of the HID interface's IN report endpoint */
|
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 */
|
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 */
|
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 */
|
uint16_t IdleCount; /**< Report idle period, in ms, set by the host */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user