XenevaOS
Loading...
Searching...
No Matches
usbfunction.h
Go to the documentation of this file.
1//
2// usbfunction.h
3//
4// USPi - An USB driver for Raspberry Pi written in C
5// Copyright (C) 2018 R. Stange <rsta2@o2online.de>
6//
7// This program is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// This program is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with this program. If not, see <http://www.gnu.org/licenses/>.
19//
20#ifndef _uspi_usbfunction_h
21#define _uspi_usbfunction_h
22
24#include "uspi/usb.h"
25#include "uspi/string.h"
26#include "uspi/types.h"
27
28struct TUSBDevice;
29struct TDWHCIDevice;
30struct TUSBEndpoint;
31
43
44void USBFunction (TUSBFunction *pThis, struct TUSBDevice *pDevice, TUSBConfigurationParser *pConfigParser);
45void USBFunctionCopy (TUSBFunction *pThis, TUSBFunction *pFunction); // copy constructor
46void _USBFunction (TUSBFunction *pThis);
47
48boolean USBFunctionConfigure (TUSBFunction *pThis);
49
50TString *USBFunctionGetInterfaceName (TUSBFunction *pThis); // string deleted by caller
52
56
57// get next sub descriptor of ucType from interface descriptor
58const TUSBDescriptor *USBFunctionGetDescriptor (TUSBFunction *pThis, u8 ucType); // returns 0 if not found
59void USBFunctionConfigurationError (TUSBFunction *pThis, const char *pSource);
60
61// select a specific USB interface, called in constructor of derived class,
62// if device has been detected by vendor/product ID
63boolean USBFunctionSelectInterfaceByClass (TUSBFunction *pThis, u8 uchClass, u8 uchSubClass, u8 uchProtocol);
64
69
70#endif
int boolean
Definition types.h:49
uint8_t u8
Definition kernel.h:20
Definition dwhcidevice.h:39
Definition string.h:32
Definition usbconfigparser.h:31
Definition usbdevice.h:48
Definition usbendpoint.h:41
Definition usbfunction.h:33
TUSBInterfaceDescriptor * m_pInterfaceDesc
Definition usbfunction.h:40
struct TUSBDevice * m_pDevice
Definition usbfunction.h:36
TUSBConfigurationParser * m_pConfigParser
Definition usbfunction.h:38
boolean(* Configure)(struct TUSBFunction *pThis)
Definition usbfunction.h:34
Definition usb.h:138
Definition usb.h:198
TString * USBFunctionGetInterfaceName(TUSBFunction *pThis)
Definition usbfunction.c:102
void USBFunctionConfigurationError(TUSBFunction *pThis, const char *pSource)
Definition usbfunction.c:158
const TUSBDescriptor * USBFunctionGetDescriptor(TUSBFunction *pThis, u8 ucType)
Definition usbfunction.c:151
u8 USBFunctionGetNumEndpoints(TUSBFunction *pThis)
Definition usbfunction.c:123
void USBFunctionCopy(TUSBFunction *pThis, TUSBFunction *pFunction)
Definition usbfunction.c:47
void _USBFunction(TUSBFunction *pThis)
Definition usbfunction.c:66
struct TDWHCIDevice * USBFunctionGetHost(TUSBFunction *pThis)
Definition usbfunction.c:144
u8 USBFunctionGetInterfaceNumber(TUSBFunction *pThis)
Definition usbfunction.c:191
boolean USBFunctionConfigure(TUSBFunction *pThis)
Definition usbfunction.c:81
struct TUSBEndpoint * USBFunctionGetEndpoint0(TUSBFunction *pThis)
Definition usbfunction.c:137
u8 USBFunctionGetInterfaceProtocol(TUSBFunction *pThis)
Definition usbfunction.c:212
void USBFunction(TUSBFunction *pThis, struct TUSBDevice *pDevice, TUSBConfigurationParser *pConfigParser)
Definition usbfunction.c:29
boolean USBFunctionSelectInterfaceByClass(TUSBFunction *pThis, u8 uchClass, u8 uchSubClass, u8 uchProtocol)
Definition usbfunction.c:166
u8 USBFunctionGetInterfaceClass(TUSBFunction *pThis)
Definition usbfunction.c:198
u8 USBFunctionGetInterfaceSubClass(TUSBFunction *pThis)
Definition usbfunction.c:205
struct TUSBDevice * USBFunctionGetDevice(TUSBFunction *pThis)
Definition usbfunction.c:130