|
|
@@ -24,14 +24,10 @@
|
|
|
* This file is part of the TinyUSB stack.
|
|
|
*/
|
|
|
|
|
|
-/** \ingroup group_usbh
|
|
|
- * \defgroup Group_HCD Host Controller Driver (HCD)
|
|
|
- * @{ */
|
|
|
-
|
|
|
#ifndef _TUSB_HCD_H_
|
|
|
#define _TUSB_HCD_H_
|
|
|
|
|
|
-#include <common/tusb_common.h>
|
|
|
+#include "common/tusb_common.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C" {
|
|
|
@@ -95,27 +91,46 @@ enum {
|
|
|
#endif
|
|
|
|
|
|
//--------------------------------------------------------------------+
|
|
|
-// Controller & Port API
|
|
|
+// Controller API
|
|
|
//--------------------------------------------------------------------+
|
|
|
+
|
|
|
+// Initialize controller to host mode
|
|
|
bool hcd_init(uint8_t rhport);
|
|
|
+
|
|
|
+// Interrupt Handler
|
|
|
void hcd_int_handler(uint8_t rhport);
|
|
|
+
|
|
|
+// Enable USB interrupt
|
|
|
void hcd_int_enable (uint8_t rhport);
|
|
|
+
|
|
|
+// Disable USB interrupt
|
|
|
void hcd_int_disable(uint8_t rhport);
|
|
|
|
|
|
// Get micro frame number (125 us)
|
|
|
uint32_t hcd_uframe_number(uint8_t rhport);
|
|
|
|
|
|
// 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 the current connect status of roothub port
|
|
|
-bool hcd_port_connect_status(uint8_t hostid);
|
|
|
-void hcd_port_reset(uint8_t hostid);
|
|
|
+//--------------------------------------------------------------------+
|
|
|
+// Port API
|
|
|
+//--------------------------------------------------------------------+
|
|
|
+
|
|
|
+// 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);
|
|
|
-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
|
|
|
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
|
|
|
//--------------------------------------------------------------------+
|
|
|
+
|
|
|
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);
|
|
|
|
|
|
@@ -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);
|
|
|
|
|
|
//--------------------------------------------------------------------+
|
|
|
-// PIPE API
|
|
|
+// PIPE API - TODO remove later
|
|
|
//--------------------------------------------------------------------+
|
|
|
// 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_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)
|
|
|
//--------------------------------------------------------------------+
|
|
|
@@ -163,5 +177,3 @@ extern void hcd_event_xfer_complete(uint8_t dev_addr, uint8_t ep_addr, uint32_t
|
|
|
#endif
|
|
|
|
|
|
#endif /* _TUSB_HCD_H_ */
|
|
|
-
|
|
|
-/// @}
|