update porting template

This commit is contained in:
sakumisu
2022-02-20 21:03:19 +08:00
parent c87abd5650
commit e5182271ae
2 changed files with 165 additions and 0 deletions

View File

@@ -1,5 +1,9 @@
#include "usbd_core.h"
#ifndef USBD_IRQHandler
#define USBD_IRQHandler USB_FS_Handler //use actual usb irq name instead
#endif
#ifndef USB_NUM_BIDIR_ENDPOINTS
#define USB_NUM_BIDIR_ENDPOINTS 5
#endif
@@ -34,6 +38,7 @@ int usb_dc_init(void)
{
memset(&usb_dc_cfg, 0, sizeof(struct usb_dc_config_priv));
usb_dc_low_level_init();
return 0;
}
@@ -59,18 +64,22 @@ int usbd_ep_open(const struct usbd_endpoint_cfg *ep_cfg)
}
return 0;
}
int usbd_ep_close(const uint8_t ep)
{
return 0;
}
int usbd_ep_set_stall(const uint8_t ep)
{
return 0;
}
int usbd_ep_clear_stall(const uint8_t ep)
{
return 0;
}
int usbd_ep_is_stalled(const uint8_t ep, uint8_t *stalled)
{
return 0;

156
port/template/usb_hc.c Normal file
View File

@@ -0,0 +1,156 @@
#include "usbh_core.h"
#ifndef USBH_IRQHandler
#define USBH_IRQHandler OTG_FS_IRQHandler
#endif
struct usb_xxx_priv {
volatile bool connected; /* Connected to device */
volatile bool pscwait; /* True: Thread is waiting for a port event */
usb_osal_sem_t exclsem; /* Support mutually exclusive access */
} g_usbhost;
__WEAK void usb_hc_low_level_init(void)
{
}
int usb_hc_init(void)
{
memset(&g_usbhost, 0, sizeof(struct usb_xxx_priv));
usb_hc_low_level_init();
return 0;
}
int usbh_reset_port(const uint8_t port)
{
return 0;
}
uint8_t usbh_get_port_speed(const uint8_t port)
{
return USB_SPEED_FULL;
}
int usbh_ep0_reconfigure(usbh_epinfo_t ep, uint8_t dev_addr, uint8_t ep_mps, uint8_t speed)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usbh_ep_alloc(usbh_epinfo_t *ep, const struct usbh_endpoint_cfg *ep_cfg)
{
int ret;
struct usbh_hubport *hport;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
hport = ep_cfg->hport;
if (ep_cfg->ep_type == USB_ENDPOINT_TYPE_CONTROL) {
} else {
}
usb_osal_mutex_give(g_usbhost.exclsem);
return 0;
}
int usbh_ep_free(usbh_epinfo_t ep)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return 0;
}
int usbh_control_transfer(usbh_epinfo_t ep, struct usb_setup_packet *setup, uint8_t *buffer)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usbh_ep_bulk_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usbh_ep_intr_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usbh_ep_bulk_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen, usbh_asynch_callback_t callback, void *arg)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usbh_ep_intr_async_transfer(usbh_epinfo_t ep, uint8_t *buffer, uint32_t buflen, usbh_asynch_callback_t callback, void *arg)
{
int ret;
ret = usb_osal_mutex_take(g_usbhost.exclsem);
if (ret < 0) {
return ret;
}
usb_osal_mutex_give(g_usbhost.exclsem);
return ret;
}
int usb_ep_cancel(usbh_epinfo_t ep)
{
return 0;
}
void USBH_IRQHandler(void)
{
}