Replace uint8_t with u8 et al, fix whitespace.
This commit is contained in:
parent
6a16711bee
commit
c39eb69e4d
@ -66,8 +66,8 @@ static const u8 hid_report_descriptor[] = {
|
||||
static const struct {
|
||||
struct usb_hid_descriptor hid_descriptor;
|
||||
struct {
|
||||
uint8_t bReportDescriptorType;
|
||||
uint16_t wDescriptorLength;
|
||||
u8 bReportDescriptorType;
|
||||
u16 wDescriptorLength;
|
||||
} __attribute__((packed)) hid_report;
|
||||
} __attribute__((packed)) hid_function = {
|
||||
.hid_descriptor = {
|
||||
@ -281,7 +281,7 @@ void sys_tick_handler(void)
|
||||
{
|
||||
static int x = 0;
|
||||
static int dir = 1;
|
||||
uint8_t buf[4] = {0, 0, 0, 0};
|
||||
u8 buf[4] = {0, 0, 0, 0};
|
||||
|
||||
buf[1] = dir;
|
||||
x += dir;
|
||||
|
@ -124,7 +124,7 @@ static const u16 gamma_table_1_3[] = {
|
||||
#endif
|
||||
|
||||
#ifdef GAMMA_2_2
|
||||
static const uint16_t gamma_table_2_2[] = {
|
||||
static const u16 gamma_table_2_2[] = {
|
||||
0, 0, 2, 4, 7, 11, 17, 24,
|
||||
32, 42, 53, 65, 79, 94, 111, 129,
|
||||
148, 169, 192, 216, 242, 270, 299, 330,
|
||||
|
@ -66,8 +66,8 @@ static const u8 hid_report_descriptor[] = {
|
||||
static const struct {
|
||||
struct usb_hid_descriptor hid_descriptor;
|
||||
struct {
|
||||
uint8_t bReportDescriptorType;
|
||||
uint16_t wDescriptorLength;
|
||||
u8 bReportDescriptorType;
|
||||
u16 wDescriptorLength;
|
||||
} __attribute__((packed)) hid_report;
|
||||
} __attribute__((packed)) hid_function = {
|
||||
.hid_descriptor = {
|
||||
@ -262,7 +262,7 @@ void sys_tick_handler(void)
|
||||
{
|
||||
static int x = 0;
|
||||
static int dir = 1;
|
||||
uint8_t buf[4] = {0, 0, 0, 0};
|
||||
u8 buf[4] = {0, 0, 0, 0};
|
||||
|
||||
buf[1] = dir;
|
||||
x += dir;
|
||||
|
@ -66,8 +66,8 @@ static const u8 hid_report_descriptor[] = {
|
||||
static const struct {
|
||||
struct usb_hid_descriptor hid_descriptor;
|
||||
struct {
|
||||
uint8_t bReportDescriptorType;
|
||||
uint16_t wDescriptorLength;
|
||||
u8 bReportDescriptorType;
|
||||
u16 wDescriptorLength;
|
||||
} __attribute__((packed)) hid_report;
|
||||
} __attribute__((packed)) hid_function = {
|
||||
.hid_descriptor = {
|
||||
@ -262,7 +262,7 @@ void sys_tick_handler(void)
|
||||
{
|
||||
static int x = 0;
|
||||
static int dir = 1;
|
||||
uint8_t buf[4] = {0, 0, 0, 0};
|
||||
u8 buf[4] = {0, 0, 0, 0};
|
||||
|
||||
buf[1] = dir;
|
||||
x += dir;
|
||||
|
@ -26,49 +26,49 @@
|
||||
*/
|
||||
|
||||
/* Table 2: Communications Device Class Code */
|
||||
#define USB_CLASS_CDC 0x02
|
||||
#define USB_CLASS_CDC 0x02
|
||||
|
||||
/* Table 4: Class Subclass Code */
|
||||
#define USB_CDC_SUBCLASS_DLCM 0x01
|
||||
#define USB_CDC_SUBCLASS_ACM 0x02
|
||||
#define USB_CDC_SUBCLASS_DLCM 0x01
|
||||
#define USB_CDC_SUBCLASS_ACM 0x02
|
||||
/* ... */
|
||||
|
||||
/* Table 5 Communications Interface Class Control Protocol Codes */
|
||||
#define USB_CDC_PROTOCOL_NONE 0x00
|
||||
#define USB_CDC_PROTOCOL_AT 0x01
|
||||
#define USB_CDC_PROTOCOL_NONE 0x00
|
||||
#define USB_CDC_PROTOCOL_AT 0x01
|
||||
/* ... */
|
||||
|
||||
/* Table 6: Data Interface Class Code */
|
||||
#define USB_CLASS_DATA 0x0A
|
||||
#define USB_CLASS_DATA 0x0A
|
||||
|
||||
/* Table 12: Type Values for the bDescriptorType Field */
|
||||
#define CS_INTERFACE 0x24
|
||||
#define CS_ENDPOINT 0x25
|
||||
#define CS_INTERFACE 0x24
|
||||
#define CS_ENDPOINT 0x25
|
||||
|
||||
/* Table 13: bDescriptor SubType in Communications Class Functional
|
||||
* Descriptors */
|
||||
#define USB_CDC_TYPE_HEADER 0x00
|
||||
#define USB_CDC_TYPE_HEADER 0x00
|
||||
#define USB_CDC_TYPE_CALL_MANAGEMENT 0x01
|
||||
#define USB_CDC_TYPE_ACM 0x02
|
||||
#define USB_CDC_TYPE_ACM 0x02
|
||||
/* ... */
|
||||
#define USB_CDC_TYPE_UNION 0x06
|
||||
#define USB_CDC_TYPE_UNION 0x06
|
||||
/* ... */
|
||||
|
||||
/* Table 15: Class-Specific Descriptor Header Format */
|
||||
struct usb_cdc_header_descriptor {
|
||||
uint8_t bFunctionLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bDescriptorSubtype;
|
||||
uint16_t bcdCDC;
|
||||
u8 bFunctionLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bDescriptorSubtype;
|
||||
u16 bcdCDC;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Table 16: Union Interface Functional Descriptor */
|
||||
struct usb_cdc_union_descriptor {
|
||||
uint8_t bFunctionLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bDescriptorSubtype;
|
||||
uint8_t bControlInterface;
|
||||
uint8_t bSubordinateInterface0;
|
||||
u8 bFunctionLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bDescriptorSubtype;
|
||||
u8 bControlInterface;
|
||||
u8 bSubordinateInterface0;
|
||||
/* ... */
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -80,19 +80,19 @@ struct usb_cdc_union_descriptor {
|
||||
|
||||
/* Table 3: Call Management Functional Descriptor */
|
||||
struct usb_cdc_call_management_descriptor {
|
||||
uint8_t bFunctionLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bDescriptorSubtype;
|
||||
uint8_t bmCapabilities;
|
||||
uint8_t bDataInterface;
|
||||
u8 bFunctionLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bDescriptorSubtype;
|
||||
u8 bmCapabilities;
|
||||
u8 bDataInterface;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Table 4: Abstract Control Management Functional Descriptor */
|
||||
struct usb_cdc_acm_descriptor {
|
||||
uint8_t bFunctionLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bDescriptorSubtype;
|
||||
uint8_t bmCapabilities;
|
||||
u8 bFunctionLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bDescriptorSubtype;
|
||||
u8 bmCapabilities;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Table 13: Class-Specific Request Codes for PSTN subclasses */
|
||||
@ -104,10 +104,10 @@ struct usb_cdc_acm_descriptor {
|
||||
|
||||
/* Table 17: Line Coding Structure */
|
||||
struct usb_cdc_line_coding {
|
||||
uint32_t dwDTERate;
|
||||
uint8_t bCharFormat;
|
||||
uint8_t bParityType;
|
||||
uint8_t bDataBits;
|
||||
u32 dwDTERate;
|
||||
u8 bCharFormat;
|
||||
u8 bParityType;
|
||||
u8 bDataBits;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Table 30: Class-Specific Notification Codes for PSTN subclasses */
|
||||
@ -115,14 +115,13 @@ struct usb_cdc_line_coding {
|
||||
#define USB_CDC_NOTIFY_SERIAL_STATE 0x28
|
||||
/* ... */
|
||||
|
||||
|
||||
/* Notification Structure */
|
||||
struct usb_cdc_notification {
|
||||
uint8_t bmRequestType;
|
||||
uint8_t bNotification;
|
||||
uint16_t wValue;
|
||||
uint16_t wIndex;
|
||||
uint16_t wLength;
|
||||
u8 bmRequestType;
|
||||
u8 bNotification;
|
||||
u16 wValue;
|
||||
u16 wIndex;
|
||||
u16 wLength;
|
||||
} __attribute__((packed));
|
||||
|
||||
#endif
|
||||
|
@ -27,7 +27,7 @@ enum dfu_req {
|
||||
DFU_GETSTATUS,
|
||||
DFU_CLRSTATUS,
|
||||
DFU_GETSTATE,
|
||||
DFU_ABORT
|
||||
DFU_ABORT,
|
||||
};
|
||||
|
||||
enum dfu_status {
|
||||
@ -65,17 +65,17 @@ enum dfu_state {
|
||||
|
||||
#define DFU_FUNCTIONAL 0x21
|
||||
struct usb_dfu_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bmAttributes;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bmAttributes;
|
||||
#define USB_DFU_CAN_DOWNLOAD 0x01
|
||||
#define USB_DFU_CAN_UPLOAD 0x02
|
||||
#define USB_DFU_MANIFEST_TOLERANT 0x04
|
||||
#define USB_DFU_WILL_DETACH 0x08
|
||||
|
||||
uint16_t wDetachTimeout;
|
||||
uint16_t wTransferSize;
|
||||
uint16_t bcdDFUVersion;
|
||||
u16 wDetachTimeout;
|
||||
u16 wTransferSize;
|
||||
u16 bcdDFUVersion;
|
||||
} __attribute__((packed));
|
||||
|
||||
#endif
|
||||
|
@ -28,11 +28,11 @@
|
||||
#define USB_DT_REPORT 0x22
|
||||
|
||||
struct usb_hid_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint16_t bcdHID;
|
||||
uint8_t bCountryCode;
|
||||
uint8_t bNumDescriptors;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u16 bcdHID;
|
||||
u8 bCountryCode;
|
||||
u8 bNumDescriptors;
|
||||
} __attribute__((packed));
|
||||
|
||||
#endif
|
||||
|
@ -25,47 +25,42 @@
|
||||
/* Static buffer for control transactions:
|
||||
* This is defined as weak in the library, applicaiton
|
||||
* may provide if a larger buffer is requred. */
|
||||
extern uint8_t usbd_control_buffer[];
|
||||
extern u8 usbd_control_buffer[];
|
||||
|
||||
/* <usb.c> */
|
||||
extern int usbd_init(const struct usb_device_descriptor *dev,
|
||||
const struct usb_config_descriptor *conf,
|
||||
const char **strings);
|
||||
extern void usbd_set_control_buffer_size(uint16_t size);
|
||||
extern void usbd_set_control_buffer_size(u16 size);
|
||||
|
||||
extern void usbd_register_reset_callback(void (*callback)(void));
|
||||
extern void usbd_register_suspend_callback(void (*callback)(void));
|
||||
extern void usbd_register_resume_callback(void (*callback)(void));
|
||||
|
||||
typedef int (*usbd_control_callback)(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len,
|
||||
void (**complete)(struct usb_setup_data *req));
|
||||
typedef int (*usbd_control_callback)(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len, void (**complete)(struct usb_setup_data *req));
|
||||
|
||||
/* <usb_control.c> */
|
||||
extern int usbd_register_control_callback(uint8_t type, uint8_t type_mask,
|
||||
extern int usbd_register_control_callback(u8 type, u8 type_mask,
|
||||
usbd_control_callback callback);
|
||||
|
||||
/* <usb_standard.c> */
|
||||
extern void
|
||||
usbd_register_set_config_callback(void (*callback)(uint16_t wValue));
|
||||
|
||||
extern void usbd_register_set_config_callback(void (*callback)(u16 wValue));
|
||||
|
||||
/* Functions to be provided by the hardware abstraction layer */
|
||||
extern void usbd_poll(void);
|
||||
|
||||
extern void usbd_ep_setup(uint8_t addr, uint8_t type, uint16_t max_size,
|
||||
void (*callback)(uint8_t ep));
|
||||
extern void usbd_ep_setup(u8 addr, u8 type, u16 max_size,
|
||||
void (*callback)(u8 ep));
|
||||
|
||||
extern uint16_t
|
||||
usbd_ep_write_packet(uint8_t addr, const void *buf, uint16_t len);
|
||||
extern u16 usbd_ep_write_packet(u8 addr, const void *buf, u16 len);
|
||||
|
||||
extern uint16_t
|
||||
usbd_ep_read_packet(uint8_t addr, void *buf, uint16_t len);
|
||||
extern u16 usbd_ep_read_packet(u8 addr, void *buf, u16 len);
|
||||
|
||||
extern void usbd_ep_stall_set(uint8_t addr, uint8_t stall);
|
||||
extern uint8_t usbd_ep_stall_get(uint8_t addr);
|
||||
extern void usbd_ep_stall_set(u8 addr, u8 stall);
|
||||
extern u8 usbd_ep_stall_get(u8 addr);
|
||||
|
||||
/* Optional */
|
||||
extern void usbd_cable_connect(uint8_t on);
|
||||
extern void usbd_cable_connect(u8 on);
|
||||
|
||||
#endif
|
||||
|
@ -20,114 +20,116 @@
|
||||
#ifndef __USBSTD_H
|
||||
#define __USBSTD_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <libopenstm32/common.h> /* TODO: Move elsewhere? */
|
||||
|
||||
/*
|
||||
* This file contains structure definitions for the USB control structures
|
||||
* defined in chapter 9 of the "Univeral Serial Bus Specification Revision 2.0"
|
||||
* Available from the USB Implementers Forum - http://www.usb.org/
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* USB Setup Data structure - Table 9-2 */
|
||||
struct usb_setup_data {
|
||||
uint8_t bmRequestType;
|
||||
uint8_t bRequest;
|
||||
uint16_t wValue;
|
||||
uint16_t wIndex;
|
||||
uint16_t wLength;
|
||||
u8 bmRequestType;
|
||||
u8 bRequest;
|
||||
u16 wValue;
|
||||
u16 wIndex;
|
||||
u16 wLength;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* bmRequestType bit definitions */
|
||||
#define USB_REQ_TYPE_IN 0x80
|
||||
#define USB_REQ_TYPE_STANDARD 0x00
|
||||
#define USB_REQ_TYPE_CLASS 0x20
|
||||
#define USB_REQ_TYPE_VENDOR 0x40
|
||||
#define USB_REQ_TYPE_DEVICE 0x00
|
||||
#define USB_REQ_TYPE_INTERFACE 0x01
|
||||
#define USB_REQ_TYPE_ENDPOINT 0x02
|
||||
#define USB_REQ_TYPE_IN 0x80
|
||||
#define USB_REQ_TYPE_STANDARD 0x00
|
||||
#define USB_REQ_TYPE_CLASS 0x20
|
||||
#define USB_REQ_TYPE_VENDOR 0x40
|
||||
#define USB_REQ_TYPE_DEVICE 0x00
|
||||
#define USB_REQ_TYPE_INTERFACE 0x01
|
||||
#define USB_REQ_TYPE_ENDPOINT 0x02
|
||||
|
||||
#define USB_REQ_TYPE_DIRECTION 0x80
|
||||
#define USB_REQ_TYPE_TYPE 0x60
|
||||
#define USB_REQ_TYPE_RECIPIENT 0x1F
|
||||
#define USB_REQ_TYPE_DIRECTION 0x80
|
||||
#define USB_REQ_TYPE_TYPE 0x60
|
||||
#define USB_REQ_TYPE_RECIPIENT 0x1F
|
||||
|
||||
/* USB Standard Request Codes - Table 9-4 */
|
||||
#define USB_REQ_GET_STATUS 0
|
||||
#define USB_REQ_CLEAR_FEATURE 1
|
||||
#define USB_REQ_GET_STATUS 0
|
||||
#define USB_REQ_CLEAR_FEATURE 1
|
||||
/* Reserved for future use: 2 */
|
||||
#define USB_REQ_SET_FEATURE 3
|
||||
#define USB_REQ_SET_FEATURE 3
|
||||
/* Reserved for future use: 3 */
|
||||
#define USB_REQ_SET_ADDRESS 5
|
||||
#define USB_REQ_GET_DESCRIPTOR 6
|
||||
#define USB_REQ_SET_DESCRIPTOR 7
|
||||
#define USB_REQ_GET_CONFIGURATION 8
|
||||
#define USB_REQ_SET_CONFIGURATION 9
|
||||
#define USB_REQ_GET_INTERFACE 10
|
||||
#define USB_REQ_SET_INTERFACE 11
|
||||
#define USB_REQ_SET_SYNCH_FRAME 12
|
||||
#define USB_REQ_SET_ADDRESS 5
|
||||
#define USB_REQ_GET_DESCRIPTOR 6
|
||||
#define USB_REQ_SET_DESCRIPTOR 7
|
||||
#define USB_REQ_GET_CONFIGURATION 8
|
||||
#define USB_REQ_SET_CONFIGURATION 9
|
||||
#define USB_REQ_GET_INTERFACE 10
|
||||
#define USB_REQ_SET_INTERFACE 11
|
||||
#define USB_REQ_SET_SYNCH_FRAME 12
|
||||
|
||||
/* USB Descriptor Types - Table 9-5 */
|
||||
#define USB_DT_DEVICE 1
|
||||
#define USB_DT_CONFIGURATION 2
|
||||
#define USB_DT_STRING 3
|
||||
#define USB_DT_INTERFACE 4
|
||||
#define USB_DT_ENDPOINT 5
|
||||
#define USB_DT_DEVICE_QUALIFIER 6
|
||||
#define USB_DT_DEVICE 1
|
||||
#define USB_DT_CONFIGURATION 2
|
||||
#define USB_DT_STRING 3
|
||||
#define USB_DT_INTERFACE 4
|
||||
#define USB_DT_ENDPOINT 5
|
||||
#define USB_DT_DEVICE_QUALIFIER 6
|
||||
#define USB_DT_OTHER_SPEED_CONFIGURATION 7
|
||||
#define USB_DT_INTERFACE_POWER 8
|
||||
#define USB_DT_INTERFACE_POWER 8
|
||||
|
||||
/* USB Standard Feature Selectors - Table 9-6 */
|
||||
#define USB_FEAT_ENDPOINT_HALT 0
|
||||
#define USB_FEAT_DEVICE_REMOTE_WAKEUP 1
|
||||
#define USB_FEAT_TEST_MODE 2
|
||||
#define USB_FEAT_ENDPOINT_HALT 0
|
||||
#define USB_FEAT_DEVICE_REMOTE_WAKEUP 1
|
||||
#define USB_FEAT_TEST_MODE 2
|
||||
|
||||
/* Information Returned by a GetStatus() Request to a Device - Figure 9-4 */
|
||||
#define USB_DEV_STATUS_SELF_POWERED 0x01
|
||||
#define USB_DEV_STATUS_REMOTE_WAKEUP 0x02
|
||||
#define USB_DEV_STATUS_SELF_POWERED 0x01
|
||||
#define USB_DEV_STATUS_REMOTE_WAKEUP 0x02
|
||||
|
||||
/* USB Standard Device Descriptor - Table 9-8 */
|
||||
struct usb_device_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint16_t bcdUSB;
|
||||
uint8_t bDeviceClass;
|
||||
uint8_t bDeviceSubClass;
|
||||
uint8_t bDeviceProtocol;
|
||||
uint8_t bMaxPacketSize0;
|
||||
uint16_t idVendor;
|
||||
uint16_t idProduct;
|
||||
uint16_t bcdDevice;
|
||||
uint8_t iManufacturer;
|
||||
uint8_t iProduct;
|
||||
uint8_t iSerialNumber;
|
||||
uint8_t bNumConfigurations;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u16 bcdUSB;
|
||||
u8 bDeviceClass;
|
||||
u8 bDeviceSubClass;
|
||||
u8 bDeviceProtocol;
|
||||
u8 bMaxPacketSize0;
|
||||
u16 idVendor;
|
||||
u16 idProduct;
|
||||
u16 bcdDevice;
|
||||
u8 iManufacturer;
|
||||
u8 iProduct;
|
||||
u8 iSerialNumber;
|
||||
u8 bNumConfigurations;
|
||||
} __attribute__((packed));
|
||||
#define USB_DT_DEVICE_SIZE sizeof(struct usb_device_descriptor)
|
||||
|
||||
#define USB_DT_DEVICE_SIZE sizeof(struct usb_device_descriptor)
|
||||
|
||||
/* USB Device_Qualifier Descriptor - Table 9-9
|
||||
* Not used in this implementation.
|
||||
*/
|
||||
struct usb_device_qualifier_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint16_t bcdUSB;
|
||||
uint8_t bDeviceClass;
|
||||
uint8_t bDeviceSubClass;
|
||||
uint8_t bDeviceProtocol;
|
||||
uint8_t bMaxPacketSize0;
|
||||
uint8_t bNumConfigurations;
|
||||
uint8_t bReserved;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u16 bcdUSB;
|
||||
u8 bDeviceClass;
|
||||
u8 bDeviceSubClass;
|
||||
u8 bDeviceProtocol;
|
||||
u8 bMaxPacketSize0;
|
||||
u8 bNumConfigurations;
|
||||
u8 bReserved;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* USB Standard Configuration Descriptor - Table 9-10 */
|
||||
struct usb_config_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint16_t wTotalLength;
|
||||
uint8_t bNumInterfaces;
|
||||
uint8_t bConfigurationValue;
|
||||
uint8_t iConfiguration;
|
||||
uint8_t bmAttributes;
|
||||
uint8_t bMaxPower;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u16 wTotalLength;
|
||||
u8 bNumInterfaces;
|
||||
u8 bConfigurationValue;
|
||||
u8 iConfiguration;
|
||||
u8 bmAttributes;
|
||||
u8 bMaxPower;
|
||||
|
||||
/* Descriptor ends here. The following are used internally: */
|
||||
const struct usb_interface {
|
||||
@ -135,11 +137,11 @@ struct usb_config_descriptor {
|
||||
const struct usb_interface_descriptor *altsetting;
|
||||
} *interface;
|
||||
} __attribute__((packed));
|
||||
#define USB_DT_CONFIGURATION_SIZE 9
|
||||
#define USB_DT_CONFIGURATION_SIZE 9
|
||||
|
||||
/* USB Configuration Descriptor bmAttributes bit definitions */
|
||||
#define USB_CONFIG_ATTR_SELF_POWERED 0x40
|
||||
#define USB_CONFIG_ATTR_REMOTE_WAKEUP 0x20
|
||||
#define USB_CONFIG_ATTR_SELF_POWERED 0x40
|
||||
#define USB_CONFIG_ATTR_REMOTE_WAKEUP 0x20
|
||||
|
||||
/* Other Speed Configuration is the same as Configuration Descriptor.
|
||||
* - Table 9-11
|
||||
@ -147,56 +149,56 @@ struct usb_config_descriptor {
|
||||
|
||||
/* USB Standard Interface Descriptor - Table 9-12 */
|
||||
struct usb_interface_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bInterfaceNumber;
|
||||
uint8_t bAlternateSetting;
|
||||
uint8_t bNumEndpoints;
|
||||
uint8_t bInterfaceClass;
|
||||
uint8_t bInterfaceSubClass;
|
||||
uint8_t bInterfaceProtocol;
|
||||
uint8_t iInterface;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bInterfaceNumber;
|
||||
u8 bAlternateSetting;
|
||||
u8 bNumEndpoints;
|
||||
u8 bInterfaceClass;
|
||||
u8 bInterfaceSubClass;
|
||||
u8 bInterfaceProtocol;
|
||||
u8 iInterface;
|
||||
|
||||
/* Descriptor ends here. The following are used internally: */
|
||||
const struct usb_endpoint_descriptor *endpoint;
|
||||
const void *extra;
|
||||
int extralen;
|
||||
} __attribute__((packed));
|
||||
#define USB_DT_INTERFACE_SIZE 9
|
||||
#define USB_DT_INTERFACE_SIZE 9
|
||||
|
||||
/* USB Standard Endpoint Descriptor - Table 9-13 */
|
||||
struct usb_endpoint_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint8_t bEndpointAddress;
|
||||
uint8_t bmAttributes;
|
||||
uint16_t wMaxPacketSize;
|
||||
uint8_t bInterval;
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u8 bEndpointAddress;
|
||||
u8 bmAttributes;
|
||||
u16 wMaxPacketSize;
|
||||
u8 bInterval;
|
||||
} __attribute__((packed));
|
||||
#define USB_DT_ENDPOINT_SIZE sizeof(struct usb_endpoint_descriptor)
|
||||
|
||||
/* USB Endpoint Descriptor bmAttributes bit definitions */
|
||||
#define USB_ENDPOINT_ATTR_CONTROL 0x00
|
||||
#define USB_ENDPOINT_ATTR_ISOCHRONOUS 0x01
|
||||
#define USB_ENDPOINT_ATTR_BULK 0x02
|
||||
#define USB_ENDPOINT_ATTR_INTERRUPT 0x03
|
||||
#define USB_ENDPOINT_ATTR_CONTROL 0x00
|
||||
#define USB_ENDPOINT_ATTR_ISOCHRONOUS 0x01
|
||||
#define USB_ENDPOINT_ATTR_BULK 0x02
|
||||
#define USB_ENDPOINT_ATTR_INTERRUPT 0x03
|
||||
|
||||
#define USB_ENDPOINT_ATTR_NOSYNC 0x00
|
||||
#define USB_ENDPOINT_ATTR_ASYNC 0x04
|
||||
#define USB_ENDPOINT_ATTR_ADAPTIVE 0x08
|
||||
#define USB_ENDPOINT_ATTR_SYNC 0x0C
|
||||
#define USB_ENDPOINT_ATTR_NOSYNC 0x00
|
||||
#define USB_ENDPOINT_ATTR_ASYNC 0x04
|
||||
#define USB_ENDPOINT_ATTR_ADAPTIVE 0x08
|
||||
#define USB_ENDPOINT_ATTR_SYNC 0x0C
|
||||
|
||||
#define USB_ENDPOINT_ATTR_DATA 0x00
|
||||
#define USB_ENDPOINT_ATTR_FEEDBACK 0x10
|
||||
#define USB_ENDPOINT_ATTR_DATA 0x00
|
||||
#define USB_ENDPOINT_ATTR_FEEDBACK 0x10
|
||||
#define USB_ENDPOINT_ATTR_IMPLICIT_FEEDBACK_DATA 0x20
|
||||
|
||||
/* Table 9-15 specifies String Descriptor Zero.
|
||||
* Table 9-16 specified UNICODE String Descriptor.
|
||||
*/
|
||||
struct usb_string_descriptor {
|
||||
uint8_t bLength;
|
||||
uint8_t bDescriptorType;
|
||||
uint16_t wData[];
|
||||
u8 bLength;
|
||||
u8 bDescriptorType;
|
||||
u16 wData[];
|
||||
} __attribute__((packed));
|
||||
|
||||
#endif
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
struct _usbd_device _usbd_device;
|
||||
|
||||
uint8_t usbd_control_buffer[128] __attribute__((weak));
|
||||
u8 usbd_control_buffer[128] __attribute__((weak));
|
||||
|
||||
/** Main initialization entry point.
|
||||
*
|
||||
@ -77,7 +77,7 @@ void usbd_register_resume_callback(void (*callback)(void))
|
||||
_usbd_device.user_callback_resume = callback;
|
||||
}
|
||||
|
||||
void usbd_set_control_buffer_size(uint16_t size)
|
||||
void usbd_set_control_buffer_size(u16 size)
|
||||
{
|
||||
_usbd_device.ctrl_buf_len = size;
|
||||
}
|
||||
|
@ -29,15 +29,15 @@ static struct usb_control_state {
|
||||
|
||||
struct usb_setup_data req;
|
||||
|
||||
uint8_t *ctrl_buf;
|
||||
uint16_t ctrl_len;
|
||||
u8 *ctrl_buf;
|
||||
u16 ctrl_len;
|
||||
|
||||
void (*complete)(struct usb_setup_data *req);
|
||||
} control_state;
|
||||
|
||||
/** Register application callback function for handling of usb control
|
||||
* request. */
|
||||
int usbd_register_control_callback(uint8_t type, uint8_t type_mask,
|
||||
int usbd_register_control_callback(u8 type, u8 type_mask,
|
||||
usbd_control_callback callback)
|
||||
{
|
||||
int i;
|
||||
@ -76,10 +76,10 @@ static void usb_control_send_chunk(void)
|
||||
|
||||
static int usb_control_recv_chunk(void)
|
||||
{
|
||||
uint16_t packetsize = MIN(_usbd_device.desc->bMaxPacketSize0,
|
||||
u16 packetsize = MIN(_usbd_device.desc->bMaxPacketSize0,
|
||||
control_state.req.wLength -
|
||||
control_state.ctrl_len);
|
||||
uint16_t size = usbd_ep_read_packet(0,
|
||||
u16 size = usbd_ep_read_packet(0,
|
||||
control_state.ctrl_buf + control_state.ctrl_len,
|
||||
packetsize);
|
||||
|
||||
@ -156,7 +156,7 @@ static void usb_control_setup_write(struct usb_setup_data *req)
|
||||
else control_state.state = LAST_DATA_OUT;
|
||||
}
|
||||
|
||||
void _usbd_control_setup(uint8_t ea)
|
||||
void _usbd_control_setup(u8 ea)
|
||||
{
|
||||
struct usb_setup_data *req = &control_state.req;
|
||||
(void)ea;
|
||||
@ -177,7 +177,7 @@ void _usbd_control_setup(uint8_t ea)
|
||||
}
|
||||
}
|
||||
|
||||
void _usbd_control_out(uint8_t ea)
|
||||
void _usbd_control_out(u8 ea)
|
||||
{
|
||||
(void)ea;
|
||||
|
||||
@ -221,7 +221,7 @@ void _usbd_control_out(uint8_t ea)
|
||||
}
|
||||
}
|
||||
|
||||
void _usbd_control_in(uint8_t ea)
|
||||
void _usbd_control_in(u8 ea)
|
||||
{
|
||||
(void)ea;
|
||||
switch(control_state.state) {
|
||||
|
@ -153,10 +153,10 @@ u8 usbd_ep_stall_get(u8 addr)
|
||||
* @param len Number of bytes to copy.
|
||||
*/
|
||||
static inline void
|
||||
usb_copy_to_pm(volatile void *vPM, const void *buf, uint16_t len)
|
||||
usb_copy_to_pm(volatile void *vPM, const void *buf, u16 len)
|
||||
{
|
||||
const uint16_t *lbuf = buf;
|
||||
volatile uint16_t *PM = vPM;
|
||||
const u16 *lbuf = buf;
|
||||
volatile u16 *PM = vPM;
|
||||
|
||||
for(len = (len + 1) >> 1; len; PM += 2, lbuf++, len--)
|
||||
*PM = *lbuf;
|
||||
@ -182,16 +182,16 @@ u16 usbd_ep_write_packet(u8 addr, const void *buf, u16 len)
|
||||
* @param len Number of bytes to copy.
|
||||
*/
|
||||
static inline void
|
||||
usb_copy_from_pm(void *buf, const volatile void *vPM, uint16_t len)
|
||||
usb_copy_from_pm(void *buf, const volatile void *vPM, u16 len)
|
||||
{
|
||||
uint16_t *lbuf = buf;
|
||||
const volatile uint16_t *PM = vPM;
|
||||
uint8_t odd = len & 1;
|
||||
u16 *lbuf = buf;
|
||||
const volatile u16 *PM = vPM;
|
||||
u8 odd = len & 1;
|
||||
|
||||
for(len >>= 1; len; PM += 2, lbuf++, len--)
|
||||
*lbuf = *PM;
|
||||
|
||||
if(odd) *(uint8_t*)lbuf = *(uint8_t*)PM;
|
||||
if(odd) *(u8*)lbuf = *(u8*)PM;
|
||||
}
|
||||
|
||||
u16 usbd_ep_read_packet(u8 addr, void *buf, u16 len)
|
||||
|
@ -30,13 +30,13 @@ extern struct _usbd_device {
|
||||
const struct usb_config_descriptor *config;
|
||||
const char **strings;
|
||||
|
||||
uint8_t *ctrl_buf; /**< Internal buffer used for control transfers */
|
||||
uint16_t ctrl_buf_len;
|
||||
u8 *ctrl_buf; /**< Internal buffer used for control transfers */
|
||||
u16 ctrl_buf_len;
|
||||
|
||||
uint8_t current_address;
|
||||
uint8_t current_config;
|
||||
u8 current_address;
|
||||
u8 current_config;
|
||||
|
||||
uint16_t pm_top; /**< Top of allocated endpoint buffer memory */
|
||||
u16 pm_top; /**< Top of allocated endpoint buffer memory */
|
||||
|
||||
/* User callback functions for various USB events */
|
||||
void (*user_callback_reset)(void);
|
||||
@ -45,14 +45,14 @@ extern struct _usbd_device {
|
||||
|
||||
struct user_control_callback {
|
||||
usbd_control_callback cb;
|
||||
uint8_t type;
|
||||
uint8_t type_mask;
|
||||
u8 type;
|
||||
u8 type_mask;
|
||||
} user_control_callback[MAX_USER_CONTROL_CALLBACK];
|
||||
|
||||
void (*user_callback_ctr[8][3])(uint8_t ea);
|
||||
void (*user_callback_ctr[8][3])(u8 ea);
|
||||
|
||||
/* User callback function for some standard USB function hooks */
|
||||
void (*user_callback_set_config)(uint16_t wValue);
|
||||
void (*user_callback_set_config)(u16 wValue);
|
||||
} _usbd_device;
|
||||
|
||||
enum _usbd_transaction {
|
||||
@ -61,18 +61,18 @@ enum _usbd_transaction {
|
||||
USB_TRANSACTION_SETUP,
|
||||
};
|
||||
|
||||
void _usbd_control_in(uint8_t ea);
|
||||
void _usbd_control_out(uint8_t ea);
|
||||
void _usbd_control_setup(uint8_t ea);
|
||||
void _usbd_control_in(u8 ea);
|
||||
void _usbd_control_out(u8 ea);
|
||||
void _usbd_control_setup(u8 ea);
|
||||
|
||||
int _usbd_standard_request(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len);
|
||||
u8 **buf, u16 *len);
|
||||
|
||||
void _usbd_reset(void);
|
||||
|
||||
/* Functions provided by the hardware abstraction */
|
||||
void _usbd_hw_init(void);
|
||||
void _usbd_hw_set_address(uint8_t addr);
|
||||
void _usbd_hw_set_address(u8 addr);
|
||||
void _usbd_hw_endpoints_reset(void);
|
||||
|
||||
#endif
|
||||
|
@ -21,18 +21,18 @@
|
||||
#include <usb/usbd.h>
|
||||
#include "usb_private.h"
|
||||
|
||||
void usbd_register_set_config_callback(void (*callback)(uint16_t wValue))
|
||||
void usbd_register_set_config_callback(void (*callback)(u16 wValue))
|
||||
{
|
||||
_usbd_device.user_callback_set_config = callback;
|
||||
}
|
||||
|
||||
static uint16_t
|
||||
build_config_descriptor(uint8_t index, uint8_t *buf, uint16_t len)
|
||||
static u16
|
||||
build_config_descriptor(u8 index, u8 *buf, u16 len)
|
||||
{
|
||||
uint8_t *tmpbuf = buf;
|
||||
u8 *tmpbuf = buf;
|
||||
const struct usb_config_descriptor *cfg = &_usbd_device.config[index];
|
||||
uint16_t count, total = 0, totallen = 0;
|
||||
uint16_t i, j, k;
|
||||
u16 count, total = 0, totallen = 0;
|
||||
u16 i, j, k;
|
||||
|
||||
memcpy(buf, cfg, count = MIN(len, cfg->bLength));
|
||||
buf += count; len -= count; total += count; totallen += cfg->bLength;
|
||||
@ -64,19 +64,19 @@ build_config_descriptor(uint8_t index, uint8_t *buf, uint16_t len)
|
||||
}
|
||||
|
||||
/* Fill in wTotalLength */
|
||||
*(uint16_t*)(tmpbuf+2) = totallen;
|
||||
*(u16*)(tmpbuf+2) = totallen;
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
static int usb_standard_get_descriptor(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch(req->wValue >> 8) {
|
||||
case USB_DT_DEVICE:
|
||||
*buf = (uint8_t *)_usbd_device.desc;
|
||||
*buf = (u8 *)_usbd_device.desc;
|
||||
*len = MIN(*len, _usbd_device.desc->bLength);
|
||||
return 1;
|
||||
|
||||
@ -97,7 +97,7 @@ static int usb_standard_get_descriptor(struct usb_setup_data *req,
|
||||
* 2 + 2;
|
||||
sd->bDescriptorType = USB_DT_STRING;
|
||||
|
||||
*buf = (uint8_t *)sd;
|
||||
*buf = (u8 *)sd;
|
||||
*len = MIN(*len, sd->bLength);
|
||||
|
||||
for(i = 0; i < (*len / 2) - 1; i++)
|
||||
@ -115,7 +115,7 @@ static int usb_standard_get_descriptor(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_set_address(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
(void)buf;
|
||||
@ -130,7 +130,7 @@ static int usb_standard_set_address(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_set_configuration(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
(void)buf;
|
||||
@ -151,7 +151,7 @@ static int usb_standard_set_configuration(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_get_configuration(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
|
||||
@ -162,7 +162,7 @@ static int usb_standard_get_configuration(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_set_interface(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
(void)buf;
|
||||
@ -175,7 +175,7 @@ static int usb_standard_set_interface(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_get_interface(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
(void)buf;
|
||||
@ -188,7 +188,7 @@ static int usb_standard_get_interface(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_device_get_status(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
/* bit 0: self powered */
|
||||
@ -201,7 +201,7 @@ static int usb_standard_device_get_status(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_interface_get_status(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
/* not defined */
|
||||
@ -214,7 +214,7 @@ static int usb_standard_interface_get_status(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_endpoint_get_status(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)req;
|
||||
|
||||
@ -226,7 +226,7 @@ static int usb_standard_endpoint_get_status(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_endpoint_stall(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)buf;
|
||||
(void)len;
|
||||
@ -237,7 +237,7 @@ static int usb_standard_endpoint_stall(struct usb_setup_data *req,
|
||||
}
|
||||
|
||||
static int usb_standard_endpoint_unstall(struct usb_setup_data *req,
|
||||
uint8_t **buf, uint16_t *len)
|
||||
u8 **buf, u16 *len)
|
||||
{
|
||||
(void)buf;
|
||||
(void)len;
|
||||
@ -247,11 +247,11 @@ static int usb_standard_endpoint_unstall(struct usb_setup_data *req,
|
||||
return 1;
|
||||
}
|
||||
|
||||
int _usbd_standard_request_device(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len)
|
||||
int _usbd_standard_request_device(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len)
|
||||
{
|
||||
int (*command)(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len) = NULL;
|
||||
int (*command)(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len) = NULL;
|
||||
|
||||
switch(req->bRequest) {
|
||||
case USB_REQ_CLEAR_FEATURE:
|
||||
@ -292,11 +292,11 @@ int _usbd_standard_request_device(struct usb_setup_data *req, uint8_t **buf,
|
||||
return command(req, buf, len);
|
||||
}
|
||||
|
||||
int _usbd_standard_request_interface(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len)
|
||||
int _usbd_standard_request_interface(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len)
|
||||
{
|
||||
int (*command)(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len) = NULL;
|
||||
int (*command)(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len) = NULL;
|
||||
|
||||
switch(req->bRequest) {
|
||||
case USB_REQ_CLEAR_FEATURE:
|
||||
@ -319,11 +319,11 @@ int _usbd_standard_request_interface(struct usb_setup_data *req, uint8_t **buf,
|
||||
return command(req, buf, len);
|
||||
}
|
||||
|
||||
int _usbd_standard_request_endpoint(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len)
|
||||
int _usbd_standard_request_endpoint(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len)
|
||||
{
|
||||
int (*command)(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len) = NULL;
|
||||
int (*command)(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len) = NULL;
|
||||
|
||||
switch(req->bRequest) {
|
||||
case USB_REQ_CLEAR_FEATURE:
|
||||
@ -351,8 +351,8 @@ int _usbd_standard_request_endpoint(struct usb_setup_data *req, uint8_t **buf,
|
||||
return command(req, buf, len);
|
||||
}
|
||||
|
||||
int _usbd_standard_request(struct usb_setup_data *req, uint8_t **buf,
|
||||
uint16_t *len)
|
||||
int _usbd_standard_request(struct usb_setup_data *req, u8 **buf,
|
||||
u16 *len)
|
||||
{
|
||||
/* FIXME: have class/vendor requests as well */
|
||||
if((req->bmRequestType & USB_REQ_TYPE_TYPE) != USB_REQ_TYPE_STANDARD)
|
||||
|
Loading…
x
Reference in New Issue
Block a user