2.28.1. usb_device_class_cdc — CDC ACM (serial port over USB)

USB CDC (Communications Device Class) ACM (Abstract Control Model) is a vendor-independent publicly documented protocol that can be used for emulating serial ports over USB.

More information on Wikipedia.


Source code: src/drivers/usb/device/class/cdc.h, src/drivers/usb/device/class/cdc.c

Test code: tst/drivers/usb_device/main.c


Defines

usb_device_class_cdc_read(self_p, buf_p, size)

Read data from the CDC driver.

Return
Number of bytes read or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to read into.
  • size: Number of bytes to read.

usb_device_class_cdc_write(self_p, buf_p, size)

Write data to the CDC driver.

Return
Number of bytes written or negative error code.
Parameters
  • self_p: Initialized driver object.
  • buf_p: Buffer to write.
  • size: Number of bytes to write.

Functions

int usb_device_class_cdc_module_init(void)

Initialize the CDC module.

Return
zero(0) or negative error code.

int usb_device_class_cdc_init(struct usb_device_class_cdc_driver_t *self_p, int control_interface, int endpoint_in, int endpoint_out, void *rxbuf_p, size_t size)

Initialize driver object from given configuration.

Return
zero(0) or negative error code.
Parameters
  • self_p: Driver object to be initialized.
  • rxbuf_p: Reception buffer.
  • size: Reception buffer size.

int usb_device_class_cdc_input_isr(struct usb_device_class_cdc_driver_t *self_p)

Called by the USB device driver periodically to let the CDC driver read received data from the hardware.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized driver object.

int usb_device_class_cdc_is_connected(struct usb_device_class_cdc_driver_t *self_p)

Check if the CDC is connected to the remote endpoint.

Return
true(1) if connected, false(0) if disconnected, otherwise negative error code.
Parameters
  • self_p: Initialized driver object.

struct usb_device_class_cdc_driver_t
#include <cdc.h>

Public Members

struct usb_device_driver_base_t base
struct usb_device_driver_t *drv_p
int control_interface
int endpoint_in
int endpoint_out
int line_state
struct usb_cdc_line_info_t line_info
struct chan_t chout
struct queue_t chin