typedef struct sUSBHost tUSBHost;
typedef struct sUSBDevice tUSBDevice;
+// === CONSTANTS ===
+enum eUSB_PIDs
+{
+ /**
+ * \name Token
+ * \{
+ */
+ PID_OUT = 0xE1,
+ PID_IN = 0x69,
+ PID_SOF = 0xA5,
+ PID_SETUP = 0x2D,
+ /**
+ * \}
+ */
+
+ /**
+ * \name Data
+ * \{
+ */
+ PID_DATA0 = 0xC3,
+ PID_DATA1 = 0x4B,
+ PID_DATA2 = 0x87, // USB2 only
+ PID_MDATA = 0x0F, // USB2 only
+ /**
+ * \}
+ */
+
+ /**
+ * \name Handshake
+ * \{
+ */
+ PID_ACK = 0xD2,
+ PID_NAK = 0x5A,
+ PID_STALL = 0x1E,
+ PID_NYET = 0x96,
+ /**
+ * \}
+ */
+
+ /**
+ * \name Special
+ * \{
+ */
+ PID_PRE = 0x3C, PID_ERR = 0x3C,
+ PID_SPLIT = 0x78,
+ PID_PING = 0xB4,
+ PID_RESVD = 0xF0,
+ /**
+ * \}
+ */
+};
+
+// === FUNCTIONS ===
+/**
+ * \note 00101 - X^5+X^2+1
+ */
+Uint8 USB_TokenCRC(void *Data, int len);
+/**
+ * \note X^16 + X15 + X^2 + 1
+ */
+Uint16 USB_TokenCRC(void *Data, int len);
+
// === STRUCTURES ===
/**
* \brief Defines a USB Host Controller