summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-06-10 16:48:20 +0700
committerhathach <[email protected]>2021-06-10 16:48:20 +0700
commit13cb0160421a6a66429e99ed103afba4f1c345ce (patch)
treee5f38f2002ef690af1b45da84d90b526c495ebaf /src
parent3c4ab6bd8adaa20d1fe0c417761d2810456dbcbd (diff)
add usbh_classdriver.h
Diffstat (limited to 'src')
-rw-r--r--src/class/cdc/cdc_host.c2
-rw-r--r--src/class/hid/hid_host.c2
-rw-r--r--src/class/msc/msc_host.c2
-rw-r--r--src/device/usbd_pvt.h2
-rw-r--r--src/host/hub.c1
-rw-r--r--src/host/usbh.c7
-rw-r--r--src/host/usbh.h43
-rw-r--r--src/host/usbh_classdriver.h76
-rw-r--r--src/host/usbh_hcd.h6
9 files changed, 89 insertions, 52 deletions
diff --git a/src/class/cdc/cdc_host.c b/src/class/cdc/cdc_host.c
index facf86d56..dbe5341e9 100644
--- a/src/class/cdc/cdc_host.c
+++ b/src/class/cdc/cdc_host.c
@@ -29,6 +29,8 @@
#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_CDC)
#include "host/usbh.h"
+#include "host/usbh_classdriver.h"
+
#include "cdc_host.h"
//--------------------------------------------------------------------+
diff --git a/src/class/hid/hid_host.c b/src/class/hid/hid_host.c
index 83f3f3039..ec50f55f9 100644
--- a/src/class/hid/hid_host.c
+++ b/src/class/hid/hid_host.c
@@ -29,6 +29,8 @@
#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_HID)
#include "host/usbh.h"
+#include "host/usbh_classdriver.h"
+
#include "hid_host.h"
//--------------------------------------------------------------------+
diff --git a/src/class/msc/msc_host.c b/src/class/msc/msc_host.c
index 205f0fd2d..176403e86 100644
--- a/src/class/msc/msc_host.c
+++ b/src/class/msc/msc_host.c
@@ -29,6 +29,8 @@
#if TUSB_OPT_HOST_ENABLED & CFG_TUH_MSC
#include "host/usbh.h"
+#include "host/usbh_classdriver.h"
+
#include "msc_host.h"
//--------------------------------------------------------------------+
diff --git a/src/device/usbd_pvt.h b/src/device/usbd_pvt.h
index 65fdadf51..b8d34d7b6 100644
--- a/src/device/usbd_pvt.h
+++ b/src/device/usbd_pvt.h
@@ -34,7 +34,7 @@
#endif
//--------------------------------------------------------------------+
-// Class Drivers
+// Class Driver API
//--------------------------------------------------------------------+
typedef struct
diff --git a/src/host/hub.c b/src/host/hub.c
index f921027c7..b2761184d 100644
--- a/src/host/hub.c
+++ b/src/host/hub.c
@@ -29,6 +29,7 @@
#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_HUB)
#include "usbh.h"
+#include "usbh_classdriver.h"
#include "hub.h"
//--------------------------------------------------------------------+
diff --git a/src/host/usbh.c b/src/host/usbh.c
index ca0653409..ff66d5afd 100644
--- a/src/host/usbh.c
+++ b/src/host/usbh.c
@@ -24,7 +24,7 @@
* This file is part of the TinyUSB stack.
*/
-#include "common/tusb_common.h"
+#include "tusb_option.h"
#if TUSB_OPT_HOST_ENABLED
@@ -32,10 +32,9 @@
#define CFG_TUH_TASK_QUEUE_SZ 16
#endif
-//--------------------------------------------------------------------+
-// INCLUDE
-//--------------------------------------------------------------------+
#include "tusb.h"
+#include "host/usbh.h"
+#include "host/usbh_classdriver.h"
#include "hub.h"
#include "usbh_hcd.h"
diff --git a/src/host/usbh.h b/src/host/usbh.h
index a9790b484..edc9e0808 100644
--- a/src/host/usbh.h
+++ b/src/host/usbh.h
@@ -40,27 +40,6 @@
//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF
//--------------------------------------------------------------------+
-typedef enum tusb_interface_status_{
- TUSB_INTERFACE_STATUS_READY = 0,
- TUSB_INTERFACE_STATUS_BUSY,
- TUSB_INTERFACE_STATUS_COMPLETE,
- TUSB_INTERFACE_STATUS_ERROR,
- TUSB_INTERFACE_STATUS_INVALID_PARA
-} tusb_interface_status_t;
-
-typedef struct {
- #if CFG_TUSB_DEBUG >= 2
- char const* name;
- #endif
-
- uint8_t class_code;
-
- void (* const init )(void);
- bool (* const open )(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const * itf_desc, uint16_t* outlen);
- bool (* const set_config )(uint8_t dev_addr, uint8_t itf_num);
- bool (* const xfer_cb )(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
- void (* const close )(uint8_t dev_addr);
-} usbh_class_driver_t;
typedef bool (*tuh_control_complete_cb_t)(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result);
@@ -101,30 +80,12 @@ bool tuh_control_xfer (uint8_t dev_addr, tusb_control_request_t const* request,
//--------------------------------------------------------------------+
//TU_ATTR_WEAK uint8_t tuh_attach_cb (tusb_desc_device_t const *desc_device);
-/** Callback invoked when device is mounted (configured) */
+// Invoked when device is mounted (configured)
TU_ATTR_WEAK void tuh_mount_cb (uint8_t dev_addr);
-/** Callback invoked when device is unmounted (bus reset/unplugged) */
+/// Invoked when device is unmounted (bus reset/unplugged)
TU_ATTR_WEAK void tuh_umount_cb(uint8_t dev_addr);
-//--------------------------------------------------------------------+
-// CLASS-USBH & INTERNAL API
-// TODO move to usbh_pvt.h
-//--------------------------------------------------------------------+
-
-bool usbh_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc);
-bool usbh_edpt_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes);
-
-// Claim an endpoint before submitting a transfer.
-// If caller does not make any transfer, it must release endpoint for others.
-bool usbh_edpt_claim(uint8_t dev_addr, uint8_t ep_addr);
-
-void usbh_driver_set_config_complete(uint8_t dev_addr, uint8_t itf_num);
-
-uint8_t usbh_get_rhport(uint8_t dev_addr);
-
-uint8_t* usbh_get_enum_buf(void);
-
#ifdef __cplusplus
}
#endif
diff --git a/src/host/usbh_classdriver.h b/src/host/usbh_classdriver.h
new file mode 100644
index 000000000..2b1523855
--- /dev/null
+++ b/src/host/usbh_classdriver.h
@@ -0,0 +1,76 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2021, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+#ifndef _TUSB_USBH_CLASSDRIVER_H_
+#define _TUSB_USBH_CLASSDRIVER_H_
+
+#include "osal/osal.h"
+#include "common/tusb_fifo.h"
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+//--------------------------------------------------------------------+
+// Class Driver API
+//--------------------------------------------------------------------+
+
+typedef struct {
+ #if CFG_TUSB_DEBUG >= 2
+ char const* name;
+ #endif
+
+ uint8_t class_code;
+
+ void (* const init )(void);
+ bool (* const open )(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const * itf_desc, uint16_t* outlen);
+ bool (* const set_config )(uint8_t dev_addr, uint8_t itf_num);
+ bool (* const xfer_cb )(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes);
+ void (* const close )(uint8_t dev_addr);
+} usbh_class_driver_t;
+
+//--------------------------------------------------------------------+
+// USBH Endpoint API
+//--------------------------------------------------------------------+
+
+bool usbh_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc);
+bool usbh_edpt_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes);
+
+// Claim an endpoint before submitting a transfer.
+// If caller does not make any transfer, it must release endpoint for others.
+bool usbh_edpt_claim(uint8_t dev_addr, uint8_t ep_addr);
+
+void usbh_driver_set_config_complete(uint8_t dev_addr, uint8_t itf_num);
+
+uint8_t usbh_get_rhport(uint8_t dev_addr);
+
+uint8_t* usbh_get_enum_buf(void);
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif
diff --git a/src/host/usbh_hcd.h b/src/host/usbh_hcd.h
index abc7fd250..b3856d6b7 100644
--- a/src/host/usbh_hcd.h
+++ b/src/host/usbh_hcd.h
@@ -97,12 +97,6 @@ typedef struct {
extern usbh_device_t _usbh_devices[CFG_TUSB_HOST_DEVICE_MAX+1]; // including zero-address
-//--------------------------------------------------------------------+
-// callback from HCD ISR
-//--------------------------------------------------------------------+
-
-
-
#ifdef __cplusplus
}
#endif