USBUS basic interface. More...
USBUS basic interface.
Definition in file usbus.h.
#include <stdint.h>#include <stdlib.h>#include "clist.h"#include "event.h"#include "sched.h"#include "modules.h"#include "msg.h"#include "thread.h"#include "usb.h"#include "periph/usbdev.h"#include "usb/descriptor.h"
 Include dependency graph for usbus.h:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | usbus_string | 
| USBUS string type.  More... | |
| struct | usbus_descr_gen_funcs_t | 
| USBUS descriptor generator function pointers.  More... | |
| struct | usbus_descr_gen | 
| USBUS descriptor generator.  More... | |
| struct | usbus_endpoint | 
| USBUS endpoint context.  More... | |
| struct | usbus_urb | 
| USBUS USB request/response block.  More... | |
| struct | usbus_interface_alt | 
| USBUS interface alternative setting.  More... | |
| struct | usbus_interface | 
| USBUS interface.  More... | |
| struct | usbus_handler_driver | 
| USBUS event handler function pointers.  More... | |
| struct | usbus_handler | 
| USBUS handler struct.  More... | |
| struct | usbus | 
| USBUS context struct.  More... | |
Macros | |
| #define | USBUS_STACKSIZE (THREAD_STACKSIZE_DEFAULT) | 
| USBUS thread stack size.  | |
| #define | USBUS_PRIO (THREAD_PRIORITY_MAIN - 6) | 
| USBUS thread priority.  | |
| #define | CONFIG_USBUS_AUTO_ATTACH 1 | 
| USBUS auto attach setting.  More... | |
| #define | CONFIG_USBUS_MSC_AUTO_MTD 1 | 
| USBUS MSC auto MTD setting.  More... | |
| #define | CONFIG_USBUS_EP0_SIZE 64 | 
| USBUS endpoint 0 buffer size.  More... | |
| #define | USBUS_TNAME "usbus" | 
| USBUS thread name.  | |
Typedefs | |
| typedef struct usbus_string | usbus_string_t | 
| USBUS string type.  | |
| typedef struct usbus | usbus_t | 
| USBUS context forward declaration.  | |
| typedef struct usbus_handler | usbus_handler_t | 
| USBUS event handler forward declaration.  | |
| typedef struct usbus_descr_gen | usbus_descr_gen_t | 
| USBUS descriptor generator.  More... | |
| typedef struct usbus_endpoint | usbus_endpoint_t | 
| USBUS endpoint context.  | |
| typedef struct usbus_urb | usbus_urb_t | 
| USBUS USB request/response block.  | |
| typedef struct usbus_interface_alt | usbus_interface_alt_t | 
| USBUS interface alternative setting.  More... | |
| typedef struct usbus_interface | usbus_interface_t | 
| USBUS interface.  | |
| typedef struct usbus_handler_driver | usbus_handler_driver_t | 
| USBUS event handler function pointers.  | |
Enumerations | |
| enum | usbus_event_usb_t { USBUS_EVENT_USB_RESET , USBUS_EVENT_USB_SOF , USBUS_EVENT_USB_SUSPEND , USBUS_EVENT_USB_RESUME } | 
| USB handler events.  More... | |
| enum | usbus_event_transfer_t { USBUS_EVENT_TRANSFER_COMPLETE , USBUS_EVENT_TRANSFER_FAIL , USBUS_EVENT_TRANSFER_STALL } | 
| USB endpoint transfer status events.  More... | |
| enum | usbus_state_t {  USBUS_STATE_DISCONNECT , USBUS_STATE_RESET , USBUS_STATE_ADDR , USBUS_STATE_CONFIGURED , USBUS_STATE_SUSPEND }  | 
| state machine states for the global USBUS thread  More... | |
| enum | usbus_control_request_state_t {  USBUS_CONTROL_REQUEST_STATE_READY , USBUS_CONTROL_REQUEST_STATE_INDATA , USBUS_CONTROL_REQUEST_STATE_OUTACK , USBUS_CONTROL_REQUEST_STATE_OUTDATA , USBUS_CONTROL_REQUEST_STATE_INACK }  | 
| USBUS control request state machine.  More... | |
| enum | usbus_descr_len_type_t { USBUS_DESCR_LEN_FIXED , USBUS_DESCR_LEN_FUNC } | 
| descriptor length types for USB descriptor generators  More... | |
Functions | |
| static void | usbus_event_post (usbus_t *usbus, event_t *event) | 
| Submit an event to the usbus thread.  More... | |
| uint16_t | usbus_add_string_descriptor (usbus_t *usbus, usbus_string_t *desc, const char *str) | 
| Add a string descriptor to the USBUS thread context.  More... | |
| uint16_t | usbus_add_interface (usbus_t *usbus, usbus_interface_t *iface) | 
| Add an interface to the USBUS thread context.  More... | |
| void | usbus_add_interface_alt (usbus_interface_t *iface, usbus_interface_alt_t *alt) | 
| Add alternate settings to a given interface.  More... | |
| usbus_endpoint_t * | usbus_interface_find_endpoint (usbus_interface_t *interface, usb_ep_type_t type, usb_ep_dir_t dir) | 
| Find an endpoint from an interface based on the endpoint properties.  More... | |
| usbus_endpoint_t * | usbus_add_endpoint (usbus_t *usbus, usbus_interface_t *iface, usb_ep_type_t type, usb_ep_dir_t dir, size_t len) | 
| Add an endpoint to the specified interface.  More... | |
| void | usbus_add_conf_descriptor (usbus_t *usbus, usbus_descr_gen_t *descr_gen) | 
| Add a generator for generating additional top level USB descriptor content.  More... | |
| void | usbus_register_event_handler (usbus_t *usbus, usbus_handler_t *handler) | 
| Add an event handler to the USBUS context.  More... | |
| void | usbus_init (usbus_t *usbus, usbdev_t *usbdev) | 
| Initialize an USBUS context.  More... | |
| size_t | usbus_max_bulk_endpoint_size (usbus_t *usbus) | 
| Get the maximum supported bulk endpoint transfer size based on the enumeration speed.  More... | |
| size_t | usbus_max_interrupt_endpoint_size (usbus_t *usbus) | 
| Get the maximum supported interrupt endpoint transfer size based on the enumeration speed.  More... | |
| void | usbus_create (char *stack, int stacksize, char priority, const char *name, usbus_t *usbus) | 
| Create and start the USBUS thread.  More... | |
| static void | usbus_urb_init (usbus_urb_t *urb, uint8_t *buf, size_t len, uint32_t flags) | 
| Initialize a new URB.  More... | |
| void | usbus_urb_submit (usbus_t *usbus, usbus_endpoint_t *endpoint, usbus_urb_t *urb) | 
| Submit an URB to an endpoint.  More... | |
| int | usbus_urb_cancel (usbus_t *usbus, usbus_endpoint_t *endpoint, usbus_urb_t *urb) | 
| Cancel and already queued URB.  More... | |
| void | usbus_endpoint_halt (usbus_endpoint_t *ep) | 
| Set the halt condition on an endpoint.  More... | |
| void | usbus_endpoint_clear_halt (usbus_endpoint_t *ep) | 
| Clear the halt condition on an endpoint.  More... | |
| static void | usbus_enable_endpoint (usbus_endpoint_t *ep) | 
| Enable an endpoint.  More... | |
| static void | usbus_disable_endpoint (usbus_endpoint_t *ep) | 
| Disable an endpoint.  More... | |
| static void | usbus_handler_set_flag (usbus_handler_t *handler, uint32_t flag) | 
| enable a specific handler flag  More... | |
| static void | usbus_handler_remove_flag (usbus_handler_t *handler, uint32_t flag) | 
| disable a specific handler flag  More... | |
| static bool | usbus_handler_isset_flag (usbus_handler_t *handler, uint32_t flag) | 
| check if a specific handler flag is set  More... | |
| static void | usbus_urb_set_flag (usbus_urb_t *urb, uint32_t flag) | 
| enable an URB flag  More... | |
| static void | usbus_urb_remove_flag (usbus_urb_t *urb, uint32_t flag) | 
| disable an URB flag  More... | |
| static bool | usbus_urb_isset_flag (usbus_urb_t *urb, uint32_t flag) | 
| check if an URB flag is set  More... | |
USBUS thread flags | |
Thread flags used by the USBUS thread. THREAD_FLAG_EVENT is also used, but defined elsewhere  | |
| #define | USBUS_THREAD_FLAG_USBDEV (0x02) | 
| usbdev esr needs handling  | |
| #define | USBUS_THREAD_FLAG_USBDEV_EP (0x04) | 
| One or more endpoints requires servicing.  | |
USBUS handler subscription flags | |
| #define | USBUS_HANDLER_FLAG_RESET (0x0001) | 
| Report reset event.  | |
| #define | USBUS_HANDLER_FLAG_SOF (0x0002) | 
| Report SOF events.  | |
| #define | USBUS_HANDLER_FLAG_SUSPEND (0x0004) | 
| Report suspend events.  | |
| #define | USBUS_HANDLER_FLAG_RESUME (0x0008) | 
| Report resume from suspend.  | |
| #define | USBUS_HANDLER_FLAG_TR_STALL (0x0020) | 
| Report transfer stall complete.  | |
USBUS URB flags | |
| #define | USBUS_URB_FLAG_AUTO_ZLP (0x0001) | 
| End the URB with a zero length packet if the URB is a full number of USB transfers in length.  | |
| #define | USBUS_URB_FLAG_NEEDS_ZLP (0x1000) | 
| URB needs a zero length packet and it is requested.  | |
| #define | USBUS_URB_FLAG_CANCELLED (0x2000) | 
| URB must be cancelled after the next finished xmit.  | |