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 512
- extern 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:
- */
|