/* * usb.h * * USB stack entry points and callbacks. * * Written & released by Keir Fraser * * This is free and unencumbered software released into the public domain. * See the file COPYING for more details, or visit . */ /* 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: */