Add usbDesc.h
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
|
||||
enum USB_PID {
|
||||
// Token Packets
|
||||
OUT_TOKEN = 0b0001,
|
||||
IN_TOKEN = 0b1001,
|
||||
SOF_TOKEN = 0b0101,
|
||||
SETUP_TOKEN = 0b1101,
|
||||
|
||||
// Data Packets
|
||||
DATA0_DATA = 0b0011,
|
||||
DATA1_DATA = 0b1011,
|
||||
DATA2_DATA = 0b0111,
|
||||
MDATA_DATA = 0b1111,
|
||||
|
||||
// Handshake Packets
|
||||
ACK_HANDSHAKE = 0b0010,
|
||||
NAK_HANDSHAKE = 0b1010,
|
||||
STALL_HANDSHAKE = 0b1110,
|
||||
NYET_HANDSHAKE = 0b0110,
|
||||
|
||||
// Special & Other Packets
|
||||
PRE_SPECIAL = 0b1100, // PREamble shares value with ERR
|
||||
ERR_SPECIAL = 0b1100,
|
||||
SPLIT_SPECIAL = 0b1000,
|
||||
PING_SPECIAL = 0b0100
|
||||
};
|
||||
|
||||
|
||||
enum Configuration_bmAttributes{
|
||||
USB_BUS_POWERED = (1 << 7),
|
||||
SELF_POWERED = (1 << 6),
|
||||
REMOTE_WAKEUP = (1 << 5),
|
||||
};
|
||||
|
||||
|
||||
enum Endpoint_bmAttributes {
|
||||
// Bits 1..0: Transfer Type
|
||||
TRANSFER_TYPE_MASK = 0b00000011,
|
||||
TRANSFER_CONTROL = 0b00000000,
|
||||
TRANSFER_ISOCHRONOUS = 0b00000001,
|
||||
TRANSFER_BULK = 0b00000010,
|
||||
TRANSFER_INTERRUPT = 0b00000011,
|
||||
|
||||
// Bits 3..2: Synchronization Type (Isochronous Mode only)
|
||||
SYNC_TYPE_MASK = 0b00001100,
|
||||
SYNC_NOSYNC = (0b00 << 2), // No Synchronization
|
||||
SYNC_ASYNC = (0b01 << 2), // Asynchronous
|
||||
SYNC_ADAPTIVE = (0b10 << 2), // Adaptive
|
||||
SYNC_SYNCHRONOUS = (0b11 << 2), // Synchronous
|
||||
|
||||
// Bits 5..4: Usage Type (Isochronous Mode only)
|
||||
USAGE_TYPE_MASK = 0b00110000,
|
||||
USAGE_DATA = (0b00 << 4), // Data Endpoint
|
||||
USAGE_FEEDBACK = (0b01 << 4), // Feedback Endpoint
|
||||
USAGE_EXPLICIT_FEEDBACK = (0b10 << 4), // Explicit Feedback Data Endpoint
|
||||
USAGE_RESERVED = (0b11 << 4) // Reserved
|
||||
};
|
||||
|
||||
enum Setup_bmRequestType {
|
||||
// Bit 7: Data Phase Transfer Direction
|
||||
DIR_MASK = (1 << 7),
|
||||
HOST_TO_DEVICE = (0 << 7),
|
||||
DEVICE_TO_HOST = (1 << 7),
|
||||
|
||||
// Bits 6..5: Type
|
||||
TYPE_MASK = (0b11 << 5),
|
||||
TYPE_STANDARD = (0b00 << 5),
|
||||
TYPE_CLASS = (0b01 << 5),
|
||||
TYPE_VENDOR = (0b10 << 5),
|
||||
TYPE_RESERVED = (0b11 << 5),
|
||||
|
||||
// Bits 4..0: Recipient
|
||||
RECIPIENT_MASK = 0b11111,
|
||||
RECIPIENT_DEVICE = 0,
|
||||
RECIPIENT_INTERFACE = 1,
|
||||
RECIPIENT_ENDPOINT = 2,
|
||||
RECIPIENT_OTHER = 3
|
||||
};
|
||||
|
||||
|
||||
enum Standard__Device_Requests {
|
||||
GET_STATUS = 0x00,
|
||||
/**
|
||||
* GET_STATUS will reuturn a 16bit word.
|
||||
* D0 is "Self Powered" bit, if D0 == 0, then the device is powered by the bus
|
||||
* D1 is the "Remote Wakeup" bit, if D1 == 1, then the host can wake up this device from suspend
|
||||
*/
|
||||
|
||||
CLEAR_FEATURE = 0x01,
|
||||
SET_FEATURE = 0x03,
|
||||
SET_ADDRESS = 0x05,
|
||||
GET_DESCRIPTOR = 0x06,
|
||||
SET_DESCRIPTOR = 0x07,
|
||||
GET_CONFIGURATION = 0x08,
|
||||
SET_CONFIGURATION = 0x09
|
||||
};
|
||||
|
||||
enum Standard_Interface_Requests {
|
||||
GET_STATUS = 0x00,
|
||||
CLEAR_FEATURE = 0x01,
|
||||
SET_FEATURE = 0x03,
|
||||
GET_INTERFACE = 0x0A,
|
||||
SET_INTERFACE = 0x11,
|
||||
};
|
||||
|
||||
enum Standard_Endpoint_Requests {
|
||||
GET_STATUS = 0x00,
|
||||
CLEAR_FEATURE = 0x01,
|
||||
SET_FEATURE = 0x03,
|
||||
/**
|
||||
* Clear Feature and Set Feature are used to set Endpoint Features.
|
||||
* The standard currently defines one endpoint feature selector,
|
||||
* ENDPOINT_HALT (0x00) which allows the host to stall and clear an endpoint.
|
||||
*/
|
||||
SYNCH_FRAME = 0x12,
|
||||
};
|
||||
Reference in New Issue
Block a user