| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | /* * usb.h *  * USB stack entry points and callbacks. *  * Written & released by Keir Fraser <keir.xen@gmail.com> *  * This is free and unencumbered software released into the public domain. * See the file COPYING for more details, or visit <http://unlicense.org>. *//* Max Packet Size */#define USB_FS_MPS 64#define USB_HS_MPS 512extern unsigned int usb_bulk_mps;/* Class-specific callback hooks */struct usb_class_ops {    void (*reset)(void);    void (*configure)(void);};extern const struct usb_class_ops usb_cdc_acm_ops;/* USB Endpoints for CDC ACM communications. */#define EP_RX 2#define EP_TX 3/* Main entry points for USB processing. */void usb_init(void);void usb_deinit(void);void usb_process(void);/* Does OUT endpoint have data ready? If so return packet length, else -1. */int ep_rx_ready(uint8_t ep);/* Consume the next OUT packet, returning @len bytes.  * REQUIRES: ep_rx_ready(@ep) >= @len */void usb_read(uint8_t ep, void *buf, uint32_t len);/* Is IN endpoint ready for next packet? */bool_t ep_tx_ready(uint8_t ep);/* Queue the next IN packet, with the given payload data.  * REQUIRES: ep_tx_ready(@ep) == TRUE */void usb_write(uint8_t ep, const void *buf, uint32_t len);/* Is the USB enumerated at High Speed? */bool_t usb_is_highspeed(void);/* * Local variables: * mode: C * c-file-style: "Linux" * c-basic-offset: 4 * tab-width: 4 * indent-tabs-mode: nil * End: */
 |