master
commit
73d2a470ee
|
@ -0,0 +1,93 @@
|
||||||
|
# auto for anything unspecified
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# sources
|
||||||
|
*.c text
|
||||||
|
*.cc text
|
||||||
|
*.cxx text
|
||||||
|
*.cpp text
|
||||||
|
*.c++ text
|
||||||
|
*.hpp text
|
||||||
|
*.h text
|
||||||
|
*.h++ text
|
||||||
|
*.hh text
|
||||||
|
*.bat text
|
||||||
|
*.coffee text
|
||||||
|
*.css text
|
||||||
|
*.htm text
|
||||||
|
*.html text
|
||||||
|
*.inc text
|
||||||
|
*.ini text
|
||||||
|
*.js text
|
||||||
|
*.jsx text
|
||||||
|
*.json text
|
||||||
|
*.less text
|
||||||
|
*.php text
|
||||||
|
*.pl text
|
||||||
|
*.py text
|
||||||
|
*.rb text
|
||||||
|
*.sass text
|
||||||
|
*.scm text
|
||||||
|
*.scss text
|
||||||
|
*.sh text
|
||||||
|
*.sql text
|
||||||
|
*.styl text
|
||||||
|
*.ts text
|
||||||
|
*.xml text
|
||||||
|
*.xhtml text
|
||||||
|
|
||||||
|
# make files (need to always use lf for compatibility with Windows 10 bash)
|
||||||
|
Makefile eol=lf
|
||||||
|
*.mk eol=lf
|
||||||
|
|
||||||
|
# make files (need to always use lf for compatibility with Windows 10 bash)
|
||||||
|
*.sh eol=lf
|
||||||
|
|
||||||
|
# documentation
|
||||||
|
*.markdown text
|
||||||
|
*.md text
|
||||||
|
*.mdwn text
|
||||||
|
*.mdown text
|
||||||
|
*.mkd text
|
||||||
|
*.mkdn text
|
||||||
|
*.mdtxt text
|
||||||
|
*.mdtext text
|
||||||
|
*.txt text
|
||||||
|
AUTHORS text
|
||||||
|
CHANGELOG text
|
||||||
|
CHANGES text
|
||||||
|
CONTRIBUTING text
|
||||||
|
COPYING text
|
||||||
|
INSTALL text
|
||||||
|
license text
|
||||||
|
LICENSE text
|
||||||
|
NEWS text
|
||||||
|
readme text
|
||||||
|
*README* text
|
||||||
|
TODO text
|
||||||
|
|
||||||
|
GRAPHICS
|
||||||
|
*.ai binary
|
||||||
|
*.bmp binary
|
||||||
|
*.eps binary
|
||||||
|
*.gif binary
|
||||||
|
*.ico binary
|
||||||
|
*.jng binary
|
||||||
|
*.jp2 binary
|
||||||
|
*.jpg binary
|
||||||
|
*.jpeg binary
|
||||||
|
*.jpx binary
|
||||||
|
*.jxr binary
|
||||||
|
*.pdf binary
|
||||||
|
*.png binary
|
||||||
|
*.psb binary
|
||||||
|
*.psd binary
|
||||||
|
*.svg text
|
||||||
|
*.svgz binary
|
||||||
|
*.tif binary
|
||||||
|
*.tiff binary
|
||||||
|
*.wbmp binary
|
||||||
|
*.webp binary
|
||||||
|
|
||||||
|
# hex files
|
||||||
|
*.hex binary
|
4
Makefile
4
Makefile
|
@ -190,6 +190,10 @@ ifeq ($(strip $(MIDI_ENABLE)), yes)
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_midi.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DVIRTSER_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
ifeq ($(strip $(AUDIO_ENABLE)), yes)
|
||||||
OPT_DEFS += -DAUDIO_ENABLE
|
OPT_DEFS += -DAUDIO_ENABLE
|
||||||
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
|
||||||
|
|
|
@ -455,6 +455,35 @@ Turn the backlight on and off without changing level.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 2.6 Swap-Hands Action
|
||||||
|
The swap-hands action allows support for one-handed keyboards without requiring a separate layer. Set `ONEHAND_ENABLE` in the Makefile and define a `hand_swap_config` entry in your keymap. Now whenever the `ACTION_SWAP_HANDS` command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type `^Ge^s^s^w^c W^wr^sd`
|
||||||
|
|
||||||
|
### 2.6.1 Configuration
|
||||||
|
The configuration table is a simple 2-dimensional array to map from column/row to new column/row. Example `hand_swap_config` for Planck:
|
||||||
|
|
||||||
|
```
|
||||||
|
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
|
||||||
|
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
|
||||||
|
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
|
||||||
|
{{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the array indices are reversed same as the matrix and the values are of type `keypos_t` which is `{col, row}` and all values are zero-based. In the example above, `hand_swap_config[2][4]` (third row, fifth column) would return {7, 2} (third row, eighth column).
|
||||||
|
|
||||||
|
### 2.6.2 Advanced Swap Commands
|
||||||
|
- **`ACTION_SWAP_HANDS()`** Swaps hands when pressed, returns to normal when released (momentary).
|
||||||
|
- **`ACTION_SWAP_HANDS_TOGGLE()`** Toggles swap on and off with every keypress.
|
||||||
|
- **`ACTION_SWAP_HANDS_TAP_TOGGLE()`** Toggles with a tap; momentary when held.
|
||||||
|
- **`ACTION_SWAP_HANDS_TAP_KEY(key)`** Sends `key` with a tap; momentary swap when held.
|
||||||
|
- **`ACTION_SWAP_HANDS_ON_OFF()`** Alias for `ACTION_SWAP_HANDS()`
|
||||||
|
- **`ACTION_SWAP_HANDS_OFF_ON()`** Momentarily turns off swap.
|
||||||
|
- **`ACTION_SWAP_HANDS_ON()`** Turns on swapping and leaves it on.
|
||||||
|
- **`ACTION_SWAP_HANDS_OFF()`** Turn off swapping and leaves it off. Good for returning to a known state.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 3. Layer switching Example
|
## 3. Layer switching Example
|
||||||
There are some ways to switch layer with 'Layer' actions.
|
There are some ways to switch layer with 'Layer' actions.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
VIRTSER_ENABLE = yes
|
||||||
|
# Not enough interupts, so something has to go
|
||||||
|
MOUSEKEY_ENABLE = no
|
|
@ -0,0 +1,324 @@
|
||||||
|
#include "ergodox.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "action_layer.h"
|
||||||
|
#include "sendchar.h"
|
||||||
|
#include "virtser.h"
|
||||||
|
|
||||||
|
#define BASE 0 // default layer
|
||||||
|
#define SYMB 1 // symbols
|
||||||
|
#define MDIA 2 // media keys
|
||||||
|
#define TXBOLT 3 // TxBolt Steno Virtual Serial
|
||||||
|
#define TXBOLT2 4 // TxBolt Steno Virtual Serial Alternative Layout
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
/* Keymap 0: Basic layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ |
|
||||||
|
* |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------|
|
||||||
|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
||||||
|
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||||
|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | App | LGui | | Alt |Ctrl/Esc|
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
|
||||||
|
// Otherwise, it needs KC_*
|
||||||
|
[BASE] = KEYMAP( // layer 0 : default
|
||||||
|
// left hand
|
||||||
|
KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT,
|
||||||
|
KC_DELT, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB),
|
||||||
|
KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||||
|
KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO),
|
||||||
|
LT(SYMB,KC_GRV),KC_QUOT, LALT(KC_LSFT), KC_LEFT,KC_RGHT,
|
||||||
|
ALT_T(KC_APP), KC_LGUI,
|
||||||
|
KC_HOME,
|
||||||
|
KC_SPC,KC_BSPC,KC_END,
|
||||||
|
// right hand
|
||||||
|
KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||||
|
TG(TXBOLT), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||||
|
KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN),GUI_T(KC_QUOT),
|
||||||
|
MEH_T(KC_NO),KC_N, KC_M, KC_COMM,KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
|
||||||
|
KC_UP, KC_DOWN,KC_LBRC,KC_RBRC, KC_FN1,
|
||||||
|
KC_LALT, CTL_T(KC_ESC),
|
||||||
|
KC_PGUP,
|
||||||
|
KC_PGDN,KC_TAB, KC_ENT
|
||||||
|
),
|
||||||
|
/* Keymap 1: Symbol Layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// SYMBOLS
|
||||||
|
[SYMB] = KEYMAP(
|
||||||
|
// left hand
|
||||||
|
M(0), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
|
||||||
|
KC_TRNS,KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
|
||||||
|
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
|
||||||
|
KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS,KC_TRNS,KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||||
|
KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12,
|
||||||
|
KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS,
|
||||||
|
KC_TRNS,KC_DOT, KC_0, KC_EQL, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS
|
||||||
|
),
|
||||||
|
/* Keymap 2: Media and mouse keys
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | RESET | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | | | MsUp | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | Prev | Next | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | |Brwser|
|
||||||
|
* | | |------| |------| |Back |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// MEDIA AND MOUSE
|
||||||
|
[MDIA] = KEYMAP(
|
||||||
|
RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
// right hand
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY,
|
||||||
|
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
|
||||||
|
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS,
|
||||||
|
KC_TRNS,
|
||||||
|
KC_TRNS, KC_TRNS, KC_WBAK
|
||||||
|
),
|
||||||
|
// TxBolt Codes
|
||||||
|
#define Sl 0b00000001
|
||||||
|
#define Tl 0b00000010
|
||||||
|
#define Kl 0b00000100
|
||||||
|
#define Pl 0b00001000
|
||||||
|
#define Wl 0b00010000
|
||||||
|
#define Hl 0b00100000
|
||||||
|
#define Rl 0b01000001
|
||||||
|
#define Al 0b01000010
|
||||||
|
#define Ol 0b01000100
|
||||||
|
#define X 0b01001000
|
||||||
|
#define Er 0b01010000
|
||||||
|
#define Ur 0b01100000
|
||||||
|
#define Fr 0b10000001
|
||||||
|
#define Rr 0b10000010
|
||||||
|
#define Pr 0b10000100
|
||||||
|
#define Br 0b10001000
|
||||||
|
#define Lr 0b10010000
|
||||||
|
#define Gr 0b10100000
|
||||||
|
#define Tr 0b11000001
|
||||||
|
#define Sr 0b11000010
|
||||||
|
#define Dr 0b11000100
|
||||||
|
#define Zr 0b11001000
|
||||||
|
#define NM 0b11010000
|
||||||
|
#define GRPMASK 0b11000000
|
||||||
|
#define GRP0 0b00000000
|
||||||
|
#define GRP1 0b01000000
|
||||||
|
#define GRP2 0b10000000
|
||||||
|
#define GRP3 0b11000000
|
||||||
|
/* Keymap 3: TxBolt (Serial)
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | BKSPC | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | S | T | P | H | * |------| |------| * | F | P | L | T | D |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | S | K | W | R | * | | | | * | R | B | G | S | Z |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | A | O |------| |------| E | U |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// TxBolt over Serial
|
||||||
|
[TXBOLT] = KEYMAP(
|
||||||
|
KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), KC_NO,
|
||||||
|
KC_NO, M(Sl), M(Tl), M(Pl), M(Hl), M(X),
|
||||||
|
KC_NO, M(Sl), M(Kl), M(Wl), M(Rl), M(X), KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO,
|
||||||
|
KC_NO,
|
||||||
|
M(Al), M(Ol), KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_TRNS, M(NM), M(NM), M(NM), M(NM), M(NM), M(NM),
|
||||||
|
M(X), M(Fr), M(Pr), M(Lr), M(Tr), M(Dr),
|
||||||
|
KC_NO, M(X), M(Rr), M(Br), M(Gr), M(Sr), M(Zr),
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO,
|
||||||
|
KC_NO,
|
||||||
|
KC_NO, M(Er), M(Ur)
|
||||||
|
),
|
||||||
|
/* Keymap 4: TxBolt (Serial) Alternative
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | S | T | P | H | * | | | | * | F | P | L | T | D |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | S | K | W | R | * |------| |------| * | R | B | G | S | Z |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | A | O | | E | U | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
// TxBolt over Serial
|
||||||
|
[TXBOLT2] = KEYMAP(
|
||||||
|
KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), KC_NO,
|
||||||
|
KC_NO, M(Sl), M(Tl), M(Pl), M(Hl), M(X), KC_NO,
|
||||||
|
KC_NO, M(Sl), M(Kl), M(Wl), M(Rl), M(X),
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO, M(Al), M(Ol),
|
||||||
|
KC_NO, KC_NO,
|
||||||
|
KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO,
|
||||||
|
// right hand
|
||||||
|
KC_NO, M(NM), M(NM), M(NM), M(NM), M(NM), M(NM),
|
||||||
|
KC_TRNS, M(X), M(Fr), M(Pr), M(Lr), M(Tr), M(Dr),
|
||||||
|
M(X), M(Rr), M(Br), M(Gr), M(Sr), M(Zr),
|
||||||
|
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||||
|
M(Er), M(Ur), KC_NO, KC_NO, KC_NO,
|
||||||
|
KC_NO, KC_NO,
|
||||||
|
KC_NO,
|
||||||
|
KC_NO, KC_NO, KC_NO
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
|
||||||
|
};
|
||||||
|
|
||||||
|
uint8_t chord[4] = {0,0,0,0};
|
||||||
|
uint8_t pressed_count = 0;
|
||||||
|
|
||||||
|
void send_chord(void)
|
||||||
|
{
|
||||||
|
for(uint8_t i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
if(chord[i])
|
||||||
|
virtser_send(chord[i]);
|
||||||
|
}
|
||||||
|
virtser_send(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record)
|
||||||
|
{
|
||||||
|
// We need to track keypresses in all modes, in case the user
|
||||||
|
// changes mode whilst pressing other keys.
|
||||||
|
if (record->event.pressed)
|
||||||
|
pressed_count++;
|
||||||
|
else
|
||||||
|
pressed_count--;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
|
||||||
|
if (record->event.pressed) {
|
||||||
|
uint8_t grp = (id & GRPMASK) >> 6;
|
||||||
|
chord[grp] |= id;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (pressed_count == 0) {
|
||||||
|
send_chord();
|
||||||
|
chord[0] = chord[1] = chord[2] = chord[3] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs just one time when the keyboard initializes.
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
};
|
||||||
|
|
||||||
|
// Runs constantly in the background, in a loop.
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
uint8_t layer = biton32(layer_state);
|
||||||
|
|
||||||
|
ergodox_board_led_off();
|
||||||
|
ergodox_right_led_1_off();
|
||||||
|
ergodox_right_led_2_off();
|
||||||
|
ergodox_right_led_3_off();
|
||||||
|
switch (layer) {
|
||||||
|
// TODO: Make this relevant to the ErgoDox EZ.
|
||||||
|
case 1:
|
||||||
|
ergodox_right_led_1_on();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
ergodox_right_led_2_on();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// none
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
|
@ -0,0 +1,92 @@
|
||||||
|
# ErgoDox EZ Steno Configuration
|
||||||
|
|
||||||
|
This layout has a layer that uses the TxBolt Stenograph protocol over a Virtual Serial port. It requires something like Plover in order to function.
|
||||||
|
|
||||||
|
In Plover, you can select TX Bolt as the Stenotype Machine, and find the COM port that was assigned. In this way, your regular keyboard will still function normally, and you can switch back and forth between the Steno and Keyboard layers.
|
||||||
|
|
||||||
|
<pre><code>
|
||||||
|
/* Keymap 0: Basic layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | Del | Q | W | E | R | T | L1 | | TX | Y | U | I | O | P | \ |
|
||||||
|
* |--------+------+------+------+------+------| | | BOLT |------+------+------+------+------+--------|
|
||||||
|
* | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd |
|
||||||
|
* |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------|
|
||||||
|
* | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | App | LGui | | Alt |Ctrl/Esc|
|
||||||
|
* ,------|------|------| |------+--------+------.
|
||||||
|
* | | | Home | | PgUp | | |
|
||||||
|
* | Space|Backsp|------| |------| Tab |Enter |
|
||||||
|
* | |ace | End | | PgDn | | |
|
||||||
|
* `--------------------' `----------------------'
|
||||||
|
*/
|
||||||
|
/* Keymap 1: Symbol Layer
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | . | 0 | = | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | | |------| |------| | |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
/* Keymap 2: Media keys
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | RESET | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | |------| |------| | | | | | Play |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | | | | | | | | | | | Prev | Next | | |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | |VolUp |VolDn | Mute | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | |Brwser|
|
||||||
|
* | | |------| |------| |Back |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
/* Keymap 3: TxBolt (Serial)
|
||||||
|
*
|
||||||
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
||||||
|
* | BKSPC | | | | | | | | | | | | | | |
|
||||||
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
||||||
|
* | | # | # | # | # | # | | | | # | # | # | # | # | # |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | S | T | P | H | * |------| |------| * | F | P | L | T | D |
|
||||||
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
||||||
|
* | | S | K | W | R | * | | | | * | R | B | G | S | Z |
|
||||||
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
||||||
|
* | | | | | | | | | | | |
|
||||||
|
* `----------------------------------' `----------------------------------'
|
||||||
|
* ,-------------. ,-------------.
|
||||||
|
* | | | | | |
|
||||||
|
* ,------|------|------| |------+------+------.
|
||||||
|
* | | | | | | | |
|
||||||
|
* | A | O |------| |------| E | U |
|
||||||
|
* | | | | | | | |
|
||||||
|
* `--------------------' `--------------------'
|
||||||
|
*/
|
||||||
|
</code></pre>
|
|
@ -130,3 +130,27 @@ void ergodox_right_led_3_off(void){
|
||||||
|
|
||||||
void ergodox_right_led_off(uint8_t led){
|
void ergodox_right_led_off(uint8_t led){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
__attribute__ ((weak))
|
||||||
|
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}},
|
||||||
|
{{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}},
|
||||||
|
{{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}},
|
||||||
|
{{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}},
|
||||||
|
{{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}},
|
||||||
|
{{0, 14}, {1, 14}, {2, 14}, {3, 14}, {4, 14}},
|
||||||
|
{{0, 15}, {1, 15}, {2, 15}, {3, 15}, {4, 15}},
|
||||||
|
{{0, 16}, {1, 16}, {2, 16}, {3, 16}, {4, 16}},
|
||||||
|
{{0, 17}, {1, 17}, {2, 17}, {3, 17}, {4, 17}},
|
||||||
|
{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}},
|
||||||
|
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}},
|
||||||
|
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}},
|
||||||
|
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}},
|
||||||
|
{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}},
|
||||||
|
{{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}},
|
||||||
|
{{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}},
|
||||||
|
{{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}},
|
||||||
|
{{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
|
||||||
|
# MCU name
|
||||||
|
#MCU = at90usb1287
|
||||||
|
MCU = atmega32u2
|
||||||
|
|
||||||
|
# Processor frequency.
|
||||||
|
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||||
|
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||||
|
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||||
|
# automatically to create a 32-bit value in your source code.
|
||||||
|
#
|
||||||
|
# This will be an integer division of F_USB below, as it is sourced by
|
||||||
|
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||||
|
# does not *change* the processor frequency - it should merely be updated to
|
||||||
|
# reflect the processor speed set externally so that the code can use accurate
|
||||||
|
# software delays.
|
||||||
|
F_CPU = 16000000
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# LUFA specific
|
||||||
|
#
|
||||||
|
# Target architecture (see library "Board Types" documentation).
|
||||||
|
ARCH = AVR8
|
||||||
|
|
||||||
|
# Input clock frequency.
|
||||||
|
# This will define a symbol, F_USB, in all source code files equal to the
|
||||||
|
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||||
|
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||||
|
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||||
|
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||||
|
# at the end, this will be done automatically to create a 32-bit value in your
|
||||||
|
# source code.
|
||||||
|
#
|
||||||
|
# If no clock division is performed on the input clock inside the AVR (via the
|
||||||
|
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||||
|
F_USB = $(F_CPU)
|
||||||
|
|
||||||
|
# Interrupt driven control endpoint task(+60)
|
||||||
|
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||||
|
|
||||||
|
|
||||||
|
# Boot Section Size in *bytes*
|
||||||
|
# Teensy halfKay 512
|
||||||
|
# Teensy++ halfKay 1024
|
||||||
|
# Atmel DFU loader 4096
|
||||||
|
# LUFA bootloader 4096
|
||||||
|
# USBaspLoader 2048
|
||||||
|
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||||
|
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000)
|
||||||
|
MOUSEKEY_ENABLE ?= yes # Mouse keys(+4700)
|
||||||
|
EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450)
|
||||||
|
CONSOLE_ENABLE ?= yes # Console for debug(+400)
|
||||||
|
COMMAND_ENABLE ?= yes # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE ?= no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality on B7 by default
|
||||||
|
MIDI_ENABLE ?= no # MIDI controls
|
||||||
|
UNICODE_ENABLE ?= no # Unicode
|
||||||
|
BLUETOOTH_ENABLE ?= no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
|
AUDIO_ENABLE ?= no # Audio output on port C6
|
||||||
|
|
||||||
|
CUSTOM_MATRIX = yes
|
||||||
|
SRC += matrix.c led.c
|
||||||
|
|
||||||
|
ifndef QUANTUM_DIR
|
||||||
|
include ../../Makefile
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
/*
|
||||||
|
Copyright 2012 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 CONFIG_H
|
||||||
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xFEED
|
||||||
|
#define PRODUCT_ID 0x6050
|
||||||
|
#define DEVICE_VER 0x0104
|
||||||
|
#define MANUFACTURER Costar
|
||||||
|
#define PRODUCT Majestouch
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 8
|
||||||
|
#define MATRIX_COLS 18
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Keyboard Matrix Assignments
|
||||||
|
*
|
||||||
|
* Change this to how you wired your keyboard
|
||||||
|
* COLS: AVR pins used for columns, left to right
|
||||||
|
* ROWS: AVR pins used for rows, top to bottom
|
||||||
|
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||||
|
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define MATRIX_ROW_PINS { D0, D5 }
|
||||||
|
//#define MATRIX_COL_PINS { F1, F0, B0 }
|
||||||
|
//#define UNUSED_PINS
|
||||||
|
|
||||||
|
/* COL2ROW or ROW2COL */
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
// #define BACKLIGHT_PIN B7
|
||||||
|
// #define BACKLIGHT_BREATHING
|
||||||
|
// #define BACKLIGHT_LEVELS 3
|
||||||
|
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCING_DELAY 5
|
||||||
|
|
||||||
|
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* number of backlight levels */
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force NKRO
|
||||||
|
*
|
||||||
|
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||||
|
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||||
|
* makefile for this to work.)
|
||||||
|
*
|
||||||
|
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||||
|
* until the next keyboard reset.
|
||||||
|
*
|
||||||
|
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||||
|
* fully operational during normal computer usage.
|
||||||
|
*
|
||||||
|
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||||
|
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||||
|
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||||
|
* power-up.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
//#define FORCE_NKRO
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Magic Key Options
|
||||||
|
*
|
||||||
|
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||||
|
* the keyboard. They are best used in combination with the HID Listen program,
|
||||||
|
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||||
|
*
|
||||||
|
* The options below allow the magic key functionality to be changed. This is
|
||||||
|
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* key combination for magic key command */
|
||||||
|
#define IS_COMMAND() ( \
|
||||||
|
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||||
|
)
|
||||||
|
|
||||||
|
/* control how magic key switches layers */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||||
|
|
||||||
|
/* override magic key keymap */
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||||
|
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||||
|
//#define MAGIC_KEY_HELP1 H
|
||||||
|
//#define MAGIC_KEY_HELP2 SLASH
|
||||||
|
//#define MAGIC_KEY_DEBUG D
|
||||||
|
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||||
|
//#define MAGIC_KEY_DEBUG_KBD K
|
||||||
|
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||||
|
//#define MAGIC_KEY_VERSION V
|
||||||
|
//#define MAGIC_KEY_STATUS S
|
||||||
|
//#define MAGIC_KEY_CONSOLE C
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||||
|
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||||
|
//#define MAGIC_KEY_LAYER0 0
|
||||||
|
//#define MAGIC_KEY_LAYER1 1
|
||||||
|
//#define MAGIC_KEY_LAYER2 2
|
||||||
|
//#define MAGIC_KEY_LAYER3 3
|
||||||
|
//#define MAGIC_KEY_LAYER4 4
|
||||||
|
//#define MAGIC_KEY_LAYER5 5
|
||||||
|
//#define MAGIC_KEY_LAYER6 6
|
||||||
|
//#define MAGIC_KEY_LAYER7 7
|
||||||
|
//#define MAGIC_KEY_LAYER8 8
|
||||||
|
//#define MAGIC_KEY_LAYER9 9
|
||||||
|
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||||
|
//#define MAGIC_KEY_LOCK CAPS
|
||||||
|
//#define MAGIC_KEY_EEPROM E
|
||||||
|
//#define MAGIC_KEY_NKRO N
|
||||||
|
//#define MAGIC_KEY_SLEEP_LED Z
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Feature disable options
|
||||||
|
* These options are also useful to firmware size reduction.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* disable debug print */
|
||||||
|
//#define NO_DEBUG
|
||||||
|
|
||||||
|
/* disable print */
|
||||||
|
//#define NO_PRINT
|
||||||
|
|
||||||
|
/* disable action features */
|
||||||
|
//#define NO_ACTION_LAYER
|
||||||
|
//#define NO_ACTION_TAPPING
|
||||||
|
//#define NO_ACTION_ONESHOT
|
||||||
|
//#define NO_ACTION_MACRO
|
||||||
|
//#define NO_ACTION_FUNCTION
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,51 @@
|
||||||
|
#include "kitten_paw.h"
|
||||||
|
|
||||||
|
enum layers {
|
||||||
|
DEFAULT,
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[DEFAULT] = KEYMAP(\
|
||||||
|
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR,KC_SLCK,KC_PAUS, \
|
||||||
|
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,KC_MINS, KC_EQL,KC_BSPC, KC_INS,KC_HOME,KC_PGUP, KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
|
||||||
|
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,KC_LBRC,KC_RBRC,KC_BSLS, KC_DEL, KC_END,KC_PGDN, KC_P7, KC_P8, KC_P9,KC_PPLS, \
|
||||||
|
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, \
|
||||||
|
KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT, \
|
||||||
|
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI,KC_MENU,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT)
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||||
|
{
|
||||||
|
// MACRODOWN only works in this function
|
||||||
|
switch(id) {
|
||||||
|
case 0:
|
||||||
|
if (record->event.pressed) {
|
||||||
|
register_code(KC_RSFT);
|
||||||
|
} else {
|
||||||
|
unregister_code(KC_RSFT);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return MACRO_NONE;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void matrix_init_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_user(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_user(uint8_t usb_led) {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
#include "kitten_paw.h"
|
||||||
|
|
||||||
|
void matrix_init_kb(void) {
|
||||||
|
// put your keyboard start-up code here
|
||||||
|
// runs once when the firmware starts up
|
||||||
|
|
||||||
|
matrix_init_quantum();
|
||||||
|
matrix_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_scan_kb(void) {
|
||||||
|
// put your looping keyboard code here
|
||||||
|
// runs every cycle (a lot)
|
||||||
|
|
||||||
|
matrix_scan_quantum();
|
||||||
|
matrix_scan_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
// put your per-action keyboard code here
|
||||||
|
// runs for every action, just before processing by the firmware
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_set_kb(uint8_t usb_led) {
|
||||||
|
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||||
|
|
||||||
|
led_set_user(usb_led);
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
#ifndef KITTEN_PAW_H
|
||||||
|
#define KITTEN_PAW_H
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
// This a shortcut to help you visually see your layout.
|
||||||
|
// The first section contains all of the arguements
|
||||||
|
// The second converts the arguments into a two-dimensional array
|
||||||
|
/*
|
||||||
|
Matrix col/row mapping
|
||||||
|
|
||||||
|
,----. ,-------------------. ,-------------------. ,-------------------. ,--------------.
|
||||||
|
| J6 | | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
|
||||||
|
`----' `-------------------' `-------------------' `-------------------' `--------------'
|
||||||
|
,-------------------------------------------------------------------------. ,--------------. ,-------------------.
|
||||||
|
| J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 | B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
|
||||||
|
|-------------------------------------------------------------------------| |--------------| |-------------------|
|
||||||
|
| J2 | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 | B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
|
||||||
|
|-------------------------------------------------------------------------| '--------------' |-------------- |
|
||||||
|
| O5 | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 | B1 | | K2 | L2 | Q2 | |
|
||||||
|
|-------------------------------------------------------------------------| ,----. |-------------------|
|
||||||
|
| N2 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 | N3 | | O6 | | K3 | L3 | Q3 | O3 |
|
||||||
|
|-------------------------------------------------------------------------| ,--------------. |-------------- |
|
||||||
|
| A4 | P2 | C6 | K6 | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6 | Q6 | |
|
||||||
|
`-------------------------------------------------------------------------' `--------------' `-------------------'
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define KEYMAP( \
|
||||||
|
KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
|
||||||
|
KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, KK1, KL1, KQ1, KQ0, \
|
||||||
|
KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, KK5, KL5, KQ5, KO5, \
|
||||||
|
KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, KK2, KL2, KQ2, \
|
||||||
|
KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, KK3, KL3, KQ3, KO3, \
|
||||||
|
KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0, KL6, KQ6 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{KC_NO, KB0, KC0, KD0,KC_NO, KF0, KG0,KC_NO,KC_NO,KC_NO, KK0, KL0,KC_NO,KC_NO, KO0,KC_NO, KQ0, KR0}, \
|
||||||
|
{ KA1, KB1,KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KK1, KL1,KC_NO,KC_NO,KC_NO,KC_NO, KQ1,KC_NO}, \
|
||||||
|
{KC_NO, KB2,KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KK2, KL2,KC_NO, KN2,KC_NO, KP2, KQ2, KR2}, \
|
||||||
|
{KC_NO, KB3,KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KN3, KO3,KC_NO, KQ3, KR3}, \
|
||||||
|
{ KA4, KB4,KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4,KC_NO,KC_NO, KO4,KC_NO, KQ4, KR4}, \
|
||||||
|
{ KA5,KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5,KC_NO,KC_NO, KO5,KC_NO, KQ5, KR5}, \
|
||||||
|
{KC_NO, KB6, KC6,KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KL6,KC_NO,KC_NO, KO6,KC_NO, KQ6, KR6}, \
|
||||||
|
{ KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7,KC_NO,KC_NO,KC_NO,KC_NO, KO7,KC_NO, KQ7, KR7} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
|
||||||
|
|
||||||
|
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 <avr/io.h>
|
||||||
|
#include "stdint.h"
|
||||||
|
#include "led.h"
|
||||||
|
|
||||||
|
/* LED pin configuration
|
||||||
|
*
|
||||||
|
* Scroll Lock PC5
|
||||||
|
* Caps Lock PC6
|
||||||
|
* Num Lock PB7
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void led_set(uint8_t usb_led) {
|
||||||
|
DDRB |= (1<<7);
|
||||||
|
DDRC |= (1<<5) | (1<<6);
|
||||||
|
|
||||||
|
if (usb_led & (1<<USB_LED_CAPS_LOCK))
|
||||||
|
PORTC &= ~(1<<6);
|
||||||
|
else
|
||||||
|
PORTC |= (1<<6);
|
||||||
|
|
||||||
|
if (usb_led & (1<<USB_LED_NUM_LOCK))
|
||||||
|
PORTB &= ~(1<<7);
|
||||||
|
else
|
||||||
|
PORTB |= (1<<7);
|
||||||
|
|
||||||
|
if (usb_led & (1<<USB_LED_SCROLL_LOCK))
|
||||||
|
PORTC &= ~(1<<5);
|
||||||
|
else
|
||||||
|
PORTC |= (1<<5);
|
||||||
|
}
|
|
@ -0,0 +1,164 @@
|
||||||
|
/*
|
||||||
|
Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
|
||||||
|
|
||||||
|
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 <stdint.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
#include "print.h"
|
||||||
|
#include "debug.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "matrix.h"
|
||||||
|
|
||||||
|
#ifndef DEBOUNCING_DELAY
|
||||||
|
# define DEBOUNCING_DELAY 5
|
||||||
|
#endif
|
||||||
|
static uint8_t debouncing = DEBOUNCING_DELAY;
|
||||||
|
|
||||||
|
static matrix_row_t matrix[MATRIX_ROWS];
|
||||||
|
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
|
||||||
|
|
||||||
|
static uint8_t read_rows(void);
|
||||||
|
static void select_col(uint8_t col);
|
||||||
|
|
||||||
|
inline uint8_t matrix_rows(void) {
|
||||||
|
return MATRIX_ROWS;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint8_t matrix_cols(void) {
|
||||||
|
return MATRIX_COLS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Column pin configuration
|
||||||
|
*
|
||||||
|
* col: 0 1 2 3 4 5 6 7
|
||||||
|
* pin: PC7 PD5 PD3 PD1 PC2 PD6 PD4 PD2
|
||||||
|
*
|
||||||
|
* Rrr pin configuration
|
||||||
|
*
|
||||||
|
* These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
|
||||||
|
* active), together with 2 rrrs driven directly from the micro
|
||||||
|
* controller, to control the 18 rrrs. The rrrs are driven from
|
||||||
|
* pins B6,5,4,3,2,1,0.
|
||||||
|
*/
|
||||||
|
void matrix_init(void) {
|
||||||
|
DDRC &= ~0b10000100; // Row input pins
|
||||||
|
DDRD &= ~0b01111110;
|
||||||
|
PORTC |= 0b10000100;
|
||||||
|
PORTD |= 0b01111110;
|
||||||
|
|
||||||
|
DDRB |= 0b01111111; // Column output pins
|
||||||
|
|
||||||
|
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = 0;
|
||||||
|
matrix_debouncing[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t matrix_scan(void) {
|
||||||
|
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
||||||
|
select_col(col);
|
||||||
|
_delay_us(3);
|
||||||
|
uint8_t rows = read_rows();
|
||||||
|
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||||
|
bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
|
||||||
|
bool curr_bit = rows & (1<<row);
|
||||||
|
if (prev_bit != curr_bit) {
|
||||||
|
matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
|
||||||
|
debouncing = DEBOUNCING_DELAY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debouncing) {
|
||||||
|
if (--debouncing) {
|
||||||
|
_delay_ms(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
matrix[i] = matrix_debouncing[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool matrix_is_modified(void) {
|
||||||
|
if (debouncing)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool matrix_is_on(uint8_t row, uint8_t col) {
|
||||||
|
return (matrix[row] & ((matrix_row_t)1<<col));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline matrix_row_t matrix_get_row(uint8_t row) {
|
||||||
|
return matrix[row];
|
||||||
|
}
|
||||||
|
|
||||||
|
void matrix_print(void) {
|
||||||
|
print("\nr/c 0123456789ABCDEF\n");
|
||||||
|
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
|
||||||
|
xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t matrix_key_count(void) {
|
||||||
|
uint8_t count = 0;
|
||||||
|
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
|
||||||
|
count += bitpop32(matrix[i]);
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t read_rows(void) {
|
||||||
|
return
|
||||||
|
(PINC&(1<<7) ? 0 : (1<<0)) |
|
||||||
|
(PIND&(1<<5) ? 0 : (1<<1)) |
|
||||||
|
(PIND&(1<<3) ? 0 : (1<<2)) |
|
||||||
|
(PIND&(1<<1) ? 0 : (1<<3)) |
|
||||||
|
(PINC&(1<<2) ? 0 : (1<<4)) |
|
||||||
|
(PIND&(1<<2) ? 0 : (1<<5)) |
|
||||||
|
(PIND&(1<<4) ? 0 : (1<<6)) |
|
||||||
|
(PIND&(1<<6) ? 0 : (1<<7));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void select_col(uint8_t col) {
|
||||||
|
switch (col) {
|
||||||
|
case 0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break;
|
||||||
|
case 1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break;
|
||||||
|
case 2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break;
|
||||||
|
case 3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break;
|
||||||
|
case 4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break;
|
||||||
|
case 5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break;
|
||||||
|
case 6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break;
|
||||||
|
case 7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break;
|
||||||
|
case 8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break;
|
||||||
|
case 9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break;
|
||||||
|
case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break;
|
||||||
|
case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break;
|
||||||
|
case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break;
|
||||||
|
case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break;
|
||||||
|
case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break;
|
||||||
|
case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break;
|
||||||
|
case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break;
|
||||||
|
case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
kitten_paw keyboard firmware
|
||||||
|
======================
|
||||||
|
This is the firmware for the 2016 revision of the Kitten Paw controller by Bathroom Epiphanies.
|
||||||
|
Most of the boilerplate code is the work of [BathroomEpiphanies](https://github.com/BathroomEpiphanies).
|
||||||
|
|
||||||
|
NKRO doesn't work at the moment, I don't know if I will take the time to find out how to fix this, so far 6KRO is enough for me.
|
||||||
|
|
||||||
|
## Quantum MK Firmware
|
||||||
|
|
||||||
|
For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
Download or clone the whole firmware and navigate to the keyboards/kitten_paw folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
||||||
|
|
||||||
|
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
||||||
|
|
||||||
|
### Default
|
||||||
|
|
||||||
|
To build with the default keymap, simply run `make`.
|
||||||
|
|
||||||
|
### Other Keymaps
|
||||||
|
|
||||||
|
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
|
||||||
|
|
||||||
|
To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make keymap=[default|jack|<name>]
|
||||||
|
```
|
||||||
|
|
||||||
|
Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
|
|
@ -16,6 +16,7 @@ AUDIO_ENABLE = no # Audio output on port C6
|
||||||
UNICODE_ENABLE = no # Unicode
|
UNICODE_ENABLE = no # Unicode
|
||||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||||
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||||
|
ONEHAND_ENABLE = yes # Enable one-hand typing
|
||||||
|
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
|
|
@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
{KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
|
||||||
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
{KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
|
||||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||||
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Colemak
|
/* Colemak
|
||||||
|
@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
|
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
|
||||||
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
|
||||||
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
|
||||||
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Dvorak
|
/* Dvorak
|
||||||
|
@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
|
{KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
|
||||||
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
|
{KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
|
||||||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
|
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
|
||||||
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
{KC_LEAD, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_FN0, KC_FN0, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
|
||||||
},
|
},
|
||||||
|
|
||||||
/* Lower
|
/* Lower
|
||||||
|
@ -186,7 +186,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint16_t PROGMEM fn_actions[] = {
|
const uint16_t PROGMEM fn_actions[] = {
|
||||||
|
ACTION_SWAP_HANDS_TAP_KEY(KC_SPC),
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
#ifdef AUDIO_ENABLE
|
||||||
|
|
|
@ -1,5 +1,15 @@
|
||||||
#include "planck.h"
|
#include "planck.h"
|
||||||
|
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
__attribute__ ((weak))
|
||||||
|
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
|
||||||
|
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
|
||||||
|
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
|
||||||
|
{{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
// Turn status LED on
|
// Turn status LED on
|
||||||
DDRE |= (1<<6);
|
DDRE |= (1<<6);
|
||||||
|
|
|
@ -1,5 +1,16 @@
|
||||||
#include "preonic.h"
|
#include "preonic.h"
|
||||||
|
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
__attribute__ ((weak))
|
||||||
|
const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
{{11, 0}, {10, 0}, {9, 0}, {8, 0}, {7, 0}, {6, 0}, {5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
|
||||||
|
{{11, 1}, {10, 1}, {9, 1}, {8, 1}, {7, 1}, {6, 1}, {5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
|
||||||
|
{{11, 2}, {10, 2}, {9, 2}, {8, 2}, {7, 2}, {6, 2}, {5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
|
||||||
|
{{11, 3}, {10, 3}, {9, 3}, {8, 3}, {7, 3}, {6, 3}, {5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
|
||||||
|
{{11, 4}, {10, 4}, {9, 4}, {8, 4}, {7, 4}, {6, 4}, {5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
void matrix_init_kb(void) {
|
void matrix_init_kb(void) {
|
||||||
|
|
||||||
// Turn status LED on
|
// Turn status LED on
|
||||||
|
|
|
@ -39,6 +39,7 @@ These keyboards are part of the QMK repository, but their manufacturers are not
|
||||||
* [hhkb](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK.
|
* [hhkb](/keyboards/hhkb) — The Happy Hacking keyboard can be hacked with a custom controller to run QMK.
|
||||||
* [jd45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe.
|
* [jd45](/keyboards/jd45) — Another Geekhack community project, designed by jdcarpe.
|
||||||
* [kc60](/keyboards/kc60) — A programmable Chinese-made keyboard, lost in the mists of time.
|
* [kc60](/keyboards/kc60) — A programmable Chinese-made keyboard, lost in the mists of time.
|
||||||
|
* [kitten_paw](/keyboards/kitten_paw) — A replacement controller (2016 revision) for the Filco Majestouch by [Bathroom Epiphanies](https://github.com/BathroomEpiphanies)
|
||||||
* [phantom](/keyboards/phantom) — A tenkeyless kit by Teel, also from Geekhack.
|
* [phantom](/keyboards/phantom) — A tenkeyless kit by Teel, also from Geekhack.
|
||||||
* [retro_refit](/keyboards/retro_refit) — Another creation by IBNobody.
|
* [retro_refit](/keyboards/retro_refit) — Another creation by IBNobody.
|
||||||
* [satan](/keyboards/satan) — A GH60 variant.
|
* [satan](/keyboards/satan) — A GH60 variant.
|
||||||
|
|
|
@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
||||||
},
|
},
|
||||||
[_DV] = { /* Dvorak */
|
[_DV] = { /* Dvorak */
|
||||||
{KC_TAB, KC_COMM, KC_DOT, KC_SLSH, KC_Q, KC_Q, KC_Q, KC_Q, KC_Q, KC_Q, KC_Q, KC_BSPC },
|
{KC_TAB, KC_SLSH, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
|
||||||
{MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) },
|
{MO(_L1), KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, MO(_L1) },
|
||||||
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) },
|
{KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_L2) },
|
||||||
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
{KC_LCTL, MO(_L2), KC_LGUI, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, KC_RALT, KC_ESC, XXXXXXX, TG(_L3) }
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
|
||||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
|
||||||
K30, K31, K32, K33, K37, K38, K39, K3B \
|
K30, K31, K32, K33, K37, K38, K39, K3A, K3B \
|
||||||
) \
|
) \
|
||||||
{ \
|
{ \
|
||||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B }, \
|
||||||
|
|
|
@ -18,6 +18,7 @@ void set_unicode_input_mode(uint8_t os_target)
|
||||||
input_mode = os_target;
|
input_mode = os_target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((weak))
|
||||||
void unicode_input_start (void) {
|
void unicode_input_start (void) {
|
||||||
switch(input_mode) {
|
switch(input_mode) {
|
||||||
case UC_OSX:
|
case UC_OSX:
|
||||||
|
@ -40,6 +41,7 @@ void unicode_input_start (void) {
|
||||||
wait_ms(UNICODE_TYPE_DELAY);
|
wait_ms(UNICODE_TYPE_DELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((weak))
|
||||||
void unicode_input_finish (void) {
|
void unicode_input_finish (void) {
|
||||||
switch(input_mode) {
|
switch(input_mode) {
|
||||||
case UC_OSX:
|
case UC_OSX:
|
||||||
|
@ -72,6 +74,8 @@ bool process_unicode(uint16_t keycode, keyrecord_t *record) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef UCIS_ENABLE
|
#ifdef UCIS_ENABLE
|
||||||
|
qk_ucis_state_t qk_ucis_state;
|
||||||
|
|
||||||
void qk_ucis_start(void) {
|
void qk_ucis_start(void) {
|
||||||
qk_ucis_state.count = 0;
|
qk_ucis_state.count = 0;
|
||||||
qk_ucis_state.in_progress = true;
|
qk_ucis_state.in_progress = true;
|
||||||
|
|
|
@ -29,11 +29,13 @@ typedef struct {
|
||||||
char *code;
|
char *code;
|
||||||
} qk_ucis_symbol_t;
|
} qk_ucis_symbol_t;
|
||||||
|
|
||||||
struct {
|
typedef struct {
|
||||||
uint8_t count;
|
uint8_t count;
|
||||||
uint16_t codes[UCIS_MAX_SYMBOL_LENGTH];
|
uint16_t codes[UCIS_MAX_SYMBOL_LENGTH];
|
||||||
bool in_progress:1;
|
bool in_progress:1;
|
||||||
} qk_ucis_state;
|
} qk_ucis_state_t;
|
||||||
|
|
||||||
|
extern qk_ucis_state_t qk_ucis_state;
|
||||||
|
|
||||||
#define UCIS_TABLE(...) {__VA_ARGS__, {NULL, NULL}}
|
#define UCIS_TABLE(...) {__VA_ARGS__, {NULL, NULL}}
|
||||||
#define UCIS_SYM(name, code) {name, #code}
|
#define UCIS_SYM(name, code) {name, #code}
|
||||||
|
|
53
readme.md
53
readme.md
|
@ -13,7 +13,7 @@ For an easy-to-read version of this document and the repository, check out [http
|
||||||
* [Planck](/keyboards/planck/)
|
* [Planck](/keyboards/planck/)
|
||||||
* [Preonic](/keyboards/preonic/)
|
* [Preonic](/keyboards/preonic/)
|
||||||
* [Atomic](/keyboards/atomic/)
|
* [Atomic](/keyboards/atomic/)
|
||||||
* [ErgoDox EZ](/keyboards/ergodox/ez/)
|
* [ErgoDox EZ](/keyboards/ergodox/)
|
||||||
* [Clueboard](/keyboards/clueboard/)
|
* [Clueboard](/keyboards/clueboard/)
|
||||||
* [Cluepad](/keyboards/cluepad/)
|
* [Cluepad](/keyboards/cluepad/)
|
||||||
|
|
||||||
|
@ -43,6 +43,29 @@ Before you are able to compile, you'll need to install an environment for AVR de
|
||||||
|
|
||||||
## Build Environment Setup
|
## Build Environment Setup
|
||||||
|
|
||||||
|
### Windows 10
|
||||||
|
|
||||||
|
It's still recommended to use the method for Vista and later below. The reason for this is that the Windows 10 Subsystem for Linux lacks [USB support](https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/13355724-unable-to-access-usb-devices-from-bash), so it's not possible to flash the firmware to the keyboard. Please add your vote to the link!
|
||||||
|
|
||||||
|
That said, it's still possible to use it for compilation. And recommended, if you need to compile much, since it's much faster than at least Cygwin (which is also supported, but currently lacking documentation). I haven't tried the method below, so I'm unable to tell.
|
||||||
|
|
||||||
|
Here are the steps
|
||||||
|
|
||||||
|
1. Install the Windows 10 subsystem for Linux, following [these instructions](http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/).
|
||||||
|
2. If you have previously cloned the repository using the normal Git bash, you will need to clean up the line endings. If you have cloned it after 20th of August 2016, you are likely fine. To clean up the line endings do the following
|
||||||
|
1. Make sure that you have no changes you haven't committed by running `git status`, if you do commit them first
|
||||||
|
2. From within the Git bash run ´git rm --cached -r .`
|
||||||
|
3. Followed by `git reset --hard`
|
||||||
|
3. Start the "Bash On Ubuntu On Windows" from the start menu
|
||||||
|
4. With the bash open, navigate to your git checkout. The harddisk can be accessed from `/mnt` for example `/mnt/c` for the `c:\` drive.
|
||||||
|
5. Run `sudo util/install_dependencies.sh`.
|
||||||
|
6. After a while the installation will finish, and you are good to go
|
||||||
|
|
||||||
|
**Note** From time to time, the dependencies might change, so just run `install_dependencies.sh` again if things are not working.
|
||||||
|
|
||||||
|
**Warning:** If you edit Makefiles or shell scripts, make sure you are using an editor that saves the files with Unix line endings. Otherwise the compilation might not work.
|
||||||
|
|
||||||
|
|
||||||
### Windows (Vista and later)
|
### Windows (Vista and later)
|
||||||
1. If you have ever installed WinAVR, uninstall it.
|
1. If you have ever installed WinAVR, uninstall it.
|
||||||
2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
|
2. Install [MHV AVR Tools](https://infernoembedded.com/sites/default/files/project/MHV_AVR_Tools_20131101.exe). Disable smatch, but **be sure to leave the option to add the tools to the PATH checked**.
|
||||||
|
@ -68,12 +91,36 @@ You can also try these instructions:
|
||||||
3. Install [DFU-Programmer][dfu-prog].
|
3. Install [DFU-Programmer][dfu-prog].
|
||||||
|
|
||||||
### Linux
|
### Linux
|
||||||
Install AVR GCC, AVR libc, and dfu-progammer with your favorite package manager.
|
|
||||||
|
To ensure you are always up to date, you can just run `sudo utils/install_dependencies.sh`. That should always install all the dependencies needed.
|
||||||
|
|
||||||
|
You can also install things manually, but this documentation might not be always up to date with all requirements.
|
||||||
|
|
||||||
|
The current requirements are the following, but not all might be needed depending on what you do. Also note that some systems might not have all the dependencies available as packages, or they might be named differently.
|
||||||
|
|
||||||
|
```
|
||||||
|
build-essential
|
||||||
|
gcc
|
||||||
|
unzip
|
||||||
|
wget
|
||||||
|
zip
|
||||||
|
gcc-avr
|
||||||
|
binutils-avr
|
||||||
|
avr-libc
|
||||||
|
dfu-programmer
|
||||||
|
dfu-util
|
||||||
|
gcc-arm-none-eabi
|
||||||
|
binutils-arm-none-eabi
|
||||||
|
libnewlib-arm-none-eabi
|
||||||
|
git
|
||||||
|
```
|
||||||
|
|
||||||
|
Install the dependencies with your favorite package manager.
|
||||||
|
|
||||||
Debian/Ubuntu example:
|
Debian/Ubuntu example:
|
||||||
|
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install gcc-avr avr-libc dfu-programmer
|
sudo apt-get install gcc unzip wget zip gcc-avr binutils-avr avr-libc dfu-programmer dfu-util gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,10 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
|
||||||
OPT_DEFS += -DBLUETOOTH_ENABLE
|
OPT_DEFS += -DBLUETOOTH_ENABLE
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(ONEHAND_ENABLE)), yes)
|
||||||
|
OPT_DEFS += -DONEHAND_ENABLE
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes)
|
ifeq ($(strip $(KEYMAP_SECTION_ENABLE)), yes)
|
||||||
OPT_DEFS += -DKEYMAP_SECTION_ENABLE
|
OPT_DEFS += -DKEYMAP_SECTION_ENABLE
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,12 @@ void action_exec(keyevent_t event)
|
||||||
dprint("EVENT: "); debug_event(event); dprintln();
|
dprint("EVENT: "); debug_event(event); dprintln();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
if (!IS_NOEVENT(event)) {
|
||||||
|
process_hand_swap(&event);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
keyrecord_t record = { .event = event };
|
keyrecord_t record = { .event = event };
|
||||||
|
|
||||||
#ifndef NO_ACTION_TAPPING
|
#ifndef NO_ACTION_TAPPING
|
||||||
|
@ -53,6 +59,26 @@ void action_exec(keyevent_t event)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
bool swap_hands = false;
|
||||||
|
|
||||||
|
void process_hand_swap(keyevent_t *event) {
|
||||||
|
static swap_state_row_t swap_state[MATRIX_ROWS];
|
||||||
|
|
||||||
|
keypos_t pos = event->key;
|
||||||
|
swap_state_row_t col_bit = (swap_state_row_t)1<<pos.col;
|
||||||
|
bool do_swap = event->pressed ? swap_hands :
|
||||||
|
swap_state[pos.row] & (col_bit);
|
||||||
|
|
||||||
|
if (do_swap) {
|
||||||
|
event->key = hand_swap_config[pos.row][pos.col];
|
||||||
|
swap_state[pos.row] |= col_bit;
|
||||||
|
} else {
|
||||||
|
swap_state[pos.row] &= ~(col_bit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
|
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
|
||||||
bool disable_action_cache = false;
|
bool disable_action_cache = false;
|
||||||
|
|
||||||
|
@ -440,6 +466,54 @@ void process_action(keyrecord_t *record, action_t action)
|
||||||
#endif
|
#endif
|
||||||
case ACT_COMMAND:
|
case ACT_COMMAND:
|
||||||
break;
|
break;
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
case ACT_SWAP_HANDS:
|
||||||
|
switch (action.swap.code) {
|
||||||
|
case OP_SH_TOGGLE:
|
||||||
|
if (event.pressed) {
|
||||||
|
swap_hands = !swap_hands;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case OP_SH_ON_OFF:
|
||||||
|
swap_hands = event.pressed;
|
||||||
|
break;
|
||||||
|
case OP_SH_OFF_ON:
|
||||||
|
swap_hands = !event.pressed;
|
||||||
|
break;
|
||||||
|
case OP_SH_ON:
|
||||||
|
if (!event.pressed) {
|
||||||
|
swap_hands = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case OP_SH_OFF:
|
||||||
|
if (!event.pressed) {
|
||||||
|
swap_hands = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#ifndef NO_ACTION_TAPPING
|
||||||
|
case OP_SH_TAP_TOGGLE:
|
||||||
|
/* tap toggle */
|
||||||
|
if (tap_count > 0) {
|
||||||
|
if (!event.pressed) {
|
||||||
|
swap_hands = !swap_hands;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
swap_hands = event.pressed;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (tap_count > 0) {
|
||||||
|
if (event.pressed) {
|
||||||
|
register_code(action.swap.code);
|
||||||
|
} else {
|
||||||
|
unregister_code(action.swap.code);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
swap_hands = event.pressed;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifndef NO_ACTION_FUNCTION
|
#ifndef NO_ACTION_FUNCTION
|
||||||
case ACT_FUNCTION:
|
case ACT_FUNCTION:
|
||||||
action_function(record, action.func.id, action.func.opt);
|
action_function(record, action.func.id, action.func.opt);
|
||||||
|
@ -652,6 +726,13 @@ bool is_tap_key(keypos_t key)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
case ACT_SWAP_HANDS:
|
||||||
|
switch (action.swap.code) {
|
||||||
|
case 0x00 ... 0xdf:
|
||||||
|
case OP_SH_TAP_TOGGLE:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
case ACT_MACRO:
|
case ACT_MACRO:
|
||||||
case ACT_FUNCTION:
|
case ACT_FUNCTION:
|
||||||
if (action.func.opt & FUNC_TAP) { return true; }
|
if (action.func.opt & FUNC_TAP) { return true; }
|
||||||
|
@ -692,6 +773,7 @@ void debug_action(action_t action)
|
||||||
case ACT_MACRO: dprint("ACT_MACRO"); break;
|
case ACT_MACRO: dprint("ACT_MACRO"); break;
|
||||||
case ACT_COMMAND: dprint("ACT_COMMAND"); break;
|
case ACT_COMMAND: dprint("ACT_COMMAND"); break;
|
||||||
case ACT_FUNCTION: dprint("ACT_FUNCTION"); break;
|
case ACT_FUNCTION: dprint("ACT_FUNCTION"); break;
|
||||||
|
case ACT_SWAP_HANDS: dprint("ACT_SWAP_HANDS"); break;
|
||||||
default: dprint("UNKNOWN"); break;
|
default: dprint("UNKNOWN"); break;
|
||||||
}
|
}
|
||||||
dprintf("[%X:%02X]", action.kind.param>>8, action.kind.param&0xff);
|
dprintf("[%X:%02X]", action.kind.param>>8, action.kind.param&0xff);
|
||||||
|
|
|
@ -65,6 +65,24 @@ bool process_record_quantum(keyrecord_t *record);
|
||||||
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
|
#if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS)
|
||||||
extern bool disable_action_cache;
|
extern bool disable_action_cache;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Code for handling one-handed key modifiers. */
|
||||||
|
#ifdef ONEHAND_ENABLE
|
||||||
|
extern bool swap_hands;
|
||||||
|
extern const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS];
|
||||||
|
#if (MATRIX_COLS <= 8)
|
||||||
|
typedef uint8_t swap_state_row_t;
|
||||||
|
#elif (MATRIX_COLS <= 16)
|
||||||
|
typedef uint16_t swap_state_row_t;
|
||||||
|
#elif (MATRIX_COLS <= 32)
|
||||||
|
typedef uint32_t swap_state_row_t;
|
||||||
|
#else
|
||||||
|
#error "MATRIX_COLS: invalid value"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void process_hand_swap(keyevent_t *record);
|
||||||
|
#endif
|
||||||
|
|
||||||
void process_record_nocache(keyrecord_t *record);
|
void process_record_nocache(keyrecord_t *record);
|
||||||
void process_record(keyrecord_t *record);
|
void process_record(keyrecord_t *record);
|
||||||
void process_action(keyrecord_t *record, action_t action);
|
void process_action(keyrecord_t *record, action_t action);
|
||||||
|
|
|
@ -108,6 +108,8 @@ enum action_kind_id {
|
||||||
/* Other Keys */
|
/* Other Keys */
|
||||||
ACT_USAGE = 0b0100,
|
ACT_USAGE = 0b0100,
|
||||||
ACT_MOUSEKEY = 0b0101,
|
ACT_MOUSEKEY = 0b0101,
|
||||||
|
/* One-hand Support */
|
||||||
|
ACT_SWAP_HANDS = 0b0110,
|
||||||
/* Layer Actions */
|
/* Layer Actions */
|
||||||
ACT_LAYER = 0b1000,
|
ACT_LAYER = 0b1000,
|
||||||
ACT_LAYER_TAP = 0b1010, /* Layer 0-15 */
|
ACT_LAYER_TAP = 0b1010, /* Layer 0-15 */
|
||||||
|
@ -178,6 +180,11 @@ typedef union {
|
||||||
uint8_t opt :4;
|
uint8_t opt :4;
|
||||||
uint8_t kind :4;
|
uint8_t kind :4;
|
||||||
} func;
|
} func;
|
||||||
|
struct action_swap {
|
||||||
|
uint8_t code :8;
|
||||||
|
uint8_t opt :4;
|
||||||
|
uint8_t kind :4;
|
||||||
|
} swap;
|
||||||
} action_t;
|
} action_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -295,6 +302,7 @@ enum backlight_opt {
|
||||||
BACKLIGHT_STEP = 3,
|
BACKLIGHT_STEP = 3,
|
||||||
BACKLIGHT_LEVEL = 4,
|
BACKLIGHT_LEVEL = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Macro */
|
/* Macro */
|
||||||
#define ACTION_MACRO(id) ACTION(ACT_MACRO, (id))
|
#define ACTION_MACRO(id) ACTION(ACT_MACRO, (id))
|
||||||
#define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP<<8 | (id))
|
#define ACTION_MACRO_TAP(id) ACTION(ACT_MACRO, FUNC_TAP<<8 | (id))
|
||||||
|
@ -306,7 +314,7 @@ enum backlight_opt {
|
||||||
#define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8)
|
#define ACTION_BACKLIGHT_STEP() ACTION(ACT_BACKLIGHT, BACKLIGHT_STEP << 8)
|
||||||
#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level))
|
#define ACTION_BACKLIGHT_LEVEL(level) ACTION(ACT_BACKLIGHT, BACKLIGHT_LEVEL << 8 | (level))
|
||||||
/* Command */
|
/* Command */
|
||||||
#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (addr))
|
#define ACTION_COMMAND(id, opt) ACTION(ACT_COMMAND, (opt)<<8 | (id))
|
||||||
/* Function */
|
/* Function */
|
||||||
enum function_opts {
|
enum function_opts {
|
||||||
FUNC_TAP = 0x8, /* indciates function is tappable */
|
FUNC_TAP = 0x8, /* indciates function is tappable */
|
||||||
|
@ -314,5 +322,23 @@ enum function_opts {
|
||||||
#define ACTION_FUNCTION(id) ACTION(ACT_FUNCTION, (id))
|
#define ACTION_FUNCTION(id) ACTION(ACT_FUNCTION, (id))
|
||||||
#define ACTION_FUNCTION_TAP(id) ACTION(ACT_FUNCTION, FUNC_TAP<<8 | (id))
|
#define ACTION_FUNCTION_TAP(id) ACTION(ACT_FUNCTION, FUNC_TAP<<8 | (id))
|
||||||
#define ACTION_FUNCTION_OPT(id, opt) ACTION(ACT_FUNCTION, (opt)<<8 | (id))
|
#define ACTION_FUNCTION_OPT(id, opt) ACTION(ACT_FUNCTION, (opt)<<8 | (id))
|
||||||
|
/* OneHand Support */
|
||||||
|
enum swap_hands_pram_tap_op {
|
||||||
|
OP_SH_TOGGLE = 0xF0,
|
||||||
|
OP_SH_TAP_TOGGLE,
|
||||||
|
OP_SH_ON_OFF,
|
||||||
|
OP_SH_OFF_ON,
|
||||||
|
OP_SH_OFF,
|
||||||
|
OP_SH_ON,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ACTION_SWAP_HANDS() ACTION_SWAP_HANDS_ON_OFF()
|
||||||
|
#define ACTION_SWAP_HANDS_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TOGGLE)
|
||||||
|
#define ACTION_SWAP_HANDS_TAP_TOGGLE() ACTION(ACT_SWAP_HANDS, OP_SH_TAP_TOGGLE)
|
||||||
|
#define ACTION_SWAP_HANDS_TAP_KEY(key) ACTION(ACT_SWAP_HANDS, key)
|
||||||
|
#define ACTION_SWAP_HANDS_ON_OFF() ACTION(ACT_SWAP_HANDS, OP_SH_ON_OFF)
|
||||||
|
#define ACTION_SWAP_HANDS_OFF_ON() ACTION(ACT_SWAP_HANDS, OP_SH_OFF_ON)
|
||||||
|
#define ACTION_SWAP_HANDS_ON() ACTION(ACT_SWAP_HANDS, OP_SH_ON)
|
||||||
|
#define ACTION_SWAP_HANDS_OFF() ACTION(ACT_SWAP_HANDS, OP_SH_OFF)
|
||||||
|
|
||||||
#endif /* ACTION_CODE_H */
|
#endif /* ACTION_CODE_H */
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef _VIRTSER_H_
|
||||||
|
#define _VIRTSER_H_
|
||||||
|
|
||||||
|
/* Define this function in your code to process incoming bytes */
|
||||||
|
void virtser_recv(const uint8_t ch);
|
||||||
|
|
||||||
|
/* Call this to send a character over the Virtual Serial Device */
|
||||||
|
void virtser_send(const uint8_t byte);
|
||||||
|
|
||||||
|
#endif
|
|
@ -26,6 +26,10 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
|
||||||
$(TMK_DIR)/protocol/serial_uart.c
|
$(TMK_DIR)/protocol/serial_uart.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
|
||||||
|
LUFA_SRC += $(LUFA_ROOT_PATH)/Drivers/USB/Class/Device/CDCClassDevice.c
|
||||||
|
endif
|
||||||
|
|
||||||
SRC += $(LUFA_SRC)
|
SRC += $(LUFA_SRC)
|
||||||
|
|
||||||
# Search Path
|
# Search Path
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Copy the Microsoft HV1 Docbook transform contents into this directory (i.e. with the XSLT files in the current folder). The HV1 transform proposal can be found at http://sourceforge.net/tracker/?func=detail&aid=3610290&group_id=21935&atid=373750 .
|
Copy the Microsoft HV1 Docbook transform contents into this directory (i.e. with the XSLT files in the current folder). The HV1 transform proposal can be found at http://sourceforge.net/tracker/?func=detail&aid=3610290&group_id=21935&atid=373750 .
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .
|
Copy the Docbook XSLT docbook-xsl-1.78.1 release contents into this directory (i.e. with the root Docbook files in the current folder). The Docbook releases can be found at http://sourceforge.net/projects/docbook/files/docbook-xsl/ .
|
||||||
|
|
|
@ -1,45 +1,45 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
|
<!-- Docbook XML to Microsoft Help Viewer 1.0 transform file -->
|
||||||
|
|
||||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||||
|
|
||||||
<xsl:import href="../Docbook/mshelp/docbook.xsl"/>
|
<xsl:import href="../Docbook/mshelp/docbook.xsl"/>
|
||||||
|
|
||||||
<xsl:output method="xml" indent="no"/>
|
<xsl:output method="xml" indent="no"/>
|
||||||
|
|
||||||
<xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
|
<xsl:template match="emphasis[@role = 'keyword' or @role = 'keywordtype' or @role = 'keywordflow']">
|
||||||
<span class="hl-keyword" style="color: #0079C1">
|
<span class="hl-keyword" style="color: #0079C1">
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
</span>
|
</span>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
|
<xsl:template match="emphasis[@role = 'stringliteral' or @role = 'charliteral']">
|
||||||
<span class="hl-string" style="color: #800000">
|
<span class="hl-string" style="color: #800000">
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
</span>
|
</span>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="emphasis[@role = 'comment']">
|
<xsl:template match="emphasis[@role = 'comment']">
|
||||||
<em class="hl-comment" style="color: #008000">
|
<em class="hl-comment" style="color: #008000">
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
</em>
|
</em>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="emphasis[@role = 'preprocessor']">
|
<xsl:template match="emphasis[@role = 'preprocessor']">
|
||||||
<span class="hl-preprocessor" style="color: #A000A0">
|
<span class="hl-preprocessor" style="color: #A000A0">
|
||||||
<xsl:apply-templates/>
|
<xsl:apply-templates/>
|
||||||
</span>
|
</span>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
|
<xsl:template match="emphasis[@role = 'normal' and ancestor::programlisting]">
|
||||||
<xsl:apply-templates />
|
<xsl:apply-templates />
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
</xsl:stylesheet>
|
</xsl:stylesheet>
|
||||||
|
|
|
@ -1,53 +1,53 @@
|
||||||
/*
|
/*
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.programlisting {
|
.programlisting {
|
||||||
display: block;
|
display: block;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
border: 1px solid #aaaaaa;
|
border: 1px solid #aaaaaa;
|
||||||
font-family: "Consolas", "Courier New", sans-serif;
|
font-family: "Consolas", "Courier New", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
code {
|
code {
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
font-family: "Consolas", "Courier New", sans-serif;
|
font-family: "Consolas", "Courier New", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note, .warning, .tip {
|
.note, .warning, .tip {
|
||||||
display: block;
|
display: block;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
padding-bottom: 5px;
|
padding-bottom: 5px;
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
border: 1px solid #aaaaaa;
|
border: 1px solid #aaaaaa;
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
border: 1px solid #aaaaaa;
|
border: 1px solid #aaaaaa;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
font-size: 10pt;
|
font-size: 10pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
table thead {
|
table thead {
|
||||||
background-color: #f4f4f4;
|
background-color: #f4f4f4;
|
||||||
}
|
}
|
||||||
|
|
||||||
table thead th {
|
table thead th {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
table tbody td {
|
table tbody td {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
padding-left: 20px;
|
padding-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
|
||||||
<Default Extension="vsixmanifest" ContentType="text/xml"/>
|
<Default Extension="vsixmanifest" ContentType="text/xml"/>
|
||||||
<Default Extension="cache" ContentType="text/xml"/>
|
<Default Extension="cache" ContentType="text/xml"/>
|
||||||
<Default Extension="png" ContentType="application/octet-stream"/>
|
<Default Extension="png" ContentType="application/octet-stream"/>
|
||||||
<Default Extension="txt" ContentType="text/plain"/>
|
<Default Extension="txt" ContentType="text/plain"/>
|
||||||
<Default Extension="xml" ContentType="text/xml"/>
|
<Default Extension="xml" ContentType="text/xml"/>
|
||||||
<Default Extension="zip" ContentType="application/octet-stream"/>
|
<Default Extension="zip" ContentType="application/octet-stream"/>
|
||||||
<Default Extension="dll" ContentType="application/octet-stream" />
|
<Default Extension="dll" ContentType="application/octet-stream" />
|
||||||
<Default Extension="pkgdef" ContentType="text/plain" />
|
<Default Extension="pkgdef" ContentType="text/plain" />
|
||||||
<Default Extension="htm" ContentType="text/html" />
|
<Default Extension="htm" ContentType="text/html" />
|
||||||
<Default Extension="msha" ContentType="text/html" />
|
<Default Extension="msha" ContentType="text/html" />
|
||||||
<Default Extension="mshc" ContentType="application/octet-stream"/>
|
<Default Extension="mshc" ContentType="application/octet-stream"/>
|
||||||
</Types>
|
</Types>
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
<AsfContentProvider Version="1.0.0">
|
<AsfContentProvider Version="1.0.0">
|
||||||
<Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">
|
<Identifier Id="0e160d5c-e331-48d9-850b-e0387912171b">
|
||||||
<Org>FourWalledCubicle</Org>
|
<Org>FourWalledCubicle</Org>
|
||||||
<ShortName>LUFA</ShortName>
|
<ShortName>LUFA</ShortName>
|
||||||
<Author>Dean Camera</Author>
|
<Author>Dean Camera</Author>
|
||||||
<Description/>
|
<Description/>
|
||||||
<FollowFolderStructure>True</FollowFolderStructure>
|
<FollowFolderStructure>True</FollowFolderStructure>
|
||||||
</Identifier>
|
</Identifier>
|
||||||
<AsfContent Type="zip" Path="contents.zip">
|
<AsfContent Type="zip" Path="contents.zip">
|
||||||
<Content>
|
<Content>
|
||||||
<Version>0</Version>
|
<Version>0</Version>
|
||||||
<HelpURL/>
|
<HelpURL/>
|
||||||
<Locator/>
|
<Locator/>
|
||||||
<DbXMLPath>content.xml.cache</DbXMLPath>
|
<DbXMLPath>content.xml.cache</DbXMLPath>
|
||||||
<Description/>
|
<Description/>
|
||||||
</Content>
|
</Content>
|
||||||
</AsfContent>
|
</AsfContent>
|
||||||
</AsfContentProvider>
|
</AsfContentProvider>
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
|
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010">
|
||||||
<Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
|
<Identifier Id="FourWalledCubicle.LUFA.0e160d5c-e331-48d9-850b-e0387912171b">
|
||||||
<Name>LUFA Library</Name>
|
<Name>LUFA Library</Name>
|
||||||
<Author>Dean Camera</Author>
|
<Author>Dean Camera</Author>
|
||||||
<Version>0</Version>
|
<Version>0</Version>
|
||||||
<MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
|
<MoreInfoUrl>http://www.lufa-lib.org</MoreInfoUrl>
|
||||||
<Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
|
<Description xml:space="preserve">LUFA, the Lightweight USB Framework for AVRs.</Description>
|
||||||
|
|
||||||
<License>License.txt</License>
|
<License>License.txt</License>
|
||||||
<Icon>LUFA_thumb.png</Icon>
|
<Icon>LUFA_thumb.png</Icon>
|
||||||
<PreviewImage>LUFA.png</PreviewImage>
|
<PreviewImage>LUFA.png</PreviewImage>
|
||||||
|
|
||||||
<SupportedProducts>
|
<SupportedProducts>
|
||||||
<IsolatedShell Version="6.1">AtmelStudio</IsolatedShell>
|
<IsolatedShell Version="6.1">AtmelStudio</IsolatedShell>
|
||||||
<IsolatedShell Version="6.2">AtmelStudio</IsolatedShell>
|
<IsolatedShell Version="6.2">AtmelStudio</IsolatedShell>
|
||||||
</SupportedProducts>
|
</SupportedProducts>
|
||||||
|
|
||||||
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
|
<SupportedFrameworkRuntimeEdition MinVersion="4.0" MaxVersion="4.5"/>
|
||||||
<Locale>1033</Locale>
|
<Locale>1033</Locale>
|
||||||
|
|
||||||
<AllUsers>false</AllUsers>
|
<AllUsers>false</AllUsers>
|
||||||
</Identifier>
|
</Identifier>
|
||||||
|
|
||||||
<References/>
|
<References/>
|
||||||
|
|
||||||
<Content>
|
<Content>
|
||||||
<VsPackage>LUFA.pkgdef</VsPackage>
|
<VsPackage>LUFA.pkgdef</VsPackage>
|
||||||
<CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
|
<CustomExtension Type="MSHelp">helpcontentsetup.msha</CustomExtension>
|
||||||
<CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
|
<CustomExtension Type="asf-manifest">asf-manifest.xml</CustomExtension>
|
||||||
</Content>
|
</Content>
|
||||||
</Vsix>
|
</Vsix>
|
||||||
|
|
|
@ -1,38 +1,38 @@
|
||||||
"""
|
"""
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
sys.path.append("ProjectGenerator")
|
sys.path.append("ProjectGenerator")
|
||||||
|
|
||||||
|
|
||||||
def show_message(message):
|
def show_message(message):
|
||||||
print("[Project Generator] %s" % message)
|
print("[Project Generator] %s" % message)
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
def main(lufa_root_path):
|
def main(lufa_root_path):
|
||||||
try:
|
try:
|
||||||
from asf_avrstudio5_interface import PythonFacade
|
from asf_avrstudio5_interface import PythonFacade
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print("Fatal Error: The ASF project generator is missing.")
|
print("Fatal Error: The ASF project generator is missing.")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
p = PythonFacade(lufa_root_path)
|
p = PythonFacade(lufa_root_path)
|
||||||
|
|
||||||
show_message("Checking database sanity...")
|
show_message("Checking database sanity...")
|
||||||
p.check_extension_database_sanity(lufa_root_path)
|
p.check_extension_database_sanity(lufa_root_path)
|
||||||
|
|
||||||
show_message("Building cache files...")
|
show_message("Building cache files...")
|
||||||
p.generate_extension_cache_files(lufa_root_path)
|
p.generate_extension_cache_files(lufa_root_path)
|
||||||
|
|
||||||
show_message("Cache files created.")
|
show_message("Cache files created.")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
sys.exit(main(sys.argv[1]))
|
sys.exit(main(sys.argv[1]))
|
||||||
|
|
|
@ -1,96 +1,96 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<extension-container>
|
<extension-container>
|
||||||
<extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">
|
<extension uuid="0e160d5c-e331-48d9-850b-e0387912171b" org="FourWalledCubicle" shortname="LUFA" version="" fullname="Lightweight USB Framework for AVRs (LUFA)">
|
||||||
<author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>
|
<author name="Dean Camera" website="http://www.lufa-lib.org/" email="dean@fourwalledcubicle.com"/>
|
||||||
<description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>
|
<description>Lightweight USB Framework for AVRs (LUFA), a USB software stack/framework.</description>
|
||||||
<icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>
|
<icon-image path="LUFA/DoxygenPages/Images/LUFA_thumb.png"/>
|
||||||
<preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>
|
<preview-image path="LUFA/DoxygenPages/Images/LUFA.png"/>
|
||||||
<license caption="LUFA License" path="LUFA/License.txt"/>
|
<license caption="LUFA License" path="LUFA/License.txt"/>
|
||||||
<release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>
|
<release-notes caption="LUFA Information" url="http://www.lufa-lib.org"/>
|
||||||
<online-help>
|
<online-help>
|
||||||
<index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>
|
<index-page caption="LUFA Documentation" url="http://www.lufa-lib.org/documentation/"/>
|
||||||
<module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
|
<module-help-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
|
||||||
<module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
|
<module-guide-page scheme="append" baseurl="http://www.lufa-lib.org/documentation/"/>
|
||||||
</online-help>
|
</online-help>
|
||||||
<dependencies/>
|
<dependencies/>
|
||||||
</extension>
|
</extension>
|
||||||
</extension-container>
|
</extension-container>
|
||||||
|
|
||||||
<asf>
|
<asf>
|
||||||
<device-alias-map name="lufa_avr8">
|
<device-alias-map name="lufa_avr8">
|
||||||
<device-support value="at90usb82"/>
|
<device-support value="at90usb82"/>
|
||||||
<device-support value="atmega8u2"/>
|
<device-support value="atmega8u2"/>
|
||||||
<device-support value="at90usb162"/>
|
<device-support value="at90usb162"/>
|
||||||
<device-support value="atmega16u2"/>
|
<device-support value="atmega16u2"/>
|
||||||
<device-support value="atmega16u4"/>
|
<device-support value="atmega16u4"/>
|
||||||
<device-support value="atmega32u2"/>
|
<device-support value="atmega32u2"/>
|
||||||
<device-support value="atmega32u4"/>
|
<device-support value="atmega32u4"/>
|
||||||
<device-support value="at90usb646"/>
|
<device-support value="at90usb646"/>
|
||||||
<device-support value="at90usb647"/>
|
<device-support value="at90usb647"/>
|
||||||
<device-support value="at90usb1286"/>
|
<device-support value="at90usb1286"/>
|
||||||
<device-support value="at90usb1287"/>
|
<device-support value="at90usb1287"/>
|
||||||
</device-alias-map>
|
</device-alias-map>
|
||||||
|
|
||||||
<device-alias-map name="lufa_xmega">
|
<device-alias-map name="lufa_xmega">
|
||||||
<device-support value="atxmega16a4u"/>
|
<device-support value="atxmega16a4u"/>
|
||||||
<device-support value="atxmega32a4u"/>
|
<device-support value="atxmega32a4u"/>
|
||||||
<device-support value="atxmega64a4u"/>
|
<device-support value="atxmega64a4u"/>
|
||||||
<device-support value="atxmega128a4u"/>
|
<device-support value="atxmega128a4u"/>
|
||||||
<device-support value="atxmega64a3u"/>
|
<device-support value="atxmega64a3u"/>
|
||||||
<device-support value="atxmega128a3u"/>
|
<device-support value="atxmega128a3u"/>
|
||||||
<device-support value="atxmega192a3u"/>
|
<device-support value="atxmega192a3u"/>
|
||||||
<device-support value="atxmega256a3u"/>
|
<device-support value="atxmega256a3u"/>
|
||||||
<device-support value="atxmega256a3bu"/>
|
<device-support value="atxmega256a3bu"/>
|
||||||
<device-support value="atxmega128a1u"/>
|
<device-support value="atxmega128a1u"/>
|
||||||
<device-support value="atxmega64b3"/>
|
<device-support value="atxmega64b3"/>
|
||||||
<device-support value="atxmega128b3"/>
|
<device-support value="atxmega128b3"/>
|
||||||
<device-support value="atxmega64b1"/>
|
<device-support value="atxmega64b1"/>
|
||||||
<device-support value="atxmega128b1"/>
|
<device-support value="atxmega128b1"/>
|
||||||
<device-support value="atxmega64c3"/>
|
<device-support value="atxmega64c3"/>
|
||||||
<device-support value="atxmega128c3"/>
|
<device-support value="atxmega128c3"/>
|
||||||
<!-- <device-support value="atxmega192c3"/> Wait for ASFP-3339 merge and release before enabling -->
|
<!-- <device-support value="atxmega192c3"/> Wait for ASFP-3339 merge and release before enabling -->
|
||||||
<device-support value="atxmega256c3"/>
|
<device-support value="atxmega256c3"/>
|
||||||
<device-support value="atxmega384c3"/>
|
<device-support value="atxmega384c3"/>
|
||||||
<device-support value="atxmega16c4"/>
|
<device-support value="atxmega16c4"/>
|
||||||
</device-alias-map>
|
</device-alias-map>
|
||||||
|
|
||||||
<device-alias-map name="lufa_uc3">
|
<device-alias-map name="lufa_uc3">
|
||||||
<device-support value="at32uc3a364"/>
|
<device-support value="at32uc3a364"/>
|
||||||
<device-support value="at32uc3a364s"/>
|
<device-support value="at32uc3a364s"/>
|
||||||
<device-support value="at32uc3a464"/>
|
<device-support value="at32uc3a464"/>
|
||||||
<device-support value="at32uc3a464s"/>
|
<device-support value="at32uc3a464s"/>
|
||||||
<device-support value="at32uc3b064"/>
|
<device-support value="at32uc3b064"/>
|
||||||
<device-support value="at32uc3b164"/>
|
<device-support value="at32uc3b164"/>
|
||||||
<device-support value="at32uc3a0128"/>
|
<device-support value="at32uc3a0128"/>
|
||||||
<device-support value="at32uc3a1128"/>
|
<device-support value="at32uc3a1128"/>
|
||||||
<device-support value="at32uc3a3128"/>
|
<device-support value="at32uc3a3128"/>
|
||||||
<device-support value="at32uc3a3128s"/>
|
<device-support value="at32uc3a3128s"/>
|
||||||
<device-support value="at32uc3a4128"/>
|
<device-support value="at32uc3a4128"/>
|
||||||
<device-support value="at32uc3a4128s"/>
|
<device-support value="at32uc3a4128s"/>
|
||||||
<device-support value="at32uc3b0128"/>
|
<device-support value="at32uc3b0128"/>
|
||||||
<device-support value="at32uc3b1128"/>
|
<device-support value="at32uc3b1128"/>
|
||||||
<device-support value="at32uc3a0256"/>
|
<device-support value="at32uc3a0256"/>
|
||||||
<device-support value="at32uc3a1256"/>
|
<device-support value="at32uc3a1256"/>
|
||||||
<device-support value="at32uc3a3256"/>
|
<device-support value="at32uc3a3256"/>
|
||||||
<device-support value="at32uc3a3256s"/>
|
<device-support value="at32uc3a3256s"/>
|
||||||
<device-support value="at32uc3a4256"/>
|
<device-support value="at32uc3a4256"/>
|
||||||
<device-support value="at32uc3a4256s"/>
|
<device-support value="at32uc3a4256s"/>
|
||||||
<device-support value="at32uc3b0256"/>
|
<device-support value="at32uc3b0256"/>
|
||||||
<device-support value="at32uc3b1256"/>
|
<device-support value="at32uc3b1256"/>
|
||||||
<device-support value="at32uc3a0512"/>
|
<device-support value="at32uc3a0512"/>
|
||||||
<device-support value="at32uc3a1512"/>
|
<device-support value="at32uc3a1512"/>
|
||||||
<device-support value="at32uc3b0512"/>
|
<device-support value="at32uc3b0512"/>
|
||||||
<device-support value="at32uc3b1512"/>
|
<device-support value="at32uc3b1512"/>
|
||||||
</device-alias-map>
|
</device-alias-map>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,34 +1,34 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="service" id="lufa.common" caption="LUFA Common Infrastructure">
|
<module type="service" id="lufa.common" caption="LUFA Common Infrastructure">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
<build type="doxygen-entry-point" value="Group_Common"/>
|
<build type="doxygen-entry-point" value="Group_Common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Version.h"/>
|
<build type="header-file" subtype="api" value="Version.h"/>
|
||||||
<build type="distribute" subtype="license" value="License.txt"/>
|
<build type="distribute" subtype="license" value="License.txt"/>
|
||||||
|
|
||||||
<build type="header-file" subtype="api" value="Common/Common.h"/>
|
<build type="header-file" subtype="api" value="Common/Common.h"/>
|
||||||
<build type="header-file" value="Common/Architectures.h"/>
|
<build type="header-file" value="Common/Architectures.h"/>
|
||||||
<build type="header-file" value="Common/ArchitectureSpecific.h"/>
|
<build type="header-file" value="Common/ArchitectureSpecific.h"/>
|
||||||
<build type="header-file" value="Common/Attributes.h"/>
|
<build type="header-file" value="Common/Attributes.h"/>
|
||||||
<build type="header-file" value="Common/BoardTypes.h"/>
|
<build type="header-file" value="Common/BoardTypes.h"/>
|
||||||
<build type="header-file" value="Common/CompilerSpecific.h"/>
|
<build type="header-file" value="Common/CompilerSpecific.h"/>
|
||||||
<build type="header-file" value="Common/Endianness.h"/>
|
<build type="header-file" value="Common/Endianness.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,114 +1,114 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">
|
<board id="lufa.boards.dummy.avr8" vendor="LUFA" caption="AVR8 Architecture">
|
||||||
<device-support value="mega"/>
|
<device-support value="mega"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.board"/>
|
<require idref="lufa.drivers.board"/>
|
||||||
<require idref="lufa.drivers.board.info"/>
|
<require idref="lufa.drivers.board.info"/>
|
||||||
</board>
|
</board>
|
||||||
|
|
||||||
<board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">
|
<board id="lufa.boards.dummy.xmega" vendor="LUFA" caption="XMEGA Architecture">
|
||||||
<device-support value="xmega"/>
|
<device-support value="xmega"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.board"/>
|
<require idref="lufa.drivers.board"/>
|
||||||
<require idref="lufa.drivers.board.info"/>
|
<require idref="lufa.drivers.board.info"/>
|
||||||
</board>
|
</board>
|
||||||
|
|
||||||
<board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">
|
<board id="lufa.boards.dummy.uc3" vendor="LUFA" caption="UC3 Architecture">
|
||||||
<device-support value="uc3"/>
|
<device-support value="uc3"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.board"/>
|
<require idref="lufa.drivers.board"/>
|
||||||
<require idref="lufa.drivers.board.info"/>
|
<require idref="lufa.drivers.board.info"/>
|
||||||
</board>
|
</board>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">
|
<module type="driver" id="lufa.drivers.board.info" caption="LUFA Board Hardware Information Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_BoardInfo"/>
|
<build type="doxygen-entry-point" value="Group_BoardInfo"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/Board.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/Board.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">
|
<module type="driver" id="lufa.drivers.board.leds" caption="LUFA Board LED Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_LEDs"/>
|
<build type="doxygen-entry-point" value="Group_LEDs"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/LEDs.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/LEDs.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">
|
<module type="driver" id="lufa.drivers.board.buttons" caption="LUFA Board Buttons Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Buttons"/>
|
<build type="doxygen-entry-point" value="Group_Buttons"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/Buttons.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/Buttons.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">
|
<module type="driver" id="lufa.drivers.board.dataflash" caption="LUFA Board Dataflash Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Dataflash"/>
|
<build type="doxygen-entry-point" value="Group_Dataflash"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/Dataflash.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/Dataflash.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">
|
<module type="driver" id="lufa.drivers.board.joystick" caption="LUFA Board Joystick Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Joystick"/>
|
<build type="doxygen-entry-point" value="Group_Joystick"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/Joystick.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/Joystick.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">
|
<module type="driver" id="lufa.drivers.board.temperature" caption="LUFA Board Temperature Sensor Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Temperature"/>
|
<build type="doxygen-entry-point" value="Group_Temperature"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
<require idref="lufa.drivers.peripheral.adc"/>
|
<require idref="lufa.drivers.peripheral.adc"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/Board/Temperature.c"/>
|
<build type="c-source" value="Drivers/Board/Temperature.c"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Board/Temperature.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Board/Temperature.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,57 +1,57 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">
|
<module type="component" id="lufa.drivers.misc.at45db321c" caption="LUFA AT45DB321C Dataflash Commands">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
|
<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB321C.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">
|
<module type="component" id="lufa.drivers.misc.at45db642d" caption="LUFA AT45DB642D Dataflash Commands">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
|
<build type="doxygen-entry-point" value="Group_AT45DB321C"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Misc/AT45DB642D.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">
|
<module type="service" id="lufa.drivers.misc.ringbuffer" caption="LUFA Ring Buffer">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_RingBuff"/>
|
<build type="doxygen-entry-point" value="Group_RingBuff"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Misc/RingBuffer.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">
|
<module type="service" id="lufa.drivers.misc.ansi" caption="LUFA ANSI Terminal Commands">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Terminal"/>
|
<build type="doxygen-entry-point" value="Group_Terminal"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Misc/TerminalCodes.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
|
@ -1,198 +1,198 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">
|
<select-by-device id="lufa.drivers.peripheral.usart" caption="LUFA USART Driver">
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.usart#avr8" caption="LUFA USART Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Serial"/>
|
<build type="doxygen-entry-point" value="Group_Serial"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
<require idref="lufa.drivers.misc.ansi"/>
|
<require idref="lufa.drivers.misc.ansi"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>
|
<build type="c-source" value="Drivers/Peripheral/AVR8/Serial_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>
|
<build type="header-file" value="Drivers/Peripheral/AVR8/Serial_AVR8.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.usart#xmega" caption="LUFA USART Driver - AVR8">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Serial"/>
|
<build type="doxygen-entry-point" value="Group_Serial"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
<require idref="lufa.drivers.misc.ansi"/>
|
<require idref="lufa.drivers.misc.ansi"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>
|
<build type="c-source" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>
|
<build type="header-file" value="Drivers/Peripheral/XMEGA/Serial_XMEGA.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/Serial.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">
|
<module type="driver" id="lufa.drivers.peripheral.usart#uc3" caption="LUFA USART Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_Serial"/>
|
<build type="doxygen-entry-point" value="Group_Serial"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
<require idref="lufa.drivers.misc.ansi"/>
|
<require idref="lufa.drivers.misc.ansi"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
|
|
||||||
<select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">
|
<select-by-device id="lufa.drivers.peripheral.spi" caption="LUFA SPI Driver">
|
||||||
<module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.spi#avr8" caption="LUFA SPI Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SPI"/>
|
<build type="doxygen-entry-point" value="Group_SPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>
|
<build type="header-file" value="Drivers/Peripheral/AVR8/SPI_AVR8.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">
|
<module type="driver" id="lufa.drivers.peripheral.spi#xmega" caption="LUFA SPI Driver - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SPI"/>
|
<build type="doxygen-entry-point" value="Group_SPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>
|
<build type="header-file" value="Drivers/Peripheral/XMEGA/SPI_XMEGA.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/SPI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">
|
<module type="driver" id="lufa.drivers.peripheral.spi#uc3" caption="LUFA SPI Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SPI"/>
|
<build type="doxygen-entry-point" value="Group_SPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
|
|
||||||
<select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">
|
<select-by-device id="lufa.drivers.peripheral.usart_spi" caption="LUFA USART SPI Driver">
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.usart_spi#avr8" caption="LUFA USART SPI Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>
|
<build type="header-file" value="Drivers/Peripheral/AVR8/SerialSPI_AVR8.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">
|
<module type="driver" id="lufa.drivers.peripheral.usart_spi#xmega" caption="LUFA USART SPI Driver - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>
|
<build type="header-file" value="Drivers/Peripheral/XMEGA/SerialSPI_XMEGA.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/SerialSPI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">
|
<module type="driver" id="lufa.drivers.peripheral.usart_spi#uc3" caption="LUFA USART SPI Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
<build type="doxygen-entry-point" value="Group_SerialSPI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
|
|
||||||
<select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">
|
<select-by-device id="lufa.drivers.peripheral.twi" caption="LUFA TWI Master Driver">
|
||||||
<module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.twi#avr8" caption="LUFA TWI Master Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_TWI"/>
|
<build type="doxygen-entry-point" value="Group_TWI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>
|
<build type="c-source" value="Drivers/Peripheral/AVR8/TWI_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>
|
<build type="header-file" value="Drivers/Peripheral/AVR8/TWI_AVR8.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">
|
<module type="driver" id="lufa.drivers.peripheral.twi#xmega" caption="LUFA TWI Master Driver - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_TWI"/>
|
<build type="doxygen-entry-point" value="Group_TWI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>
|
<build type="c-source" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>
|
<build type="header-file" value="Drivers/Peripheral/XMEGA/TWI_XMEGA.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/TWI.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">
|
<module type="driver" id="lufa.drivers.peripheral.twi#uc3" caption="LUFA TWI Master Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_TWI"/>
|
<build type="doxygen-entry-point" value="Group_TWI"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
|
|
||||||
<select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">
|
<select-by-device id="lufa.drivers.peripheral.adc" caption="LUFA ADC Driver">
|
||||||
<module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">
|
<module type="driver" id="lufa.drivers.peripheral.adc#avr8" caption="LUFA ADC Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_ADC"/>
|
<build type="doxygen-entry-point" value="Group_ADC"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>
|
<build type="header-file" value="Drivers/Peripheral/AVR8/ADC_AVR8.h"/>
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>
|
<build type="header-file" subtype="api" value="Drivers/Peripheral/ADC.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">
|
<module type="driver" id="lufa.drivers.peripheral.adc#xmega" caption="LUFA ADC Driver - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_ADC"/>
|
<build type="doxygen-entry-point" value="Group_ADC"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">
|
<module type="driver" id="lufa.drivers.peripheral.adc#uc3" caption="LUFA ADC Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_ADC"/>
|
<build type="doxygen-entry-point" value="Group_ADC"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">
|
<module type="driver" id="lufa.drivers.usb" caption="LUFA USB Driver">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USB"/>
|
<build type="doxygen-entry-point" value="Group_USB"/>
|
||||||
|
|
||||||
<build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>
|
<build type="define" name="USE_LUFA_CONFIG_HEADER" value=""/>
|
||||||
<build type="module-config" subtype="path" value="CodeTemplates"/>
|
<build type="module-config" subtype="path" value="CodeTemplates"/>
|
||||||
<build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>
|
<build type="module-config" subtype="required-header-file" value="LUFAConfig.h"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>
|
<build type="header-file" subtype="api" value="Drivers/USB/USB.h"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
<require idref="lufa.drivers.usb.class"/>
|
<require idref="lufa.drivers.usb.class"/>
|
||||||
<require idref="lufa.drivers.usb.core"/>
|
<require idref="lufa.drivers.usb.core"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
|
@ -1,32 +1,32 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">
|
<module type="service" id="lufa.drivers.usb.class" caption="LUFA USB Class Drivers">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
<build type="doxygen-entry-point" value="Group_USBClassDrivers"/>
|
<build type="doxygen-entry-point" value="Group_USBClassDrivers"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.usb.class.android"/>
|
<require idref="lufa.drivers.usb.class.android"/>
|
||||||
<require idref="lufa.drivers.usb.class.audio"/>
|
<require idref="lufa.drivers.usb.class.audio"/>
|
||||||
<require idref="lufa.drivers.usb.class.cdc"/>
|
<require idref="lufa.drivers.usb.class.cdc"/>
|
||||||
<require idref="lufa.drivers.usb.class.hid"/>
|
<require idref="lufa.drivers.usb.class.hid"/>
|
||||||
<require idref="lufa.drivers.usb.class.ms"/>
|
<require idref="lufa.drivers.usb.class.ms"/>
|
||||||
<require idref="lufa.drivers.usb.class.midi"/>
|
<require idref="lufa.drivers.usb.class.midi"/>
|
||||||
<require idref="lufa.drivers.usb.class.printer"/>
|
<require idref="lufa.drivers.usb.class.printer"/>
|
||||||
<require idref="lufa.drivers.usb.class.rndis"/>
|
<require idref="lufa.drivers.usb.class.rndis"/>
|
||||||
<require idref="lufa.drivers.usb.class.si"/>
|
<require idref="lufa.drivers.usb.class.si"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,85 +1,85 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">
|
<module type="driver" id="lufa.drivers.usb.core.common" caption="LUFA USB Core Driver - Common">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="header-file" value="Drivers/USB/Core/Device.h"/>
|
<build type="header-file" value="Drivers/USB/Core/Device.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>
|
<build type="header-file" value="Drivers/USB/Core/Endpoint.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/Host.h"/>
|
<build type="header-file" value="Drivers/USB/Core/Host.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/Pipe.h"/>
|
<build type="header-file" value="Drivers/USB/Core/Pipe.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/OTG.h"/>
|
<build type="header-file" value="Drivers/USB/Core/OTG.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/USBController.h"/>
|
<build type="header-file" value="Drivers/USB/Core/USBController.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>
|
<build type="header-file" value="Drivers/USB/Core/USBInterrupt.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>
|
<build type="header-file" value="Drivers/USB/Core/EndpointStream.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>
|
<build type="header-file" value="Drivers/USB/Core/PipeStream.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/ConfigDescriptors.c"/>
|
<build type="c-source" value="Drivers/USB/Core/ConfigDescriptors.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>
|
<build type="header-file" value="Drivers/USB/Core/ConfigDescriptors.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/DeviceStandardReq.c"/>
|
<build type="c-source" value="Drivers/USB/Core/DeviceStandardReq.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>
|
<build type="header-file" value="Drivers/USB/Core/DeviceStandardReq.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/Events.c"/>
|
<build type="c-source" value="Drivers/USB/Core/Events.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/Events.h"/>
|
<build type="header-file" value="Drivers/USB/Core/Events.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/HostStandardReq.c"/>
|
<build type="c-source" value="Drivers/USB/Core/HostStandardReq.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>
|
<build type="header-file" value="Drivers/USB/Core/HostStandardReq.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/USBTask.c"/>
|
<build type="c-source" value="Drivers/USB/Core/USBTask.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/USBTask.h"/>
|
<build type="header-file" value="Drivers/USB/Core/USBTask.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/USBMode.h"/>
|
<build type="header-file" value="Drivers/USB/Core/USBMode.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>
|
<build type="header-file" value="Drivers/USB/Core/StdDescriptors.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>
|
<build type="header-file" value="Drivers/USB/Core/StdRequestType.h"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/USB/Class/Common/HIDParser.c"/>
|
<build type="c-source" value="Drivers/USB/Class/Common/HIDParser.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>
|
<build type="header-file" value="Drivers/USB/Class/Common/HIDParser.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>
|
<build type="header-file" value="Drivers/USB/Class/Common/HIDReportData.h"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">
|
<select-by-device id="lufa.drivers.usb.core" caption="LUFA USB Core Driver">
|
||||||
<module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">
|
<module type="driver" id="lufa.drivers.usb.core#avr8" caption="LUFA USB Core Driver - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.usb.core.common"/>
|
<require idref="lufa.drivers.usb.core.common"/>
|
||||||
<require idref="lufa.drivers.usb.core.avr8"/>
|
<require idref="lufa.drivers.usb.core.avr8"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">
|
<module type="driver" id="lufa.drivers.usb.core#xmega" caption="LUFA USB Core Driver - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.usb.core.common"/>
|
<require idref="lufa.drivers.usb.core.common"/>
|
||||||
<require idref="lufa.drivers.usb.core.xmega"/>
|
<require idref="lufa.drivers.usb.core.xmega"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">
|
<module type="driver" id="lufa.drivers.usb.core#uc3" caption="LUFA USB Core Driver - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
|
||||||
|
|
||||||
<require idref="lufa.drivers.usb.core.common"/>
|
<require idref="lufa.drivers.usb.core.common"/>
|
||||||
<require idref="lufa.drivers.usb.core.uc3"/>
|
<require idref="lufa.drivers.usb.core.uc3"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,43 +1,43 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">
|
<module type="driver" id="lufa.drivers.usb.core.avr8" caption="LUFA USB Core Driver for AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_AVR8"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_R.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_Control_W.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Endpoint_RW.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Template/Template_Pipe_RW.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Device_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/Device_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/Endpoint_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Host_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/Host_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/Pipe_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/Pipe_AVR8.h"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/OTG_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/USBController_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/USBController_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/USBInterrupt_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/EndpointStream_AVR8.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>
|
<build type="c-source" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>
|
<build type="header-file" value="Drivers/USB/Core/AVR8/PipeStream_AVR8.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,42 +1,42 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">
|
<module type="driver" id="lufa.drivers.usb.core.uc3" caption="LUFA USB Core Driver for UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_UC3"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_R.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_Control_W.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Endpoint_RW.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Template/Template_Pipe_RW.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Device_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Device_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/Device_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Endpoint_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/Endpoint_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Host_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Host_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/Host_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/Pipe_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/Pipe_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/USBController_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/USBController_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/USBController_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/USBInterrupt_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/EndpointStream_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/EndpointStream_UC3.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>
|
<build type="c-source" value="Drivers/USB/Core/UC3/PipeStream_UC3.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>
|
<build type="header-file" value="Drivers/USB/Core/UC3/PipeStream_UC3.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,36 +1,36 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">
|
<module type="driver" id="lufa.drivers.usb.core.xmega" caption="LUFA USB Core Driver for XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
|
<build type="doxygen-entry-point" value="Group_USBManagement_XMEGA"/>
|
||||||
|
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_R.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_Control_W.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Template/Template_Endpoint_RW.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Device_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>
|
<build type="header-file" value="Drivers/USB/Core/XMEGA/Device_XMEGA.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>
|
<build type="header-file" value="Drivers/USB/Core/XMEGA/Endpoint_XMEGA.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/Pipe_XMEGA.c"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>
|
<build type="header-file" value="Drivers/USB/Core/XMEGA/USBController_XMEGA.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>
|
<build type="header-file" value="Drivers/USB/Core/XMEGA/USBInterrupt_XMEGA.h"/>
|
||||||
<build type="c-source" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>
|
<build type="c-source" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.c"/>
|
||||||
<build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>
|
<build type="header-file" value="Drivers/USB/Core/XMEGA/EndpointStream_XMEGA.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,60 +1,60 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">
|
<select-by-device id="lufa.platform" caption="LUFA Platform Specific Support">
|
||||||
<module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">
|
<module type="service" id="lufa.platform#avr8" caption="LUFA Platform Specific Support - AVR8">
|
||||||
<device-support-alias value="lufa_avr8"/>
|
<device-support-alias value="lufa_avr8"/>
|
||||||
|
|
||||||
<build type="define" name="ARCH" value="ARCH_AVR8"/>
|
<build type="define" name="ARCH" value="ARCH_AVR8"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
||||||
|
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">
|
<module type="service" id="lufa.platform#xmega" caption="LUFA Platform Specific Support - XMEGA">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<build type="define" name="ARCH" value="ARCH_XMEGA"/>
|
<build type="define" name="ARCH" value="ARCH_XMEGA"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
||||||
|
|
||||||
<build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>
|
<build type="distribute" value="Platform/XMEGA/XMEGAExperimentalInfo.txt" subtype="license"/>
|
||||||
|
|
||||||
<require idref="lufa.platform.xmega"/>
|
<require idref="lufa.platform.xmega"/>
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">
|
<module type="service" id="lufa.platform#uc3" caption="LUFA Platform Specific Support - UC3">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<build type="define" name="ARCH" value="ARCH_UC3"/>
|
<build type="define" name="ARCH" value="ARCH_UC3"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
<build type="doxygen-entry-point" value="Group_PlatformDrivers"/>
|
||||||
|
|
||||||
<build type="include-path" value=".."/>
|
<build type="include-path" value=".."/>
|
||||||
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
<build type="header-file" subtype="api" value="Platform/Platform.h"/>
|
||||||
|
|
||||||
<build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>
|
<build type="distribute" value="Platform/UC3/UC3ExperimentalInfo.txt" subtype="license"/>
|
||||||
|
|
||||||
<require idref="lufa.platform.uc3"/>
|
<require idref="lufa.platform.uc3"/>
|
||||||
<require idref="lufa.common"/>
|
<require idref="lufa.common"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">
|
<module type="driver" id="lufa.platform.uc3" caption="LUFA UC3 Platform Drivers">
|
||||||
<device-support-alias value="lufa_uc3"/>
|
<device-support-alias value="lufa_uc3"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>
|
<build type="doxygen-entry-point" value="Group_PlatformDrivers_UC3"/>
|
||||||
|
|
||||||
<build type="header-file" value="Platform/UC3/ClockManagement.h"/>
|
<build type="header-file" value="Platform/UC3/ClockManagement.h"/>
|
||||||
<build type="header-file" value="Platform/UC3/InterruptManagement.h"/>
|
<build type="header-file" value="Platform/UC3/InterruptManagement.h"/>
|
||||||
<build type="c-source" value="Platform/UC3/InterruptManagement.c"/>
|
<build type="c-source" value="Platform/UC3/InterruptManagement.c"/>
|
||||||
<build type="asm-source" value="Platform/UC3/Exception.S"/>
|
<build type="asm-source" value="Platform/UC3/Exception.S"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf xmlversion="1.0">
|
<asf xmlversion="1.0">
|
||||||
<module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">
|
<module type="driver" id="lufa.platform.xmega" caption="LUFA XMEGA Platform Drivers">
|
||||||
<device-support-alias value="lufa_xmega"/>
|
<device-support-alias value="lufa_xmega"/>
|
||||||
|
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
|
|
||||||
<build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>
|
<build type="doxygen-entry-point" value="Group_PlatformDrivers_XMEGA"/>
|
||||||
|
|
||||||
<build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>
|
<build type="header-file" value="Platform/XMEGA/ClockManagement.h"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -1,43 +1,43 @@
|
||||||
<!--
|
<!--
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2013.
|
Copyright (C) Dean Camera, 2013.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Atmel Studio framework integration file -->
|
<!-- Atmel Studio framework integration file -->
|
||||||
|
|
||||||
<lufa>
|
<lufa>
|
||||||
<asf>
|
<asf>
|
||||||
<select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">
|
<select-by-device id="common.utils.toolchain_config" caption="Toolchain configuration defaults">
|
||||||
<module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">
|
<module type="build-specific" id="common.utils.toolchain_config#avr" caption="Toolchain configuration defaults for 8-bit AVR">
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
<device-support value="avr"/>
|
<device-support value="avr"/>
|
||||||
|
|
||||||
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.warnings.AllWarnings" value="True" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -fno-jump-tables" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avrgcc"/>
|
||||||
<toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>
|
<toolchain-config name="avrgcc.linker.optimization.RelaxBranches" value="True" toolchain="avrgcc"/>
|
||||||
</module>
|
</module>
|
||||||
</select-by-device>
|
</select-by-device>
|
||||||
|
|
||||||
<module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">
|
<module type="build-specific" id="common.utils.toolchain_config#uc3" caption="Toolchain configuration defaults for 32-bit AVR">
|
||||||
<info type="gui-flag" value="hidden"/>
|
<info type="gui-flag" value="hidden"/>
|
||||||
<device-support value="uc3"/>
|
<device-support value="uc3"/>
|
||||||
|
|
||||||
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned" value="True" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned" value="True" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.compiler.optimization.OtherFlags" value="-fdata-sections" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.compiler.optimization.PrepareFunctionsForGarbageCollection" value="True" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.compiler.warnings.AllWarnings" value="True" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.compiler.miscellaneous.OtherFlags" value="-mrelax -std=gnu99 -fno-strict-aliasing -mno-cond-exec-before-reload" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.linker.optimization.GarbageCollectUnusedSections" value="True" toolchain="avr32gcc"/>
|
||||||
<toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>
|
<toolchain-config name="avr32gcc.linker.optimization.RelaxBranches" value="True" toolchain="avr32gcc"/>
|
||||||
</module>
|
</module>
|
||||||
</asf>
|
</asf>
|
||||||
</lufa>
|
</lufa>
|
||||||
|
|
|
@ -231,9 +231,15 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
|
||||||
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
|
.Header = {.Size = sizeof(USB_Descriptor_Device_t), .Type = DTYPE_Device},
|
||||||
|
|
||||||
.USBSpecification = VERSION_BCD(1,1,0),
|
.USBSpecification = VERSION_BCD(1,1,0),
|
||||||
|
#if VIRTSER_ENABLE
|
||||||
|
.Class = USB_CSCP_IADDeviceClass,
|
||||||
|
.SubClass = USB_CSCP_IADDeviceSubclass,
|
||||||
|
.Protocol = USB_CSCP_IADDeviceProtocol,
|
||||||
|
#else
|
||||||
.Class = USB_CSCP_NoDeviceClass,
|
.Class = USB_CSCP_NoDeviceClass,
|
||||||
.SubClass = USB_CSCP_NoDeviceSubclass,
|
.SubClass = USB_CSCP_NoDeviceSubclass,
|
||||||
.Protocol = USB_CSCP_NoDeviceProtocol,
|
.Protocol = USB_CSCP_NoDeviceProtocol,
|
||||||
|
#endif
|
||||||
|
|
||||||
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
|
.Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE,
|
||||||
|
|
||||||
|
@ -643,8 +649,112 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
|
||||||
|
|
||||||
.TotalEmbeddedJacks = 0x01,
|
.TotalEmbeddedJacks = 0x01,
|
||||||
.AssociatedJackID = {0x03}
|
.AssociatedJackID = {0x03}
|
||||||
}
|
},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
.CDC_Interface_Association =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Interface_Association_t), .Type = DTYPE_InterfaceAssociation},
|
||||||
|
|
||||||
|
.FirstInterfaceIndex = CCI_INTERFACE,
|
||||||
|
.TotalInterfaces = 2,
|
||||||
|
|
||||||
|
.Class = CDC_CSCP_CDCClass,
|
||||||
|
.SubClass = CDC_CSCP_ACMSubclass,
|
||||||
|
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||||
|
|
||||||
|
.IADStrIndex = NO_DESCRIPTOR,
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_CCI_Interface =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||||
|
|
||||||
|
.InterfaceNumber = CCI_INTERFACE,
|
||||||
|
.AlternateSetting = 0,
|
||||||
|
|
||||||
|
.TotalEndpoints = 1,
|
||||||
|
|
||||||
|
.Class = CDC_CSCP_CDCClass,
|
||||||
|
.SubClass = CDC_CSCP_ACMSubclass,
|
||||||
|
.Protocol = CDC_CSCP_ATCommandProtocol,
|
||||||
|
|
||||||
|
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_Functional_Header =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
|
||||||
|
.Subtype = 0x00,
|
||||||
|
|
||||||
|
.CDCSpecification = VERSION_BCD(1,1,0),
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_Functional_ACM =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
|
||||||
|
.Subtype = 0x02,
|
||||||
|
|
||||||
|
.Capabilities = 0x02,
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_Functional_Union =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
|
||||||
|
.Subtype = 0x06,
|
||||||
|
|
||||||
|
.MasterInterfaceNumber = CCI_INTERFACE,
|
||||||
|
.SlaveInterfaceNumber = CDI_INTERFACE,
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_NotificationEndpoint =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||||
|
|
||||||
|
.EndpointAddress = CDC_NOTIFICATION_EPADDR,
|
||||||
|
.Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||||
|
.EndpointSize = CDC_NOTIFICATION_EPSIZE,
|
||||||
|
.PollingIntervalMS = 0xFF
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_DCI_Interface =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface},
|
||||||
|
|
||||||
|
.InterfaceNumber = CDI_INTERFACE,
|
||||||
|
.AlternateSetting = 0,
|
||||||
|
|
||||||
|
.TotalEndpoints = 2,
|
||||||
|
|
||||||
|
.Class = CDC_CSCP_CDCDataClass,
|
||||||
|
.SubClass = CDC_CSCP_NoDataSubclass,
|
||||||
|
.Protocol = CDC_CSCP_NoDataProtocol,
|
||||||
|
|
||||||
|
.InterfaceStrIndex = NO_DESCRIPTOR
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_DataOutEndpoint =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||||
|
|
||||||
|
.EndpointAddress = CDC_OUT_EPADDR,
|
||||||
|
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||||
|
.EndpointSize = CDC_EPSIZE,
|
||||||
|
.PollingIntervalMS = 0x05
|
||||||
|
},
|
||||||
|
|
||||||
|
.CDC_DataInEndpoint =
|
||||||
|
{
|
||||||
|
.Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
|
||||||
|
|
||||||
|
.EndpointAddress = CDC_IN_EPADDR,
|
||||||
|
.Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
|
||||||
|
.EndpointSize = CDC_EPSIZE,
|
||||||
|
.PollingIntervalMS = 0x05
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,21 @@ typedef struct
|
||||||
USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_Out_Jack_Endpoint_SPC;
|
USB_MIDI_Descriptor_Jack_Endpoint_t MIDI_Out_Jack_Endpoint_SPC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
USB_Descriptor_Interface_Association_t CDC_Interface_Association;
|
||||||
|
|
||||||
|
// CDC Control Interface
|
||||||
|
USB_Descriptor_Interface_t CDC_CCI_Interface;
|
||||||
|
USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header;
|
||||||
|
USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM;
|
||||||
|
USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union;
|
||||||
|
USB_Descriptor_Endpoint_t CDC_NotificationEndpoint;
|
||||||
|
|
||||||
|
// CDC Data Interface
|
||||||
|
USB_Descriptor_Interface_t CDC_DCI_Interface;
|
||||||
|
USB_Descriptor_Endpoint_t CDC_DataOutEndpoint;
|
||||||
|
USB_Descriptor_Endpoint_t CDC_DataInEndpoint;
|
||||||
|
#endif
|
||||||
} USB_Descriptor_Configuration_t;
|
} USB_Descriptor_Configuration_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,8 +156,15 @@ typedef struct
|
||||||
# define AS_INTERFACE NKRO_INTERFACE
|
# define AS_INTERFACE NKRO_INTERFACE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
# define CCI_INTERFACE (AS_INTERFACE + 1)
|
||||||
|
# define CDI_INTERFACE (AS_INTERFACE + 2)
|
||||||
|
#else
|
||||||
|
# define CDI_INTERFACE AS_INTERFACE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* nubmer of interfaces */
|
/* nubmer of interfaces */
|
||||||
#define TOTAL_INTERFACES AS_INTERFACE + 1
|
#define TOTAL_INTERFACES (CDI_INTERFACE + 1)
|
||||||
|
|
||||||
|
|
||||||
// Endopoint number and size
|
// Endopoint number and size
|
||||||
|
@ -180,11 +202,24 @@ typedef struct
|
||||||
# define MIDI_STREAM_OUT_EPNUM (NKRO_IN_EPNUM + 2)
|
# define MIDI_STREAM_OUT_EPNUM (NKRO_IN_EPNUM + 2)
|
||||||
# define MIDI_STREAM_IN_EPADDR (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM)
|
# define MIDI_STREAM_IN_EPADDR (ENDPOINT_DIR_IN | MIDI_STREAM_IN_EPNUM)
|
||||||
# define MIDI_STREAM_OUT_EPADDR (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM)
|
# define MIDI_STREAM_OUT_EPADDR (ENDPOINT_DIR_OUT | MIDI_STREAM_OUT_EPNUM)
|
||||||
|
#else
|
||||||
|
# define MIDI_STREAM_OUT_EPNUM NKRO_IN_EPNUM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
# define CDC_NOTIFICATION_EPNUM (MIDI_STREAM_OUT_EPNUM + 1)
|
||||||
|
# define CDC_IN_EPNUM (MIDI_STREAM_OUT_EPNUM + 2)
|
||||||
|
# define CDC_OUT_EPNUM (MIDI_STREAM_OUT_EPNUM + 3)
|
||||||
|
# define CDC_NOTIFICATION_EPADDR (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM)
|
||||||
|
# define CDC_IN_EPADDR (ENDPOINT_DIR_IN | CDC_IN_EPNUM)
|
||||||
|
# define CDC_OUT_EPADDR (ENDPOINT_DIR_OUT | CDC_OUT_EPNUM)
|
||||||
|
#else
|
||||||
|
# define CDC_OUT_EPNUM MIDI_STREAM_OUT_EPNUM
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(__AVR_ATmega32U2__) && MIDI_STREAM_OUT_EPADDR > 4
|
#if defined(__AVR_ATmega32U2__) && CDC_OUT_EPNUM > 4
|
||||||
# error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI)"
|
# error "Endpoints are not available enough to support all functions. Remove some in Makefile.(MOUSEKEY, EXTRAKEY, CONSOLE, NKRO, MIDI, SERIAL)"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define KEYBOARD_EPSIZE 8
|
#define KEYBOARD_EPSIZE 8
|
||||||
|
@ -193,6 +228,8 @@ typedef struct
|
||||||
#define CONSOLE_EPSIZE 32
|
#define CONSOLE_EPSIZE 32
|
||||||
#define NKRO_EPSIZE 16
|
#define NKRO_EPSIZE 16
|
||||||
#define MIDI_STREAM_EPSIZE 64
|
#define MIDI_STREAM_EPSIZE 64
|
||||||
|
#define CDC_NOTIFICATION_EPSIZE 8
|
||||||
|
#define CDC_EPSIZE 16
|
||||||
|
|
||||||
|
|
||||||
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
|
||||||
|
|
|
@ -60,6 +60,10 @@
|
||||||
#include "bluetooth.h"
|
#include "bluetooth.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
#include "virtser.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t keyboard_idle = 0;
|
uint8_t keyboard_idle = 0;
|
||||||
/* 0: Boot Protocol, 1: Report Protocol(default) */
|
/* 0: Boot Protocol, 1: Report Protocol(default) */
|
||||||
uint8_t keyboard_protocol = 1;
|
uint8_t keyboard_protocol = 1;
|
||||||
|
@ -127,6 +131,34 @@ USB_ClassInfo_MIDI_Device_t USB_MIDI_Interface =
|
||||||
#define SYS_COMMON_3 0x30
|
#define SYS_COMMON_3 0x30
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
USB_ClassInfo_CDC_Device_t cdc_device =
|
||||||
|
{
|
||||||
|
.Config =
|
||||||
|
{
|
||||||
|
.ControlInterfaceNumber = CCI_INTERFACE,
|
||||||
|
.DataINEndpoint =
|
||||||
|
{
|
||||||
|
.Address = CDC_IN_EPADDR,
|
||||||
|
.Size = CDC_EPSIZE,
|
||||||
|
.Banks = 1,
|
||||||
|
},
|
||||||
|
.DataOUTEndpoint =
|
||||||
|
{
|
||||||
|
.Address = CDC_OUT_EPADDR,
|
||||||
|
.Size = CDC_EPSIZE,
|
||||||
|
.Banks = 1,
|
||||||
|
},
|
||||||
|
.NotificationEndpoint =
|
||||||
|
{
|
||||||
|
.Address = CDC_NOTIFICATION_EPADDR,
|
||||||
|
.Size = CDC_NOTIFICATION_EPSIZE,
|
||||||
|
.Banks = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Console
|
* Console
|
||||||
|
@ -311,6 +343,12 @@ void EVENT_USB_Device_ConfigurationChanged(void)
|
||||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
|
ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
|
||||||
ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
|
ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPADDR, EP_TYPE_BULK, MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPADDR, EP_TYPE_INTERRUPT, CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
|
||||||
|
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_OUT_EPADDR, EP_TYPE_BULK, CDC_EPSIZE, ENDPOINT_BANK_SINGLE);
|
||||||
|
ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_IN_EPADDR, EP_TYPE_BULK, CDC_EPSIZE, ENDPOINT_BANK_SINGLE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -432,10 +470,15 @@ void EVENT_USB_Device_ControlRequest(void)
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
CDC_Device_ProcessControlRequest(&cdc_device);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Host driver
|
* Host driver
|
||||||
|
p
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
static uint8_t keyboard_leds(void)
|
static uint8_t keyboard_leds(void)
|
||||||
{
|
{
|
||||||
|
@ -827,6 +870,61 @@ void MIDI_Task(void)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* VIRTUAL SERIAL
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
void virtser_init(void)
|
||||||
|
{
|
||||||
|
cdc_device.State.ControlLineStates.DeviceToHost = CDC_CONTROL_LINE_IN_DSR ;
|
||||||
|
CDC_Device_SendControlLineStateChange(&cdc_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
void virtser_recv(uint8_t c) __attribute__ ((weak));
|
||||||
|
void virtser_recv(uint8_t c)
|
||||||
|
{
|
||||||
|
// Ignore by default
|
||||||
|
}
|
||||||
|
|
||||||
|
void virtser_task(void)
|
||||||
|
{
|
||||||
|
uint16_t count = CDC_Device_BytesReceived(&cdc_device);
|
||||||
|
uint8_t ch;
|
||||||
|
if (count)
|
||||||
|
{
|
||||||
|
ch = CDC_Device_ReceiveByte(&cdc_device);
|
||||||
|
virtser_recv(ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void virtser_send(const uint8_t byte)
|
||||||
|
{
|
||||||
|
uint8_t timeout = 255;
|
||||||
|
uint8_t ep = Endpoint_GetCurrentEndpoint();
|
||||||
|
|
||||||
|
if (cdc_device.State.ControlLineStates.HostToDevice & CDC_CONTROL_LINE_OUT_DTR)
|
||||||
|
{
|
||||||
|
/* IN packet */
|
||||||
|
Endpoint_SelectEndpoint(cdc_device.Config.DataINEndpoint.Address);
|
||||||
|
|
||||||
|
if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) {
|
||||||
|
Endpoint_SelectEndpoint(ep);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (timeout-- && !Endpoint_IsReadWriteAllowed()) _delay_us(40);
|
||||||
|
|
||||||
|
Endpoint_Write_8(byte);
|
||||||
|
CDC_Device_Flush(&cdc_device);
|
||||||
|
|
||||||
|
if (Endpoint_IsINReady()) {
|
||||||
|
Endpoint_ClearIN();
|
||||||
|
}
|
||||||
|
|
||||||
|
Endpoint_SelectEndpoint(ep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* main
|
* main
|
||||||
|
@ -918,6 +1016,10 @@ int main(void)
|
||||||
sleep_led_init();
|
sleep_led_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
virtser_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
print("Keyboard start.\n");
|
print("Keyboard start.\n");
|
||||||
while (1) {
|
while (1) {
|
||||||
#ifndef BLUETOOTH_ENABLE
|
#ifndef BLUETOOTH_ENABLE
|
||||||
|
@ -936,6 +1038,11 @@ int main(void)
|
||||||
#endif
|
#endif
|
||||||
keyboard_task();
|
keyboard_task();
|
||||||
|
|
||||||
|
#ifdef VIRTSER_ENABLE
|
||||||
|
virtser_task();
|
||||||
|
CDC_Device_USBTask(&cdc_device);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
|
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
|
||||||
USB_USBTask();
|
USB_USBTask();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,93 +1,93 @@
|
||||||
/*
|
/*
|
||||||
LUFA Library
|
LUFA Library
|
||||||
Copyright (C) Dean Camera, 2012.
|
Copyright (C) Dean Camera, 2012.
|
||||||
|
|
||||||
dean [at] fourwalledcubicle [dot] com
|
dean [at] fourwalledcubicle [dot] com
|
||||||
www.lufa-lib.org
|
www.lufa-lib.org
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
|
||||||
|
|
||||||
Permission to use, copy, modify, distribute, and sell this
|
Permission to use, copy, modify, distribute, and sell this
|
||||||
software and its documentation for any purpose is hereby granted
|
software and its documentation for any purpose is hereby granted
|
||||||
without fee, provided that the above copyright notice appear in
|
without fee, provided that the above copyright notice appear in
|
||||||
all copies and that both that the copyright notice and this
|
all copies and that both that the copyright notice and this
|
||||||
permission notice and warranty disclaimer appear in supporting
|
permission notice and warranty disclaimer appear in supporting
|
||||||
documentation, and that the name of the author not be used in
|
documentation, and that the name of the author not be used in
|
||||||
advertising or publicity pertaining to distribution of the
|
advertising or publicity pertaining to distribution of the
|
||||||
software without specific, written prior permission.
|
software without specific, written prior permission.
|
||||||
|
|
||||||
The author disclaim all warranties with regard to this
|
The author disclaim all warranties with regard to this
|
||||||
software, including all implied warranties of merchantability
|
software, including all implied warranties of merchantability
|
||||||
and fitness. In no event shall the author be liable for any
|
and fitness. In no event shall the author be liable for any
|
||||||
special, indirect or consequential damages or any damages
|
special, indirect or consequential damages or any damages
|
||||||
whatsoever resulting from loss of use, data or profits, whether
|
whatsoever resulting from loss of use, data or profits, whether
|
||||||
in an action of contract, negligence or other tortious action,
|
in an action of contract, negligence or other tortious action,
|
||||||
arising out of or in connection with the use or performance of
|
arising out of or in connection with the use or performance of
|
||||||
this software.
|
this software.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
* \brief LUFA Library Configuration Header File
|
* \brief LUFA Library Configuration Header File
|
||||||
*
|
*
|
||||||
* This header file is used to configure LUFA's compile time options,
|
* This header file is used to configure LUFA's compile time options,
|
||||||
* as an alternative to the compile time constants supplied through
|
* as an alternative to the compile time constants supplied through
|
||||||
* a makefile.
|
* a makefile.
|
||||||
*
|
*
|
||||||
* For information on what each token does, refer to the LUFA
|
* For information on what each token does, refer to the LUFA
|
||||||
* manual section "Summary of Compile Tokens".
|
* manual section "Summary of Compile Tokens".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _LUFA_CONFIG_H_
|
#ifndef _LUFA_CONFIG_H_
|
||||||
#define _LUFA_CONFIG_H_
|
#define _LUFA_CONFIG_H_
|
||||||
|
|
||||||
#if (ARCH == ARCH_AVR8)
|
#if (ARCH == ARCH_AVR8)
|
||||||
|
|
||||||
/* Non-USB Related Configuration Tokens: */
|
/* Non-USB Related Configuration Tokens: */
|
||||||
// #define DISABLE_TERMINAL_CODES
|
// #define DISABLE_TERMINAL_CODES
|
||||||
|
|
||||||
/* USB Class Driver Related Tokens: */
|
/* USB Class Driver Related Tokens: */
|
||||||
// #define HID_HOST_BOOT_PROTOCOL_ONLY
|
// #define HID_HOST_BOOT_PROTOCOL_ONLY
|
||||||
// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
|
// #define HID_STATETABLE_STACK_DEPTH {Insert Value Here}
|
||||||
// #define HID_USAGE_STACK_DEPTH {Insert Value Here}
|
// #define HID_USAGE_STACK_DEPTH {Insert Value Here}
|
||||||
// #define HID_MAX_COLLECTIONS {Insert Value Here}
|
// #define HID_MAX_COLLECTIONS {Insert Value Here}
|
||||||
// #define HID_MAX_REPORTITEMS {Insert Value Here}
|
// #define HID_MAX_REPORTITEMS {Insert Value Here}
|
||||||
// #define HID_MAX_REPORT_IDS {Insert Value Here}
|
// #define HID_MAX_REPORT_IDS {Insert Value Here}
|
||||||
// #define NO_CLASS_DRIVER_AUTOFLUSH
|
// #define NO_CLASS_DRIVER_AUTOFLUSH
|
||||||
|
|
||||||
/* General USB Driver Related Tokens: */
|
/* General USB Driver Related Tokens: */
|
||||||
// #define ORDERED_EP_CONFIG
|
// #define ORDERED_EP_CONFIG
|
||||||
#define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
|
#define USE_STATIC_OPTIONS (USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)
|
||||||
#define USB_DEVICE_ONLY
|
#define USB_DEVICE_ONLY
|
||||||
// #define USB_HOST_ONLY
|
// #define USB_HOST_ONLY
|
||||||
// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
|
// #define USB_STREAM_TIMEOUT_MS {Insert Value Here}
|
||||||
// #define NO_LIMITED_CONTROLLER_CONNECT
|
// #define NO_LIMITED_CONTROLLER_CONNECT
|
||||||
// #define NO_SOF_EVENTS
|
// #define NO_SOF_EVENTS
|
||||||
|
|
||||||
/* USB Device Mode Driver Related Tokens: */
|
/* USB Device Mode Driver Related Tokens: */
|
||||||
// #define USE_RAM_DESCRIPTORS
|
// #define USE_RAM_DESCRIPTORS
|
||||||
#define USE_FLASH_DESCRIPTORS
|
#define USE_FLASH_DESCRIPTORS
|
||||||
// #define USE_EEPROM_DESCRIPTORS
|
// #define USE_EEPROM_DESCRIPTORS
|
||||||
// #define NO_INTERNAL_SERIAL
|
// #define NO_INTERNAL_SERIAL
|
||||||
#define FIXED_CONTROL_ENDPOINT_SIZE 8
|
#define FIXED_CONTROL_ENDPOINT_SIZE 8
|
||||||
// #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
|
// #define DEVICE_STATE_AS_GPIOR {Insert Value Here}
|
||||||
#define FIXED_NUM_CONFIGURATIONS 1
|
#define FIXED_NUM_CONFIGURATIONS 1
|
||||||
// #define CONTROL_ONLY_DEVICE
|
// #define CONTROL_ONLY_DEVICE
|
||||||
// #define INTERRUPT_CONTROL_ENDPOINT
|
// #define INTERRUPT_CONTROL_ENDPOINT
|
||||||
// #define NO_DEVICE_REMOTE_WAKEUP
|
// #define NO_DEVICE_REMOTE_WAKEUP
|
||||||
// #define NO_DEVICE_SELF_POWER
|
// #define NO_DEVICE_SELF_POWER
|
||||||
|
|
||||||
/* USB Host Mode Driver Related Tokens: */
|
/* USB Host Mode Driver Related Tokens: */
|
||||||
// #define HOST_STATE_AS_GPIOR {Insert Value Here}
|
// #define HOST_STATE_AS_GPIOR {Insert Value Here}
|
||||||
// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
|
// #define USB_HOST_TIMEOUT_MS {Insert Value Here}
|
||||||
// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
|
// #define HOST_DEVICE_SETTLE_DELAY_MS {Insert Value Here}
|
||||||
// #define NO_AUTO_VBUS_MANAGEMENT
|
// #define NO_AUTO_VBUS_MANAGEMENT
|
||||||
// #define INVERTED_VBUS_ENABLE_LINE
|
// #define INVERTED_VBUS_ENABLE_LINE
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#error Unsupported architecture for this LUFA configuration file.
|
#error Unsupported architecture for this LUFA configuration file.
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,114 +3,114 @@ index 51a79bb..42d07bd 100644
|
||||||
--- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
|
--- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
|
||||||
+++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
|
+++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v6m.s
|
||||||
@@ -105,6 +105,13 @@
|
@@ -105,6 +105,13 @@
|
||||||
#define CRT0_CALL_DESTRUCTORS TRUE
|
#define CRT0_CALL_DESTRUCTORS TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+/**
|
+/**
|
||||||
+ * @brief Magic number for jumping to bootloader.
|
+ * @brief Magic number for jumping to bootloader.
|
||||||
+ */
|
+ */
|
||||||
+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
|
+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
|
||||||
+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
|
+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Code section. */
|
/* Code section. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
@@ -124,6 +131,17 @@
|
@@ -124,6 +131,17 @@
|
||||||
.thumb_func
|
.thumb_func
|
||||||
.global Reset_Handler
|
.global Reset_Handler
|
||||||
Reset_Handler:
|
Reset_Handler:
|
||||||
+
|
+
|
||||||
+#ifdef STM32_BOOTLOADER_ADDRESS
|
+#ifdef STM32_BOOTLOADER_ADDRESS
|
||||||
+ /* jump to bootloader code */
|
+ /* jump to bootloader code */
|
||||||
+ ldr r0, =__ram0_end__-4
|
+ ldr r0, =__ram0_end__-4
|
||||||
+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
|
+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
|
||||||
+ ldr r2, [r0, #0]
|
+ ldr r2, [r0, #0]
|
||||||
+ str r0, [r0, #0] /* erase stored magic */
|
+ str r0, [r0, #0] /* erase stored magic */
|
||||||
+ cmp r2, r1
|
+ cmp r2, r1
|
||||||
+ beq Bootloader_Jump
|
+ beq Bootloader_Jump
|
||||||
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
||||||
+
|
+
|
||||||
/* Interrupts are globally masked initially.*/
|
/* Interrupts are globally masked initially.*/
|
||||||
cpsid i
|
cpsid i
|
||||||
|
|
||||||
@@ -242,6 +260,21 @@ endfiniloop:
|
@@ -242,6 +260,21 @@ endfiniloop:
|
||||||
ldr r1, =__default_exit
|
ldr r1, =__default_exit
|
||||||
bx r1
|
bx r1
|
||||||
|
|
||||||
+#ifdef STM32_BOOTLOADER_ADDRESS
|
+#ifdef STM32_BOOTLOADER_ADDRESS
|
||||||
+/*
|
+/*
|
||||||
+ * Jump-to-bootloader function.
|
+ * Jump-to-bootloader function.
|
||||||
+ */
|
+ */
|
||||||
+
|
+
|
||||||
+ .align 2
|
+ .align 2
|
||||||
+ .thumb_func
|
+ .thumb_func
|
||||||
+Bootloader_Jump:
|
+Bootloader_Jump:
|
||||||
+ ldr r0, =STM32_BOOTLOADER_ADDRESS
|
+ ldr r0, =STM32_BOOTLOADER_ADDRESS
|
||||||
+ ldr r1, [r0, #0]
|
+ ldr r1, [r0, #0]
|
||||||
+ mov sp, r1
|
+ mov sp, r1
|
||||||
+ ldr r0, [r0, #4]
|
+ ldr r0, [r0, #4]
|
||||||
+ bx r0
|
+ bx r0
|
||||||
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
||||||
+
|
+
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
diff --git a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
||||||
index 4812a29..dca9f88 100644
|
index 4812a29..dca9f88 100644
|
||||||
--- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
--- a/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
||||||
+++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
+++ b/os/common/ports/ARMCMx/compilers/GCC/crt0_v7m.s
|
||||||
@@ -140,6 +140,13 @@
|
@@ -140,6 +140,13 @@
|
||||||
#define CRT0_CPACR_INIT 0x00F00000
|
#define CRT0_CPACR_INIT 0x00F00000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+/**
|
+/**
|
||||||
+ * @brief Magic number for jumping to bootloader.
|
+ * @brief Magic number for jumping to bootloader.
|
||||||
+ */
|
+ */
|
||||||
+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
|
+#if !defined(MAGIC_BOOTLOADER_NUMBER) || defined(__DOXYGEN__)
|
||||||
+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
|
+#define MAGIC_BOOTLOADER_NUMBER 0xDEADBEEF
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Code section. */
|
/* Code section. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
@@ -164,6 +171,17 @@
|
@@ -164,6 +171,17 @@
|
||||||
.thumb_func
|
.thumb_func
|
||||||
.global Reset_Handler
|
.global Reset_Handler
|
||||||
Reset_Handler:
|
Reset_Handler:
|
||||||
+
|
+
|
||||||
+#ifdef STM32_BOOTLOADER_ADDRESS
|
+#ifdef STM32_BOOTLOADER_ADDRESS
|
||||||
+ /* jump to bootloader code */
|
+ /* jump to bootloader code */
|
||||||
+ ldr r0, =__ram0_end__-4
|
+ ldr r0, =__ram0_end__-4
|
||||||
+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
|
+ ldr r1, =MAGIC_BOOTLOADER_NUMBER
|
||||||
+ ldr r2, [r0, #0]
|
+ ldr r2, [r0, #0]
|
||||||
+ str r0, [r0, #0] /* erase stored magic */
|
+ str r0, [r0, #0] /* erase stored magic */
|
||||||
+ cmp r2, r1
|
+ cmp r2, r1
|
||||||
+ beq Bootloader_Jump
|
+ beq Bootloader_Jump
|
||||||
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
||||||
+
|
+
|
||||||
/* Interrupts are globally masked initially.*/
|
/* Interrupts are globally masked initially.*/
|
||||||
cpsid i
|
cpsid i
|
||||||
|
|
||||||
@@ -305,6 +323,21 @@ endfiniloop:
|
@@ -305,6 +323,21 @@ endfiniloop:
|
||||||
/* Branching to the defined exit handler.*/
|
/* Branching to the defined exit handler.*/
|
||||||
b __default_exit
|
b __default_exit
|
||||||
|
|
||||||
+#ifdef STM32_BOOTLOADER_ADDRESS
|
+#ifdef STM32_BOOTLOADER_ADDRESS
|
||||||
+/*
|
+/*
|
||||||
+ * Jump-to-bootloader function.
|
+ * Jump-to-bootloader function.
|
||||||
+ */
|
+ */
|
||||||
+
|
+
|
||||||
+ .align 2
|
+ .align 2
|
||||||
+ .thumb_func
|
+ .thumb_func
|
||||||
+Bootloader_Jump:
|
+Bootloader_Jump:
|
||||||
+ ldr r0, =STM32_BOOTLOADER_ADDRESS
|
+ ldr r0, =STM32_BOOTLOADER_ADDRESS
|
||||||
+ ldr r1, [r0, #0]
|
+ ldr r1, [r0, #0]
|
||||||
+ mov sp, r1
|
+ mov sp, r1
|
||||||
+ ldr r0, [r0, #4]
|
+ ldr r0, [r0, #4]
|
||||||
+ bx r0
|
+ bx r0
|
||||||
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
+#endif /* STM32_BOOTLOADER_ADDRESS */
|
||||||
+
|
+
|
||||||
#endif /* !defined(__DOXYGEN__) */
|
#endif /* !defined(__DOXYGEN__) */
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
Loading…
Reference in New Issue