This commit is contained in:
hathach 2021-05-23 20:14:01 +07:00
parent 3654d96e07
commit 4f03332118
2 changed files with 28 additions and 22 deletions

View File

@ -24,10 +24,6 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
/** \ingroup group_usbd
* \defgroup group_dcd Device Controller Driver (DCD)
* @{ */
#ifndef _TUSB_DCD_H_ #ifndef _TUSB_DCD_H_
#define _TUSB_DCD_H_ #define _TUSB_DCD_H_
@ -168,5 +164,3 @@ extern void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t x
#endif #endif
#endif /* _TUSB_DCD_H_ */ #endif /* _TUSB_DCD_H_ */
/// @}

View File

@ -24,14 +24,10 @@
* This file is part of the TinyUSB stack. * This file is part of the TinyUSB stack.
*/ */
/** \ingroup group_usbh
* \defgroup Group_HCD Host Controller Driver (HCD)
* @{ */
#ifndef _TUSB_HCD_H_ #ifndef _TUSB_HCD_H_
#define _TUSB_HCD_H_ #define _TUSB_HCD_H_
#include <common/tusb_common.h> #include "common/tusb_common.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -95,27 +91,46 @@ enum {
#endif #endif
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Controller & Port API // Controller API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Initialize controller to host mode
bool hcd_init(uint8_t rhport); bool hcd_init(uint8_t rhport);
// Interrupt Handler
void hcd_int_handler(uint8_t rhport); void hcd_int_handler(uint8_t rhport);
// Enable USB interrupt
void hcd_int_enable (uint8_t rhport); void hcd_int_enable (uint8_t rhport);
// Disable USB interrupt
void hcd_int_disable(uint8_t rhport); void hcd_int_disable(uint8_t rhport);
// Get micro frame number (125 us) // Get micro frame number (125 us)
uint32_t hcd_uframe_number(uint8_t rhport); uint32_t hcd_uframe_number(uint8_t rhport);
// Get frame number (1ms) // Get frame number (1ms)
static inline uint32_t hcd_frame_number(uint8_t rhport) TU_ATTR_ALWAYS_INLINE static inline
uint32_t hcd_frame_number(uint8_t rhport)
{ {
return hcd_uframe_number(rhport) >> 3; return hcd_uframe_number(rhport) >> 3;
} }
/// return the current connect status of roothub port //--------------------------------------------------------------------+
bool hcd_port_connect_status(uint8_t hostid); // Port API
void hcd_port_reset(uint8_t hostid); //--------------------------------------------------------------------+
// Get the current connect status of roothub port
bool hcd_port_connect_status(uint8_t rhport);
// Reset USB bus on the port
void hcd_port_reset(uint8_t rhport);
// TODO implement later
void hcd_port_reset_end(uint8_t rhport); void hcd_port_reset_end(uint8_t rhport);
tusb_speed_t hcd_port_speed_get(uint8_t hostid);
// Get port link speed
tusb_speed_t hcd_port_speed_get(uint8_t rhport);
// HCD closes all opened endpoints belong to this device // HCD closes all opened endpoints belong to this device
void hcd_device_close(uint8_t rhport, uint8_t dev_addr); void hcd_device_close(uint8_t rhport, uint8_t dev_addr);
@ -123,6 +138,7 @@ void hcd_device_close(uint8_t rhport, uint8_t dev_addr);
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Endpoints API // Endpoints API
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
bool hcd_setup_send(uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet[8]); bool hcd_setup_send(uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet[8]);
bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc); bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc);
@ -134,14 +150,12 @@ bool hcd_edpt_clear_stall(uint8_t dev_addr, uint8_t ep_addr);
bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen); bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen);
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// PIPE API // PIPE API - TODO remove later
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// TODO control xfer should be used via usbh layer // TODO control xfer should be used via usbh layer
bool hcd_pipe_queue_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t buffer[], uint16_t total_bytes); // only queue, not transferring yet bool hcd_pipe_queue_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t buffer[], uint16_t total_bytes); // only queue, not transferring yet
bool hcd_pipe_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t buffer[], uint16_t total_bytes, bool int_on_complete); bool hcd_pipe_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t buffer[], uint16_t total_bytes, bool int_on_complete);
// tusb_error_t hcd_pipe_cancel();
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
// Event API (implemented by stack) // Event API (implemented by stack)
//--------------------------------------------------------------------+ //--------------------------------------------------------------------+
@ -163,5 +177,3 @@ extern void hcd_event_xfer_complete(uint8_t dev_addr, uint8_t ep_addr, uint32_t
#endif #endif
#endif /* _TUSB_HCD_H_ */ #endif /* _TUSB_HCD_H_ */
/// @}