Browse Source

Cleans up quantum/keymap situation, removes extra lufa folders (#416)

* sorts out keycodes

* move midi around

* remove mbed

* replaces keymap with qmk/keymap_common

* fixes keymap.h

* keymap, config, quantum rearrange

* removes unneeded lufa stuff
Jack Humbert 9 years ago
parent
commit
db32864ce7
100 changed files with 2197 additions and 10239 deletions
  1. 2 1
      Makefile
  2. 1 1
      keyboard/arrow_pad/arrow_pad.h
  3. 1 1
      keyboard/atreus/atreus.h
  4. 1 1
      keyboard/bantam44/bantam44.h
  5. 1 1
      keyboard/clueboard1/clueboard1.h
  6. 1 1
      keyboard/clueboard2/clueboard2.h
  7. 1 1
      keyboard/cluepad/cluepad.h
  8. 1 1
      keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
  9. 1 1
      keyboard/ergodox_ez/keymaps/townk_osx/keymap.c
  10. 1 1
      keyboard/gh60/gh60.h
  11. 1 1
      keyboard/hhkb/hhkb.h
  12. 1 1
      keyboard/jd45/jd45.h
  13. 1 1
      keyboard/kc60/kc60.h
  14. 1 1
      keyboard/phantom/phantom.h
  15. 1 1
      keyboard/planck/keymaps/alexey/keymap.c
  16. 1 1
      keyboard/planck/keymaps/angerthosenear/keymap.c
  17. 1 1
      keyboard/planck/keymaps/austin/keymap.c
  18. 1 1
      keyboard/planck/keymaps/charlie/keymap.c
  19. 1 1
      keyboard/planck/keymaps/daniel/keymap.c
  20. 1 1
      keyboard/planck/keymaps/david/keymap.c
  21. 1427 1426
      keyboard/planck/keymaps/default/compiled.hex
  22. 1 1
      keyboard/planck/keymaps/dzobert/keymap.c
  23. 1 1
      keyboard/planck/keymaps/joe/keymap.c
  24. 1 1
      keyboard/planck/keymaps/kyle/keymap.c
  25. 1 1
      keyboard/planck/keymaps/leo/keymap.c
  26. 1 1
      keyboard/planck/keymaps/lucas/keymap.c
  27. 1 1
      keyboard/planck/keymaps/max/keymap.c
  28. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_brett.c
  29. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_dotcom.c
  30. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_jack.c
  31. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_joe.c
  32. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_matthew.c
  33. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c
  34. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_nathan.c
  35. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_paul.c
  36. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_peasant.c
  37. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_reed.c
  38. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_sean.c
  39. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_shane.c
  40. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_simon.c
  41. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_tim.c
  42. 1 1
      keyboard/planck/old_keymap_files/common_keymaps/keymap_wilba.c
  43. 1 1
      keyboard/planck/old_keymap_files/keymap_common.c
  44. 1 1
      keyboard/retro_refit/retro_refit.h
  45. 1 1
      keyboard/satan/satan.h
  46. 1 1
      quantum/audio/audio.c
  47. 1 1
      quantum/audio/audio_pwm.c
  48. 74 0
      quantum/keycode_config.c
  49. 21 0
      quantum/keycode_config.h
  50. 163 0
      quantum/keymap.c
  51. 315 0
      quantum/keymap.h
  52. 0 323
      quantum/keymap_common.c
  53. 0 292
      quantum/keymap_common.h
  54. 1 1
      quantum/keymap_extras/keymap_bepo.h
  55. 1 1
      quantum/keymap_extras/keymap_colemak.h
  56. 1 1
      quantum/keymap_extras/keymap_dvorak.h
  57. 1 1
      quantum/keymap_extras/keymap_fr_ch.h
  58. 1 1
      quantum/keymap_extras/keymap_french.h
  59. 1 1
      quantum/keymap_extras/keymap_french_osx.h
  60. 1 1
      quantum/keymap_extras/keymap_german.h
  61. 1 1
      quantum/keymap_extras/keymap_german_ch.h
  62. 1 1
      quantum/keymap_extras/keymap_german_osx.h
  63. 1 1
      quantum/keymap_extras/keymap_neo2.h
  64. 1 1
      quantum/keymap_extras/keymap_nordic.h
  65. 1 1
      quantum/keymap_extras/keymap_plover.h
  66. 1 1
      quantum/keymap_extras/keymap_spanish.h
  67. 1 1
      quantum/keymap_extras/keymap_uk.h
  68. 1 1
      quantum/keymap_midi.c
  69. 124 59
      quantum/quantum.c
  70. 9 4
      quantum/quantum.h
  71. 1 1
      quantum/template/template.h
  72. 0 1
      tmk_core/common.mk
  73. 0 193
      tmk_core/common/keymap.c
  74. 0 68
      tmk_core/common/keymap.h
  75. 1 5
      tmk_core/protocol/lufa.mk
  76. 0 274
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.c
  77. 0 94
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.h
  78. 0 92
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.txt
  79. 0 51
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Config/AppConfig.h
  80. 0 93
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Config/LUFAConfig.h
  81. 0 312
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Descriptors.c
  82. 0 106
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Descriptors.h
  83. 0 52
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/asf.xml
  84. 0 2364
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/doxyfile
  85. 0 38
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/makefile
  86. 0 311
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c
  87. 0 87
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
  88. 0 92
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt
  89. 0 50
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Config/AppConfig.h
  90. 0 93
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Config/LUFAConfig.h
  91. 0 312
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Descriptors.c
  92. 0 106
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Descriptors.h
  93. 0 50
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/asf.xml
  94. 0 2364
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/doxyfile
  95. 0 38
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/makefile
  96. 0 126
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Config/LUFAConfig.h
  97. 0 366
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Descriptors.c
  98. 0 124
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Descriptors.h
  99. 0 211
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/DualMIDI.c
  100. 0 0
      tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/DualMIDI.h

+ 2 - 1
Makefile

@@ -80,7 +80,8 @@ endif
 SRC += $(KEYBOARD_FILE) \
 	$(KEYMAP_FILE) \
 	$(QUANTUM_DIR)/quantum.c \
-	$(QUANTUM_DIR)/keymap_common.c \
+	$(QUANTUM_DIR)/keymap.c \
+	$(QUANTUM_DIR)/keycode_config.c \
 	$(QUANTUM_DIR)/led.c
 
 ifndef CUSTOM_MATRIX

+ 1 - 1
keyboard/arrow_pad/arrow_pad.h

@@ -2,7 +2,7 @@
 #define ARROW_PAD_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #ifdef BACKLIGHT_ENABLE
 	#include "backlight.h"
 #endif

+ 1 - 1
keyboard/atreus/atreus.h

@@ -2,7 +2,7 @@
 #define ATREUS_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "backlight.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/bantam44/bantam44.h

@@ -2,7 +2,7 @@
 #define BANTAM44_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "backlight.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/clueboard1/clueboard1.h

@@ -2,7 +2,7 @@
 #define CLUEBOARD1_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include <stddef.h>
 
 

+ 1 - 1
keyboard/clueboard2/clueboard2.h

@@ -2,7 +2,7 @@
 #define CLUEBOARD2_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include <stddef.h>
 
 

+ 1 - 1
keyboard/cluepad/cluepad.h

@@ -2,7 +2,7 @@
 #define CLUEPAD_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include <stddef.h>
 
 

+ 1 - 1
keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c

@@ -1,6 +1,6 @@
 #include "ergodox_ez.h"
 #include "action_layer.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "keymap_extras/keymap_german.h"
 
 #define UC_ASYMPTOTICALLY_EQUAL_TO 0

+ 1 - 1
keyboard/ergodox_ez/keymaps/townk_osx/keymap.c

@@ -3,7 +3,7 @@
 #include "action_layer.h"
 #include "action_util.h"
 #include "led.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "timer.h"
 
 /*

+ 1 - 1
keyboard/gh60/gh60.h

@@ -2,7 +2,7 @@
 #define GH60_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "backlight.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/hhkb/hhkb.h

@@ -2,7 +2,7 @@
 #define HHKB_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 //#include "backlight.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/jd45/jd45.h

@@ -2,7 +2,7 @@
 #define JD45_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "backlight.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/kc60/kc60.h

@@ -2,7 +2,7 @@
 #define KC60_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #ifdef BACKLIGHT_ENABLE
 #include "backlight.h"
 #endif

+ 1 - 1
keyboard/phantom/phantom.h

@@ -2,7 +2,7 @@
 #define PHANTOM_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include <stddef.h>
 
 

+ 1 - 1
keyboard/planck/keymaps/alexey/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 #include "planck.h"
 #include "backlight.h"
 

+ 1 - 1
keyboard/planck/keymaps/angerthosenear/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/keymaps/austin/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/keymaps/charlie/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [0] = { /* Native */

+ 1 - 1
keyboard/planck/keymaps/daniel/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/keymaps/david/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

File diff suppressed because it is too large
+ 1427 - 1426
keyboard/planck/keymaps/default/compiled.hex


+ 1 - 1
keyboard/planck/keymaps/dzobert/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/keymaps/joe/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 #include "keymap_colemak.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

+ 1 - 1
keyboard/planck/keymaps/kyle/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/keymaps/leo/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* BASE */

+ 1 - 1
keyboard/planck/keymaps/lucas/keymap.c

@@ -8,7 +8,7 @@ The "Gaming" layer is mainly customized for CS:GO.
 If you have any question about this keymap feel free to shoot me a message on reddit!
 */
 
-#include "keymap_common.h"
+#include "keymap.h"
 #include "keymap_extras/keymap_german.h"
 #include "backlight.h"
 #include "debug.h"

+ 1 - 1
keyboard/planck/keymaps/max/keymap.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = { /* Qwerty */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_brett.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( 

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_dotcom.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( 

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_jack.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( /* Jack */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_joe.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( /* Joe qwerty */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_matthew.c

@@ -20,7 +20,7 @@
 `-----------------------------------------------------------------------------------------------'
 */
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   /* 0: dvorak */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP(

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_nathan.c

@@ -1,7 +1,7 @@
 // Author: Nathan Ross Powell <nathanrospowell@gmail.com>
 // https://github.com/nathanrosspowell/tmk_keyboard/blob/planck-jack/keyboard/planck/keymap_nathan.c
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* 0: main layer

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_paul.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( /* Paul */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_peasant.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [0] = KEYMAP( /* Native */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_reed.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 /*
  * BUILD:

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_sean.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [0] = KEYMAP( /* Matrix Dvorak */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_shane.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 #include "action_layer.h"
 #include "action.h"
 #include "action_util.h"

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_simon.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( /* Jack */

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_tim.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP(

+ 1 - 1
keyboard/planck/old_keymap_files/common_keymaps/keymap_wilba.c

@@ -1,4 +1,4 @@
-#include "keymap_common.h"
+#include "keymap.h"
 
 const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [0] = KEYMAP( /* Wilba */

+ 1 - 1
keyboard/planck/old_keymap_files/keymap_common.c

@@ -14,7 +14,7 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include "keymap_common.h"
+#include "keymap.h"
 
 
 /* translates key to keycode */

+ 1 - 1
keyboard/retro_refit/retro_refit.h

@@ -2,7 +2,7 @@
 #define RETRO_REFIT_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include "led.h"
 #include <stddef.h>
 

+ 1 - 1
keyboard/satan/satan.h

@@ -2,7 +2,7 @@
 #define SATAN_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #include <stddef.h>
 
 

+ 1 - 1
quantum/audio/audio.c

@@ -6,7 +6,7 @@
 #include <avr/io.h>
 #include "print.h"
 #include "audio.h"
-#include "keymap_common.h"
+#include "keymap.h"
 
 #include "eeconfig.h"
 

+ 1 - 1
quantum/audio/audio_pwm.c

@@ -6,7 +6,7 @@
 #include <avr/io.h>
 #include "print.h"
 #include "audio.h"
-#include "keymap_common.h"
+#include "keymap.h"
 
 #include "eeconfig.h"
 

+ 74 - 0
quantum/keycode_config.c

@@ -0,0 +1,74 @@
+#include "keycode_config.h"
+
+extern keymap_config_t keymap_config;
+
+uint16_t keycode_config(uint16_t keycode) {
+
+    switch (keycode) {
+        case KC_CAPSLOCK:
+        case KC_LOCKING_CAPS:
+            if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
+                return KC_LCTL;
+            }
+            return keycode;
+        case KC_LCTL:
+            if (keymap_config.swap_control_capslock) {
+                return KC_CAPSLOCK;
+            }
+            return KC_LCTL;
+        case KC_LALT:
+            if (keymap_config.swap_lalt_lgui) {
+                if (keymap_config.no_gui) {
+                    return KC_NO;
+                }
+                return KC_LGUI;
+            }
+            return KC_LALT;
+        case KC_LGUI:
+            if (keymap_config.swap_lalt_lgui) {
+                return KC_LALT;
+            }
+            if (keymap_config.no_gui) {
+                return KC_NO;
+            }
+            return KC_LGUI;
+        case KC_RALT:
+            if (keymap_config.swap_ralt_rgui) {
+                if (keymap_config.no_gui) {
+                    return KC_NO;
+                }
+                return KC_RGUI;
+            }
+            return KC_RALT;
+        case KC_RGUI:
+            if (keymap_config.swap_ralt_rgui) {
+                return KC_RALT;
+            }
+            if (keymap_config.no_gui) {
+                return KC_NO;
+            }
+            return KC_RGUI;
+        case KC_GRAVE:
+            if (keymap_config.swap_grave_esc) {
+                return KC_ESC;
+            }
+            return KC_GRAVE;
+        case KC_ESC:
+            if (keymap_config.swap_grave_esc) {
+                return KC_GRAVE;
+            }
+            return KC_ESC;
+        case KC_BSLASH:
+            if (keymap_config.swap_backslash_backspace) {
+                return KC_BSPACE;
+            }
+            return KC_BSLASH;
+        case KC_BSPACE:
+            if (keymap_config.swap_backslash_backspace) {
+                return KC_BSLASH;
+            }
+            return KC_BSPACE;
+        default:
+            return keycode;
+    }
+}

+ 21 - 0
quantum/keycode_config.h

@@ -0,0 +1,21 @@
+#include "eeconfig.h"
+#include "keycode.h"
+
+uint16_t keycode_config(uint16_t keycode);
+
+/* NOTE: Not portable. Bit field order depends on implementation */
+typedef union {
+    uint16_t raw;
+    struct {
+        bool swap_control_capslock:1;
+        bool capslock_to_control:1;
+        bool swap_lalt_lgui:1;
+        bool swap_ralt_rgui:1;
+        bool no_gui:1;
+        bool swap_grave_esc:1;
+        bool swap_backslash_backspace:1;
+        bool nkro:1;
+    };
+} keymap_config_t;
+
+keymap_config_t keymap_config;

+ 163 - 0
quantum/keymap.c

@@ -0,0 +1,163 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "keymap.h"
+#include "report.h"
+#include "keycode.h"
+#include "action_layer.h"
+#include <util/delay.h>
+#include "action.h"
+#include "action_macro.h"
+#include "debug.h"
+#include "backlight.h"
+#include "quantum.h"
+
+#ifdef MIDI_ENABLE
+	#include "keymap_midi.h"
+#endif
+
+extern keymap_config_t keymap_config;
+
+#include <stdio.h>
+#include <inttypes.h>
+
+/* converts key to action */
+action_t action_for_key(uint8_t layer, keypos_t key)
+{
+    // 16bit keycodes - important
+    uint16_t keycode = keymap_key_to_keycode(layer, key);
+
+    // keycode remapping
+    keycode = keycode_config(keycode);
+
+    action_t action;
+    uint8_t action_layer, when, mod;
+
+    switch (keycode) {
+        case KC_FN0 ... KC_FN31:
+            action.code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]);
+            break;
+        case KC_A ... KC_EXSEL:
+        case KC_LCTRL ... KC_RGUI:
+            action.code = ACTION_KEY(keycode);
+            break;
+        case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
+            action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
+            break;
+        case KC_AUDIO_MUTE ... KC_WWW_FAVORITES:
+            action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
+            break;
+        case KC_MS_UP ... KC_MS_ACCEL2:
+            action.code = ACTION_MOUSEKEY(keycode);
+            break;
+        case KC_TRNS:
+            action.code = ACTION_TRANSPARENT;
+            break;
+        case QK_MODS ... QK_MODS_MAX: ;
+            // Has a modifier
+            // Split it up
+            action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key
+            break;
+        case QK_FUNCTION ... QK_FUNCTION_MAX: ;
+            // Is a shortcut for function action_layer, pull last 12bits
+            // This means we have 4,096 FN macros at our disposal
+            action.code = pgm_read_word(&fn_actions[(int)keycode & 0xFFF]);
+            break;
+        case QK_MACRO ... QK_MACRO_MAX:
+            action.code = ACTION_MACRO(keycode & 0xFF);
+            break;
+        case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+            action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
+            break;
+        case QK_TO ... QK_TO_MAX: ;
+            // Layer set "GOTO"
+            when = (keycode >> 0x4) & 0x3;
+            action_layer = keycode & 0xF;
+            action.code = ACTION_LAYER_SET(action_layer, when);
+            break;
+        case QK_MOMENTARY ... QK_MOMENTARY_MAX: ;
+            // Momentary action_layer
+            action_layer = keycode & 0xFF;
+            action.code = ACTION_LAYER_MOMENTARY(action_layer);
+            break;
+        case QK_DEF_LAYER ... QK_DEF_LAYER_MAX: ;
+            // Set default action_layer
+            action_layer = keycode & 0xFF;
+            action.code = ACTION_DEFAULT_LAYER_SET(action_layer);
+            break;
+        case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX: ;
+            // Set toggle
+            action_layer = keycode & 0xFF;
+            action.code = ACTION_LAYER_TOGGLE(action_layer);
+            break;
+        case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX: ;
+            // OSL(action_layer) - One-shot action_layer
+            action_layer = keycode & 0xFF;
+            action.code = ACTION_LAYER_ONESHOT(action_layer);
+            break;
+        case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX: ;
+            // OSM(mod) - One-shot mod
+            mod = keycode & 0xFF;
+            action.code = ACTION_MODS_ONESHOT(mod);
+            break;
+        case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+            action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
+            break;
+    #ifdef BACKLIGHT_ENABLE
+        case BL_0 ... BL_15:
+            action.code = ACTION_BACKLIGHT_LEVEL(keycode - BL_0);
+            break;
+        case BL_DEC:
+            action.code = ACTION_BACKLIGHT_DECREASE();
+            break;
+        case BL_INC:
+            action.code = ACTION_BACKLIGHT_INCREASE();
+            break;
+        case BL_TOGG:
+            action.code = ACTION_BACKLIGHT_TOGGLE();
+            break;
+        case BL_STEP:
+            action.code = ACTION_BACKLIGHT_STEP();
+            break;
+    #endif
+        default:
+            action.code = ACTION_NO;
+            break;
+    }
+    return action;
+}
+
+
+/* Macro */
+__attribute__ ((weak))
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    return MACRO_NONE;
+}
+
+/* Function */
+__attribute__ ((weak))
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+}
+
+/* translates key to keycode */
+uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
+{
+    // Read entire word (16bits)
+    return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
+}

+ 315 - 0
quantum/keymap.h

@@ -0,0 +1,315 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef KEYMAP_H
+#define KEYMAP_H
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "action.h"
+#include <avr/pgmspace.h>
+#include "keycode.h"
+#include "action_macro.h"
+#include "report.h"
+#include "host.h"
+// #include "print.h"
+#include "debug.h"
+#include "keycode_config.h"
+
+/* translates key to keycode */
+uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
+
+/* translates Fn keycode to action */
+action_t keymap_fn_to_action(uint16_t keycode);
+
+extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
+extern const uint16_t fn_actions[];
+
+enum quantum_keycodes {
+    // Ranges used in shortucuts - not to be used directly
+    QK_TMK                = 0x0000,
+    QK_TMK_MAX            = 0x00FF,
+    QK_MODS               = 0x0100,
+    QK_LCTL               = 0x0100,
+    QK_LSFT               = 0x0200,
+    QK_LALT               = 0x0400,
+    QK_LGUI               = 0x0800,
+    QK_RCTL               = 0x1100,
+    QK_RSFT               = 0x1200,
+    QK_RALT               = 0x1400,
+    QK_RGUI               = 0x1800,
+    QK_MODS_MAX           = 0x1FFF,
+    QK_FUNCTION           = 0x2000,
+    QK_FUNCTION_MAX       = 0x2FFF,
+    QK_MACRO              = 0x3000,
+    QK_MACRO_MAX          = 0x3FFF,
+    QK_LAYER_TAP          = 0x4000,
+    QK_LAYER_TAP_MAX      = 0x4FFF,
+    QK_TO                 = 0x5000,
+    QK_TO_MAX             = 0x50FF,
+    QK_MOMENTARY          = 0x5100,
+    QK_MOMENTARY_MAX      = 0x51FF,
+    QK_DEF_LAYER          = 0x5200,
+    QK_DEF_LAYER_MAX      = 0x52FF,
+    QK_TOGGLE_LAYER       = 0x5300,
+    QK_TOGGLE_LAYER_MAX   = 0x53FF,
+    QK_ONE_SHOT_LAYER     = 0x5400,
+    QK_ONE_SHOT_LAYER_MAX = 0x54FF,
+    QK_ONE_SHOT_MOD       = 0x5500,
+    QK_ONE_SHOT_MOD_MAX   = 0x55FF,
+#ifndef DISABLE_CHORDING
+    QK_CHORDING           = 0x5600,
+    QK_CHORDING_MAX       = 0x56FF,
+#endif
+    QK_MOD_TAP            = 0x6000,
+    QK_MOD_TAP_MAX        = 0x6FFF,
+#ifdef UNICODE_ENABLE
+    QK_UNICODE            = 0x8000,
+    QK_UNICODE_MAX        = 0xFFFF,
+#endif
+
+    // Loose keycodes - to be used directly
+
+    RESET = 0x7000,
+    DEBUG,
+    MAGIC_SWAP_CONTROL_CAPSLOCK,
+    MAGIC_CAPSLOCK_TO_CONTROL,
+    MAGIC_SWAP_LALT_LGUI,
+    MAGIC_SWAP_RALT_RGUI,
+    MAGIC_NO_GUI,
+    MAGIC_SWAP_GRAVE_ESC,
+    MAGIC_SWAP_BACKSLASH_BACKSPACE,
+    MAGIC_HOST_NKRO,
+    MAGIC_SWAP_ALT_GUI,
+    MAGIC_UNSWAP_CONTROL_CAPSLOCK,
+    MAGIC_UNCAPSLOCK_TO_CONTROL,
+    MAGIC_UNSWAP_LALT_LGUI,
+    MAGIC_UNSWAP_RALT_RGUI,
+    MAGIC_UNNO_GUI,
+    MAGIC_UNSWAP_GRAVE_ESC,
+    MAGIC_UNSWAP_BACKSLASH_BACKSPACE,
+    MAGIC_UNHOST_NKRO,
+    MAGIC_UNSWAP_ALT_GUI,
+
+    // Leader key
+#ifndef DISABLE_LEADER
+    KC_LEAD,
+#endif
+
+    // Audio on/off/toggle
+    AU_ON,
+    AU_OFF,
+    AU_TOG,
+
+    // Music mode on/off/toggle
+    MU_ON,
+    MU_OFF,
+    MU_TOG,
+
+    // Music voice iterate
+    MUV_IN,
+    MUV_DE,
+
+    // Midi mode on/off
+    MI_ON,
+    MI_OFF,
+
+    // Backlight functionality
+    BL_0,
+    BL_1,
+    BL_2,
+    BL_3,
+    BL_4,
+    BL_5,
+    BL_6,
+    BL_7,
+    BL_8,
+    BL_9,
+    BL_10,
+    BL_11,
+    BL_12,
+    BL_13,
+    BL_14,
+    BL_15,
+    BL_DEC,
+    BL_INC,
+    BL_TOGG,
+    BL_STEP,
+
+    // Left shift, open paren
+    KC_LSPO,
+
+    // Right shift, close paren
+    KC_RSPC,
+};
+
+// Ability to use mods in layouts
+#define LCTL(kc) (kc | QK_LCTL)
+#define LSFT(kc) (kc | QK_LSFT)
+#define LALT(kc) (kc | QK_LALT)
+#define LGUI(kc) (kc | QK_LGUI)
+#define RCTL(kc) (kc | QK_RCTL)
+#define RSFT(kc) (kc | QK_RSFT)
+#define RALT(kc) (kc | QK_RALT)
+#define RGUI(kc) (kc | QK_RGUI)
+
+#define HYPR(kc) (kc | QK_LCTL | QK_LSFT | QK_LALT | QK_LGUI)
+#define MEH(kc)  (kc | QK_LCTL | QK_LSFT | QK_LALT)
+#define LCAG(kc) (kc | QK_LCTL | QK_LALT | QK_LGUI)
+
+#define MOD_HYPR 0xf
+#define MOD_MEH 0x7
+
+
+// Aliases for shifted symbols
+// Each key has a 4-letter code, and some have longer aliases too.
+// While the long aliases are descriptive, the 4-letter codes
+// make for nicer grid layouts (everything lines up), and are
+// the preferred style for Quantum.
+#define KC_TILD LSFT(KC_GRV)    // ~
+#define KC_TILDE    KC_TILD
+
+#define KC_EXLM LSFT(KC_1)      // !
+#define KC_EXCLAIM  KC_EXLM
+
+#define KC_AT   LSFT(KC_2)      // @
+
+#define KC_HASH LSFT(KC_3)      // #
+
+#define KC_DLR  LSFT(KC_4)      // $
+#define KC_DOLLAR   KC_DLR
+
+#define KC_PERC LSFT(KC_5)      // %
+#define KC_PERCENT  KC_PERC
+
+#define KC_CIRC LSFT(KC_6)      // ^
+#define KC_CIRCUMFLEX   KC_CIRC
+
+#define KC_AMPR LSFT(KC_7)      // &
+#define KC_AMPERSAND    KC_AMPR
+
+#define KC_ASTR LSFT(KC_8)      // *
+#define KC_ASTERISK KC_ASTR
+
+#define KC_LPRN LSFT(KC_9)      // (
+#define KC_LEFT_PAREN   KC_LPRN
+
+#define KC_RPRN LSFT(KC_0)      // )
+#define KC_RIGHT_PAREN  KC_RPRN
+
+#define KC_UNDS LSFT(KC_MINS)   // _
+#define KC_UNDERSCORE   KC_UNDS
+
+#define KC_PLUS LSFT(KC_EQL)    // +
+
+#define KC_LCBR LSFT(KC_LBRC)   // {
+#define KC_LEFT_CURLY_BRACE KC_LCBR
+
+#define KC_RCBR LSFT(KC_RBRC)   // }
+#define KC_RIGHT_CURLY_BRACE    KC_RCBR
+
+#define KC_LABK LSFT(KC_COMM)   // <
+#define KC_LEFT_ANGLE_BRACKET   KC_LABK
+
+#define KC_RABK LSFT(KC_DOT)    // >
+#define KC_RIGHT_ANGLE_BRACKET  KC_RABK
+
+#define KC_COLN LSFT(KC_SCLN)   // :
+#define KC_COLON    KC_COLN
+
+#define KC_PIPE LSFT(KC_BSLS)   // |
+
+#define KC_LT LSFT(KC_COMM)     // <
+
+#define KC_GT LSFT(KC_DOT)      // >
+
+#define KC_QUES LSFT(KC_SLSH)   // ?
+#define KC_QUESTION KC_QUES
+
+#define KC_DQT LSFT(KC_QUOT)   // "
+#define KC_DOUBLE_QUOTE KC_DQT
+#define KC_DQUO KC_DQT
+
+#define KC_DELT KC_DELETE // Del key (four letter code)
+
+// Alias for function layers than expand past FN31
+#define FUNC(kc) (kc | QK_FUNCTION)
+
+// Aliases
+#define S(kc) LSFT(kc)
+#define F(kc) FUNC(kc)
+
+#define M(kc) (kc | QK_MACRO)
+
+#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
+
+// L-ayer, T-ap - 256 keycode max, 16 layer max
+#define LT(layer, kc) (kc | QK_LAYER_TAP | ((layer & 0xF) << 8))
+
+#define AG_SWAP MAGIC_SWAP_ALT_GUI
+#define AG_NORM MAGIC_UNSWAP_ALT_GUI
+
+#define BL_ON  BL_9
+#define BL_OFF BL_0
+
+// GOTO layer - 16 layers max
+// when:
+// ON_PRESS    = 1
+// ON_RELEASE  = 2
+// Unless you have a good reason not to do so, prefer  ON_PRESS (1) as your default.
+#define TO(layer, when) (layer | QK_TO | (when << 0x4))
+
+// Momentary switch layer - 256 layer max
+#define MO(layer) (layer | QK_MOMENTARY)
+
+// Set default layer - 256 layer max
+#define DF(layer) (layer | QK_DEF_LAYER)
+
+// Toggle to layer - 256 layer max
+#define TG(layer) (layer | QK_TOGGLE_LAYER)
+
+// One-shot layer - 256 layer max
+#define OSL(layer) (layer | QK_ONE_SHOT_LAYER)
+
+// One-shot mod
+#define OSM(layer) (layer | QK_ONE_SHOT_MOD)
+
+// M-od, T-ap - 256 keycode max
+#define MT(mod, kc) (kc | QK_MOD_TAP | ((mod & 0xF) << 8))
+#define CTL_T(kc) MT(MOD_LCTL, kc)
+#define SFT_T(kc) MT(MOD_LSFT, kc)
+#define ALT_T(kc) MT(MOD_LALT, kc)
+#define GUI_T(kc) MT(MOD_LGUI, kc)
+#define C_S_T(kc) MT(MOD_LCTL | MOD_LSFT, kc) // Control + Shift e.g. for gnome-terminal
+#define MEH_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT, kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
+#define LCAG_T(kc) MT(MOD_LCTL | MOD_LALT | MOD_LGUI, kc) // Left control alt and gui
+#define ALL_T(kc) MT(MOD_LCTL | MOD_LSFT | MOD_LALT | MOD_LGUI, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
+
+// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
+#define KC_HYPR HYPR(KC_NO)
+#define KC_MEH  MEH(KC_NO)
+
+#ifdef UNICODE_ENABLE
+    // For sending unicode codes.
+    // You may not send codes over 7FFF -- this supports most of UTF8.
+    // To have a key that sends out Œ, go UC(0x0152)
+    #define UNICODE(n) (n | QK_UNICODE)
+    #define UC(n) UNICODE(n)
+#endif
+
+
+#endif

+ 0 - 323
quantum/keymap_common.c

@@ -1,323 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "keymap_common.h"
-#include "report.h"
-#include "keycode.h"
-#include "action_layer.h"
-#include <util/delay.h>
-#include "action.h"
-#include "action_macro.h"
-#include "debug.h"
-#include "backlight.h"
-#include "bootloader.h"
-#include "eeconfig.h"
-#include "quantum.h"
-
-#ifdef MIDI_ENABLE
-	#include "keymap_midi.h"
-#endif
-
-extern keymap_config_t keymap_config;
-
-#include <stdio.h>
-#include <inttypes.h>
-#ifdef AUDIO_ENABLE
-    #include "audio.h"
-#endif /* AUDIO_ENABLE */
-
-static action_t keycode_to_action(uint16_t keycode);
-
-/* converts key to action */
-action_t action_for_key(uint8_t layer, keypos_t key)
-{
-    // 16bit keycodes - important
-    uint16_t keycode = keymap_key_to_keycode(layer, key);
-
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            return keymap_fn_to_action(keycode);
-        case KC_CAPSLOCK:
-        case KC_LOCKING_CAPS:
-            if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
-                return keycode_to_action(KC_LCTL);
-            }
-            return keycode_to_action(keycode);
-        case KC_LCTL:
-            if (keymap_config.swap_control_capslock) {
-                return keycode_to_action(KC_CAPSLOCK);
-            }
-            return keycode_to_action(KC_LCTL);
-        case KC_LALT:
-            if (keymap_config.swap_lalt_lgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_LGUI);
-            }
-            return keycode_to_action(KC_LALT);
-        case KC_LGUI:
-            if (keymap_config.swap_lalt_lgui) {
-                return keycode_to_action(KC_LALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_LGUI);
-        case KC_RALT:
-            if (keymap_config.swap_ralt_rgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_RGUI);
-            }
-            return keycode_to_action(KC_RALT);
-        case KC_RGUI:
-            if (keymap_config.swap_ralt_rgui) {
-                return keycode_to_action(KC_RALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_RGUI);
-        case KC_GRAVE:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_ESC);
-            }
-            return keycode_to_action(KC_GRAVE);
-        case KC_ESC:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_GRAVE);
-            }
-            return keycode_to_action(KC_ESC);
-        case KC_BSLASH:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSPACE);
-            }
-            return keycode_to_action(KC_BSLASH);
-        case KC_BSPACE:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSLASH);
-            }
-            return keycode_to_action(KC_BSPACE);
-        default:
-            return keycode_to_action(keycode);
-    }
-}
-
-
-/* Macro */
-__attribute__ ((weak))
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    return MACRO_NONE;
-}
-
-/* Function */
-__attribute__ ((weak))
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-}
-
-/* translates keycode to action */
-static action_t keycode_to_action(uint16_t keycode)
-{
-    action_t action;
-    switch (keycode) {
-        case KC_A ... KC_EXSEL:
-        case KC_LCTRL ... KC_RGUI:
-            action.code = ACTION_KEY(keycode);
-            break;
-        case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
-            action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
-            break;
-        case KC_AUDIO_MUTE ... KC_WWW_FAVORITES:
-            action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
-            break;
-        case KC_MS_UP ... KC_MS_ACCEL2:
-            action.code = ACTION_MOUSEKEY(keycode);
-            break;
-        case KC_TRNS:
-            action.code = ACTION_TRANSPARENT;
-            break;
-        case LCTL(0) ... 0x1FFF: ;
-            // Has a modifier
-            // Split it up
-            action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF); // adds modifier to key
-            break;
-        case FUNC(0) ... FUNC(0xFFF): ;
-            // Is a shortcut for function layer, pull last 12bits
-            // This means we have 4,096 FN macros at our disposal
-            return keymap_func_to_action(keycode & 0xFFF);
-            break;
-        case M(0) ... M(0xFF):
-            action.code = ACTION_MACRO(keycode & 0xFF);
-            break;
-        case LT(0, 0) ... LT(0xFF, 0xF):
-            action.code = ACTION_LAYER_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
-            break;
-    #ifdef BACKLIGHT_ENABLE
-        case BL_0 ... BL_15:
-            action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
-            break;
-        case BL_DEC:
-            action.code = ACTION_BACKLIGHT_DECREASE();
-            break;
-        case BL_INC:
-            action.code = ACTION_BACKLIGHT_INCREASE();
-            break;
-        case BL_TOGG:
-            action.code = ACTION_BACKLIGHT_TOGGLE();
-            break;
-        case BL_STEP:
-            action.code = ACTION_BACKLIGHT_STEP();
-            break;
-    #endif
-        case RESET: ; // RESET is 0x5000, which is why this is here
-            clear_keyboard();
-            #ifdef AUDIO_ENABLE
-                stop_all_notes();
-                shutdown_user();
-            #endif
-            _delay_ms(250);
-            #ifdef ATREUS_ASTAR
-                *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
-            #endif
-            bootloader_jump();
-            break;
-        case DEBUG: ; // DEBUG is 0x5001
-            print("\nDEBUG: enabled.\n");
-            debug_enable = true;
-            break;
-        case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI:
-            // MAGIC actions (BOOTMAGIC without the boot)
-            if (!eeconfig_is_enabled()) {
-                eeconfig_init();
-            }
-            /* keymap config */
-            keymap_config.raw = eeconfig_read_keymap();
-            if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) {
-                keymap_config.swap_control_capslock = 1;
-            } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) {
-                keymap_config.capslock_to_control = 1;
-            } else if (keycode == MAGIC_SWAP_LALT_LGUI) {
-                keymap_config.swap_lalt_lgui = 1;
-            } else if (keycode == MAGIC_SWAP_RALT_RGUI) {
-                keymap_config.swap_ralt_rgui = 1;
-            } else if (keycode == MAGIC_NO_GUI) {
-                keymap_config.no_gui = 1;
-            } else if (keycode == MAGIC_SWAP_GRAVE_ESC) {
-                keymap_config.swap_grave_esc = 1;
-            } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) {
-                keymap_config.swap_backslash_backspace = 1;
-            } else if (keycode == MAGIC_HOST_NKRO) {
-                keymap_config.nkro = 1;
-            } else if (keycode == MAGIC_SWAP_ALT_GUI) {
-                keymap_config.swap_lalt_lgui = 1;
-                keymap_config.swap_ralt_rgui = 1;
-            }
-            /* UNs */
-            else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) {
-                keymap_config.swap_control_capslock = 0;
-            } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) {
-                keymap_config.capslock_to_control = 0;
-            } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) {
-                keymap_config.swap_lalt_lgui = 0;
-            } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) {
-                keymap_config.swap_ralt_rgui = 0;
-            } else if (keycode == MAGIC_UNNO_GUI) {
-                keymap_config.no_gui = 0;
-            } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) {
-                keymap_config.swap_grave_esc = 0;
-            } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) {
-                keymap_config.swap_backslash_backspace = 0;
-            } else if (keycode == MAGIC_UNHOST_NKRO) {
-                keymap_config.nkro = 0;
-            } else if (keycode == MAGIC_UNSWAP_ALT_GUI) {
-                keymap_config.swap_lalt_lgui = 0;
-                keymap_config.swap_ralt_rgui = 0;
-            }
-            eeconfig_update_keymap(keymap_config.raw);
-            break;
-        case TO(0, 1) ... OSM(0xFF): ;
-            // Layer movement shortcuts
-            // See .h to see constraints/usage
-            int type = (keycode >> 0x8) & 0xF;
-            if (type == 0x1) {
-                // Layer set "GOTO"
-                int when = (keycode >> 0x4) & 0x3;
-                int layer = keycode & 0xF;
-                action.code = ACTION_LAYER_SET(layer, when);
-            } else if (type == 0x2) {
-                // Momentary layer
-                int layer = keycode & 0xFF;
-                action.code = ACTION_LAYER_MOMENTARY(layer);
-            } else if (type == 0x3) {
-                // Set default layer
-                int layer = keycode & 0xFF;
-                action.code = ACTION_DEFAULT_LAYER_SET(layer);
-            } else if (type == 0x4) {
-                // Set default layer
-                int layer = keycode & 0xFF;
-                action.code = ACTION_LAYER_TOGGLE(layer);
-            } else if (type == 0x5) {
-                // OSL(layer) - One-shot layer
-                int layer = keycode & 0xFF;
-                action.code = ACTION_LAYER_ONESHOT(layer);
-            } else if (type == 0x6) {
-                // OSM(mod) - One-shot mod
-                int mod = keycode & 0xFF;
-                action.code = ACTION_MODS_ONESHOT(mod);
-            }
-            break;
-        case MT(0, 0) ... MT(0xF, 0xFF):
-            action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF);
-            break;
-        default:
-            action.code = ACTION_NO;
-            break;
-    }
-    return action;
-}
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
-{
-    // Read entire word (16bits)
-    return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
-}
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode)
-{
-    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
-}
-
-action_t keymap_func_to_action(uint16_t keycode)
-{
-    // For FUNC without 8bit limit
-    return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
-}
-
-void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
-  if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
-    layer_on(layer3);
-  } else {
-    layer_off(layer3);
-  }
-}

+ 0 - 292
quantum/keymap_common.h

@@ -1,292 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_H
-#define KEYMAP_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "action.h"
-#include <avr/pgmspace.h>
-#include "keycode.h"
-#include "keymap.h"
-#include "action_macro.h"
-#include "report.h"
-#include "host.h"
-// #include "print.h"
-#include "debug.h"
-
-/* NOTE: Not portable. Bit field order depends on implementation */
-typedef union {
-    uint16_t raw;
-    struct {
-        bool swap_control_capslock:1;
-        bool capslock_to_control:1;
-        bool swap_lalt_lgui:1;
-        bool swap_ralt_rgui:1;
-        bool no_gui:1;
-        bool swap_grave_esc:1;
-        bool swap_backslash_backspace:1;
-        bool nkro:1;
-    };
-} keymap_config_t;
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode);
-
-/* translates Fn keycode to action */
-action_t keymap_func_to_action(uint16_t keycode);
-
-extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
-extern const uint16_t fn_actions[];
-
-// Ability to use mods in layouts
-#define LCTL(kc) kc | 0x0100
-#define LSFT(kc) kc | 0x0200
-#define LALT(kc) kc | 0x0400
-#define LGUI(kc) kc | 0x0800
-#define HYPR(kc) kc | 0x0F00
-#define MEH(kc) kc  | 0x0700
-#define LCAG(kc) kc  | 0x0D00 // Modifier Ctrl Alt and GUI
-
-#define MOD_HYPR 0xf
-#define MOD_MEH 0x7
-
-#define RCTL(kc) kc | 0x1100
-#define RSFT(kc) kc | 0x1200
-#define RALT(kc) kc | 0x1400
-#define RGUI(kc) kc | 0x1800
-
-// Aliases for shifted symbols
-// Each key has a 4-letter code, and some have longer aliases too.
-// While the long aliases are descriptive, the 4-letter codes
-// make for nicer grid layouts (everything lines up), and are
-// the preferred style for Quantum.
-#define KC_TILD LSFT(KC_GRV)    // ~
-#define KC_TILDE    KC_TILD
-
-#define KC_EXLM LSFT(KC_1)      // !
-#define KC_EXCLAIM  KC_EXLM
-
-#define KC_AT   LSFT(KC_2)      // @
-
-#define KC_HASH LSFT(KC_3)      // #
-
-#define KC_DLR  LSFT(KC_4)      // $
-#define KC_DOLLAR   KC_DLR
-
-#define KC_PERC LSFT(KC_5)      // %
-#define KC_PERCENT  KC_PERC
-
-#define KC_CIRC LSFT(KC_6)      // ^
-#define KC_CIRCUMFLEX   KC_CIRC
-
-#define KC_AMPR LSFT(KC_7)      // &
-#define KC_AMPERSAND    KC_AMPR
-
-#define KC_ASTR LSFT(KC_8)      // *
-#define KC_ASTERISK KC_ASTR
-
-#define KC_LPRN LSFT(KC_9)      // (
-#define KC_LEFT_PAREN   KC_LPRN
-
-#define KC_RPRN LSFT(KC_0)      // )
-#define KC_RIGHT_PAREN  KC_RPRN
-
-#define KC_UNDS LSFT(KC_MINS)   // _
-#define KC_UNDERSCORE   KC_UNDS
-
-#define KC_PLUS LSFT(KC_EQL)    // +
-
-#define KC_LCBR LSFT(KC_LBRC)   // {
-#define KC_LEFT_CURLY_BRACE KC_LCBR
-
-#define KC_RCBR LSFT(KC_RBRC)   // }
-#define KC_RIGHT_CURLY_BRACE    KC_RCBR
-
-#define KC_LABK LSFT(KC_COMM)   // <
-#define KC_LEFT_ANGLE_BRACKET   KC_LABK
-
-#define KC_RABK LSFT(KC_DOT)    // >
-#define KC_RIGHT_ANGLE_BRACKET  KC_RABK
-
-#define KC_COLN LSFT(KC_SCLN)   // :
-#define KC_COLON    KC_COLN
-
-#define KC_PIPE LSFT(KC_BSLS)   // |
-
-#define KC_LT LSFT(KC_COMM)     // <
-
-#define KC_GT LSFT(KC_DOT)      // >
-
-#define KC_QUES LSFT(KC_SLSH)   // ?
-#define KC_QUESTION KC_QUES
-
-#define KC_DQT LSFT(KC_QUOT)   // "
-#define KC_DOUBLE_QUOTE KC_DQT
-#define KC_DQUO KC_DQT
-
-#define KC_DELT KC_DELETE // Del key (four letter code)
-
-// Alias for function layers than expand past FN31
-#define FUNC(kc) kc | 0x2000
-
-// Aliases
-#define S(kc) LSFT(kc)
-#define F(kc) FUNC(kc)
-
-#define M(kc) (kc | 0x3000)
-
-#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
-
-// 0x3100+ is free
-
-// L-ayer, T-ap - 256 keycode max, 16 layer max
-#define LT(layer, kc) (kc | 0x4000 | ((layer & 0xF) << 8))
-
-#define RESET 0x5000
-#define DEBUG 0x5001
-
-// MAGIC keycodes
-#define MAGIC_SWAP_CONTROL_CAPSLOCK      0x5002
-#define MAGIC_UNSWAP_CONTROL_CAPSLOCK    0x5003
-#define MAGIC_CAPSLOCK_TO_CONTROL        0x5004
-#define MAGIC_UNCAPSLOCK_TO_CONTROL      0x5005
-#define MAGIC_SWAP_LALT_LGUI             0x5006
-#define MAGIC_UNSWAP_LALT_LGUI           0x5007
-#define MAGIC_SWAP_RALT_RGUI             0x5008
-#define MAGIC_UNSWAP_RALT_RGUI           0x5009
-#define MAGIC_NO_GUI                     0x500a
-#define MAGIC_UNNO_GUI                   0x500b
-#define MAGIC_SWAP_GRAVE_ESC             0x500c
-#define MAGIC_UNSWAP_GRAVE_ESC           0x500d
-#define MAGIC_SWAP_BACKSLASH_BACKSPACE   0x500e
-#define MAGIC_UNSWAP_BACKSLASH_BACKSPACE 0x500f
-#define MAGIC_HOST_NKRO                  0x5010
-#define MAGIC_UNHOST_NKRO                0x5011
-#define MAGIC_SWAP_ALT_GUI               0x5012
-#define MAGIC_UNSWAP_ALT_GUI             0x5013
-
-#define AG_SWAP MAGIC_SWAP_ALT_GUI
-#define AG_NORM MAGIC_UNSWAP_ALT_GUI
-
-#define KC_LEAD 0x5014
-
-// Audio on/off
-#define AU_ON  0x5020
-#define AU_OFF 0x5021
-#define AU_TOG 0x5022
-
-// Music mode on/off
-#define MU_ON  0x5023
-#define MU_OFF 0x5024
-#define MU_TOG 0x5025
-
-// Music voice iterate
-#define MUV_IN 0x5026
-#define MUV_DE 0x5027
-
-// Midi mode on/off
-#define MI_ON  0x5028
-#define MI_OFF 0x5029
-
-// These affect the backlight (if your keyboard has one).
-// We don't need to comment them out if your keyboard doesn't have a backlight,
-// since they don't take up any space.
-#define BL_ON 0x5079
-#define BL_OFF 0x5070
-#define BL_0 0x5070
-#define BL_1 0x5071
-#define BL_2 0x5072
-#define BL_3 0x5073
-#define BL_4 0x5074
-#define BL_5 0x5075
-#define BL_6 0x5076
-#define BL_7 0x5077
-#define BL_8 0x5078
-#define BL_9 0x5079
-#define BL_10 0x507A
-#define BL_11 0x507B
-#define BL_12 0x507C
-#define BL_13 0x507D
-#define BL_14 0x507E
-#define BL_15 0x507F
-#define BL_DEC 0x5080
-#define BL_INC 0x5081
-#define BL_TOGG 0x5082
-#define BL_STEP 0x5083
-
-#define KC_LSPO 0x5084 // Left shift, open parens when tapped
-#define KC_RSPC 0x5085 // Right shift, close parens when tapped
-// GOTO layer - 16 layers max
-// when:
-// ON_PRESS    = 1
-// ON_RELEASE  = 2
-// Unless you have a good reason not to do so, prefer  ON_PRESS (1) as your default.
-#define TO(layer, when) (layer | 0x5100 | (when << 0x4))
-
-// Momentary switch layer - 256 layer max
-#define MO(layer) (layer | 0x5200)
-
-// Set default layer - 256 layer max
-#define DF(layer) (layer | 0x5300)
-
-// Toggle to layer - 256 layer max
-#define TG(layer) (layer | 0x5400)
-
-// One-shot layer - 256 layer max
-#define OSL(layer) (layer | 0x5500)
-
-// One-shot mod
-#define OSM(layer) (layer | 0x5600)
-
-// chording is currently at 0x57xx
-
-// M-od, T-ap - 256 keycode max
-#define MT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8))
-#define CTL_T(kc) MT(0x1, kc)
-#define SFT_T(kc) MT(0x2, kc)
-#define ALT_T(kc) MT(0x4, kc)
-#define GUI_T(kc) MT(0x8, kc)
-#define C_S_T(kc) MT(0x3, kc) // Control + Shift e.g. for gnome-terminal
-#define MEH_T(kc) MT(0x7, kc) // Meh is a less hyper version of the Hyper key -- doesn't include Win or Cmd, so just alt+shift+ctrl
-#define LCAG_T(kc) MT(0xD, kc) // Left control alt and gui
-#define ALL_T(kc) MT(0xF, kc) // see http://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/
-
-// Dedicated keycode versions for Hyper and Meh, if you want to use them as standalone keys rather than mod-tap
-#define KC_HYPR HYPR(KC_NO)
-#define KC_MEH  MEH(KC_NO)
-
-#ifdef UNICODE_ENABLE
-    // For sending unicode codes.
-    // You may not send codes over 7FFF -- this supports most of UTF8.
-    // To have a key that sends out Œ, go UC(0x0152)
-    #define UNICODE(n) (n | 0x8000)
-    #define UC(n) UNICODE(n)
-#endif
-
-// For tri-layer
-void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3);
-#define IS_LAYER_ON(layer)  (layer_state & (1UL << (layer)))
-#define IS_LAYER_OFF(layer) (~layer_state & (1UL << (layer)))
-
-
-#endif

+ 1 - 1
quantum/keymap_extras/keymap_bepo.h

@@ -2,7 +2,7 @@
 #ifndef KEYMAP_BEPO_H
 #define KEYMAP_BEPO_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #ifndef ALTGR

+ 1 - 1
quantum/keymap_extras/keymap_colemak.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_COLEMAK_H
 #define KEYMAP_COLEMAK_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 // For software implementation of colemak
 #define CM_Q    KC_Q
 #define CM_W    KC_W

+ 1 - 1
quantum/keymap_extras/keymap_dvorak.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_DVORAK_H
 #define KEYMAP_DVORAK_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Normal characters
 #define DV_GRV	KC_GRV

+ 1 - 1
quantum/keymap_extras/keymap_fr_ch.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_FR_CH
 #define KEYMAP_FR_CH
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_french.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_FRENCH_H
 #define KEYMAP_FRENCH_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_french_osx.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_FRENCH_OSX_H
 #define KEYMAP_FRENCH_OSX_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Normal characters
 #define FR_AT 	KC_GRV

+ 1 - 1
quantum/keymap_extras/keymap_german.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_GERMAN
 #define KEYMAP_GERMAN
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_german_ch.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_SWISS_GERMAN
 #define KEYMAP_SWISS_GERMAN
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_german_osx.h

@@ -4,7 +4,7 @@
 #ifdef KEYMAP_GERMAN
 	#warning redefining german keys
 #endif
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 

+ 1 - 1
quantum/keymap_extras/keymap_neo2.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_NEO2
 #define KEYMAP_NEO2
 
-#include "keymap_common.h"
+#include "keymap.h"
 #include "keymap_extras/keymap_german.h"
 
 #define NEO_A KC_D

+ 1 - 1
quantum/keymap_extras/keymap_nordic.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_NORDIC_H
 #define KEYMAP_NORDIC_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_plover.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_PLOVER_H
 #define KEYMAP_PLOVER_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 #define PV_NUM  KC_1
 #define PV_LS   KC_Q

+ 1 - 1
quantum/keymap_extras/keymap_spanish.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_SPANISH_H
 #define KEYMAP_SPANISH_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_extras/keymap_uk.h

@@ -1,7 +1,7 @@
 #ifndef KEYMAP_UK_H
 #define KEYMAP_UK_H
 
-#include "keymap_common.h"
+#include "keymap.h"
 
 // Alt gr
 #define ALGR(kc) kc | 0x1400

+ 1 - 1
quantum/keymap_midi.c

@@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "keymap_common.h"
+#include "keymap.h"
 #include "keymap_midi.h"
 
 uint8_t starting_note = 0x0C;

+ 124 - 59
quantum/quantum.c

@@ -1,5 +1,4 @@
 #include "quantum.h"
-#include "timer.h"
 
 __attribute__ ((weak))
 void matrix_init_kb(void) {}
@@ -35,15 +34,15 @@ int offset = 7;
 #ifdef AUDIO_ENABLE
   bool music_activated = false;
 
-// music sequencer
-static bool music_sequence_recording = false;
-static bool music_sequence_playing = false;
-static float music_sequence[16] = {0};
-static uint8_t music_sequence_count = 0;
-static uint8_t music_sequence_position = 0;
+  // music sequencer
+  static bool music_sequence_recording = false;
+  static bool music_sequence_playing = false;
+  static float music_sequence[16] = {0};
+  static uint8_t music_sequence_count = 0;
+  static uint8_t music_sequence_position = 0;
 
-static uint16_t music_sequence_timer = 0;
-static uint16_t music_sequence_interval = 100;
+  static uint16_t music_sequence_timer = 0;
+  static uint16_t music_sequence_interval = 100;
 
 #endif
 
@@ -172,10 +171,6 @@ bool process_record_quantum(keyrecord_t *record) {
           if (record->event.pressed) {
               starting_note++; // Change key
               midi_send_cc(&midi_device, 0, 0x7B, 0);
-              // midi_send_cc(&midi_device, 1, 0x7B, 0);
-              // midi_send_cc(&midi_device, 2, 0x7B, 0);
-              // midi_send_cc(&midi_device, 3, 0x7B, 0);
-              // midi_send_cc(&midi_device, 4, 0x7B, 0);
           }
           return false;
       }
@@ -183,29 +178,17 @@ bool process_record_quantum(keyrecord_t *record) {
           if (record->event.pressed) {
               starting_note--; // Change key
               midi_send_cc(&midi_device, 0, 0x7B, 0);
-              // midi_send_cc(&midi_device, 1, 0x7B, 0);
-              // midi_send_cc(&midi_device, 2, 0x7B, 0);
-              // midi_send_cc(&midi_device, 3, 0x7B, 0);
-              // midi_send_cc(&midi_device, 4, 0x7B, 0);
           }
           return false;
       }
       if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
           offset++; // Change scale
           midi_send_cc(&midi_device, 0, 0x7B, 0);
-          // midi_send_cc(&midi_device, 1, 0x7B, 0);
-          // midi_send_cc(&midi_device, 2, 0x7B, 0);
-          // midi_send_cc(&midi_device, 3, 0x7B, 0);
-          // midi_send_cc(&midi_device, 4, 0x7B, 0);
           return false;
       }
       if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
           offset--; // Change scale
           midi_send_cc(&midi_device, 0, 0x7B, 0);
-          // midi_send_cc(&midi_device, 1, 0x7B, 0);
-          // midi_send_cc(&midi_device, 2, 0x7B, 0);
-          // midi_send_cc(&midi_device, 3, 0x7B, 0);
-          // midi_send_cc(&midi_device, 4, 0x7B, 0);
           return false;
       }
       // basic
@@ -365,7 +348,7 @@ bool process_record_quantum(keyrecord_t *record) {
 #define DISABLE_CHORDING
 #ifndef DISABLE_CHORDING
 
-  if (keycode >= 0x5700 && keycode <= 0x57FF) {
+  if (keycode >= QK_CHORDING && keycode <= QK_CHORDING_MAX) {
     if (record->event.pressed) {
       if (!chording) {
         chording = true;
@@ -403,7 +386,7 @@ bool process_record_quantum(keyrecord_t *record) {
 
 #ifdef UNICODE_ENABLE
 
-  if (keycode > UNICODE(0) && record->event.pressed) {
+  if (keycode > QK_UNICODE && record->event.pressed) {
     uint16_t unicode = keycode & 0x7FFF;
     switch(input_mode) {
       case UC_OSX:
@@ -443,42 +426,117 @@ bool process_record_quantum(keyrecord_t *record) {
   // Shift / paren setup
 
   switch(keycode) {
+    case RESET:
+      if (record->event.pressed) {
+        clear_keyboard();
+        #ifdef AUDIO_ENABLE
+          stop_all_notes();
+          shutdown_user();
+        #endif
+        _delay_ms(250);
+        #ifdef ATREUS_ASTAR
+            *(uint16_t *)0x0800 = 0x7777; // these two are a-star-specific
+        #endif
+        bootloader_jump();
+        return false;
+      }
+      break;
+    case DEBUG:
+      if (record->event.pressed) {
+          print("\nDEBUG: enabled.\n");
+          debug_enable = true;
+          return false;
+      }
+      break;
+    case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_UNSWAP_ALT_GUI:
+      if (record->event.pressed) {
+        // MAGIC actions (BOOTMAGIC without the boot)
+        if (!eeconfig_is_enabled()) {
+            eeconfig_init();
+        }
+        /* keymap config */
+        keymap_config.raw = eeconfig_read_keymap();
+        if (keycode == MAGIC_SWAP_CONTROL_CAPSLOCK) {
+            keymap_config.swap_control_capslock = 1;
+        } else if (keycode == MAGIC_CAPSLOCK_TO_CONTROL) {
+            keymap_config.capslock_to_control = 1;
+        } else if (keycode == MAGIC_SWAP_LALT_LGUI) {
+            keymap_config.swap_lalt_lgui = 1;
+        } else if (keycode == MAGIC_SWAP_RALT_RGUI) {
+            keymap_config.swap_ralt_rgui = 1;
+        } else if (keycode == MAGIC_NO_GUI) {
+            keymap_config.no_gui = 1;
+        } else if (keycode == MAGIC_SWAP_GRAVE_ESC) {
+            keymap_config.swap_grave_esc = 1;
+        } else if (keycode == MAGIC_SWAP_BACKSLASH_BACKSPACE) {
+            keymap_config.swap_backslash_backspace = 1;
+        } else if (keycode == MAGIC_HOST_NKRO) {
+            keymap_config.nkro = 1;
+        } else if (keycode == MAGIC_SWAP_ALT_GUI) {
+            keymap_config.swap_lalt_lgui = 1;
+            keymap_config.swap_ralt_rgui = 1;
+        }
+        /* UNs */
+        else if (keycode == MAGIC_UNSWAP_CONTROL_CAPSLOCK) {
+            keymap_config.swap_control_capslock = 0;
+        } else if (keycode == MAGIC_UNCAPSLOCK_TO_CONTROL) {
+            keymap_config.capslock_to_control = 0;
+        } else if (keycode == MAGIC_UNSWAP_LALT_LGUI) {
+            keymap_config.swap_lalt_lgui = 0;
+        } else if (keycode == MAGIC_UNSWAP_RALT_RGUI) {
+            keymap_config.swap_ralt_rgui = 0;
+        } else if (keycode == MAGIC_UNNO_GUI) {
+            keymap_config.no_gui = 0;
+        } else if (keycode == MAGIC_UNSWAP_GRAVE_ESC) {
+            keymap_config.swap_grave_esc = 0;
+        } else if (keycode == MAGIC_UNSWAP_BACKSLASH_BACKSPACE) {
+            keymap_config.swap_backslash_backspace = 0;
+        } else if (keycode == MAGIC_UNHOST_NKRO) {
+            keymap_config.nkro = 0;
+        } else if (keycode == MAGIC_UNSWAP_ALT_GUI) {
+            keymap_config.swap_lalt_lgui = 0;
+            keymap_config.swap_ralt_rgui = 0;
+        }
+        eeconfig_update_keymap(keymap_config.raw);
+        return false;
+      }
+      break;
     case KC_LSPO: {
-                    if (record->event.pressed) {
-                      shift_interrupted[0] = false;
-                      register_mods(MOD_LSFT);
-                    }
-                    else {
-                      if (!shift_interrupted[0]) {
-                        register_code(LSPO_KEY);
-                        unregister_code(LSPO_KEY);
-                      }
-                      unregister_mods(MOD_LSFT);
-                    }
-                    return false;
-                    break;
-                  }
+      if (record->event.pressed) {
+        shift_interrupted[0] = false;
+        register_mods(MOD_LSFT);
+      }
+      else {
+        if (!shift_interrupted[0]) {
+          register_code(LSPO_KEY);
+          unregister_code(LSPO_KEY);
+        }
+        unregister_mods(MOD_LSFT);
+      }
+      return false;
+      break;
+    }
 
     case KC_RSPC: {
-                    if (record->event.pressed) {
-                      shift_interrupted[1] = false;
-                      register_mods(MOD_RSFT);
-                    }
-                    else {
-                      if (!shift_interrupted[1]) {
-                        register_code(RSPC_KEY);
-                        unregister_code(RSPC_KEY);
-                      }
-                      unregister_mods(MOD_RSFT);
-                    }
-                    return false;
-                    break;
-                  }
+      if (record->event.pressed) {
+        shift_interrupted[1] = false;
+        register_mods(MOD_RSFT);
+      }
+      else {
+        if (!shift_interrupted[1]) {
+          register_code(RSPC_KEY);
+          unregister_code(RSPC_KEY);
+        }
+        unregister_mods(MOD_RSFT);
+      }
+      return false;
+      break;
+    }
     default: {
-               shift_interrupted[0] = true;
-               shift_interrupted[1] = true;
-               break;
-             }
+      shift_interrupted[0] = true;
+      shift_interrupted[1] = true;
+      break;
+    }
   }
 
   return process_action_kb(record);
@@ -586,6 +644,13 @@ void send_string(const char *str) {
     }
 }
 
+void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
+  if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
+    layer_on(layer3);
+  } else {
+    layer_off(layer3);
+  }
+}
 
 void matrix_init_quantum() {
   matrix_init_kb();

+ 9 - 4
quantum/quantum.h

@@ -3,7 +3,7 @@
 
 #include <avr/pgmspace.h>
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #ifdef BACKLIGHT_ENABLE
     #include "backlight.h"
 #endif
@@ -25,8 +25,8 @@
 #include <stddef.h>
 #include <avr/io.h>
 #include <util/delay.h>
-
-#define SEND_STRING(str) send_string(PSTR(str))
+#include "bootloader.h"
+#include "timer.h"
 
 extern uint32_t default_layer_state;
 
@@ -62,15 +62,20 @@ extern uint32_t default_layer_state;
 	#define LEADER_DICTIONARY() if (leading && timer_elapsed(leader_time) > LEADER_TIMEOUT)
 #endif
 
+#define SEND_STRING(str) send_string(PSTR(str))
 void send_string(const char *str);
 
+// For tri-layer
+void update_tri_layer(uint8_t layer1, uint8_t layer2, uint8_t layer3);
+#define IS_LAYER_ON(layer)  (layer_state & (1UL << (layer)))
+#define IS_LAYER_OFF(layer) (~layer_state & (1UL << (layer)))
+
 void matrix_init_kb(void);
 void matrix_scan_kb(void);
 bool process_action_kb(keyrecord_t *record);
 bool process_record_kb(uint16_t keycode, keyrecord_t *record);
 bool process_record_user(uint16_t keycode, keyrecord_t *record);
 
-
 bool is_music_on(void);
 void music_toggle(void);
 void music_on(void);

+ 1 - 1
quantum/template/template.h

@@ -2,7 +2,7 @@
 #define %KEYBOARD_UPPERCASE%_H
 
 #include "matrix.h"
-#include "keymap_common.h"
+#include "keymap.h"
 #ifdef BACKLIGHT_ENABLE
 	#include "backlight.h"
 #endif

+ 0 - 1
tmk_core/common.mk

@@ -6,7 +6,6 @@ SRC +=	$(COMMON_DIR)/host.c \
 	$(COMMON_DIR)/action_macro.c \
 	$(COMMON_DIR)/action_layer.c \
 	$(COMMON_DIR)/action_util.c \
-	$(COMMON_DIR)/keymap.c \
 	$(COMMON_DIR)/print.c \
 	$(COMMON_DIR)/debug.c \
 	$(COMMON_DIR)/util.c \

+ 0 - 193
tmk_core/common/keymap.c

@@ -1,193 +0,0 @@
-/*
-Copyright 2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-#include "keymap.h"
-#include "report.h"
-#include "keycode.h"
-#include "action_layer.h"
-#include "action.h"
-#include "action_macro.h"
-#include "wait.h"
-#include "debug.h"
-#include "bootloader.h"
-
-static action_t keycode_to_action(uint8_t keycode);
-
-
-/* converts key to action */
-__attribute__ ((weak))
-action_t action_for_key(uint8_t layer, keypos_t key)
-{
-    uint8_t keycode = keymap_key_to_keycode(layer, key);
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            return keymap_fn_to_action(keycode);
-#ifdef BOOTMAGIC_ENABLE
-        case KC_CAPSLOCK:
-        case KC_LOCKING_CAPS:
-            if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
-                return keycode_to_action(KC_LCTL);
-            }
-            return keycode_to_action(keycode);
-        case KC_LCTL:
-            if (keymap_config.swap_control_capslock) {
-                return keycode_to_action(KC_CAPSLOCK);
-            }
-            return keycode_to_action(KC_LCTL);
-        case KC_LALT:
-            if (keymap_config.swap_lalt_lgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_LGUI);
-            }
-            return keycode_to_action(KC_LALT);
-        case KC_LGUI:
-            if (keymap_config.swap_lalt_lgui) {
-                return keycode_to_action(KC_LALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_LGUI);
-        case KC_RALT:
-            if (keymap_config.swap_ralt_rgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_RGUI);
-            }
-            return keycode_to_action(KC_RALT);
-        case KC_RGUI:
-            if (keymap_config.swap_ralt_rgui) {
-                return keycode_to_action(KC_RALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_RGUI);
-        case KC_GRAVE:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_ESC);
-            }
-            return keycode_to_action(KC_GRAVE);
-        case KC_ESC:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_GRAVE);
-            }
-            return keycode_to_action(KC_ESC);
-        case KC_BSLASH:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSPACE);
-            }
-            return keycode_to_action(KC_BSLASH);
-        case KC_BSPACE:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSLASH);
-            }
-            return keycode_to_action(KC_BSPACE);
-#endif
-        default:
-            return keycode_to_action(keycode);
-    }
-}
-
-
-/* Macro */
-__attribute__ ((weak))
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    return MACRO_NONE;
-}
-
-/* Function */
-__attribute__ ((weak))
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-}
-
-
-
-/* translates keycode to action */
-static action_t keycode_to_action(uint8_t keycode)
-{
-    action_t action;
-    switch (keycode) {
-        case KC_A ... KC_EXSEL:
-        case KC_LCTRL ... KC_RGUI:
-            action.code = ACTION_KEY(keycode);
-            break;
-        case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
-            action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
-            break;
-        case KC_AUDIO_MUTE ... KC_MEDIA_REWIND:
-            action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
-            break;
-        case KC_MS_UP ... KC_MS_ACCEL2:
-            action.code = ACTION_MOUSEKEY(keycode);
-            break;
-        case KC_TRNS:
-            action.code = ACTION_TRANSPARENT;
-            break;
-        case KC_BOOTLOADER:
-        	action.code = ACTION_NO;
-            clear_keyboard();
-            wait_ms(50);
-            bootloader_jump(); // not return
-            break;
-        default:
-            action.code = ACTION_NO;
-            break;
-    }
-    return action;
-}
-
-
-
-#ifdef USE_LEGACY_KEYMAP
-/*
- * Legacy keymap support
- *      Consider using new keymap API instead.
- */
-__attribute__ ((weak))
-uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
-{
-    return keymap_get_keycode(layer, key.row, key.col);
-}
-
-
-/* Legacy keymap support */
-__attribute__ ((weak))
-action_t keymap_fn_to_action(uint8_t keycode)
-{
-    action_t action = { .code = ACTION_NO };
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            {
-                uint8_t layer = keymap_fn_layer(FN_INDEX(keycode));
-                uint8_t key = keymap_fn_keycode(FN_INDEX(keycode));
-                if (key) {
-                    action.code = ACTION_LAYER_TAP_KEY(layer, key);
-                } else {
-                    action.code = ACTION_LAYER_MOMENTARY(layer);
-                }
-            }
-            return action;
-        default:
-            return action;
-    }
-}
-#endif

+ 0 - 68
tmk_core/common/keymap.h

@@ -1,68 +0,0 @@
-/*
-Copyright 2011 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_H
-#define KEYMAP_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "action.h"
-
-/* NOTE: Not portable. Bit field order depends on implementation */
-typedef union {
-    uint8_t raw;
-    struct {
-        bool swap_control_capslock:1;
-        bool capslock_to_control:1;
-        bool swap_lalt_lgui:1;
-        bool swap_ralt_rgui:1;
-        bool no_gui:1;
-        bool swap_grave_esc:1;
-        bool swap_backslash_backspace:1;
-        bool nkro:1;
-    };
-} keymap_config_t;
-keymap_config_t keymap_config;
-
-
-/* translates key to keycode */
-uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint8_t keycode);
-
-
-
-#ifdef USE_LEGACY_KEYMAP
-/* 
- * Legacy keymap
- *      Consider using new keymap API above instead.
- */
-/* keycode of key */
-__attribute__ ((deprecated))
-uint8_t keymap_get_keycode(uint8_t layer, uint8_t row, uint8_t col);
-
-/* layer to move during press Fn key */
-__attribute__ ((deprecated))
-uint8_t keymap_fn_layer(uint8_t fn_bits);
-
-/* keycode to send when release Fn key without using */
-__attribute__ ((deprecated))
-uint8_t keymap_fn_keycode(uint8_t fn_bits);
-#endif
-
-#endif

+ 1 - 5
tmk_core/protocol/lufa.mk

@@ -18,11 +18,7 @@ LUFA_SRC = lufa.c \
 	   $(LUFA_SRC_USB)
 
 ifeq ($(strip $(MIDI_ENABLE)), yes)
-	LUFA_SRC += midi/midi.c \
-	   midi/midi_device.c \
-	   midi/bytequeue/bytequeue.c \
-	   midi/bytequeue/interrupt_setting.c \
-	   $(LUFA_SRC_USBCLASS)
+	include $(TMK_PATH)/protocol/midi.mk
 endif
 
 ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)

+ 0 - 274
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.c

@@ -1,274 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Main source file for the AudioInput demo. This file contains the main tasks of
- *  the demo and is responsible for the initial application hardware configuration.
- */
-
-#include "AudioInput.h"
-
-/** LUFA Audio Class driver interface configuration and state information. This structure is
- *  passed to all Audio Class driver functions, so that multiple instances of the same class
- *  within a device can be differentiated from one another.
- */
-USB_ClassInfo_Audio_Device_t Microphone_Audio_Interface =
-	{
-		.Config =
-			{
-				.ControlInterfaceNumber   = INTERFACE_ID_AudioControl,
-				.StreamingInterfaceNumber = INTERFACE_ID_AudioStream,
-				.DataINEndpoint           =
-					{
-						.Address          = AUDIO_STREAM_EPADDR,
-						.Size             = AUDIO_STREAM_EPSIZE,
-						.Banks            = 2,
-					},
-			},
-	};
-
-/** Current audio sampling frequency of the streaming audio endpoint. */
-static uint32_t CurrentAudioSampleFrequency = 48000;
-
-
-/** Main program entry point. This routine contains the overall program flow, including initial
- *  setup of all components and the main program loop.
- */
-int main(void)
-{
-	SetupHardware();
-
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-	GlobalInterruptEnable();
-
-	for (;;)
-	{
-		Audio_Device_USBTask(&Microphone_Audio_Interface);
-		USB_USBTask();
-	}
-}
-
-/** Configures the board hardware and chip peripherals for the demo's functionality. */
-void SetupHardware(void)
-{
-#if (ARCH == ARCH_AVR8)
-	/* Disable watchdog if enabled by bootloader/fuses */
-	MCUSR &= ~(1 << WDRF);
-	wdt_disable();
-
-	/* Disable clock division */
-	clock_prescale_set(clock_div_1);
-#endif
-
-	/* Hardware Initialization */
-	LEDs_Init();
-	Buttons_Init();
-	ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_32);
-	ADC_SetupChannel(MIC_IN_ADC_CHANNEL);
-	USB_Init();
-
-	/* Start the ADC conversion in free running mode */
-	ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | ADC_GET_CHANNEL_MASK(MIC_IN_ADC_CHANNEL));
-}
-
-/** ISR to handle the reloading of the data endpoint with the next sample. */
-ISR(TIMER0_COMPA_vect, ISR_BLOCK)
-{
-	uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
-
-	/* Check that the USB bus is ready for the next sample to write */
-	if (Audio_Device_IsReadyForNextSample(&Microphone_Audio_Interface))
-	{
-		int16_t AudioSample;
-
-		#if defined(USE_TEST_TONE)
-			static uint8_t SquareWaveSampleCount;
-			static int16_t CurrentWaveValue;
-
-			/* In test tone mode, generate a square wave at 1/256 of the sample rate */
-			if (SquareWaveSampleCount++ == 0xFF)
-			  CurrentWaveValue ^= 0x8000;
-
-			/* Only generate audio if the board button is being pressed */
-			AudioSample = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? CurrentWaveValue : 0;
-		#else
-			/* Audio sample is ADC value scaled to fit the entire range */
-			AudioSample = ((SAMPLE_MAX_RANGE / ADC_MAX_RANGE) * ADC_GetResult());
-
-			#if defined(MICROPHONE_BIASED_TO_HALF_RAIL)
-			/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
-			AudioSample -= (SAMPLE_MAX_RANGE / 2);
-			#endif
-		#endif
-
-		Audio_Device_WriteSample16(&Microphone_Audio_Interface, AudioSample);
-	}
-
-	Endpoint_SelectEndpoint(PrevEndpoint);
-}
-
-/** Event handler for the library USB Connection event. */
-void EVENT_USB_Device_Connect(void)
-{
-	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
-
-	/* Sample reload timer initialization */
-	TIMSK0  = (1 << OCIE0A);
-	OCR0A   = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
-	TCCR0A  = (1 << WGM01);  // CTC mode
-	TCCR0B  = (1 << CS01);   // Fcpu/8 speed
-}
-
-/** Event handler for the library USB Disconnection event. */
-void EVENT_USB_Device_Disconnect(void)
-{
-	/* Stop the sample reload timer */
-	TCCR0B = 0;
-
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-}
-
-/** Event handler for the library USB Configuration Changed event. */
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
-	bool ConfigSuccess = true;
-
-	ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Microphone_Audio_Interface);
-
-	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
-}
-
-/** Event handler for the library USB Control Request reception event. */
-void EVENT_USB_Device_ControlRequest(void)
-{
-	Audio_Device_ProcessControlRequest(&Microphone_Audio_Interface);
-}
-
-/** Audio class driver callback for the setting and retrieval of streaming endpoint properties. This callback must be implemented
- *  in the user application to handle property manipulations on streaming audio endpoints.
- *
- *  When the DataLength parameter is NULL, this callback should only indicate whether the specified operation is valid for
- *  the given endpoint index, and should return as fast as possible. When non-NULL, this value may be altered for GET operations
- *  to indicate the size of the retrieved data.
- *
- *  \note The length of the retrieved data stored into the Data buffer on GET operations should not exceed the initial value
- *        of the \c DataLength parameter.
- *
- *  \param[in,out] AudioInterfaceInfo  Pointer to a structure containing an Audio Class configuration and state.
- *  \param[in]     EndpointProperty    Property of the endpoint to get or set, a value from Audio_ClassRequests_t.
- *  \param[in]     EndpointAddress     Address of the streaming endpoint whose property is being referenced.
- *  \param[in]     EndpointControl     Parameter of the endpoint to get or set, a value from Audio_EndpointControls_t.
- *  \param[in,out] DataLength          For SET operations, the length of the parameter data to set. For GET operations, the maximum
- *                                     length of the retrieved data. When NULL, the function should return whether the given property
- *                                     and parameter is valid for the requested endpoint without reading or modifying the Data buffer.
- *  \param[in,out] Data                Pointer to a location where the parameter data is stored for SET operations, or where
- *                                     the retrieved data is to be stored for GET operations.
- *
- *  \return Boolean \c true if the property get/set was successful, \c false otherwise
- */
-bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-                                                  const uint8_t EndpointProperty,
-                                                  const uint8_t EndpointAddress,
-                                                  const uint8_t EndpointControl,
-                                                  uint16_t* const DataLength,
-                                                  uint8_t* Data)
-{
-	/* Check the requested endpoint to see if a supported endpoint is being manipulated */
-	if (EndpointAddress == Microphone_Audio_Interface.Config.DataINEndpoint.Address)
-	{
-		/* Check the requested control to see if a supported control is being manipulated */
-		if (EndpointControl == AUDIO_EPCONTROL_SamplingFreq)
-		{
-			switch (EndpointProperty)
-			{
-				case AUDIO_REQ_SetCurrent:
-					/* Check if we are just testing for a valid property, or actually adjusting it */
-					if (DataLength != NULL)
-					{
-						/* Set the new sampling frequency to the value given by the host */
-						CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]);
-
-						/* Adjust sample reload timer to the new frequency */
-						OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
-					}
-
-					return true;
-				case AUDIO_REQ_GetCurrent:
-					/* Check if we are just testing for a valid property, or actually reading it */
-					if (DataLength != NULL)
-					{
-						*DataLength = 3;
-
-						Data[2] = (CurrentAudioSampleFrequency >> 16);
-						Data[1] = (CurrentAudioSampleFrequency >> 8);
-						Data[0] = (CurrentAudioSampleFrequency &  0xFF);
-					}
-
-					return true;
-			}
-		}
-	}
-
-	return false;
-}
-
-/** Audio class driver callback for the setting and retrieval of streaming interface properties. This callback must be implemented
- *  in the user application to handle property manipulations on streaming audio interfaces.
- *
- *  When the DataLength parameter is NULL, this callback should only indicate whether the specified operation is valid for
- *  the given entity and should return as fast as possible. When non-NULL, this value may be altered for GET operations
- *  to indicate the size of the retrieved data.
- *
- *  \note The length of the retrieved data stored into the Data buffer on GET operations should not exceed the initial value
- *        of the \c DataLength parameter.
- *
- *  \param[in,out] AudioInterfaceInfo  Pointer to a structure containing an Audio Class configuration and state.
- *  \param[in]     Property            Property of the interface to get or set, a value from Audio_ClassRequests_t.
- *  \param[in]     EntityAddress       Address of the audio entity whose property is being referenced.
- *  \param[in]     Parameter           Parameter of the entity to get or set, specific to each type of entity (see USB Audio specification).
- *  \param[in,out] DataLength          For SET operations, the length of the parameter data to set. For GET operations, the maximum
- *                                     length of the retrieved data. When NULL, the function should return whether the given property
- *                                     and parameter is valid for the requested endpoint without reading or modifying the Data buffer.
- *  \param[in,out] Data                Pointer to a location where the parameter data is stored for SET operations, or where
- *                                     the retrieved data is to be stored for GET operations.
- *
- *  \return Boolean \c true if the property GET/SET was successful, \c false otherwise
- */
-bool CALLBACK_Audio_Device_GetSetInterfaceProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-                                                   const uint8_t Property,
-                                                   const uint8_t EntityAddress,
-                                                   const uint16_t Parameter,
-                                                   uint16_t* const DataLength,
-                                                   uint8_t* Data)
-{
-	/* No audio interface entities in the device descriptor, thus no properties to get or set. */
-	return false;
-}

+ 0 - 94
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.h

@@ -1,94 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Header file for AudioInput.c.
- */
-
-#ifndef _AUDIO_INPUT_H_
-#define _AUDIO_INPUT_H_
-
-	/* Includes: */
-		#include <avr/io.h>
-		#include <avr/wdt.h>
-		#include <avr/power.h>
-		#include <avr/interrupt.h>
-
-		#include <LUFA/Drivers/Board/LEDs.h>
-		#include <LUFA/Drivers/Board/Buttons.h>
-		#include <LUFA/Drivers/Peripheral/ADC.h>
-		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Platform/Platform.h>
-
-		#include "Descriptors.h"
-		#include "Config/AppConfig.h"
-
-	/* Macros: */
-		/** Maximum audio sample value for the microphone input. */
-		#define SAMPLE_MAX_RANGE          0xFFFF
-
-		/** Maximum ADC range for the microphone input. */
-		#define ADC_MAX_RANGE             0x3FF
-
-		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
-		#define LEDMASK_USB_NOTREADY      LEDS_LED1
-
-		/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
-		#define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)
-
-		/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
-		#define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)
-
-		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
-		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
-
-	/* Function Prototypes: */
-		void SetupHardware(void);
-
-		void EVENT_USB_Device_Connect(void);
-		void EVENT_USB_Device_Disconnect(void);
-		void EVENT_USB_Device_ConfigurationChanged(void);
-		void EVENT_USB_Device_ControlRequest(void);
-
-		bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-		                                                  const uint8_t EndpointProperty,
-		                                                  const uint8_t EndpointAddress,
-		                                                  const uint8_t EndpointControl,
-		                                                  uint16_t* const DataLength,
-		                                                  uint8_t* Data) ATTR_NON_NULL_PTR_ARG(1);
-		bool CALLBACK_Audio_Device_GetSetInterfaceProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-		                                                   const uint8_t Property,
-		                                                   const uint8_t EntityAddress,
-		                                                   const uint16_t Parameter,
-		                                                   uint16_t* const DataLength,
-		                                                   uint8_t* Data);
-#endif
-

+ 0 - 92
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/AudioInput.txt

@@ -1,92 +0,0 @@
-/** \file
- *
- *  This file contains special DoxyGen information for the generation of the main page and other special
- *  documentation pages. It is not a project source file.
- */
-
-/** \mainpage Audio Input Device Demo
- *
- *  \section Sec_Compat Demo Compatibility:
- *
- *  The following list indicates what microcontrollers are compatible with this demo.
- *
- *  \li Series 7 USB AVRs (AT90USBxxx7)
- *  \li Series 6 USB AVRs (AT90USBxxx6)
- *  \li Series 4 USB AVRs (ATMEGAxxU4)
- *
- *  \section Sec_Info USB Information:
- *
- *  The following table gives a rundown of the USB utilization of this demo.
- *
- *  <table>
- *   <tr>
- *    <td><b>USB Mode:</b></td>
- *    <td>Device</td>
- *   </tr>
- *   <tr>
- *    <td><b>USB Class:</b></td>
- *    <td>Audio Class</td>
- *   </tr>
- *   <tr>
- *    <td><b>USB Subclass:</b></td>
- *    <td>Standard Audio Device</td>
- *   </tr>
- *   <tr>
- *    <td><b>Relevant Standards:</b></td>
- *    <td>USBIF Audio 1.0 Class Specification \n
- *        USBIF Audio 1.0 Class Terminal Types Specification \n
- *        USBIF Audio 1.0 Data Formats Specification</td>
- *   </tr>
- *   <tr>
- *    <td><b>Supported USB Speeds:</b></td>
- *    <td>Full Speed Mode</td>
- *   </tr>
- *  </table>
- *
- *  \section Sec_Description Project Description:
- *
- *  Audio demonstration application. This gives a simple reference
- *  application for implementing a USB Audio Input device using the
- *  basic USB Audio 1.0 drivers in all modern OSes (i.e. no special drivers
- *  required).
- *
- *  On start-up the system will automatically enumerate and function as a
- *  USB microphone. By default, the demo will produce a square wave test tone
- *  when the board button is pressed. If USE_TEST_TONE is not defined in the
- *  project makefile, incoming audio from the ADC channel 1 will be sampled
- *  and sent to the host computer instead.
- *
- *  When in microphone mode, connect a microphone to the ADC channel 2.
- *
- *  Under Windows, if a driver request dialogue pops up, select the option
- *  to automatically install the appropriate drivers.
- *
- *  \section Sec_Options Project Options
- *
- *  The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
- *
- *  <table>
- *   <tr>
- *    <th><b>Define Name:</b></th>
- *    <th><b>Location:</b></th>
- *    <th><b>Description:</b></th>
- *   </tr>
- *   <tr>
- *    <td>MIC_IN_ADC_CHANNEL</td>
- *    <td>AppConfig.h</td>
- *    <td>Sets the ADC channel used by the demo for the input audio samples from an attached microphone.</td>
- *   </tr>
- *   <tr>
- *    <td>USE_TEST_TONE</td>
- *    <td>AppConfig.h</td>
- *    <td>When defined, this alters the demo to produce a square wave test tone when the first board button is pressed
- *        instead of sampling the board microphone.</td>
- *   </tr>
- *   <tr>
- *    <td>MICROPHONE_BIASED_TO_HALF_RAIL</td>
- *    <td>AppConfig.h</td>
- *    <td>When defined, this alters the demo so that the half VCC bias of the microphone input is subtracted.</td>
- *   </tr>
- *  </table>
- */
-

+ 0 - 51
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Config/AppConfig.h

@@ -1,51 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *  \brief Application Configuration Header File
- *
- *  This is a header file which is be used to configure some of
- *  the application's compile time options, as an alternative to
- *  specifying the compile time constants supplied through a
- *  makefile or build system.
- *
- *  For information on what each token does, refer to the
- *  \ref Sec_Options section of the application documentation.
- */
-
-#ifndef _APP_CONFIG_H_
-#define _APP_CONFIG_H_
-
-	#define MIC_IN_ADC_CHANNEL               2
-
-	#define MICROPHONE_BIASED_TO_HALF_RAIL
-	#define USE_TEST_TONE
-
-#endif

+ 0 - 93
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Config/LUFAConfig.h

@@ -1,93 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *  \brief LUFA Library Configuration Header File
- *
- *  This header file is used to configure LUFA's compile time options,
- *  as an alternative to the compile time constants supplied through
- *  a makefile.
- *
- *  For information on what each token does, refer to the LUFA
- *  manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
-	#if (ARCH == ARCH_AVR8)
-
-		/* Non-USB Related Configuration Tokens: */
-//		#define DISABLE_TERMINAL_CODES
-
-		/* USB Class Driver Related Tokens: */
-//		#define HID_HOST_BOOT_PROTOCOL_ONLY
-//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
-//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
-//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
-//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
-//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
-//		#define NO_CLASS_DRIVER_AUTOFLUSH
-
-		/* General USB Driver Related Tokens: */
-//		#define ORDERED_EP_CONFIG
-		#define USE_STATIC_OPTIONS               (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
-		#define USB_DEVICE_ONLY
-//		#define USB_HOST_ONLY
-//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
-//		#define NO_LIMITED_CONTROLLER_CONNECT
-//		#define NO_SOF_EVENTS
-
-		/* USB Device Mode Driver Related Tokens: */
-//		#define USE_RAM_DESCRIPTORS
-		#define USE_FLASH_DESCRIPTORS
-//		#define USE_EEPROM_DESCRIPTORS
-//		#define NO_INTERNAL_SERIAL
-		#define FIXED_CONTROL_ENDPOINT_SIZE      8
-//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here}
-		#define FIXED_NUM_CONFIGURATIONS         1
-//		#define CONTROL_ONLY_DEVICE
-//		#define INTERRUPT_CONTROL_ENDPOINT
-//		#define NO_DEVICE_REMOTE_WAKEUP
-//		#define NO_DEVICE_SELF_POWER
-
-		/* USB Host Mode Driver Related Tokens: */
-//		#define HOST_STATE_AS_GPIOR              {Insert Value Here}
-//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here}
-//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here}
-//		#define NO_AUTO_VBUS_MANAGEMENT
-//		#define INVERTED_VBUS_ENABLE_LINE
-
-	#else
-
-		#error Unsupported architecture for this LUFA configuration file.
-
-	#endif
-#endif

+ 0 - 312
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Descriptors.c

@@ -1,312 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- *  computer-readable structures which the host requests upon device enumeration, to determine
- *  the device's capabilities and functions.
- */
-
-#include "Descriptors.h"
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- *  device characteristics, including the supported USB version, control endpoint size and the
- *  number of device configurations. The descriptor is read out by the USB host when the enumeration
- *  process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
-	.Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
-	.USBSpecification       = VERSION_BCD(2,0,0),
-	.Class                  = USB_CSCP_NoDeviceClass,
-	.SubClass               = USB_CSCP_NoDeviceSubclass,
-	.Protocol               = USB_CSCP_NoDeviceProtocol,
-
-	.Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
-
-	.VendorID               = 0x03EB,
-	.ProductID              = 0x2047,
-	.ReleaseNumber          = VERSION_BCD(0,0,2),
-
-	.ManufacturerStrIndex   = STRING_ID_Manufacturer,
-	.ProductStrIndex        = STRING_ID_Product,
-	.SerialNumStrIndex      = NO_DESCRIPTOR,
-
-	.NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- *  of the device in one of its supported configurations, including information about any device interfaces
- *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- *  a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
-	.Config =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
-			.TotalConfigurationSize   = sizeof(USB_Descriptor_Configuration_t),
-			.TotalInterfaces          = 2,
-
-			.ConfigurationNumber      = 1,
-			.ConfigurationStrIndex    = NO_DESCRIPTOR,
-
-			.ConfigAttributes         = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
-			.MaxPowerConsumption      = USB_CONFIG_POWER_MA(100)
-		},
-
-	.Audio_ControlInterface =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioControl,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 0,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_ControlSubclass,
-			.Protocol                 = AUDIO_CSCP_ControlProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_ControlInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
-
-			.ACSpecification          = VERSION_BCD(1,0,0),
-			.TotalLength              = (sizeof(USB_Audio_Descriptor_Interface_AC_t) +
-			                             sizeof(USB_Audio_Descriptor_InputTerminal_t) +
-			                             sizeof(USB_Audio_Descriptor_OutputTerminal_t)),
-
-			.InCollection             = 1,
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-		},
-
-	.Audio_InputTerminal =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_InputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.TerminalID               = 0x01,
-			.TerminalType             = AUDIO_TERMINAL_IN_MIC,
-			.AssociatedOutputTerminal = 0x00,
-
-			.TotalChannels            = 1,
-			.ChannelConfig            = 0,
-
-			.ChannelStrIndex          = NO_DESCRIPTOR,
-			.TerminalStrIndex         = NO_DESCRIPTOR
-		},
-
-	.Audio_OutputTerminal =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_OutputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.TerminalID               = 0x02,
-			.TerminalType             = AUDIO_TERMINAL_STREAMING,
-			.AssociatedInputTerminal  = 0x00,
-
-			.SourceID                 = 0x01,
-
-			.TerminalStrIndex         = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_Alt0 =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 0,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_AudioStreamingSubclass,
-			.Protocol                 = AUDIO_CSCP_StreamingProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_Alt1 =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-			.AlternateSetting         = 1,
-
-			.TotalEndpoints           = 1,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_AudioStreamingSubclass,
-			.Protocol                 = AUDIO_CSCP_StreamingProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
-
-			.TerminalLink             = 0x02,
-
-			.FrameDelay               = 1,
-			.AudioFormat              = 0x0001
-		},
-
-	.Audio_AudioFormat =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Format_t) +
-			                                     sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates),
-			                             .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_FormatType,
-
-			.FormatType               = 0x01,
-			.Channels                 = 0x01,
-
-			.SubFrameSize             = 0x02,
-			.BitResolution            = 16,
-
-			.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t))
-		},
-
-	.Audio_AudioFormatSampleRates =
-		{
-			AUDIO_SAMPLE_FREQ(8000),
-			AUDIO_SAMPLE_FREQ(11025),
-			AUDIO_SAMPLE_FREQ(22050),
-			AUDIO_SAMPLE_FREQ(44100),
-			AUDIO_SAMPLE_FREQ(48000),
-		},
-
-	.Audio_StreamEndpoint =
-		{
-			.Endpoint =
-				{
-					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
-					.EndpointAddress     = AUDIO_STREAM_EPADDR,
-					.Attributes          = (EP_TYPE_ISOCHRONOUS | ENDPOINT_ATTR_SYNC | ENDPOINT_USAGE_DATA),
-					.EndpointSize        = AUDIO_STREAM_EPSIZE,
-					.PollingIntervalMS   = 0x01
-				},
-
-			.Refresh                  = 0,
-			.SyncEndpointNumber       = 0
-		},
-
-	.Audio_StreamEndpoint_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
-
-			.Attributes               = (AUDIO_EP_ACCEPTS_SMALL_PACKETS | AUDIO_EP_SAMPLE_FREQ_CONTROL),
-
-			.LockDelayUnits           = 0x00,
-			.LockDelay                = 0x0000
-		}
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG);
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera");
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA Audio In Demo");
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- *  documentation) by the application code so that the address and size of a requested descriptor can be given
- *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- *  USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-                                    const uint8_t wIndex,
-                                    const void** const DescriptorAddress)
-{
-	const uint8_t  DescriptorType   = (wValue >> 8);
-	const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-	const void* Address = NULL;
-	uint16_t    Size    = NO_DESCRIPTOR;
-
-	switch (DescriptorType)
-	{
-		case DTYPE_Device:
-			Address = &DeviceDescriptor;
-			Size    = sizeof(USB_Descriptor_Device_t);
-			break;
-		case DTYPE_Configuration:
-			Address = &ConfigurationDescriptor;
-			Size    = sizeof(USB_Descriptor_Configuration_t);
-			break;
-		case DTYPE_String:
-			switch (DescriptorNumber)
-			{
-				case STRING_ID_Language:
-					Address = &LanguageString;
-					Size    = pgm_read_byte(&LanguageString.Header.Size);
-					break;
-				case STRING_ID_Manufacturer:
-					Address = &ManufacturerString;
-					Size    = pgm_read_byte(&ManufacturerString.Header.Size);
-					break;
-				case STRING_ID_Product:
-					Address = &ProductString;
-					Size    = pgm_read_byte(&ProductString.Header.Size);
-					break;
-			}
-
-			break;
-	}
-
-	*DescriptorAddress = Address;
-	return Size;
-}
-

+ 0 - 106
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/Descriptors.h

@@ -1,106 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Header file for Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
-	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>
-
-		#include <avr/pgmspace.h>
-
-		#include "Config/AppConfig.h"
-
-	/* Macros: */
-		/** Endpoint address of the Audio isochronous streaming data IN endpoint. */
-		#define AUDIO_STREAM_EPADDR           (ENDPOINT_DIR_IN | 1)
-
-		/** Endpoint size in bytes of the Audio isochronous streaming data endpoint. */
-		#define AUDIO_STREAM_EPSIZE           256
-
-	/* Type Defines: */
-		/** Type define for the device configuration descriptor structure. This must be defined in the
-		 *  application code, as the configuration descriptor contains several sub-descriptors which
-		 *  vary between devices, and which describe the device's usage to the host.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Configuration_Header_t     Config;
-
-			// Audio Control Interface
-			USB_Descriptor_Interface_t                Audio_ControlInterface;
-			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
-			USB_Audio_Descriptor_InputTerminal_t      Audio_InputTerminal;
-			USB_Audio_Descriptor_OutputTerminal_t     Audio_OutputTerminal;
-
-			// Audio Streaming Interface
-			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt0;
-			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt1;
-			USB_Audio_Descriptor_Interface_AS_t       Audio_StreamInterface_SPC;
-			USB_Audio_Descriptor_Format_t             Audio_AudioFormat;
-			USB_Audio_SampleFreq_t                    Audio_AudioFormatSampleRates[5];
-			USB_Audio_Descriptor_StreamEndpoint_Std_t Audio_StreamEndpoint;
-			USB_Audio_Descriptor_StreamEndpoint_Spc_t Audio_StreamEndpoint_SPC;
-		} USB_Descriptor_Configuration_t;
-
-		/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
-		 *  should have a unique ID index associated with it, which can be used to refer to the
-		 *  interface from other descriptors.
-		 */
-		enum InterfaceDescriptors_t
-		{
-			INTERFACE_ID_AudioControl = 0, /**< Audio control interface descriptor ID */
-			INTERFACE_ID_AudioStream  = 1, /**< Audio stream interface descriptor ID */
-		};
-
-		/** Enum for the device string descriptor IDs within the device. Each string descriptor should
-		 *  have a unique ID index associated with it, which can be used to refer to the string from
-		 *  other descriptors.
-		 */
-		enum StringDescriptors_t
-		{
-			STRING_ID_Language     = 0, /**< Supported Languages string descriptor ID (must be zero) */
-			STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
-			STRING_ID_Product      = 2, /**< Product string ID */
-		};
-
-	/* Function Prototypes: */
-		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-		                                    const uint8_t wIndex,
-		                                    const void** const DescriptorAddress)
-		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-

+ 0 - 52
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/asf.xml

@@ -1,52 +0,0 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Input Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_input.example.avr8">
-		<require idref="lufa.demos.device.class.audio_input"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.audio_input" caption="Audio Input Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Input device demo, implementing a basic USB microphone. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioInput.txt"/>
-
-		<build type="c-source" value="AudioInput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioInput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.peripheral.adc"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-		<require idref="lufa.drivers.board.buttons"/>
-	</module>
-</asf>

File diff suppressed because it is too large
+ 0 - 2364
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/doxyfile


+ 0 - 38
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioInput/makefile

@@ -1,38 +0,0 @@
-#
-#             LUFA Library
-#     Copyright (C) Dean Camera, 2014.
-#
-#  dean [at] fourwalledcubicle [dot] com
-#           www.lufa-lib.org
-#
-# --------------------------------------
-#         LUFA Project Makefile.
-# --------------------------------------
-
-# Run "make help" for target help.
-
-MCU          = at90usb1287
-ARCH         = AVR8
-BOARD        = USBKEY
-F_CPU        = 8000000
-F_USB        = $(F_CPU)
-OPTIMIZATION = s
-TARGET       = AudioInput
-SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
-LUFA_PATH    = ../../../../LUFA
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/
-LD_FLAGS     =
-
-# Default target
-all:
-
-# Include LUFA build script makefiles
-include $(LUFA_PATH)/Build/lufa_core.mk
-include $(LUFA_PATH)/Build/lufa_sources.mk
-include $(LUFA_PATH)/Build/lufa_build.mk
-include $(LUFA_PATH)/Build/lufa_cppcheck.mk
-include $(LUFA_PATH)/Build/lufa_doxygen.mk
-include $(LUFA_PATH)/Build/lufa_dfu.mk
-include $(LUFA_PATH)/Build/lufa_hid.mk
-include $(LUFA_PATH)/Build/lufa_avrdude.mk
-include $(LUFA_PATH)/Build/lufa_atprogram.mk

+ 0 - 311
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.c

@@ -1,311 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Main source file for the AudioOutput demo. This file contains the main tasks of
- *  the demo and is responsible for the initial application hardware configuration.
- */
-
-#include "AudioOutput.h"
-
-/** LUFA Audio Class driver interface configuration and state information. This structure is
- *  passed to all Audio Class driver functions, so that multiple instances of the same class
- *  within a device can be differentiated from one another.
- */
-USB_ClassInfo_Audio_Device_t Speaker_Audio_Interface =
-	{
-		.Config =
-			{
-				.ControlInterfaceNumber   = INTERFACE_ID_AudioControl,
-				.StreamingInterfaceNumber = INTERFACE_ID_AudioStream,
-				.DataOUTEndpoint          =
-					{
-						.Address          = AUDIO_STREAM_EPADDR,
-						.Size             = AUDIO_STREAM_EPSIZE,
-						.Banks            = 2,
-					},
-			},
-	};
-
-/** Current audio sampling frequency of the streaming audio endpoint. */
-static uint32_t CurrentAudioSampleFrequency = 48000;
-
-
-/** Main program entry point. This routine contains the overall program flow, including initial
- *  setup of all components and the main program loop.
- */
-int main(void)
-{
-	SetupHardware();
-
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-	GlobalInterruptEnable();
-
-	for (;;)
-	{
-		Audio_Device_USBTask(&Speaker_Audio_Interface);
-		USB_USBTask();
-	}
-}
-
-/** Configures the board hardware and chip peripherals for the demo's functionality. */
-void SetupHardware(void)
-{
-#if (ARCH == ARCH_AVR8)
-	/* Disable watchdog if enabled by bootloader/fuses */
-	MCUSR &= ~(1 << WDRF);
-	wdt_disable();
-
-	/* Disable clock division */
-	clock_prescale_set(clock_div_1);
-#endif
-
-	/* Hardware Initialization */
-	LEDs_Init();
-	USB_Init();
-}
-
-/** ISR to handle the reloading of the PWM timer with the next sample. */
-ISR(TIMER0_COMPA_vect, ISR_BLOCK)
-{
-	uint8_t PrevEndpoint = Endpoint_GetCurrentEndpoint();
-
-	/* Check that the USB bus is ready for the next sample to read */
-	if (Audio_Device_IsSampleReceived(&Speaker_Audio_Interface))
-	{
-		/* Retrieve the signed 16-bit left and right audio samples, convert to 8-bit */
-		int8_t LeftSample_8Bit  = (Audio_Device_ReadSample16(&Speaker_Audio_Interface) >> 8);
-		int8_t RightSample_8Bit = (Audio_Device_ReadSample16(&Speaker_Audio_Interface) >> 8);
-
-		/* Mix the two channels together to produce a mono, 8-bit sample */
-		int8_t MixedSample_8Bit = (((int16_t)LeftSample_8Bit + (int16_t)RightSample_8Bit) >> 1);
-
-		#if defined(AUDIO_OUT_MONO)
-		/* Load the sample into the PWM timer channel */
-		OCR3A = (MixedSample_8Bit ^ (1 << 7));
-		#elif defined(AUDIO_OUT_STEREO)
-		/* Load the dual 8-bit samples into the PWM timer channels */
-		OCR3A = (LeftSample_8Bit  ^ (1 << 7));
-		OCR3B = (RightSample_8Bit ^ (1 << 7));
-		#elif defined(AUDIO_OUT_PORTC)
-		/* Load the 8-bit mixed sample into PORTC */
-		PORTC = MixedSample_8Bit;
-		#endif
-
-		uint8_t LEDMask = LEDS_NO_LEDS;
-
-		/* Turn on LEDs as the sample amplitude increases */
-		if (MixedSample_8Bit > 16)
-		  LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
-		else if (MixedSample_8Bit > 8)
-		  LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);
-		else if (MixedSample_8Bit > 4)
-		  LEDMask = (LEDS_LED1 | LEDS_LED2);
-		else if (MixedSample_8Bit > 2)
-		  LEDMask = (LEDS_LED1);
-
-		LEDs_SetAllLEDs(LEDMask);
-	}
-
-	Endpoint_SelectEndpoint(PrevEndpoint);
-}
-
-/** Event handler for the library USB Connection event. */
-void EVENT_USB_Device_Connect(void)
-{
-	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
-
-	/* Sample reload timer initialization */
-	TIMSK0  = (1 << OCIE0A);
-	OCR0A   = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
-	TCCR0A  = (1 << WGM01);  // CTC mode
-	TCCR0B  = (1 << CS01);   // Fcpu/8 speed
-
-	#if defined(AUDIO_OUT_MONO)
-	/* Set speaker as output */
-	DDRC   |= (1 << 6);
-	#elif defined(AUDIO_OUT_STEREO)
-	/* Set speakers as outputs */
-	DDRC   |= ((1 << 6) | (1 << 5));
-	#elif defined(AUDIO_OUT_PORTC)
-	/* Set PORTC as outputs */
-	DDRC   |= 0xFF;
-	#endif
-
-	#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
-	/* PWM speaker timer initialization */
-	TCCR3A  = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
-	        | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
-	TCCR3B  = ((1 << WGM32) | (1 << CS30));  // Fast 8-Bit PWM, F_CPU speed
-	#endif
-}
-
-/** Event handler for the library USB Disconnection event. */
-void EVENT_USB_Device_Disconnect(void)
-{
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-
-	/* Stop the sample reload timer */
-	TCCR0B = 0;
-
-	#if (defined(AUDIO_OUT_MONO) || defined(AUDIO_OUT_STEREO))
-	/* Stop the PWM generation timer */
-	TCCR3B = 0;
-	#endif
-
-	#if defined(AUDIO_OUT_MONO)
-	/* Set speaker as input to reduce current draw */
-	DDRC  &= ~(1 << 6);
-	#elif defined(AUDIO_OUT_STEREO)
-	/* Set speakers as inputs to reduce current draw */
-	DDRC  &= ~((1 << 6) | (1 << 5));
-	#elif defined(AUDIO_OUT_PORTC)
-	/* Set PORTC low */
-	PORTC = 0x00;
-	#endif
-}
-
-/** Event handler for the library USB Configuration Changed event. */
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
-	bool ConfigSuccess = true;
-
-	ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Speaker_Audio_Interface);
-
-	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
-}
-
-/** Event handler for the library USB Control Request reception event. */
-void EVENT_USB_Device_ControlRequest(void)
-{
-	Audio_Device_ProcessControlRequest(&Speaker_Audio_Interface);
-}
-
-/** Audio class driver callback for the setting and retrieval of streaming endpoint properties. This callback must be implemented
- *  in the user application to handle property manipulations on streaming audio endpoints.
- *
- *  When the DataLength parameter is NULL, this callback should only indicate whether the specified operation is valid for
- *  the given endpoint index, and should return as fast as possible. When non-NULL, this value may be altered for GET operations
- *  to indicate the size of the retrieved data.
- *
- *  \note The length of the retrieved data stored into the Data buffer on GET operations should not exceed the initial value
- *        of the \c DataLength parameter.
- *
- *  \param[in,out] AudioInterfaceInfo  Pointer to a structure containing an Audio Class configuration and state.
- *  \param[in]     EndpointProperty    Property of the endpoint to get or set, a value from Audio_ClassRequests_t.
- *  \param[in]     EndpointAddress     Address of the streaming endpoint whose property is being referenced.
- *  \param[in]     EndpointControl     Parameter of the endpoint to get or set, a value from Audio_EndpointControls_t.
- *  \param[in,out] DataLength          For SET operations, the length of the parameter data to set. For GET operations, the maximum
- *                                     length of the retrieved data. When NULL, the function should return whether the given property
- *                                     and parameter is valid for the requested endpoint without reading or modifying the Data buffer.
- *  \param[in,out] Data                Pointer to a location where the parameter data is stored for SET operations, or where
- *                                     the retrieved data is to be stored for GET operations.
- *
- *  \return Boolean \c true if the property get/set was successful, \c false otherwise
- */
-bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-                                                  const uint8_t EndpointProperty,
-                                                  const uint8_t EndpointAddress,
-                                                  const uint8_t EndpointControl,
-                                                  uint16_t* const DataLength,
-                                                  uint8_t* Data)
-{
-	/* Check the requested endpoint to see if a supported endpoint is being manipulated */
-	if (EndpointAddress == Speaker_Audio_Interface.Config.DataOUTEndpoint.Address)
-	{
-		/* Check the requested control to see if a supported control is being manipulated */
-		if (EndpointControl == AUDIO_EPCONTROL_SamplingFreq)
-		{
-			switch (EndpointProperty)
-			{
-				case AUDIO_REQ_SetCurrent:
-					/* Check if we are just testing for a valid property, or actually adjusting it */
-					if (DataLength != NULL)
-					{
-						/* Set the new sampling frequency to the value given by the host */
-						CurrentAudioSampleFrequency = (((uint32_t)Data[2] << 16) | ((uint32_t)Data[1] << 8) | (uint32_t)Data[0]);
-
-						/* Adjust sample reload timer to the new frequency */
-						OCR0A = ((F_CPU / 8 / CurrentAudioSampleFrequency) - 1);
-					}
-
-					return true;
-				case AUDIO_REQ_GetCurrent:
-					/* Check if we are just testing for a valid property, or actually reading it */
-					if (DataLength != NULL)
-					{
-						*DataLength = 3;
-
-						Data[2] = (CurrentAudioSampleFrequency >> 16);
-						Data[1] = (CurrentAudioSampleFrequency >> 8);
-						Data[0] = (CurrentAudioSampleFrequency &  0xFF);
-					}
-
-					return true;
-			}
-		}
-	}
-
-	return false;
-}
-
-/** Audio class driver callback for the setting and retrieval of streaming interface properties. This callback must be implemented
- *  in the user application to handle property manipulations on streaming audio interfaces.
- *
- *  When the DataLength parameter is NULL, this callback should only indicate whether the specified operation is valid for
- *  the given entity and should return as fast as possible. When non-NULL, this value may be altered for GET operations
- *  to indicate the size of the retrieved data.
- *
- *  \note The length of the retrieved data stored into the Data buffer on GET operations should not exceed the initial value
- *        of the \c DataLength parameter.
- *
- *  \param[in,out] AudioInterfaceInfo  Pointer to a structure containing an Audio Class configuration and state.
- *  \param[in]     Property            Property of the interface to get or set, a value from Audio_ClassRequests_t.
- *  \param[in]     EntityAddress       Address of the audio entity whose property is being referenced.
- *  \param[in]     Parameter           Parameter of the entity to get or set, specific to each type of entity (see USB Audio specification).
- *  \param[in,out] DataLength          For SET operations, the length of the parameter data to set. For GET operations, the maximum
- *                                     length of the retrieved data. When NULL, the function should return whether the given property
- *                                     and parameter is valid for the requested endpoint without reading or modifying the Data buffer.
- *  \param[in,out] Data                Pointer to a location where the parameter data is stored for SET operations, or where
- *                                     the retrieved data is to be stored for GET operations.
- *
- *  \return Boolean \c true if the property GET/SET was successful, \c false otherwise
- */
-bool CALLBACK_Audio_Device_GetSetInterfaceProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-                                                   const uint8_t Property,
-                                                   const uint8_t EntityAddress,
-                                                   const uint16_t Parameter,
-                                                   uint16_t* const DataLength,
-                                                   uint8_t* Data)
-{
-	/* No audio interface entities in the device descriptor, thus no properties to get or set. */
-	return false;
-}

+ 0 - 87
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h

@@ -1,87 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Header file for AudioOutput.c.
- */
-
-#ifndef _AUDIO_OUTPUT_H_
-#define _AUDIO_OUTPUT_H_
-
-	/* Includes: */
-		#include <avr/io.h>
-		#include <avr/wdt.h>
-		#include <avr/power.h>
-		#include <avr/interrupt.h>
-		#include <stdlib.h>
-
-		#include "Descriptors.h"
-		#include "Config/AppConfig.h"
-
-		#include <LUFA/Drivers/Board/LEDs.h>
-		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Platform/Platform.h>
-
-	/* Macros: */
-		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
-		#define LEDMASK_USB_NOTREADY      LEDS_LED1
-
-		/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
-		#define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)
-
-		/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
-		#define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)
-
-		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
-		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
-
-	/* Function Prototypes: */
-		void SetupHardware(void);
-
-		void EVENT_USB_Device_Connect(void);
-		void EVENT_USB_Device_Disconnect(void);
-		void EVENT_USB_Device_ConfigurationChanged(void);
-		void EVENT_USB_Device_ControlRequest(void);
-
-		bool CALLBACK_Audio_Device_GetSetEndpointProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-		                                                  const uint8_t EndpointProperty,
-		                                                  const uint8_t EndpointAddress,
-		                                                  const uint8_t EndpointControl,
-		                                                  uint16_t* const DataLength,
-		                                                  uint8_t* Data) ATTR_NON_NULL_PTR_ARG(1);
-		bool CALLBACK_Audio_Device_GetSetInterfaceProperty(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo,
-		                                                   const uint8_t Property,
-		                                                   const uint8_t EntityAddress,
-		                                                   const uint16_t Parameter,
-		                                                   uint16_t* const DataLength,
-		                                                   uint8_t* Data);
-#endif
-

+ 0 - 92
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/AudioOutput.txt

@@ -1,92 +0,0 @@
-/** \file
- *
- *  This file contains special DoxyGen information for the generation of the main page and other special
- *  documentation pages. It is not a project source file.
- */
-
-/** \mainpage Audio Output Device Demo
- *
- *  \section Sec_Compat Demo Compatibility:
- *
- *  The following list indicates what microcontrollers are compatible with this demo.
- *
- *  \li Series 7 USB AVRs (AT90USBxxx7)
- *  \li Series 6 USB AVRs (AT90USBxxx6)
- *  \li Series 4 USB AVRs (ATMEGAxxU4)
- *
- *  \section Sec_Info USB Information:
- *
- *  The following table gives a rundown of the USB utilization of this demo.
- *
- *  <table>
- *   <tr>
- *    <td><b>USB Mode:</b></td>
- *    <td>Device</td>
- *   </tr>
- *   <tr>
- *    <td><b>USB Class:</b></td>
- *    <td>Audio Class</td>
- *   </tr>
- *   <tr>
- *    <td><b>USB Subclass:</b></td>
- *    <td>Standard Audio Device</td>
- *   </tr>
- *   <tr>
- *    <td><b>Relevant Standards:</b></td>
- *    <td>USBIF Audio 1.0 Class Specification \n
- *        USBIF Audio 1.0 Class Terminal Types Specification \n
- *        USBIF Audio 1.0 Data Formats Specification</td>
- *   </tr>
- *   <tr>
- *    <td><b>Supported USB Speeds:</b></td>
- *    <td>Full Speed Mode</td>
- *   </tr>
- *  </table>
- *
- *  \section Sec_Description Project Description:
- *
- *  Audio demonstration application. This gives a simple reference
- *  application for implementing a USB Audio Output device using the
- *  basic USB Audio 1.0 drivers in all modern OSes (i.e. no special drivers
- *  required).
- *
- *  On start-up the system will automatically enumerate and function
- *  as a USB speaker. Outgoing audio will output in 8-bit PWM onto
- *  the timer 3 output compare channel A for AUDIO_OUT_MONO mode, on
- *  timer 3 channels A and B for AUDIO_OUT_STEREO and on PORTC as a signed
- *  mono sample for AUDIO_OUT_PORTC. Audio output will also be indicated on
- *  the board LEDs in all modes. Decouple audio outputs with a capacitor and
- *  attach to a speaker to hear the audio.
- *
- *  Under Windows, if a driver request dialogue pops up, select the option
- *  to automatically install the appropriate drivers.
- *
- *  \section Sec_Options Project Options
- *
- *  The following defines can be found in this demo, which can control the demo behaviour when defined, or changed in value.
- *
- *  <table>
- *   <tr>
- *    <th><b>Define Name:</b></th>
- *    <th><b>Location:</b></th>
- *    <th><b>Description:</b></th>
- *   </tr>
- *   <tr>
- *    <td>AUDIO_OUT_STEREO</td>
- *    <td>AppConfig.h</td>
- *    <td>When defined, this outputs the audio samples in stereo to the timer output pins of the microcontroller.</td>
- *   </tr>
- *   <tr>
- *    <td>AUDIO_OUT_MONO</td>
- *    <td>AppConfig.h</td>
- *    <td>When defined, this outputs the audio samples in mono to the timer output pin of the microcontroller.</td>
- *   </tr>
- *   <tr>
- *    <td>AUDIO_OUT_PORTC</td>
- *    <td>AppConfig.h</td>
- *    <td>When defined, this outputs the audio samples in mono to port C of the microcontroller, for connection to an
- *        external DAC.</td>
- *   </tr>
- *  </table>
- */
-

+ 0 - 50
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Config/AppConfig.h

@@ -1,50 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *  \brief Application Configuration Header File
- *
- *  This is a header file which is be used to configure some of
- *  the application's compile time options, as an alternative to
- *  specifying the compile time constants supplied through a
- *  makefile or build system.
- *
- *  For information on what each token does, refer to the
- *  \ref Sec_Options section of the application documentation.
- */
-
-#ifndef _APP_CONFIG_H_
-#define _APP_CONFIG_H_
-
-	#define AUDIO_OUT_STEREO
-//	#define AUDIO_OUT_MONO
-//	#define AUDIO_OUT_PORTC
-
-#endif

+ 0 - 93
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Config/LUFAConfig.h

@@ -1,93 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *  \brief LUFA Library Configuration Header File
- *
- *  This header file is used to configure LUFA's compile time options,
- *  as an alternative to the compile time constants supplied through
- *  a makefile.
- *
- *  For information on what each token does, refer to the LUFA
- *  manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
-	#if (ARCH == ARCH_AVR8)
-
-		/* Non-USB Related Configuration Tokens: */
-//		#define DISABLE_TERMINAL_CODES
-
-		/* USB Class Driver Related Tokens: */
-//		#define HID_HOST_BOOT_PROTOCOL_ONLY
-//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
-//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
-//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
-//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
-//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
-//		#define NO_CLASS_DRIVER_AUTOFLUSH
-
-		/* General USB Driver Related Tokens: */
-//		#define ORDERED_EP_CONFIG
-		#define USE_STATIC_OPTIONS               (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
-		#define USB_DEVICE_ONLY
-//		#define USB_HOST_ONLY
-//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
-//		#define NO_LIMITED_CONTROLLER_CONNECT
-//		#define NO_SOF_EVENTS
-
-		/* USB Device Mode Driver Related Tokens: */
-//		#define USE_RAM_DESCRIPTORS
-		#define USE_FLASH_DESCRIPTORS
-//		#define USE_EEPROM_DESCRIPTORS
-//		#define NO_INTERNAL_SERIAL
-		#define FIXED_CONTROL_ENDPOINT_SIZE      8
-//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here}
-		#define FIXED_NUM_CONFIGURATIONS         1
-//		#define CONTROL_ONLY_DEVICE
-//		#define INTERRUPT_CONTROL_ENDPOINT
-//		#define NO_DEVICE_REMOTE_WAKEUP
-//		#define NO_DEVICE_SELF_POWER
-
-		/* USB Host Mode Driver Related Tokens: */
-//		#define HOST_STATE_AS_GPIOR              {Insert Value Here}
-//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here}
-//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here}
-//		#define NO_AUTO_VBUS_MANAGEMENT
-//		#define INVERTED_VBUS_ENABLE_LINE
-
-	#else
-
-		#error Unsupported architecture for this LUFA configuration file.
-
-	#endif
-#endif

+ 0 - 312
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Descriptors.c

@@ -1,312 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- *  computer-readable structures which the host requests upon device enumeration, to determine
- *  the device's capabilities and functions.
- */
-
-#include "Descriptors.h"
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- *  device characteristics, including the supported USB version, control endpoint size and the
- *  number of device configurations. The descriptor is read out by the USB host when the enumeration
- *  process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
-	.Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
-	.USBSpecification       = VERSION_BCD(2,0,0),
-	.Class                  = USB_CSCP_NoDeviceClass,
-	.SubClass               = USB_CSCP_NoDeviceSubclass,
-	.Protocol               = USB_CSCP_NoDeviceProtocol,
-
-	.Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
-
-	.VendorID               = 0x03EB,
-	.ProductID              = 0x2046,
-	.ReleaseNumber          = VERSION_BCD(0,0,2),
-
-	.ManufacturerStrIndex   = STRING_ID_Manufacturer,
-	.ProductStrIndex        = STRING_ID_Product,
-	.SerialNumStrIndex      = NO_DESCRIPTOR,
-
-	.NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- *  of the device in one of its supported configurations, including information about any device interfaces
- *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- *  a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
-	.Config =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
-			.TotalConfigurationSize   = sizeof(USB_Descriptor_Configuration_t),
-			.TotalInterfaces          = 2,
-
-			.ConfigurationNumber      = 1,
-			.ConfigurationStrIndex    = NO_DESCRIPTOR,
-
-			.ConfigAttributes         = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
-			.MaxPowerConsumption      = USB_CONFIG_POWER_MA(100)
-		},
-
-	.Audio_ControlInterface =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioControl,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 0,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_ControlSubclass,
-			.Protocol                 = AUDIO_CSCP_ControlProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_ControlInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
-
-			.ACSpecification          = VERSION_BCD(1,0,0),
-			.TotalLength              = (sizeof(USB_Audio_Descriptor_Interface_AC_t) +
-			                             sizeof(USB_Audio_Descriptor_InputTerminal_t) +
-			                             sizeof(USB_Audio_Descriptor_OutputTerminal_t)),
-
-			.InCollection             = 1,
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-		},
-
-	.Audio_InputTerminal =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_InputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.TerminalID               = 0x01,
-			.TerminalType             = AUDIO_TERMINAL_STREAMING,
-			.AssociatedOutputTerminal = 0x00,
-
-			.TotalChannels            = 2,
-			.ChannelConfig            = (AUDIO_CHANNEL_LEFT_FRONT | AUDIO_CHANNEL_RIGHT_FRONT),
-
-			.ChannelStrIndex          = NO_DESCRIPTOR,
-			.TerminalStrIndex         = NO_DESCRIPTOR
-		},
-
-	.Audio_OutputTerminal =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_OutputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.TerminalID               = 0x02,
-			.TerminalType             = AUDIO_TERMINAL_OUT_SPEAKER,
-			.AssociatedInputTerminal  = 0x00,
-
-			.SourceID                 = 0x01,
-
-			.TerminalStrIndex         = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_Alt0 =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 0,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_AudioStreamingSubclass,
-			.Protocol                 = AUDIO_CSCP_StreamingProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_Alt1 =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-			.AlternateSetting         = 1,
-
-			.TotalEndpoints           = 1,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_AudioStreamingSubclass,
-			.Protocol                 = AUDIO_CSCP_StreamingProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
-
-			.TerminalLink             = 0x01,
-
-			.FrameDelay               = 1,
-			.AudioFormat              = 0x0001
-		},
-
-	.Audio_AudioFormat =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Format_t) +
-			                                     sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates),
-			                             .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_FormatType,
-
-			.FormatType               = 0x01,
-			.Channels                 = 0x02,
-
-			.SubFrameSize             = 0x02,
-			.BitResolution            = 16,
-
-			.TotalDiscreteSampleRates = (sizeof(ConfigurationDescriptor.Audio_AudioFormatSampleRates) / sizeof(USB_Audio_SampleFreq_t)),
-		},
-
-	.Audio_AudioFormatSampleRates =
-		{
-			AUDIO_SAMPLE_FREQ(8000),
-			AUDIO_SAMPLE_FREQ(11025),
-			AUDIO_SAMPLE_FREQ(22050),
-			AUDIO_SAMPLE_FREQ(44100),
-			AUDIO_SAMPLE_FREQ(48000),
-		},
-
-	.Audio_StreamEndpoint =
-		{
-			.Endpoint =
-				{
-					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
-					.EndpointAddress     = AUDIO_STREAM_EPADDR,
-					.Attributes          = (EP_TYPE_ISOCHRONOUS | ENDPOINT_ATTR_SYNC | ENDPOINT_USAGE_DATA),
-					.EndpointSize        = AUDIO_STREAM_EPSIZE,
-					.PollingIntervalMS   = 0x01
-				},
-
-			.Refresh                  = 0,
-			.SyncEndpointNumber       = 0
-		},
-
-	.Audio_StreamEndpoint_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
-
-			.Attributes               = (AUDIO_EP_ACCEPTS_SMALL_PACKETS | AUDIO_EP_SAMPLE_FREQ_CONTROL),
-
-			.LockDelayUnits           = 0x00,
-			.LockDelay                = 0x0000
-		}
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG);
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera");
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA Audio Out Demo");
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- *  documentation) by the application code so that the address and size of a requested descriptor can be given
- *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- *  USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-                                    const uint8_t wIndex,
-                                    const void** const DescriptorAddress)
-{
-	const uint8_t  DescriptorType   = (wValue >> 8);
-	const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-	const void* Address = NULL;
-	uint16_t    Size    = NO_DESCRIPTOR;
-
-	switch (DescriptorType)
-	{
-		case DTYPE_Device:
-			Address = &DeviceDescriptor;
-			Size    = sizeof(USB_Descriptor_Device_t);
-			break;
-		case DTYPE_Configuration:
-			Address = &ConfigurationDescriptor;
-			Size    = sizeof(USB_Descriptor_Configuration_t);
-			break;
-		case DTYPE_String:
-			switch (DescriptorNumber)
-			{
-				case STRING_ID_Language:
-					Address = &LanguageString;
-					Size    = pgm_read_byte(&LanguageString.Header.Size);
-					break;
-				case STRING_ID_Manufacturer:
-					Address = &ManufacturerString;
-					Size    = pgm_read_byte(&ManufacturerString.Header.Size);
-					break;
-				case STRING_ID_Product:
-					Address = &ProductString;
-					Size    = pgm_read_byte(&ProductString.Header.Size);
-					break;
-			}
-
-			break;
-	}
-
-	*DescriptorAddress = Address;
-	return Size;
-}
-

+ 0 - 106
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/Descriptors.h

@@ -1,106 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Header file for Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
-	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>
-
-		#include <avr/pgmspace.h>
-
-		#include "Config/AppConfig.h"
-
-	/* Macros: */
-		/** Endpoint address of the Audio isochronous streaming data OUT endpoint. */
-		#define AUDIO_STREAM_EPADDR           (ENDPOINT_DIR_OUT | 1)
-
-		/** Endpoint size in bytes of the Audio isochronous streaming data endpoint. */
-		#define AUDIO_STREAM_EPSIZE           256
-
-	/* Type Defines: */
-		/** Type define for the device configuration descriptor structure. This must be defined in the
-		 *  application code, as the configuration descriptor contains several sub-descriptors which
-		 *  vary between devices, and which describe the device's usage to the host.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Configuration_Header_t     Config;
-
-			// Audio Control Interface
-			USB_Descriptor_Interface_t                Audio_ControlInterface;
-			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
-			USB_Audio_Descriptor_InputTerminal_t      Audio_InputTerminal;
-			USB_Audio_Descriptor_OutputTerminal_t     Audio_OutputTerminal;
-
-			// Audio Streaming Interface
-			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt0;
-			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt1;
-			USB_Audio_Descriptor_Interface_AS_t       Audio_StreamInterface_SPC;
-			USB_Audio_Descriptor_Format_t             Audio_AudioFormat;
-			USB_Audio_SampleFreq_t                    Audio_AudioFormatSampleRates[5];
-			USB_Audio_Descriptor_StreamEndpoint_Std_t Audio_StreamEndpoint;
-			USB_Audio_Descriptor_StreamEndpoint_Spc_t Audio_StreamEndpoint_SPC;
-		} USB_Descriptor_Configuration_t;
-
-		/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
-		 *  should have a unique ID index associated with it, which can be used to refer to the
-		 *  interface from other descriptors.
-		 */
-		enum InterfaceDescriptors_t
-		{
-			INTERFACE_ID_AudioControl = 0, /**< Audio control interface descriptor ID */
-			INTERFACE_ID_AudioStream  = 1, /**< Audio stream interface descriptor ID */
-		};
-
-		/** Enum for the device string descriptor IDs within the device. Each string descriptor should
-		 *  have a unique ID index associated with it, which can be used to refer to the string from
-		 *  other descriptors.
-		 */
-		enum StringDescriptors_t
-		{
-			STRING_ID_Language     = 0, /**< Supported Languages string descriptor ID (must be zero) */
-			STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
-			STRING_ID_Product      = 2, /**< Product string ID */
-		};
-
-	/* Function Prototypes: */
-		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-		                                    const uint8_t wIndex,
-		                                    const void** const DescriptorAddress)
-		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-

+ 0 - 50
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/asf.xml

@@ -1,50 +0,0 @@
-<asf xmlversion="1.0">
-	<project caption="Audio Output Device Demo (Class Driver APIs)" id="lufa.demos.device.class.audio_output.example.avr8">
-		<require idref="lufa.demos.device.class.audio_output"/>
-		<require idref="lufa.boards.dummy.avr8"/>
-		<generator value="as5_8"/>
-
-		<device-support value="at90usb1287"/>
-		<config name="lufa.drivers.board.name" value="none"/>
-
-		<build type="define" name="F_CPU" value="16000000UL"/>
-		<build type="define" name="F_USB" value="16000000UL"/>
-	</project>
-
-	<module type="application" id="lufa.demos.device.class.audio_output" caption="Audio Output Device Demo (Class Driver APIs)">
-		<info type="description" value="summary">
-		Audio 1.0 Output device demo, implementing a basic USB speaker. This demo uses the user-friendly USB Class Driver APIs to provide a simple, abstracted interface into the USB stack.
-		</info>
-
- 		<info type="gui-flag" value="move-to-root"/>
-
-		<info type="keyword" value="Technology">
-			<keyword value="Class Driver APIs"/>
-			<keyword value="USB Device"/>
-			<keyword value="Audio Class"/>
-		</info>
-
-		<device-support-alias value="lufa_avr8"/>
-		<device-support-alias value="lufa_xmega"/>
-		<device-support-alias value="lufa_uc3"/>
-
-		<build type="distribute" subtype="user-file" value="doxyfile"/>
-		<build type="distribute" subtype="user-file" value="AudioOutput.txt"/>
-
-		<build type="c-source" value="AudioOutput.c"/>
-		<build type="c-source" value="Descriptors.c"/>
-		<build type="header-file" value="AudioOutput.h"/>
-		<build type="header-file" value="Descriptors.h"/>
-
-		<build type="module-config" subtype="path" value="Config"/>
-		<build type="module-config" subtype="required-header-file" value="AppConfig.h"/>
-		<build type="header-file" value="Config/AppConfig.h"/>
-		<build type="header-file" value="Config/LUFAConfig.h"/>
-
-		<require idref="lufa.common"/>
-		<require idref="lufa.platform"/>
-		<require idref="lufa.drivers.usb"/>
-		<require idref="lufa.drivers.board"/>
-		<require idref="lufa.drivers.board.leds"/>
-	</module>
-</asf>

File diff suppressed because it is too large
+ 0 - 2364
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/doxyfile


+ 0 - 38
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/AudioOutput/makefile

@@ -1,38 +0,0 @@
-#
-#             LUFA Library
-#     Copyright (C) Dean Camera, 2014.
-#
-#  dean [at] fourwalledcubicle [dot] com
-#           www.lufa-lib.org
-#
-# --------------------------------------
-#         LUFA Project Makefile.
-# --------------------------------------
-
-# Run "make help" for target help.
-
-MCU          = at90usb1287
-ARCH         = AVR8
-BOARD        = USBKEY
-F_CPU        = 8000000
-F_USB        = $(F_CPU)
-OPTIMIZATION = s
-TARGET       = AudioOutput
-SRC          = $(TARGET).c Descriptors.c $(LUFA_SRC_USB) $(LUFA_SRC_USBCLASS)
-LUFA_PATH    = ../../../../LUFA
-CC_FLAGS     = -DUSE_LUFA_CONFIG_HEADER -IConfig/
-LD_FLAGS     =
-
-# Default target
-all:
-
-# Include LUFA build script makefiles
-include $(LUFA_PATH)/Build/lufa_core.mk
-include $(LUFA_PATH)/Build/lufa_sources.mk
-include $(LUFA_PATH)/Build/lufa_build.mk
-include $(LUFA_PATH)/Build/lufa_cppcheck.mk
-include $(LUFA_PATH)/Build/lufa_doxygen.mk
-include $(LUFA_PATH)/Build/lufa_dfu.mk
-include $(LUFA_PATH)/Build/lufa_hid.mk
-include $(LUFA_PATH)/Build/lufa_avrdude.mk
-include $(LUFA_PATH)/Build/lufa_atprogram.mk

+ 0 - 126
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Config/LUFAConfig.h

@@ -1,126 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *  \brief LUFA Library Configuration Header File
- *
- *  This header file is used to configure LUFA's compile time options,
- *  as an alternative to the compile time constants supplied through
- *  a makefile.
- *
- *  For information on what each token does, refer to the LUFA
- *  manual section "Summary of Compile Tokens".
- */
-
-#ifndef _LUFA_CONFIG_H_
-#define _LUFA_CONFIG_H_
-
-	#if (ARCH == ARCH_AVR8)
-
-		/* Non-USB Related Configuration Tokens: */
-//		#define DISABLE_TERMINAL_CODES
-
-		/* USB Class Driver Related Tokens: */
-//		#define HID_HOST_BOOT_PROTOCOL_ONLY
-//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
-//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
-//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
-//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
-//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
-//		#define NO_CLASS_DRIVER_AUTOFLUSH
-
-		/* General USB Driver Related Tokens: */
-//		#define ORDERED_EP_CONFIG
-		#define USE_STATIC_OPTIONS               (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
-		#define USB_DEVICE_ONLY
-//		#define USB_HOST_ONLY
-//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
-//		#define NO_LIMITED_CONTROLLER_CONNECT
-//		#define NO_SOF_EVENTS
-
-		/* USB Device Mode Driver Related Tokens: */
-//		#define USE_RAM_DESCRIPTORS
-		#define USE_FLASH_DESCRIPTORS
-//		#define USE_EEPROM_DESCRIPTORS
-//		#define NO_INTERNAL_SERIAL
-		#define FIXED_CONTROL_ENDPOINT_SIZE      8
-//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here}
-		#define FIXED_NUM_CONFIGURATIONS         1
-//		#define CONTROL_ONLY_DEVICE
-//		#define INTERRUPT_CONTROL_ENDPOINT
-//		#define NO_DEVICE_REMOTE_WAKEUP
-//		#define NO_DEVICE_SELF_POWER
-
-		/* USB Host Mode Driver Related Tokens: */
-//		#define HOST_STATE_AS_GPIOR              {Insert Value Here}
-//		#define USB_HOST_TIMEOUT_MS              {Insert Value Here}
-//		#define HOST_DEVICE_SETTLE_DELAY_MS	     {Insert Value Here}
-//		#define NO_AUTO_VBUS_MANAGEMENT
-//		#define INVERTED_VBUS_ENABLE_LINE
-
-	#elif (ARCH == ARCH_XMEGA)
-
-		/* Non-USB Related Configuration Tokens: */
-//		#define DISABLE_TERMINAL_CODES
-
-		/* USB Class Driver Related Tokens: */
-//		#define HID_HOST_BOOT_PROTOCOL_ONLY
-//		#define HID_STATETABLE_STACK_DEPTH       {Insert Value Here}
-//		#define HID_USAGE_STACK_DEPTH            {Insert Value Here}
-//		#define HID_MAX_COLLECTIONS              {Insert Value Here}
-//		#define HID_MAX_REPORTITEMS              {Insert Value Here}
-//		#define HID_MAX_REPORT_IDS               {Insert Value Here}
-//		#define NO_CLASS_DRIVER_AUTOFLUSH
-
-		/* General USB Driver Related Tokens: */
-		#define USE_STATIC_OPTIONS               (USB_DEVICE_OPT_FULLSPEED | USB_OPT_RC32MCLKSRC | USB_OPT_BUSEVENT_PRIHIGH)
-//		#define USB_STREAM_TIMEOUT_MS            {Insert Value Here}
-//		#define NO_LIMITED_CONTROLLER_CONNECT
-//		#define NO_SOF_EVENTS
-
-		/* USB Device Mode Driver Related Tokens: */
-//		#define USE_RAM_DESCRIPTORS
-		#define USE_FLASH_DESCRIPTORS
-//		#define USE_EEPROM_DESCRIPTORS
-//		#define NO_INTERNAL_SERIAL
-		#define FIXED_CONTROL_ENDPOINT_SIZE      8
-//		#define DEVICE_STATE_AS_GPIOR            {Insert Value Here}
-		#define FIXED_NUM_CONFIGURATIONS         1
-//		#define CONTROL_ONLY_DEVICE
-		#define MAX_ENDPOINT_INDEX               2
-//		#define NO_DEVICE_REMOTE_WAKEUP
-//		#define NO_DEVICE_SELF_POWER
-
-	#else
-
-		#error Unsupported architecture for this LUFA configuration file.
-
-	#endif
-#endif

+ 0 - 366
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Descriptors.c

@@ -1,366 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  USB Device Descriptors, for library use when in USB device mode. Descriptors are special
- *  computer-readable structures which the host requests upon device enumeration, to determine
- *  the device's capabilities and functions.
- */
-
-#include "Descriptors.h"
-
-/** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall
- *  device characteristics, including the supported USB version, control endpoint size and the
- *  number of device configurations. The descriptor is read out by the USB host when the enumeration
- *  process begins.
- */
-const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
-{
-	.Header                 = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
-
-	.USBSpecification       = VERSION_BCD(1,1,0),
-	.Class                  = USB_CSCP_NoDeviceClass,
-	.SubClass               = USB_CSCP_NoDeviceSubclass,
-	.Protocol               = USB_CSCP_NoDeviceProtocol,
-
-	.Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
-
-	.VendorID               = 0x03EB,
-	.ProductID              = 0x206D,
-	.ReleaseNumber          = VERSION_BCD(0,0,2),
-
-	.ManufacturerStrIndex   = STRING_ID_Manufacturer,
-	.ProductStrIndex        = STRING_ID_Product,
-	.SerialNumStrIndex      = NO_DESCRIPTOR,
-
-	.NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
-};
-
-/** Configuration descriptor structure. This descriptor, located in FLASH memory, describes the usage
- *  of the device in one of its supported configurations, including information about any device interfaces
- *  and endpoints. The descriptor is read out by the USB host during the enumeration process when selecting
- *  a configuration so that the host may correctly communicate with the USB device.
- */
-const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
-{
-	.Config =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
-
-			.TotalConfigurationSize   = sizeof(USB_Descriptor_Configuration_t),
-			.TotalInterfaces          = 2,
-
-			.ConfigurationNumber      = 1,
-			.ConfigurationStrIndex    = NO_DESCRIPTOR,
-
-			.ConfigAttributes         = (USB_CONFIG_ATTR_RESERVED | USB_CONFIG_ATTR_SELFPOWERED),
-
-			.MaxPowerConsumption      = USB_CONFIG_POWER_MA(100)
-		},
-
-	.Audio_ControlInterface =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioControl,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 0,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_ControlSubclass,
-			.Protocol                 = AUDIO_CSCP_ControlProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_ControlInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
-
-			.ACSpecification          = VERSION_BCD(1,0,0),
-			.TotalLength              = sizeof(USB_Audio_Descriptor_Interface_AC_t),
-
-			.InCollection             = 1,
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-		},
-
-	.Audio_StreamInterface =
-		{
-			.Header                   = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
-
-			.InterfaceNumber          = INTERFACE_ID_AudioStream,
-			.AlternateSetting         = 0,
-
-			.TotalEndpoints           = 2,
-
-			.Class                    = AUDIO_CSCP_AudioClass,
-			.SubClass                 = AUDIO_CSCP_MIDIStreamingSubclass,
-			.Protocol                 = AUDIO_CSCP_StreamingProtocol,
-
-			.InterfaceStrIndex        = NO_DESCRIPTOR
-		},
-
-	.Audio_StreamInterface_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_AudioInterface_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
-
-			.AudioSpecification       = VERSION_BCD(1,0,0),
-
-			.TotalLength              = (sizeof(USB_Descriptor_Configuration_t) -
-			                             offsetof(USB_Descriptor_Configuration_t, Audio_StreamInterface_SPC))
-		},
-
-	.MIDI_In_Jack_Emb =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_Embedded,
-			.JackID                   = 0x01,
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_In_Jack_Emb2 =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_Embedded,
-			.JackID                   = 0x02,
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_In_Jack_Ext =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_External,
-			.JackID                   = 0x03,
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_In_Jack_Ext2 =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_External,
-			.JackID                   = 0x04,
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_Out_Jack_Emb =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_Embedded,
-			.JackID                   = 0x05,
-
-			.NumberOfPins             = 1,
-			.SourceJackID             = {0x03},
-			.SourcePinID              = {0x01},
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_Out_Jack_Emb2 =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_Embedded,
-			.JackID                   = 0x06,
-
-			.NumberOfPins             = 1,
-			.SourceJackID             = {0x04},
-			.SourcePinID              = {0x01},
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_Out_Jack_Ext =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_External,
-			.JackID                   = 0x07,
-
-			.NumberOfPins             = 1,
-			.SourceJackID             = {0x01},
-			.SourcePinID              = {0x01},
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_Out_Jack_Ext2 =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
-
-			.JackType                 = MIDI_JACKTYPE_External,
-			.JackID                   = 0x08,
-
-			.NumberOfPins             = 1,
-			.SourceJackID             = {0x02},
-			.SourcePinID              = {0x01},
-
-			.JackStrIndex             = NO_DESCRIPTOR
-		},
-
-	.MIDI_In_Jack_Endpoint =
-		{
-			.Endpoint =
-				{
-					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
-					.EndpointAddress     = MIDI_STREAM_OUT_EPADDR,
-					.Attributes          = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
-					.EndpointSize        = MIDI_STREAM_EPSIZE,
-					.PollingIntervalMS   = 0x05
-				},
-
-			.Refresh                  = 0,
-			.SyncEndpointNumber       = 0
-		},
-
-	.MIDI_In_Jack_Endpoint_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_DualJack_Endpoint_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
-
-			.TotalEmbeddedJacks       = 0x02,
-			.AssociatedJackID         = {0x01, 0x02}
-		},
-
-	.MIDI_Out_Jack_Endpoint =
-		{
-			.Endpoint =
-				{
-					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
-
-					.EndpointAddress     = MIDI_STREAM_IN_EPADDR,
-					.Attributes          = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
-					.EndpointSize        = MIDI_STREAM_EPSIZE,
-					.PollingIntervalMS   = 0x05
-				},
-
-			.Refresh                  = 0,
-			.SyncEndpointNumber       = 0
-		},
-
-	.MIDI_Out_Jack_Endpoint_SPC =
-		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_DualJack_Endpoint_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
-
-			.TotalEmbeddedJacks       = 0x02,
-			.AssociatedJackID         = {0x05, 0x06}
-		}
-};
-
-/** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests
- *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
- *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
- */
-const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR_ARRAY(LANGUAGE_ID_ENG);
-
-/** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
- *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera");
-
-/** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
- *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
- *  Descriptor.
- */
-const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA Dual MIDI Demo");
-
-/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
- *  documentation) by the application code so that the address and size of a requested descriptor can be given
- *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
- *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
- *  USB host.
- */
-uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-                                    const uint8_t wIndex,
-                                    const void** const DescriptorAddress)
-{
-	const uint8_t  DescriptorType   = (wValue >> 8);
-	const uint8_t  DescriptorNumber = (wValue & 0xFF);
-
-	const void* Address = NULL;
-	uint16_t    Size    = NO_DESCRIPTOR;
-
-	switch (DescriptorType)
-	{
-		case DTYPE_Device:
-			Address = &DeviceDescriptor;
-			Size    = sizeof(USB_Descriptor_Device_t);
-			break;
-		case DTYPE_Configuration:
-			Address = &ConfigurationDescriptor;
-			Size    = sizeof(USB_Descriptor_Configuration_t);
-			break;
-		case DTYPE_String:
-			switch (DescriptorNumber)
-			{
-				case STRING_ID_Language:
-					Address = &LanguageString;
-					Size    = pgm_read_byte(&LanguageString.Header.Size);
-					break;
-				case STRING_ID_Manufacturer:
-					Address = &ManufacturerString;
-					Size    = pgm_read_byte(&ManufacturerString.Header.Size);
-					break;
-				case STRING_ID_Product:
-					Address = &ProductString;
-					Size    = pgm_read_byte(&ProductString.Header.Size);
-					break;
-			}
-
-			break;
-	}
-
-	*DescriptorAddress = Address;
-	return Size;
-}
-

+ 0 - 124
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/Descriptors.h

@@ -1,124 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Header file for Descriptors.c.
- */
-
-#ifndef _DESCRIPTORS_H_
-#define _DESCRIPTORS_H_
-
-	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>
-
-		#include <avr/pgmspace.h>
-
-	/* Macros: */
-		/** Endpoint address of the MIDI streaming data IN endpoint, for device-to-host data transfers. */
-		#define MIDI_STREAM_IN_EPADDR       (ENDPOINT_DIR_IN  | 2)
-
-		/** Endpoint address of the MIDI streaming data OUT endpoint, for host-to-device data transfers. */
-		#define MIDI_STREAM_OUT_EPADDR      (ENDPOINT_DIR_OUT | 1)
-
-		/** Endpoint size in bytes of the Audio isochronous streaming data IN and OUT endpoints. */
-		#define MIDI_STREAM_EPSIZE          64
-
-	/* Type Defines: */
- 		/** Type define for a dual jack endpoint descriptor. This is identical to the LUFA MIDI class driver's
- 		 *  USB_MIDI_Descriptor_Jack_Endpoint_t, except that it contains two jack association entries.
- 		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class-specific descriptors. */
-
-			uint8_t                   TotalEmbeddedJacks; /**< Total number of jacks inside this endpoint. */
-			uint8_t                   AssociatedJackID[2]; /**< IDs of each jack inside the endpoint. */
-		} ATTR_PACKED USB_MIDI_Descriptor_DualJack_Endpoint_t;
-
-		/** Type define for the device configuration descriptor structure. This must be defined in the
-		 *  application code, as the configuration descriptor contains several sub-descriptors which
-		 *  vary between devices, and which describe the device's usage to the host.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Configuration_Header_t     Config;
-
-			// MIDI Audio Control Interface
-			USB_Descriptor_Interface_t                Audio_ControlInterface;
-			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
-
-			// MIDI Audio Streaming Interface
-			USB_Descriptor_Interface_t                Audio_StreamInterface;
-			USB_MIDI_Descriptor_AudioInterface_AS_t   Audio_StreamInterface_SPC;
-			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Emb;
-			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Emb2;
-			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Ext;
-			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Ext2;
-			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Emb;
-			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Emb2;
-			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Ext;
-			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Ext2;
-			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_In_Jack_Endpoint;
-			USB_MIDI_Descriptor_DualJack_Endpoint_t   MIDI_In_Jack_Endpoint_SPC;
-			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_Out_Jack_Endpoint;
-			USB_MIDI_Descriptor_DualJack_Endpoint_t   MIDI_Out_Jack_Endpoint_SPC;
-		} USB_Descriptor_Configuration_t;
-
-		/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
-		 *  should have a unique ID index associated with it, which can be used to refer to the
-		 *  interface from other descriptors.
-		 */
-		enum InterfaceDescriptors_t
-		{
-			INTERFACE_ID_AudioControl = 0, /**< Audio control interface descriptor ID */
-			INTERFACE_ID_AudioStream  = 1, /**< Audio streaming interface descriptor ID */
-		};
-
-		/** Enum for the device string descriptor IDs within the device. Each string descriptor should
-		 *  have a unique ID index associated with it, which can be used to refer to the string from
-		 *  other descriptors.
-		 */
-		enum StringDescriptors_t
-		{
-			STRING_ID_Language     = 0, /**< Supported Languages string descriptor ID (must be zero) */
-			STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
-			STRING_ID_Product      = 2, /**< Product string ID */
-		};
-
-	/* Function Prototypes: */
-		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
-		                                    const uint8_t wIndex,
-		                                    const void** const DescriptorAddress)
-		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
-
-#endif
-

+ 0 - 211
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/DualMIDI.c

@@ -1,211 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2014.
-
-  dean [at] fourwalledcubicle [dot] com
-           www.lufa-lib.org
-*/
-
-/*
-  Copyright 2014  Dean Camera (dean [at] fourwalledcubicle [dot] com)
-
-  Permission to use, copy, modify, distribute, and sell this
-  software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in
-  all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting
-  documentation, and that the name of the author not be used in
-  advertising or publicity pertaining to distribution of the
-  software without specific, written prior permission.
-
-  The author disclaims all warranties with regard to this
-  software, including all implied warranties of merchantability
-  and fitness.  In no event shall the author be liable for any
-  special, indirect or consequential damages or any damages
-  whatsoever resulting from loss of use, data or profits, whether
-  in an action of contract, negligence or other tortious action,
-  arising out of or in connection with the use or performance of
-  this software.
-*/
-
-/** \file
- *
- *  Main source file for the Dual MIDI demo. This file contains the main tasks of
- *  the demo and is responsible for the initial application hardware configuration.
- */
-
-#include "DualMIDI.h"
-
-/** LUFA MIDI Class driver interface configuration and state information. This structure is
- *  passed to all MIDI Class driver functions, so that multiple instances of the same class
- *  within a device can be differentiated from one another.
- */
-USB_ClassInfo_MIDI_Device_t Keyboard_MIDI_Interface =
-	{
-		.Config =
-			{
-				.StreamingInterfaceNumber = INTERFACE_ID_AudioStream,
-				.DataINEndpoint           =
-					{
-						.Address          = MIDI_STREAM_IN_EPADDR,
-						.Size             = MIDI_STREAM_EPSIZE,
-						.Banks            = 1,
-					},
-				.DataOUTEndpoint          =
-					{
-						.Address          = MIDI_STREAM_OUT_EPADDR,
-						.Size             = MIDI_STREAM_EPSIZE,
-						.Banks            = 1,
-					},
-			},
-	};
-
-
-/** Main program entry point. This routine contains the overall program flow, including initial
- *  setup of all components and the main program loop.
- */
-int main(void)
-{
-	SetupHardware();
-
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-	GlobalInterruptEnable();
-
-	for (;;)
-	{
-		CheckJoystickMovement();
-
-		MIDI_EventPacket_t ReceivedMIDIEvent;
-		while (MIDI_Device_ReceiveEventPacket(&Keyboard_MIDI_Interface, &ReceivedMIDIEvent))
-		{
-			if ((ReceivedMIDIEvent.Event == MIDI_EVENT(0, MIDI_COMMAND_NOTE_ON)) && (ReceivedMIDIEvent.Data3 > 0))
-			  LEDs_SetAllLEDs(ReceivedMIDIEvent.Data2 > 64 ? LEDS_LED1 : LEDS_LED2);
-			else
-			  LEDs_SetAllLEDs(LEDS_NO_LEDS);
-		}
-
-		MIDI_Device_USBTask(&Keyboard_MIDI_Interface);
-		USB_USBTask();
-	}
-}
-
-/** Configures the board hardware and chip peripherals for the demo's functionality. */
-void SetupHardware(void)
-{
-#if (ARCH == ARCH_AVR8)
-	/* Disable watchdog if enabled by bootloader/fuses */
-	MCUSR &= ~(1 << WDRF);
-	wdt_disable();
-
-	/* Disable clock division */
-	clock_prescale_set(clock_div_1);
-#elif (ARCH == ARCH_XMEGA)
-	/* Start the PLL to multiply the 2MHz RC oscillator to 32MHz and switch the CPU core to run from it */
-	XMEGACLK_StartPLL(CLOCK_SRC_INT_RC2MHZ, 2000000, F_CPU);
-	XMEGACLK_SetCPUClockSource(CLOCK_SRC_PLL);
-
-	/* Start the 32MHz internal RC oscillator and start the DFLL to increase it to 48MHz using the USB SOF as a reference */
-	XMEGACLK_StartInternalOscillator(CLOCK_SRC_INT_RC32MHZ);
-	XMEGACLK_StartDFLL(CLOCK_SRC_INT_RC32MHZ, DFLL_REF_INT_USBSOF, F_USB);
-
-	PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
-#endif
-
-	/* Hardware Initialization */
-	Joystick_Init();
-	LEDs_Init();
-	Buttons_Init();
-	USB_Init();
-}
-
-/** Checks for changes in the position of the board joystick, sending MIDI events to the host upon each change. */
-void CheckJoystickMovement(void)
-{
-	static uint8_t PrevJoystickStatus;
-
-	uint8_t MIDICommand = 0;
-	uint8_t MIDIPitch;
-
-	/* Get current joystick mask, XOR with previous to detect joystick changes */
-	uint8_t JoystickStatus  = Joystick_GetStatus();
-	uint8_t JoystickChanges = (JoystickStatus ^ PrevJoystickStatus);
-
-	/* Get board button status - if pressed use second virtual cable, otherwise use the first */
-	uint8_t VirtualCable = (Buttons_GetStatus() & BUTTONS_BUTTON1) ? 1 : 0;
-
-	if (JoystickChanges & JOY_LEFT)
-	{
-		MIDICommand = ((JoystickStatus & JOY_LEFT)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
-		MIDIPitch   = 0x3C;
-	}
-
-	if (JoystickChanges & JOY_UP)
-	{
-		MIDICommand = ((JoystickStatus & JOY_UP)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
-		MIDIPitch   = 0x3D;
-	}
-
-	if (JoystickChanges & JOY_RIGHT)
-	{
-		MIDICommand = ((JoystickStatus & JOY_RIGHT)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
-		MIDIPitch   = 0x3E;
-	}
-
-	if (JoystickChanges & JOY_DOWN)
-	{
-		MIDICommand = ((JoystickStatus & JOY_DOWN)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
-		MIDIPitch   = 0x3F;
-	}
-
-	if (JoystickChanges & JOY_PRESS)
-	{
-		MIDICommand = ((JoystickStatus & JOY_PRESS)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
-		MIDIPitch   = 0x3B;
-	}
-
-	if (MIDICommand)
-	{
-		MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
-			{
-				.Event       = MIDI_EVENT(VirtualCable, MIDICommand),
-
-				.Data1       = MIDICommand | MIDI_CHANNEL(1),
-				.Data2       = MIDIPitch,
-				.Data3       = MIDI_STANDARD_VELOCITY,
-			};
-
-		MIDI_Device_SendEventPacket(&Keyboard_MIDI_Interface, &MIDIEvent);
-		MIDI_Device_Flush(&Keyboard_MIDI_Interface);
-	}
-
-	PrevJoystickStatus = JoystickStatus;
-}
-
-/** Event handler for the library USB Connection event. */
-void EVENT_USB_Device_Connect(void)
-{
-	LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
-}
-
-/** Event handler for the library USB Disconnection event. */
-void EVENT_USB_Device_Disconnect(void)
-{
-	LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-}
-
-/** Event handler for the library USB Configuration Changed event. */
-void EVENT_USB_Device_ConfigurationChanged(void)
-{
-	bool ConfigSuccess = true;
-
-	ConfigSuccess &= MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface);
-
-	LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
-}
-
-/** Event handler for the library USB Control Request reception event. */
-void EVENT_USB_Device_ControlRequest(void)
-{
-	MIDI_Device_ProcessControlRequest(&Keyboard_MIDI_Interface);
-}
-

+ 0 - 0
tmk_core/protocol/lufa/LUFA-git/Demos/Device/ClassDriver/DualMIDI/DualMIDI.h


Some files were not shown because too many files changed in this diff