+#define BSB_USB_VENDOR 0x4242
+#define BSB_USB_PRODUCT 0x0003
+#define BSB_USB_VERSION 0x0100
+
+/*
+ * Endpoints:
+ *
+ * 0x00 = control endpoint
+ * Vendor-defined request 0x00 sends struct bsb_stats in little endian.
+ *
+ * 0x01 = bulk endpoint
+ * Used for sending frames to BSB. Accepts BSB frames. CRC will be calculated
+ * automatically.
+ *
+ * 0x82 = interrupt endpoint
+ * Used for receiving frames from BSB and status reports on sent frames.
+ * The first byte is a status byte (TX_RESULT_xxx), the rest is a frame.
+ * If status == TX_RESULT_NONE, the frame is a received frame.
+ * If status == TX_RESULT_OK, the frame is a received reply to the sent frame.
+ * Otherwise, the status indicates transmit error and the frame is empty.
+ */
+
+// Status sent on the interrupt endpoint
+#define BSB_TX_RESULTS \
+ P(NONE) \
+ P(OK) \
+ P(OVERRUN) \
+ P(MALFORMED) \
+ P(FORBIDDEN) \
+ P(TIMEOUT) \
+ P(TOO_MANY_RETRIES)
+