Open FFBoard
Open source force feedback firmware
Hub (Host only)

Classes

struct  hub_status_response_t
 
struct  hub_port_status_response_t
 

Enumerations

enum  {
  HUB_REQUEST_GET_STATUS = 0 , HUB_REQUEST_CLEAR_FEATURE = 1 , HUB_REQUEST_SET_FEATURE = 3 , HUB_REQUEST_GET_DESCRIPTOR = 6 ,
  HUB_REQUEST_SET_DESCRIPTOR = 7 , HUB_REQUEST_CLEAR_TT_BUFFER = 8 , HUB_REQUEST_RESET_TT = 9 , HUB_REQUEST_GET_TT_STATE = 10 ,
  HUB_REQUEST_STOP_TT = 11
}
 
enum  { HUB_FEATURE_HUB_LOCAL_POWER_CHANGE = 0 , HUB_FEATURE_HUB_OVER_CURRENT_CHANGE }
 
enum  {
  HUB_FEATURE_PORT_CONNECTION = 0 , HUB_FEATURE_PORT_ENABLE = 1 , HUB_FEATURE_PORT_SUSPEND = 2 , HUB_FEATURE_PORT_OVER_CURRENT = 3 ,
  HUB_FEATURE_PORT_RESET = 4 , HUB_FEATURE_PORT_POWER = 8 , HUB_FEATURE_PORT_LOW_SPEED = 9 , HUB_FEATURE_PORT_CONNECTION_CHANGE = 16 ,
  HUB_FEATURE_PORT_ENABLE_CHANGE = 17 , HUB_FEATURE_PORT_SUSPEND_CHANGE = 18 , HUB_FEATURE_PORT_OVER_CURRENT_CHANGE = 19 , HUB_FEATURE_PORT_RESET_CHANGE = 20 ,
  HUB_FEATURE_PORT_TEST = 21 , HUB_FEATURE_PORT_INDICATOR = 22
}
 

Functions

 TU_VERIFY_STATIC (sizeof(descriptor_hub_desc_t)==9, "size is not correct")
 
 TU_VERIFY_STATIC (sizeof(hub_status_response_t)==4, "size is not correct")
 
 TU_VERIFY_STATIC (sizeof(hub_port_status_response_t)==4, "size is not correct")
 
bool hub_port_clear_feature (uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_xfer_cb_t complete_cb, uintptr_t user_data)
 
bool hub_port_set_feature (uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_xfer_cb_t complete_cb, uintptr_t user_data)
 
bool hub_port_get_status (uint8_t hub_addr, uint8_t hub_port, void *resp, tuh_xfer_cb_t complete_cb, uintptr_t user_data)
 
bool hub_edpt_status_xfer (uint8_t dev_addr)
 
static TU_ATTR_ALWAYS_INLINE bool hub_port_reset (uint8_t hub_addr, uint8_t hub_port, tuh_xfer_cb_t complete_cb, uintptr_t user_data)
 
static TU_ATTR_ALWAYS_INLINE bool hub_port_clear_reset_change (uint8_t hub_addr, uint8_t hub_port, tuh_xfer_cb_t complete_cb, uintptr_t user_data)
 
bool hub_init (void)
 
bool hub_deinit (void)
 
bool hub_open (uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t max_len)
 
bool hub_set_config (uint8_t dev_addr, uint8_t itf_num)
 
bool hub_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes)
 
void hub_close (uint8_t dev_addr)
 

Variables

 C
 

Detailed Description

Like most PC's OS, Hub support is completely hidden from Application. In fact, application cannot determine whether a device is mounted directly via roothub or via a hub's port. All Hub-related procedures are performed and managed by tinyusb stack. Unless you are trying to develop the stack itself, there are nothing else can be used by Application.

Note
Due to my laziness, only 1-level of Hub is supported. In other way, the stack cannot mount a hub via another hub.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
HUB_REQUEST_GET_STATUS 
HUB_REQUEST_CLEAR_FEATURE 
HUB_REQUEST_SET_FEATURE 
HUB_REQUEST_GET_DESCRIPTOR 
HUB_REQUEST_SET_DESCRIPTOR 
HUB_REQUEST_CLEAR_TT_BUFFER 
HUB_REQUEST_RESET_TT 
HUB_REQUEST_GET_TT_STATE 
HUB_REQUEST_STOP_TT 

Definition at line 96 of file hub.h.

◆ anonymous enum

anonymous enum
Enumerator
HUB_FEATURE_HUB_LOCAL_POWER_CHANGE 
HUB_FEATURE_HUB_OVER_CURRENT_CHANGE 

Definition at line 110 of file hub.h.

◆ anonymous enum

anonymous enum
Enumerator
HUB_FEATURE_PORT_CONNECTION 
HUB_FEATURE_PORT_ENABLE 
HUB_FEATURE_PORT_SUSPEND 
HUB_FEATURE_PORT_OVER_CURRENT 
HUB_FEATURE_PORT_RESET 
HUB_FEATURE_PORT_POWER 
HUB_FEATURE_PORT_LOW_SPEED 
HUB_FEATURE_PORT_CONNECTION_CHANGE 
HUB_FEATURE_PORT_ENABLE_CHANGE 
HUB_FEATURE_PORT_SUSPEND_CHANGE 
HUB_FEATURE_PORT_OVER_CURRENT_CHANGE 
HUB_FEATURE_PORT_RESET_CHANGE 
HUB_FEATURE_PORT_TEST 
HUB_FEATURE_PORT_INDICATOR 

Definition at line 115 of file hub.h.

Function Documentation

◆ hub_close()

void hub_close ( uint8_t  dev_addr)

Definition at line 224 of file hub.c.

◆ hub_deinit()

bool hub_deinit ( void  )

Definition at line 190 of file hub.c.

◆ hub_edpt_status_xfer()

bool hub_edpt_status_xfer ( uint8_t  dev_addr)

Definition at line 235 of file hub.c.

◆ hub_init()

bool hub_init ( void  )

Definition at line 185 of file hub.c.

◆ hub_open()

bool hub_open ( uint8_t  rhport,
uint8_t  dev_addr,
tusb_desc_interface_t const *  itf_desc,
uint16_t  max_len 
)

Definition at line 194 of file hub.c.

◆ hub_port_clear_feature()

bool hub_port_clear_feature ( uint8_t  hub_addr,
uint8_t  hub_port,
uint8_t  feature,
tuh_xfer_cb_t  complete_cb,
uintptr_t  user_data 
)

Definition at line 86 of file hub.c.

◆ hub_port_clear_reset_change()

static TU_ATTR_ALWAYS_INLINE bool hub_port_clear_reset_change ( uint8_t  hub_addr,
uint8_t  hub_port,
tuh_xfer_cb_t  complete_cb,
uintptr_t  user_data 
)
inlinestatic

Definition at line 197 of file hub.h.

◆ hub_port_get_status()

bool hub_port_get_status ( uint8_t  hub_addr,
uint8_t  hub_port,
void *  resp,
tuh_xfer_cb_t  complete_cb,
uintptr_t  user_data 
)

Definition at line 150 of file hub.c.

◆ hub_port_reset()

static TU_ATTR_ALWAYS_INLINE bool hub_port_reset ( uint8_t  hub_addr,
uint8_t  hub_port,
tuh_xfer_cb_t  complete_cb,
uintptr_t  user_data 
)
inlinestatic

Definition at line 191 of file hub.h.

◆ hub_port_set_feature()

bool hub_port_set_feature ( uint8_t  hub_addr,
uint8_t  hub_port,
uint8_t  feature,
tuh_xfer_cb_t  complete_cb,
uintptr_t  user_data 
)

Definition at line 118 of file hub.c.

◆ hub_set_config()

bool hub_set_config ( uint8_t  dev_addr,
uint8_t  itf_num 
)

Definition at line 249 of file hub.c.

◆ hub_xfer_cb()

bool hub_xfer_cb ( uint8_t  dev_addr,
uint8_t  ep_addr,
xfer_result_t  event,
uint32_t  xferred_bytes 
)

Definition at line 334 of file hub.c.

◆ TU_VERIFY_STATIC() [1/3]

TU_VERIFY_STATIC ( sizeof(descriptor_hub_desc_t)  = =9,
"size is not correct"   
)

◆ TU_VERIFY_STATIC() [2/3]

TU_VERIFY_STATIC ( sizeof(hub_port_status_response_t = =4,
"size is not correct"   
)

◆ TU_VERIFY_STATIC() [3/3]

TU_VERIFY_STATIC ( sizeof(hub_status_response_t = =4,
"size is not correct"   
)

Variable Documentation

◆ C

C
extern