mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-11-30 08:24:11 +01:00
b94f4b49a4
Summary of changes: * USB CDC and HID drivers are completely split apart. * This will allow different max buffer sizes for HID and CDC. * USB descriptors have been overhauled: * Proper structs/macros/enums declared for USB (see pios_usb_defs.h) * Two common descriptor definitions. One for HID+CDC another for HID only. See pios_usb_desc_{hid_cdc,hid_only}.c for details. * Long standing bugs in OP USB descriptors became much more obvious with the new struct definitions. * Board specific USB initialization is now in pios_usb_board_data.h in each build target. * Definition of USB descriptors is now entirely indpendent of STM32 libs. Glue into STM32 libs is provided by pios_usbhook.c. * Removed a lot of stale/irrelevant USB #defines throughout the tree. * Improved naming consistency throughout USB code: * PIOS_USB_HID_* now refers to the HID endpoint code. * PIOS_USB_CDC_* now refers to the CDC endpoint code. * PIOS_USB_* now refers to the low-level USB code. * PIOS_USB_BOARD_* now refers to board-specific USB data * PIOS_USBHOOK_* is glue between PIOS and STM32 USB libs. * struct usb_* and enum usb_* and USB_* and HID_* are all types from the USB spec. * Shrunk the buffer size on the CDC call mgmt endpoint to save some RAM. * Made a few more USB related variables static to save some RAM.
49 lines
1.6 KiB
C
49 lines
1.6 KiB
C
#ifndef PIOS_USB_BOARD_DATA_H
|
|
#define PIOS_USB_BOARD_DATA_H
|
|
|
|
#define PIOS_USB_BOARD_HID_DATA_LENGTH 64
|
|
|
|
#define PIOS_USB_BOARD_EP_NUM 2
|
|
|
|
#include "pios_usb_defs.h" /* struct usb_* */
|
|
|
|
struct usb_board_config {
|
|
struct usb_configuration_desc config;
|
|
struct usb_interface_desc hid_if;
|
|
struct usb_hid_desc hid;
|
|
struct usb_endpoint_desc hid_in;
|
|
struct usb_endpoint_desc hid_out;
|
|
} __attribute__((packed));
|
|
|
|
extern const struct usb_device_desc PIOS_USB_BOARD_DeviceDescriptor;
|
|
extern const struct usb_board_config PIOS_USB_BOARD_Configuration;
|
|
extern const struct usb_string_langid PIOS_USB_BOARD_StringLangID;
|
|
|
|
/* NOTE NOTE NOTE
|
|
*
|
|
* Care must be taken to ensure that the _actual_ contents of
|
|
* these arrays (in each board's pios_usb_board_data.c) is no
|
|
* smaller than the stated sizes here or these descriptors
|
|
* will end up with trailing zeros on the wire.
|
|
*
|
|
* The compiler will catch any time that these definitions are
|
|
* too small.
|
|
*/
|
|
extern const uint8_t PIOS_USB_BOARD_HidReportDescriptor[36];
|
|
extern const uint8_t PIOS_USB_BOARD_StringVendorID[28];
|
|
extern const uint8_t PIOS_USB_BOARD_StringProductID[20];
|
|
extern uint8_t PIOS_USB_BOARD_StringSerial[52];
|
|
|
|
#define PIOS_USB_BOARD_PRODUCT_ID USB_PRODUCT_ID_PIPXTREME
|
|
#define PIOS_USB_BOARD_DEVICE_VER USB_OP_DEVICE_VER(USB_OP_BOARD_ID_PIPXTREME, USB_OP_BOARD_MODE_BL)
|
|
|
|
/*
|
|
* The bootloader uses a simplified report structure
|
|
* BL: <REPORT_ID><DATA>...<DATA>
|
|
* FW: <REPORT_ID><LENGTH><DATA>...<DATA>
|
|
* This define changes the behaviour in pios_usb_hid.c
|
|
*/
|
|
#define PIOS_USB_BOARD_BL_HID_HAS_NO_LENGTH_BYTE
|
|
|
|
#endif /* PIOS_USB_BOARD_DATA_H */
|