102 lines
3.2 KiB
C
102 lines
3.2 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
|
* File Name : ch32v10x_usb_host.h
|
|
* Author : WCH
|
|
* Version : V1.0.0
|
|
* Date : 2020/04/30
|
|
* Description : This file contains all the functions prototypes for the USB
|
|
* Host firmware library.
|
|
*********************************************************************************
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
|
* Attention: This software (modified or not) and binary are used for
|
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
|
*******************************************************************************/
|
|
#ifndef __CH32V10x_USBHOST_H
|
|
#define __CH32V10x_USBHOST_H
|
|
|
|
#include "ch32v10x_usb.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define ERR_SUCCESS 0x00
|
|
#define ERR_USB_CONNECT 0x15
|
|
#define ERR_USB_DISCON 0x16
|
|
#define ERR_USB_BUF_OVER 0x17
|
|
#define ERR_USB_DISK_ERR 0x1F
|
|
#define ERR_USB_TRANSFER 0x20
|
|
#define ERR_USB_UNSUPPORT 0xFB
|
|
#define ERR_USB_UNKNOWN 0xFE
|
|
#define ERR_AOA_PROTOCOL 0x41
|
|
|
|
#define ROOT_DEV_DISCONNECT 0
|
|
#define ROOT_DEV_CONNECTED 1
|
|
#define ROOT_DEV_FAILED 2
|
|
#define ROOT_DEV_SUCCESS 3
|
|
#define DEV_TYPE_KEYBOARD (USB_DEV_CLASS_HID | 0x20)
|
|
#define DEV_TYPE_MOUSE (USB_DEV_CLASS_HID | 0x30)
|
|
#define DEF_AOA_DEVICE 0xF0
|
|
#define DEV_TYPE_UNKNOW 0xFF
|
|
|
|
#define HUB_MAX_PORTS 4
|
|
#define WAIT_USB_TOUT_200US 3000
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 DeviceStatus;
|
|
UINT8 DeviceAddress;
|
|
UINT8 DeviceSpeed;
|
|
UINT8 DeviceType;
|
|
UINT16 DeviceVID;
|
|
UINT16 DevicePID;
|
|
UINT8 GpVar[4];
|
|
UINT8 GpHUBPortNum;
|
|
} _RootHubDev;
|
|
|
|
extern _RootHubDev ThisUsbDev;
|
|
extern UINT8 UsbDevEndp0Size;
|
|
extern UINT8 FoundNewDev;
|
|
|
|
extern PUINT8 pHOST_RX_RAM_Addr;
|
|
extern PUINT8 pHOST_TX_RAM_Addr;
|
|
#define pSetupReq ((PUSB_SETUP_REQ)pHOST_TX_RAM_Addr)
|
|
|
|
extern const UINT8 SetupGetDevDescr[];
|
|
extern const UINT8 SetupGetCfgDescr[];
|
|
extern const UINT8 SetupSetUsbAddr[];
|
|
extern const UINT8 SetupSetUsbConfig[];
|
|
extern const UINT8 SetupSetUsbInterface[];
|
|
extern const UINT8 SetupClrEndpStall[];
|
|
|
|
#if 0
|
|
void DisableRootHubPort(void);
|
|
UINT8 AnalyzeRootHub(void);
|
|
void SetHostUsbAddr(UINT8 addr);
|
|
void SetUsbSpeed(UINT8 FullSpeed);
|
|
void ResetRootHubPort(void);
|
|
UINT8 EnableRootHubPort(void);
|
|
void SelectHubPort(UINT8 HubPortIndex);
|
|
UINT8 WaitUSB_Interrupt(void);
|
|
UINT8 USBHostTransact(UINT8 endp_pid, UINT8 tog, UINT32 timeout);
|
|
UINT8 HostCtrlTransfer(PUINT8 DataBuf, PUINT8 RetLen);
|
|
void CopySetupReqPkg(const UINT8 *pReqPkt);
|
|
UINT8 CtrlGetDeviceDescr(PUINT8 DataBuf);
|
|
UINT8 CtrlGetConfigDescr(PUINT8 DataBuf);
|
|
UINT8 CtrlSetUsbAddress(UINT8 addr);
|
|
UINT8 CtrlSetUsbConfig(UINT8 cfg);
|
|
UINT8 CtrlClearEndpStall(UINT8 endp);
|
|
UINT8 CtrlSetUsbIntercace(UINT8 cfg);
|
|
|
|
void USB_HostInit(void);
|
|
UINT8 InitRootDevice(PUINT8 DataBuf);
|
|
UINT8 HubGetPortStatus(UINT8 HubPortIndex);
|
|
UINT8 HubSetPortFeature(UINT8 HubPortIndex, UINT8 FeatureSelt);
|
|
UINT8 HubClearPortFeature(UINT8 HubPortIndex, UINT8 FeatureSelt);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __CH32V10x_USBHOST_H */
|