25#ifndef HAL_SERIAL_USB_H
26#define HAL_SERIAL_USB_H
28#if (HAL_USE_SERIAL_USB == TRUE) || defined(__DOXYGEN__)
51#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
52#define SERIAL_USB_BUFFERS_SIZE 256
59#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
60#define SERIAL_USB_BUFFERS_NUMBER 2
68#if HAL_USE_USB == FALSE
69#error "Serial over USB Driver requires HAL_USE_USB"
119#define _serial_usb_driver_data \
120 _base_asynchronous_channel_data \
124 input_buffers_queue_t ibqueue; \
126 output_buffers_queue_t obqueue; \
128 uint8_t ib[BQ_BUFFER_SIZE(SERIAL_USB_BUFFERS_NUMBER, \
129 SERIAL_USB_BUFFERS_SIZE)]; \
131 uint8_t ob[BQ_BUFFER_SIZE(SERIAL_USB_BUFFERS_NUMBER, \
132 SERIAL_USB_BUFFERS_SIZE)]; \
135 const SerialUSBConfig *config;
140#define _serial_usb_driver_methods \
141 _base_asynchronous_channel_methods
int32_t msg_t
Type of a message.
bool sduRequestsHook(USBDriver *usbp)
Default requests hook.
void sduSuspendHookI(SerialUSBDriver *sdup)
USB device suspend handler.
#define _serial_usb_driver_data
SerialDriver specific data.
#define _serial_usb_driver_methods
SerialUSBDriver specific methods.
void sduInterruptTransmitted(USBDriver *usbp, usbep_t ep)
Default data received callback.
void sduObjectInit(SerialUSBDriver *sdup)
Initializes a generic full duplex driver object.
void sduInit(void)
Serial Driver initialization.
msg_t sduStart(SerialUSBDriver *sdup, const SerialUSBConfig *config)
Configures and starts the driver.
void sduDataReceived(USBDriver *usbp, usbep_t ep)
Default data received callback.
void sduWakeupHookI(SerialUSBDriver *sdup)
USB device wakeup handler.
msg_t sduControl(USBDriver *usbp, unsigned int operation, void *arg)
Control operation on a serial USB port.
void sduStop(SerialUSBDriver *sdup)
Stops the driver.
void sduSOFHookI(SerialUSBDriver *sdup)
SOF handler.
void sduDataTransmitted(USBDriver *usbp, usbep_t ep)
Default data transmitted callback.
sdustate_t
Driver state machine possible states.
void sduConfigureHookI(SerialUSBDriver *sdup)
USB device configured handler.
uint8_t usbep_t
Type of an endpoint identifier.
USB CDC macros and structures.
Serial over USB Driver configuration structure.
usbep_t bulk_in
Bulk IN endpoint used for outgoing data transfer.
usbep_t bulk_out
Bulk OUT endpoint used for incoming data transfer.
usbep_t int_in
Interrupt IN endpoint used for notifications.
USBDriver * usbp
USB driver to use.
Full duplex serial driver class.
const struct SerialUSBDriverVMT * vmt
Virtual Methods Table.
SerialDriver virtual methods table.
Structure representing an USB driver.