]> git.donarmstrong.com Git - kiibohd-controller.git/blobdiff - Output/pjrcUSB/arm/usb_desc.h
More work on mk20dx128vlf5 port.
[kiibohd-controller.git] / Output / pjrcUSB / arm / usb_desc.h
index 4703de7fd68e151081b8d393c98e1e5f21fc2a69..06ce7ff80f3d2f06720b87856c949877b8a21af3 100644 (file)
@@ -1,6 +1,7 @@
 /* Teensyduino Core Library
  * http://www.pjrc.com/teensy/
  * Copyright (c) 2013 PJRC.COM, LLC.
+ * Modified by Jacob Alexander (2013-2014)
  *
  * Permission is hereby granted, free of charge, to any person obtaining
  * a copy of this software and associated documentation files (the
  * permit persons to whom the Software is furnished to do so, subject to
  * the following conditions:
  *
- * 1. The above copyright notice and this permission notice shall be 
+ * 1. The above copyright notice and this permission notice shall be
  * included in all copies or substantial portions of the Software.
  *
- * 2. If the Software is incorporated into a build system that allows 
+ * 2. If the Software is incorporated into a build system that allows
  * selection among a list of target devices, then similar target
  * devices manufactured by PJRC.COM must be included in the list of
  * target devices and selectable in the same manner.
 #define ENDPOINT_RECEIVE_ONLY          0x19
 #define ENDPOINT_TRANSMIT_AND_RECEIVE  0x1D
 
-// Some operating systems, especially Windows, may cache USB device
-// info.  Changes to the device name may not update on the same
-// computer unless the vendor or product ID numbers change, or the
-// "bcdDevice" revision code is increased.
-
-#define DEVICE_CLASS           0xEF
-#define DEVICE_SUBCLASS        0x02
-#define DEVICE_PROTOCOL        0x01
-#define EP0_SIZE               64
-#define NUM_ENDPOINTS          15
-#define NUM_INTERFACE          4
-#define CDC_IAD_DESCRIPTOR     1
-#define CDC_STATUS_INTERFACE   0
-#define CDC_DATA_INTERFACE     1       // Serial
-#define CDC_ACM_ENDPOINT       2
-#define CDC_RX_ENDPOINT       3
-#define CDC_TX_ENDPOINT       4
-#define CDC_ACM_SIZE          16
-#define CDC_RX_SIZE           64
-#define CDC_TX_SIZE           64
-#define KEYBOARD_INTERFACE    2        // Keyboard
-#define KEYBOARD_ENDPOINT     1
-#define KEYBOARD_SIZE         8
-#define KEYBOARD_INTERVAL     1
-#define MOUSE_INTERFACE       3        // Mouse
-#define MOUSE_ENDPOINT        5
-#define MOUSE_SIZE            8
-#define MOUSE_INTERVAL        2
+/*
+To modify a USB Type to have different interfaces, start in this
+file.  Delete the XYZ_INTERFACE lines for any interfaces you
+wish to remove, and copy them from another USB Type for any you
+want to add.
+
+Give each interface a unique number, and edit NUM_INTERFACE to
+reflect the number of interfaces.
+
+Within each interface, make sure it uses a unique set of endpoints.
+Edit NUM_ENDPOINTS to be at least the largest endpoint number used.
+Then edit the ENDPOINT*_CONFIG lines so each endpoint is configured
+the proper way (transmit, receive, or both).
+
+The CONFIG_DESC_SIZE and any XYZ_DESC_OFFSET numbers must be
+edited to the correct sizes.  See usb_desc.c for the giant array
+of bytes.  Someday these may be done automatically..... (but how?)
+
+If you are using existing interfaces, the code in each file should
+automatically adapt to the changes you specify.  If you need to
+create a new type of interface, you'll need to write the code which
+sends and receives packets, and presents an API to the user.
+
+Finally, edit usb_inst.cpp, which creats instances of the C++
+objects for each combination.
+
+Some operating systems, especially Windows, may cache USB device
+info.  Changes to the device name may not update on the same
+computer unless the vendor or product ID numbers change, or the
+"bcdDevice" revision code is increased.
+
+If these instructions are missing steps or could be improved, please
+let me know?  http://forum.pjrc.com/forums/4-Suggestions-amp-Bug-Reports
+*/
+
+
+
+#define DEVICE_CLASS            0xEF
+#define DEVICE_SUBCLASS         0x02
+#define DEVICE_PROTOCOL         0x01
+#define EP0_SIZE                64
+#define NUM_ENDPOINTS           6
+#define NUM_USB_BUFFERS         30
+#define NUM_INTERFACE           4
+
+#define CDC_IAD_DESCRIPTOR      1
+#define CDC_STATUS_INTERFACE    0
+#define CDC_DATA_INTERFACE      1 // Serial
+#define CDC_ACM_ENDPOINT        2
+#define CDC_RX_ENDPOINT         3
+#define CDC_TX_ENDPOINT         4
+#define CDC_ACM_SIZE            16
+#define CDC_RX_SIZE             64
+#define CDC_TX_SIZE             64
+
+#define KEYBOARD_INTERFACE      2 // Keyboard
+#define KEYBOARD_ENDPOINT       1
+#define KEYBOARD_SIZE           8
+#define KEYBOARD_INTERVAL       1
+
+#define MOUSE_INTERFACE         3 // Mouse
+#define MOUSE_ENDPOINT          5
+#define MOUSE_SIZE              8
+#define MOUSE_INTERVAL          2
+
+#define JOYSTICK_INTERFACE      4 // Joystick
+#define JOYSTICK_ENDPOINT       6
+#define JOYSTICK_SIZE           16
+#define JOYSTICK_INTERVAL       1
+
 #define KEYBOARD_DESC_OFFSET   (9+8 + 9+5+5+4+5+7+9+7+7 + 9)
 #define MOUSE_DESC_OFFSET      (9+8 + 9+5+5+4+5+7+9+7+7 + 9+9+7 + 9)
-#define CONFIG_DESC_SIZE       (9+8 + 9+5+5+4+5+7+9+7+7 + 9+9+7 + 9+9+7)
+#define JOYSTICK_DESC_OFFSET   (9+8 + 9+5+5+4+5+7+9+7+7 + 9+9+7 + 9+9+7 + 9)
+#define CONFIG_DESC_SIZE       (9+8 + 9+5+5+4+5+7+9+7+7 + 9+9+7 + 9+9+7 + 9+9+7)
+
 #define ENDPOINT1_CONFIG       ENDPOINT_TRANSIMIT_ONLY
 #define ENDPOINT2_CONFIG       ENDPOINT_TRANSIMIT_ONLY
 #define ENDPOINT3_CONFIG       ENDPOINT_RECEIVE_ONLY
 #define ENDPOINT4_CONFIG       ENDPOINT_TRANSIMIT_ONLY
 #define ENDPOINT5_CONFIG       ENDPOINT_TRANSIMIT_ONLY
-
+#define ENDPOINT6_CONFIG       ENDPOINT_TRANSIMIT_ONLY
 
 
 // NUM_ENDPOINTS = number of non-zero endpoints (0 to 15)