forked from mirrors/qmk_userspace
V-USB: Use structs for USB descriptors (#8572)
* V-USB: Use structs for USB descriptors * Update usbconfigs * cformat pass
This commit is contained in:
parent
05d9a0ff03
commit
14079ce698
51 changed files with 370 additions and 572 deletions
|
@ -15,8 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef VUSB_H
|
||||
#define VUSB_H
|
||||
#pragma once
|
||||
|
||||
#include "host_driver.h"
|
||||
|
||||
|
@ -25,14 +24,83 @@ typedef struct usbDescriptorHeader {
|
|||
uchar bDescriptorType;
|
||||
} __attribute__((packed)) usbDescriptorHeader_t;
|
||||
|
||||
typedef struct usbDeviceDescriptor {
|
||||
usbDescriptorHeader_t header;
|
||||
unsigned bcdUSB;
|
||||
uchar bDeviceClass;
|
||||
uchar bDeviceSubClass;
|
||||
uchar bDeviceProtocol;
|
||||
uchar bMaxPacketSize0;
|
||||
unsigned idVendor;
|
||||
unsigned idProduct;
|
||||
unsigned bcdDevice;
|
||||
uchar iManufacturer;
|
||||
uchar iProduct;
|
||||
uchar iSerialNumber;
|
||||
uchar bNumConfigurations;
|
||||
} __attribute__((packed)) usbDeviceDescriptor_t;
|
||||
|
||||
typedef struct usbConfigurationDescriptorHeader {
|
||||
usbDescriptorHeader_t header;
|
||||
unsigned wTotalLength;
|
||||
uchar bNumInterfaces;
|
||||
uchar bConfigurationValue;
|
||||
uchar iConfiguration;
|
||||
uchar bmAttributes;
|
||||
uchar bMaxPower;
|
||||
} __attribute__((packed)) usbConfigurationDescriptorHeader_t;
|
||||
|
||||
typedef struct usbStringDescriptor {
|
||||
usbDescriptorHeader_t header;
|
||||
int bString[];
|
||||
} __attribute__((packed)) usbStringDescriptor_t;
|
||||
|
||||
typedef struct usbInterfaceDescriptor {
|
||||
usbDescriptorHeader_t header;
|
||||
uchar bInterfaceNumber;
|
||||
uchar bAlternateSetting;
|
||||
uchar bNumEndpoints;
|
||||
uchar bInterfaceClass;
|
||||
uchar bInterfaceSubClass;
|
||||
uchar bInterfaceProtocol;
|
||||
uchar iInterface;
|
||||
} __attribute__((packed)) usbInterfaceDescriptor_t;
|
||||
|
||||
typedef struct usbEndpointDescriptor {
|
||||
usbDescriptorHeader_t header;
|
||||
uchar bEndpointAddress;
|
||||
uchar bmAttributes;
|
||||
unsigned wMaxPacketSize;
|
||||
uchar bInterval;
|
||||
} __attribute__((packed)) usbEndpointDescriptor_t;
|
||||
|
||||
typedef struct usbHIDDescriptor {
|
||||
usbDescriptorHeader_t header;
|
||||
unsigned bcdHID;
|
||||
uchar bCountryCode;
|
||||
uchar bNumDescriptors;
|
||||
uchar bDescriptorType;
|
||||
unsigned wDescriptorLength;
|
||||
} __attribute__((packed)) usbHIDDescriptor_t;
|
||||
|
||||
typedef struct usbConfigurationDescriptor {
|
||||
usbConfigurationDescriptorHeader_t header;
|
||||
usbInterfaceDescriptor_t keyboardInterface;
|
||||
usbHIDDescriptor_t keyboardHID;
|
||||
#ifdef USB_CFG_HAVE_INTRIN_ENDPOINT
|
||||
usbEndpointDescriptor_t keyboardINEndpoint;
|
||||
#endif
|
||||
|
||||
#if defined(MOUSE_ENABLE) || defined(EXTRAKEY_ENABLE)
|
||||
usbInterfaceDescriptor_t mouseExtraInterface;
|
||||
usbHIDDescriptor_t mouseExtraHID;
|
||||
# ifdef USB_CFG_HAVE_INTRIN_ENDPOINT3
|
||||
usbEndpointDescriptor_t mouseExtraINEndpoint;
|
||||
# endif
|
||||
#endif
|
||||
} __attribute__((packed)) usbConfigurationDescriptor_t;
|
||||
|
||||
#define USB_STRING_LEN(s) (sizeof(usbDescriptorHeader_t) + ((s) << 1))
|
||||
|
||||
host_driver_t *vusb_driver(void);
|
||||
void vusb_transfer_keyboard(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue