Open FFBoard
Open source force feedback firmware
usbd.c File Reference

Go to the source code of this file.

Classes

struct  usbd_device_t
 
struct  usbd_device_t::TU_ATTR_PACKED
 

Enumerations

enum  { DRVID_INVALID = 0xFFu }
 
enum  { BUILTIN_DRIVER_COUNT = TU_ARRAY_SIZE(_usbd_driver) }
 
enum  { RHPORT_INVALID = 0xFFu }
 

Functions

TU_ATTR_WEAK void tud_event_hook_cb (uint8_t rhport, uint32_t eventid, bool in_isr)
 
TU_ATTR_WEAK void tud_sof_cb (uint32_t frame_count)
 
TU_ATTR_WEAK uint8_t const * tud_descriptor_bos_cb (void)
 
TU_ATTR_WEAK uint8_t const * tud_descriptor_device_qualifier_cb (void)
 
TU_ATTR_WEAK uint8_t const * tud_descriptor_other_speed_configuration_cb (uint8_t index)
 
TU_ATTR_WEAK void tud_mount_cb (void)
 
TU_ATTR_WEAK void tud_umount_cb (void)
 
TU_ATTR_WEAK void tud_suspend_cb (bool remote_wakeup_en)
 
TU_ATTR_WEAK void tud_resume_cb (void)
 
TU_ATTR_WEAK bool tud_vendor_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const *request)
 
TU_ATTR_WEAK bool dcd_deinit (uint8_t rhport)
 
TU_ATTR_WEAK void dcd_connect (uint8_t rhport)
 
TU_ATTR_WEAK void dcd_disconnect (uint8_t rhport)
 
static TU_ATTR_ALWAYS_INLINE usbd_class_driver_t const * get_driver (uint8_t drvid)
 
 OSAL_QUEUE_DEF (usbd_int_set, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t)
 
static TU_ATTR_ALWAYS_INLINE bool queue_event (dcd_event_t const *event, bool in_isr)
 
static bool process_control_request (uint8_t rhport, tusb_control_request_t const *p_request)
 
static bool process_set_config (uint8_t rhport, uint8_t cfg_num)
 
static bool process_get_descriptor (uint8_t rhport, tusb_control_request_t const *p_request)
 
static bool process_test_mode_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const *request)
 
void usbd_control_reset (void)
 
void usbd_control_set_request (tusb_control_request_t const *request)
 
void usbd_control_set_complete_callback (usbd_control_xfer_cb_t fp)
 
bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
 
void usbd_driver_print_control_complete_name (usbd_control_xfer_cb_t callback)
 
tusb_speed_t tud_speed_get (void)
 
bool tud_connected (void)
 
bool tud_mounted (void)
 
bool tud_suspended (void)
 
bool tud_remote_wakeup (void)
 
bool tud_disconnect (void)
 
bool tud_connect (void)
 
void tud_sof_cb_enable (bool en)
 
bool tud_inited (void)
 
bool tud_rhport_init (uint8_t rhport, const tusb_rhport_init_t *rh_init)
 
bool tud_deinit (uint8_t rhport)
 
static void configuration_reset (uint8_t rhport)
 
static void usbd_reset (uint8_t rhport)
 
bool tud_task_event_ready (void)
 
void tud_task_ext (uint32_t timeout_ms, bool in_isr)
 
static bool invoke_class_control (uint8_t rhport, usbd_class_driver_t const *driver, tusb_control_request_t const *request)
 
TU_ATTR_FAST_FUNC void dcd_event_handler (dcd_event_t const *event, bool in_isr)
 
void usbd_int_set (bool enabled)
 
bool usbd_open_edpt_pair (uint8_t rhport, uint8_t const *p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t *ep_out, uint8_t *ep_in)
 
void usbd_defer_func (osal_task_func_t func, void *param, bool in_isr)
 
bool usbd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const *desc_ep)
 
bool usbd_edpt_claim (uint8_t rhport, uint8_t ep_addr)
 
bool usbd_edpt_release (uint8_t rhport, uint8_t ep_addr)
 
bool usbd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
 
bool usbd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t *ff, uint16_t total_bytes)
 
bool usbd_edpt_busy (uint8_t rhport, uint8_t ep_addr)
 
void usbd_edpt_stall (uint8_t rhport, uint8_t ep_addr)
 
void usbd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr)
 
bool usbd_edpt_stalled (uint8_t rhport, uint8_t ep_addr)
 
void usbd_edpt_close (uint8_t rhport, uint8_t ep_addr)
 
void usbd_sof_enable (uint8_t rhport, sof_consumer_t consumer, bool en)
 
bool usbd_edpt_iso_alloc (uint8_t rhport, uint8_t ep_addr, uint16_t largest_packet_size)
 
bool usbd_edpt_iso_activate (uint8_t rhport, tusb_desc_endpoint_t const *desc_ep)
 

Variables

tu_static usbd_device_t _usbd_dev
 
static volatile uint8_t _usbd_queued_setup
 
tu_static usbd_class_driver_t const _usbd_driver []
 
tu_static usbd_class_driver_t const * _app_driver = NULL
 
tu_static uint8_t _app_driver_count = 0
 
tu_static uint8_t _usbd_rhport = RHPORT_INVALID
 
tu_static osal_queue_t _usbd_q
 
tu_static osal_mutex_def_t _ubsd_mutexdef
 
tu_static osal_mutex_t _usbd_mutex
 
tu_static char const *const _usbd_event_str [DCD_EVENT_COUNT]
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DRVID_INVALID 

Definition at line 109 of file usbd.c.

◆ anonymous enum

anonymous enum
Enumerator
BUILTIN_DRIVER_COUNT 

Definition at line 303 of file usbd.c.

◆ anonymous enum

anonymous enum
Enumerator
RHPORT_INVALID 

Definition at line 329 of file usbd.c.

Function Documentation

◆ configuration_reset()

static void configuration_reset ( uint8_t  rhport)
static

Definition at line 535 of file usbd.c.

◆ dcd_connect()

TU_ATTR_WEAK void dcd_connect ( uint8_t  rhport)

Definition at line 96 of file usbd.c.

◆ dcd_deinit()

TU_ATTR_WEAK bool dcd_deinit ( uint8_t  rhport)

Definition at line 91 of file usbd.c.

◆ dcd_disconnect()

TU_ATTR_WEAK void dcd_disconnect ( uint8_t  rhport)

Definition at line 100 of file usbd.c.

◆ dcd_event_handler()

TU_ATTR_FAST_FUNC void dcd_event_handler ( dcd_event_t const *  event,
bool  in_isr 
)

Definition at line 1153 of file usbd.c.

◆ get_driver()

static TU_ATTR_ALWAYS_INLINE usbd_class_driver_t const * get_driver ( uint8_t  drvid)
inlinestatic

Definition at line 313 of file usbd.c.

◆ invoke_class_control()

static bool invoke_class_control ( uint8_t  rhport,
usbd_class_driver_t const *  driver,
tusb_control_request_t const *  request 
)
static

Definition at line 703 of file usbd.c.

◆ OSAL_QUEUE_DEF()

OSAL_QUEUE_DEF ( usbd_int_set  ,
_usbd_qdef  ,
CFG_TUD_TASK_QUEUE_SZ  ,
dcd_event_t   
)

◆ process_control_request()

static bool process_control_request ( uint8_t  rhport,
tusb_control_request_t const *  p_request 
)
static

Definition at line 711 of file usbd.c.

◆ process_get_descriptor()

static bool process_get_descriptor ( uint8_t  rhport,
tusb_control_request_t const *  p_request 
)
static

Definition at line 1060 of file usbd.c.

◆ process_set_config()

static bool process_set_config ( uint8_t  rhport,
uint8_t  cfg_num 
)
static

Definition at line 967 of file usbd.c.

◆ process_test_mode_cb()

static bool process_test_mode_cb ( uint8_t  rhport,
uint8_t  stage,
tusb_control_request_t const *  request 
)
static

Definition at line 359 of file usbd.c.

◆ queue_event()

static TU_ATTR_ALWAYS_INLINE bool queue_event ( dcd_event_t const *  event,
bool  in_isr 
)
inlinestatic

Definition at line 345 of file usbd.c.

◆ tud_connect()

bool tud_connect ( void  )

Definition at line 435 of file usbd.c.

◆ tud_connected()

bool tud_connected ( void  )

Definition at line 411 of file usbd.c.

◆ tud_deinit()

bool tud_deinit ( uint8_t  rhport)

Definition at line 499 of file usbd.c.

◆ tud_descriptor_bos_cb()

TU_ATTR_WEAK uint8_t const * tud_descriptor_bos_cb ( void  )

Definition at line 58 of file usbd.c.

◆ tud_descriptor_device_qualifier_cb()

TU_ATTR_WEAK uint8_t const * tud_descriptor_device_qualifier_cb ( void  )

Definition at line 62 of file usbd.c.

◆ tud_descriptor_other_speed_configuration_cb()

TU_ATTR_WEAK uint8_t const * tud_descriptor_other_speed_configuration_cb ( uint8_t  index)

Definition at line 66 of file usbd.c.

◆ tud_disconnect()

bool tud_disconnect ( void  )

Definition at line 430 of file usbd.c.

◆ tud_event_hook_cb()

TU_ATTR_WEAK void tud_event_hook_cb ( uint8_t  rhport,
uint32_t  eventid,
bool  in_isr 
)

Definition at line 48 of file usbd.c.

◆ tud_inited()

bool tud_inited ( void  )

Definition at line 447 of file usbd.c.

◆ tud_mount_cb()

TU_ATTR_WEAK void tud_mount_cb ( void  )

Called on usb mount

Definition at line 71 of file usbd.c.

◆ tud_mounted()

bool tud_mounted ( void  )

Definition at line 415 of file usbd.c.

◆ tud_remote_wakeup()

bool tud_remote_wakeup ( void  )

Definition at line 423 of file usbd.c.

◆ tud_resume_cb()

TU_ATTR_WEAK void tud_resume_cb ( void  )

Definition at line 81 of file usbd.c.

◆ tud_rhport_init()

bool tud_rhport_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 451 of file usbd.c.

◆ tud_sof_cb()

TU_ATTR_WEAK void tud_sof_cb ( uint32_t  frame_count)

Definition at line 54 of file usbd.c.

◆ tud_sof_cb_enable()

void tud_sof_cb_enable ( bool  en)

Definition at line 440 of file usbd.c.

◆ tud_speed_get()

tusb_speed_t tud_speed_get ( void  )

Definition at line 407 of file usbd.c.

◆ tud_suspend_cb()

TU_ATTR_WEAK void tud_suspend_cb ( bool  remote_wakeup_en)

Definition at line 77 of file usbd.c.

◆ tud_suspended()

bool tud_suspended ( void  )

Definition at line 419 of file usbd.c.

◆ tud_task_event_ready()

bool tud_task_event_ready ( void  )

Definition at line 552 of file usbd.c.

◆ tud_task_ext()

void tud_task_ext ( uint32_t  timeout_ms,
bool  in_isr 
)

Definition at line 572 of file usbd.c.

◆ tud_umount_cb()

TU_ATTR_WEAK void tud_umount_cb ( void  )

Definition at line 74 of file usbd.c.

◆ tud_vendor_control_xfer_cb()

TU_ATTR_WEAK bool tud_vendor_control_xfer_cb ( uint8_t  rhport,
uint8_t  stage,
tusb_control_request_t const *  request 
)

Definition at line 84 of file usbd.c.

◆ usbd_control_reset()

void usbd_control_reset ( void  )

Definition at line 142 of file usbd_control.c.

◆ usbd_control_set_complete_callback()

void usbd_control_set_complete_callback ( usbd_control_xfer_cb_t  fp)

Definition at line 147 of file usbd_control.c.

◆ usbd_control_set_request()

void usbd_control_set_request ( tusb_control_request_t const *  request)

Definition at line 152 of file usbd_control.c.

◆ usbd_control_xfer_cb()

bool usbd_control_xfer_cb ( uint8_t  rhport,
uint8_t  ep_addr,
xfer_result_t  event,
uint32_t  xferred_bytes 
)

Definition at line 162 of file usbd_control.c.

◆ usbd_defer_func()

void usbd_defer_func ( osal_task_func_t  func,
void *  param,
bool  in_isr 
)

Definition at line 1262 of file usbd.c.

◆ usbd_driver_print_control_complete_name()

void usbd_driver_print_control_complete_name ( usbd_control_xfer_cb_t  callback)

Definition at line 392 of file usbd.c.

◆ usbd_edpt_busy()

bool usbd_edpt_busy ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1376 of file usbd.c.

◆ usbd_edpt_claim()

bool usbd_edpt_claim ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1286 of file usbd.c.

◆ usbd_edpt_clear_stall()

void usbd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1398 of file usbd.c.

◆ usbd_edpt_close()

void usbd_edpt_close ( uint8_t  rhport,
uint8_t  ep_addr 
)

usbd_edpt_close will disable an endpoint. In progress transfers on this EP may be delivered after this call.

Definition at line 1424 of file usbd.c.

◆ usbd_edpt_iso_activate()

bool usbd_edpt_iso_activate ( uint8_t  rhport,
tusb_desc_endpoint_t const *  desc_ep 
)

Definition at line 1474 of file usbd.c.

◆ usbd_edpt_iso_alloc()

bool usbd_edpt_iso_alloc ( uint8_t  rhport,
uint8_t  ep_addr,
uint16_t  largest_packet_size 
)

Definition at line 1462 of file usbd.c.

◆ usbd_edpt_open()

bool usbd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  desc_ep 
)

Definition at line 1277 of file usbd.c.

◆ usbd_edpt_release()

bool usbd_edpt_release ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1299 of file usbd.c.

◆ usbd_edpt_stall()

void usbd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1385 of file usbd.c.

◆ usbd_edpt_stalled()

bool usbd_edpt_stalled ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1411 of file usbd.c.

◆ usbd_edpt_xfer()

bool usbd_edpt_xfer ( uint8_t  rhport,
uint8_t  ep_addr,
uint8_t *  buffer,
uint16_t  total_bytes 
)

Definition at line 1309 of file usbd.c.

◆ usbd_edpt_xfer_fifo()

bool usbd_edpt_xfer_fifo ( uint8_t  rhport,
uint8_t  ep_addr,
tu_fifo_t ff,
uint16_t  total_bytes 
)

Definition at line 1348 of file usbd.c.

◆ usbd_int_set()

void usbd_int_set ( bool  enabled)

Definition at line 1226 of file usbd.c.

◆ usbd_open_edpt_pair()

bool usbd_open_edpt_pair ( uint8_t  rhport,
uint8_t const *  p_desc,
uint8_t  ep_count,
uint8_t  xfer_type,
uint8_t *  ep_out,
uint8_t *  ep_in 
)

Definition at line 1238 of file usbd.c.

◆ usbd_reset()

static void usbd_reset ( uint8_t  rhport)
static

Definition at line 547 of file usbd.c.

◆ usbd_sof_enable()

void usbd_sof_enable ( uint8_t  rhport,
sof_consumer_t  consumer,
bool  en 
)

Definition at line 1445 of file usbd.c.

Variable Documentation

◆ _app_driver

tu_static usbd_class_driver_t const* _app_driver = NULL

Definition at line 306 of file usbd.c.

◆ _app_driver_count

tu_static uint8_t _app_driver_count = 0

Definition at line 307 of file usbd.c.

◆ _ubsd_mutexdef

tu_static osal_mutex_def_t _ubsd_mutexdef

Definition at line 339 of file usbd.c.

◆ _usbd_dev

tu_static usbd_device_t _usbd_dev

Definition at line 132 of file usbd.c.

◆ _usbd_driver

tu_static usbd_class_driver_t const _usbd_driver[]

Definition at line 145 of file usbd.c.

◆ _usbd_event_str

tu_static char const* const _usbd_event_str[DCD_EVENT_COUNT]
Initial value:
= {
"Invalid",
"Bus Reset",
"Unplugged",
"SOF",
"Suspend",
"Resume",
"Setup Received",
"Xfer Complete",
"Func Call"
}

Definition at line 379 of file usbd.c.

◆ _usbd_mutex

tu_static osal_mutex_t _usbd_mutex

Definition at line 340 of file usbd.c.

◆ _usbd_q

tu_static osal_queue_t _usbd_q

Definition at line 335 of file usbd.c.

◆ _usbd_queued_setup

volatile uint8_t _usbd_queued_setup
static

Definition at line 133 of file usbd.c.

◆ _usbd_rhport

tu_static uint8_t _usbd_rhport = RHPORT_INVALID

Definition at line 330 of file usbd.c.