XenevaOS
Loading...
Searching...
No Matches
usbdevice.h
Go to the documentation of this file.
1//
2// usbdevice.h
3//
4// USPi - An USB driver for Raspberry Pi written in C
5// Copyright (C) 2014-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_usbdevice_h
21#define _uspi_usbdevice_h
22
23#include "uspi/usb.h"
25#include "uspi/usbfunction.h"
26#include "uspi/usbstring.h"
27#include "uspi/string.h"
28#include "uspi/types.h"
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34#define USBDEV_MAX_FUNCTIONS 10
35
36typedef enum // do not change this order
37{
43
44struct TDWHCIDevice;
45struct TUSBEndpoint;
46
70
71void USBDevice (TUSBDevice *pThis, struct TDWHCIDevice *pHost, TUSBSpeed Speed,
72 boolean bSplitTransfer, u8 ucHubAddress, u8 ucHubPortNumber);
73void _USBDevice (TUSBDevice *pThis);
74
75boolean USBDeviceInitialize (TUSBDevice *pThis); // onto address state (phase 1)
76boolean USBDeviceConfigure (TUSBDevice *pThis); // onto configured state (phase 2)
77
78TString *USBDeviceGetName (TUSBDevice *pThis, TDeviceNameSelector Selector); // string deleted by caller
79TString *USBDeviceGetNames (TUSBDevice *pThis); // string deleted by caller
80
83
84boolean USBDeviceIsSplit (TUSBDevice *pThis);
87
90
93
94// get next sub descriptor of ucType from configuration descriptor
95const TUSBDescriptor *USBDeviceGetDescriptor (TUSBDevice *pThis, u8 ucType); // returns 0 if not found
96void USBDeviceConfigurationError (TUSBDevice *pThis, const char *pSource);
97
98void USBDeviceLogWrite (TUSBDevice *pThis, unsigned Severity, const char *pMessage, ...);
99
100#ifdef __cplusplus
101}
102#endif
103
104#endif
TUSBSpeed
Definition usb.h:43
uint8_t u8
Definition kernel.h:20
Definition dwhcidevice.h:39
Definition string.h:32
Definition usb.h:121
Definition usbconfigparser.h:31
Definition usb.h:98
Definition usbdevice.h:48
TUSBConfigurationDescriptor * m_pConfigDesc
Definition usbdevice.h:60
TUSBString m_ProductString
Definition usbdevice.h:65
u8 m_ucHubPortNumber
Definition usbdevice.h:57
u8 m_ucAddress
Definition usbdevice.h:51
TUSBString m_ManufacturerString
Definition usbdevice.h:64
TUSBSpeed m_Speed
Definition usbdevice.h:52
TUSBFunction * m_pFunction[USBDEV_MAX_FUNCTIONS]
Definition usbdevice.h:67
u8 m_ucHubAddress
Definition usbdevice.h:56
struct TUSBEndpoint * m_pEndpoint0
Definition usbdevice.h:53
TUSBDeviceDescriptor * m_pDeviceDesc
Definition usbdevice.h:59
boolean m_bSplitTransfer
Definition usbdevice.h:55
struct TDWHCIDevice * m_pHost
Definition usbdevice.h:49
TUSBConfigurationParser * m_pConfigParser
Definition usbdevice.h:62
Definition usbendpoint.h:41
Definition usbfunction.h:33
Definition usbstring.h:34
Definition usb.h:198
struct _usb_dev_ USBDevice
struct TDWHCIDevice * USBDeviceGetHost(TUSBDevice *pThis)
Definition usbdevice.c:542
struct TUSBEndpoint * USBDeviceGetEndpoint0(TUSBDevice *pThis)
Definition usbdevice.c:535
u8 USBDeviceGetHubPortNumber(TUSBDevice *pThis)
Definition usbdevice.c:529
#define USBDEV_MAX_FUNCTIONS
Definition usbdevice.h:34
void USBDeviceConfigurationError(TUSBDevice *pThis, const char *pSource)
Definition usbdevice.c:570
boolean USBDeviceConfigure(TUSBDevice *pThis)
Definition usbdevice.c:385
TString * USBDeviceGetName(TUSBDevice *pThis, TDeviceNameSelector Selector)
Definition usbdevice.c:430
void USBDeviceLogWrite(TUSBDevice *pThis, unsigned Severity, const char *pMessage,...)
Definition usbdevice.c:589
const TUSBDeviceDescriptor * USBDeviceGetDeviceDescriptor(TUSBDevice *pThis)
Definition usbdevice.c:549
u8 USBDeviceGetHubAddress(TUSBDevice *pThis)
Definition usbdevice.c:523
boolean USBDeviceInitialize(TUSBDevice *pThis)
Definition usbdevice.c:127
boolean USBDeviceIsSplit(TUSBDevice *pThis)
Definition usbdevice.c:517
const TUSBConfigurationDescriptor * USBDeviceGetConfigurationDescriptor(TUSBDevice *pThis)
Definition usbdevice.c:556
TString * USBDeviceGetNames(TUSBDevice *pThis)
Definition usbdevice.c:470
const TUSBDescriptor * USBDeviceGetDescriptor(TUSBDevice *pThis, u8 ucType)
Definition usbdevice.c:563
void _USBDevice(TUSBDevice *pThis)
Definition usbdevice.c:79
TDeviceNameSelector
Definition usbdevice.h:37
@ DeviceNameDevice
Definition usbdevice.h:39
@ DeviceNameUnknown
Definition usbdevice.h:40
@ DeviceNameVendor
Definition usbdevice.h:38
u8 USBDeviceGetAddress(TUSBDevice *pThis)
Definition usbdevice.c:505
TUSBSpeed USBDeviceGetSpeed(TUSBDevice *pThis)
Definition usbdevice.c:511