From 0446263935e418537966bc64bfd1c1cdb5206583 Mon Sep 17 00:00:00 2001 From: Erik Dasque Date: Fri, 15 Jul 2016 12:55:40 -0400 Subject: Adding Docker build system & documentation --- Dockerfile | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Dockerfile (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..96ace4ec6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,28 @@ +FROM debian:jessie +MAINTAINER Erik Dasque + +RUN apt-get update +RUN apt-get install --no-install-recommends -y 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 + +RUN apt-get clean +RUN rm -rf /var/lib/apt/lists/* + +ENV keyboard=ergodox_ez +ENV keymap=default + +VOLUME /qmk +WORKDIR /qmk +CMD make clean ; make keyboard=${keyboard} keymap=${keymap} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 8a9bf1f1653a5029ffd8f1e1171cd0b16bc2bc71 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Sat, 30 Jul 2016 08:37:30 +0200 Subject: Update some obsolete references Some links were still pointing to `/keyboards/ergodox_ez`, while the directory is `/keyboards/erdogox` now. Not all references have been updated, and some of the text here and there may need updating to mention the ErgoDox Infinity too, but that's out of the scope for this quick fix. Signed-off-by: Gergely Nagy --- Dockerfile | 2 +- Vagrantfile | 2 +- doc/TMK_README.md | 2 +- doc/VAGRANT_GUIDE.md | 4 ++-- keyboards/ergodox/keymaps/supercoder/readme.md | 2 +- keyboards/readme.md | 2 +- readme.md | 4 ++-- 7 files changed, 9 insertions(+), 9 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index 96ace4ec6..578d009dc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get install --no-install-recommends -y build-essential \ RUN apt-get clean RUN rm -rf /var/lib/apt/lists/* -ENV keyboard=ergodox_ez +ENV keyboard=ergodox ENV keymap=default VOLUME /qmk diff --git a/Vagrantfile b/Vagrantfile index 8cadeaddf..389b688ae 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -91,7 +91,7 @@ Vagrant.configure(2) do |config| Or you can copy and paste the example line below. - cd /vagrant; cd keyboards; cd ergodox_ez; make clean; make + cd /vagrant; cd keyboards; cd ergodox; make clean; make EOT diff --git a/doc/TMK_README.md b/doc/TMK_README.md index 6164dacd3..f3d96717a 100644 --- a/doc/TMK_README.md +++ b/doc/TMK_README.md @@ -34,7 +34,7 @@ You can find some keyboard specific projects under `converter` and `keyboard` di * [atomic](keyboards/atomic/) - [Atomic] Ortholinear 60% keyboard ### Ergodox EZ -* [ergodox_ez](keyboards/ergodox_ez) - [Ergodox_EZ] Assembled split keyboard +* [ergodox_ez](keyboards/ergodox/ez) - [Ergodox_EZ] Assembled split keyboard ## Other projects diff --git a/doc/VAGRANT_GUIDE.md b/doc/VAGRANT_GUIDE.md index 62044b7f7..c9958e16b 100644 --- a/doc/VAGRANT_GUIDE.md +++ b/doc/VAGRANT_GUIDE.md @@ -20,7 +20,7 @@ See [/doc/keymap.md](/doc/keymap.md). ## Flashing the firmware -The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](/keyboards/ergodox_ez/readme.md) gives a great example. +The "easy" way to flash the firmware is using a tool from your host OS like the Teensy programming app. [ErgoDox EZ](/keyboards/ergodox/readme.md) gives a great example. If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version. - \ No newline at end of file + diff --git a/keyboards/ergodox/keymaps/supercoder/readme.md b/keyboards/ergodox/keymaps/supercoder/readme.md index 97bf7f583..8ef96eddf 100644 --- a/keyboards/ergodox/keymaps/supercoder/readme.md +++ b/keyboards/ergodox/keymaps/supercoder/readme.md @@ -23,7 +23,7 @@ your own: ``` $ git clone https://github.com/jackhumbert/qmk_firmware.git -$ cd qmk_firmware/keyboards/ergodox_ez +$ cd qmk_firmware/keyboards/ergodox $ git clone https://github.com/algernon/ergodox-supercoder.git keymaps/supercoder $ make KEYMAP=supercoder ``` diff --git a/keyboards/readme.md b/keyboards/readme.md index e97986546..f6c90b1f6 100644 --- a/keyboards/readme.md +++ b/keyboards/readme.md @@ -17,7 +17,7 @@ What makes OLKB keyboards shine is a combo of lean aesthetics, compact size, and Made in Taiwan using advanced robotic manufacturing, the ErgoDox EZ is a fully-assembled, premium ergonomic keyboard. Its split design allows you to place both halves shoulder width, and its custom-made wrist rests and tilt/tent kit make for incredibly comfortable typing. Available on [ergodox-ez.com](https://ergodox-ez.com). -* [ErgoDox EZ](/keyboards/ergodox_ez/) - Our one and only product. Yes, it's that awesome. Comes with either printed or blank keycaps, and 7 different keyswitch types. +* [ErgoDox EZ](/keyboards/ergodox/) - Our one and only product. Yes, it's that awesome. Comes with either printed or blank keycaps, and 7 different keyswitch types. ### Clueboard - Zach White diff --git a/readme.md b/readme.md index 45af1b0c3..c3d866f36 100644 --- a/readme.md +++ b/readme.md @@ -82,9 +82,9 @@ If this is a bit complex for you, Docker might be the turn-key solution you need ```bash # You'll run this every time you want to build a keymap # modify the keymap and keyboard assigment to compile what you want -# defaults are ergodox_ez/default +# defaults are ergodox/default -docker run -e keymap=gwen -e keyboard=ergodox_ez --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware +docker run -e keymap=gwen -e keyboard=ergodox --rm -v $('pwd'):/qmk:rw edasque/qmk_firmware ``` -- cgit v1.2.3-70-g09d2 From 1557d16562d6bc69fecbe5d26055f82d0f2bdfc2 Mon Sep 17 00:00:00 2001 From: Andre Silva Date: Mon, 24 Oct 2016 20:29:34 +0100 Subject: add subproject env var to dockerfile --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index 578d009dc..744ded857 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,8 +21,9 @@ RUN apt-get clean RUN rm -rf /var/lib/apt/lists/* ENV keyboard=ergodox +ENV subproject=ez ENV keymap=default VOLUME /qmk WORKDIR /qmk -CMD make clean ; make keyboard=${keyboard} keymap=${keymap} \ No newline at end of file +CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap} -- cgit v1.2.3-70-g09d2 From 3d7aaa31e41a9c96e785b0c089d74dfda525dfbe Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Wed, 23 Nov 2016 00:30:06 -0500 Subject: converted to 8bit messages --- Dockerfile | 3 +- tmk_core/protocol/lufa/lufa.c | 119 ++++++++++++++++++++++++------------------ tmk_core/protocol/midi.mk | 1 + 3 files changed, 70 insertions(+), 53 deletions(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index 744ded857..c42bbeb32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,5 +25,4 @@ ENV subproject=ez ENV keymap=default VOLUME /qmk -WORKDIR /qmk -CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap} +WORKDIR /qmk \ No newline at end of file diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index a33a16599..c4531c8d7 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -76,6 +76,10 @@ #include "rgblight.h" #endif +#ifdef MIDI_ENABLE + #include "sysex_tools.h" +#endif + uint8_t keyboard_idle = 0; /* 0: Boot Protocol, 1: Report Protocol(default) */ uint8_t keyboard_protocol = 1; @@ -1124,8 +1128,16 @@ void sysex_callback(MidiDevice * device, uint16_t start, uint8_t length, uint8_t for (uint8_t place = 0; place < length; place++) { // send_byte(*data); midi_buffer[start + place] = *data; - if (*data == 0xF7 && midi_buffer[0] == 0xF0) - sysex_buffer_callback(device, start + place, midi_buffer); + if (*data == 0xF7) { + // SEND_STRING("\nRD: "); + // for (uint8_t i = 0; i < start + place + 1; i++){ + // send_byte(midi_buffer[i]); + // SEND_STRING(" "); + // } + uint8_t * decoded = malloc(sizeof(uint8_t) * (sysex_decoded_length(start + place - 4))); + uint16_t decode_length = sysex_decode(decoded, midi_buffer + 4, start + place - 4); + sysex_buffer_callback(device, decode_length, decoded); + } // SEND_STRING(" "); data++; } @@ -1161,32 +1173,35 @@ void encode_uint8_chunk(uint8_t data, uint8_t * pointer) { *pointer++ = (data) & 0x7F; } -void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { - // uint8_t * pointer_copy = data; // use for debugging +void dword_to_bytes(uint8_t * bytes, uint32_t dword) { + bytes[0] = (dword >> 24) & 0xFF; + bytes[1] = (dword >> 16) & 0xFF; + bytes[2] = (dword >> 8) & 0xFF; + bytes[3] = (dword >> 0) & 0xFF; +} - //data++; // i'm 98% sure there's a better way to do this - data++; - data++; - data++; - data++; +void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) { + // SEND_STRING("\nRX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(data[i]); + // SEND_STRING(" "); + // } switch (*data++) { case 0x07: ; // Quantum action break; - case 0x08: ; // Keyboard acion + case 0x08: ; // Keyboard action break; case 0x09: ; // User action break; case 0x12: ; // Set info on keyboard switch (*data++) { case 0x02: ; // set default layer - uint8_t default_layer = decode_uint8_chunk(data); - eeconfig_update_default_layer(default_layer); - default_layer_set((uint32_t)default_layer); + eeconfig_update_default_layer(data[0] << 8 | data[1]); + default_layer_set((uint32_t)(data[0] << 8 | data[1])); break; case 0x08: ; // set keymap options - uint8_t keymap_options = decode_uint8_chunk(data); - eeconfig_update_keymap(keymap_options); + eeconfig_update_keymap(data[0]); break; } break; @@ -1196,42 +1211,37 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) send_bytes_sysex(0x00, NULL, 0); break; case 0x01: ; // Get debug state - uint8_t debug[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEBUG), debug); - send_bytes_sysex(0x01, debug, 2); + uint8_t debug_bytes[1] = { eeprom_read_byte(EECONFIG_DEBUG) }; + send_bytes_sysex(0x01, debug_bytes, 1); break; case 0x02: ; // Get default layer - uint8_t default_layer[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_DEFAULT_LAYER), default_layer); - send_bytes_sysex(0x02, default_layer, 2); + uint8_t default_bytes[1] = { eeprom_read_byte(EECONFIG_DEFAULT_LAYER) }; + send_bytes_sysex(0x02, default_bytes, 1); break; #ifdef AUDIO_ENABLE case 0x03: ; // Get backlight state - uint8_t audio[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_AUDIO), audio); - send_bytes_sysex(0x03, audio, 2); + uint8_t audio_bytes[1] = { eeprom_read_byte(EECONFIG_AUDIO) }; + send_bytes_sysex(0x03, audio_bytes, 1); #endif case 0x04: ; // Get layer state - uint8_t layers[5]; - encode_uint32_chunk(layer_state, layers); - send_bytes_sysex(0x04, layers, 5); + uint8_t layer_state_bytes[4]; + dword_to_bytes(layer_state_bytes, layer_state); + send_bytes_sysex(0x04, layer_state_bytes, 4); break; #ifdef BACKLIGHT_ENABLE case 0x06: ; // Get backlight state - uint8_t backlight[2]; - encode_uint8_chunk(eeprom_read_byte(EECONFIG_BACKLIGHT), backlight); - send_bytes_sysex(0x06, backlight, 2); + uint8_t backlight_bytes[1] = { eeprom_read_byte(EECONFIG_BACKLIGHT) }; + send_bytes_sysex(0x06, backlight_bytes, 1); #endif #ifdef RGBLIGHT_ENABLE case 0x07: ; // Get rgblight state - uint8_t rgblight[2]; - encode_uint32_chunk(eeprom_read_dword(EECONFIG_RGBLIGHT), rgblight); - send_bytes_sysex(0x07, rgblight, 5); + uint8_t rgblight_bytes[4]; + dword_to_bytes(rgblight_bytes, eeprom_read_dword(EECONFIG_RGBLIGHT)); + send_bytes_sysex(0x07, rgblight_bytes, 4); #endif case 0x08: ; // Keymap options - uint8_t keymap_options[2]; - encode_uint8_chunk(eeconfig_read_keymap(), keymap_options); - send_bytes_sysex(0x08, keymap_options, 2); + uint8_t keymap_bytes[1] = { eeconfig_read_keymap() }; + send_bytes_sysex(0x08, keymap_bytes, 1); break; } break; @@ -1239,26 +1249,18 @@ void sysex_buffer_callback(MidiDevice * device, uint8_t length, uint8_t * data) case 0x27: ; // RGB LED functions switch (*data++) { case 0x00: ; // Update HSV - uint32_t hsv = decode_uint32_chunk(data); - rgblight_sethsv(((hsv >> 16) & 0xFFFF) % 360, (hsv >> 8) & 0xFF, hsv & 0xFF); + rgblight_sethsv((data[0] << 8 | data[1]) % 360, data[2], data[3]); break; case 0x01: ; // Update RGB break; case 0x02: ; // Update mode - uint8_t rgb_mode = decode_uint8_chunk(data); - rgblight_mode(rgb_mode); + rgblight_mode(data[0]); break; } break; #endif } - // SEND_STRING("\nDATA:\n"); - // while (*pointer_copy != 0xF7) { - // send_byte(*pointer_copy++); - // SEND_STRING(" "); - // } - } void send_unicode_midi(uint32_t unicode) { @@ -1268,15 +1270,30 @@ void send_unicode_midi(uint32_t unicode) { } void send_bytes_sysex(uint8_t type, uint8_t * bytes, uint8_t length) { - uint8_t * array = malloc(sizeof(uint8_t) * (length + 6)); + // SEND_STRING("\nTX: "); + // for (uint8_t i = 0; i < length; i++) { + // send_byte(bytes[i]); + // SEND_STRING(" "); + // } + uint8_t * precode = malloc(sizeof(uint8_t) * (length + 1)); + precode[0] = type; + memcpy(precode + 1, bytes, length); + uint8_t * encoded = malloc(sizeof(uint8_t) * (sysex_encoded_length(length + 1))); + uint16_t encoded_length = sysex_encode(encoded, precode, length + 1); + uint8_t * array = malloc(sizeof(uint8_t) * (encoded_length + 5)); array[0] = 0xF0; array[1] = 0x00; array[2] = 0x00; array[3] = 0x00; - array[4] = type; - array[length + 5] = 0xF7; - memcpy(array + 5, bytes, length); - midi_send_array(&midi_device, length + 6, array); + array[encoded_length + 4] = 0xF7; + memcpy(array + 4, encoded, encoded_length); + midi_send_array(&midi_device, encoded_length + 5, array); + + // SEND_STRING("\nTD: "); + // for (uint8_t i = 0; i < encoded_length + 5; i++) { + // send_byte(array[i]); + // SEND_STRING(" "); + // } } #endif diff --git a/tmk_core/protocol/midi.mk b/tmk_core/protocol/midi.mk index c85ae42ff..4855b23d3 100644 --- a/tmk_core/protocol/midi.mk +++ b/tmk_core/protocol/midi.mk @@ -4,6 +4,7 @@ SRC += midi.c \ midi_device.c \ bytequeue/bytequeue.c \ bytequeue/interrupt_setting.c \ + sysex_tools.c \ $(LUFA_SRC_USBCLASS) VPATH += $(TMK_PATH)/$(MIDI_DIR) \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 407f949e4b1f1fcee7470df1ff28260d24215f10 Mon Sep 17 00:00:00 2001 From: Erik Dasque Date: Tue, 31 Jan 2017 19:59:59 -0500 Subject: Reverted Dockerfile to put the CMD back --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Dockerfile') diff --git a/Dockerfile b/Dockerfile index c42bbeb32..744ded857 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,4 +25,5 @@ ENV subproject=ez ENV keymap=default VOLUME /qmk -WORKDIR /qmk \ No newline at end of file +WORKDIR /qmk +CMD make clean ; make keyboard=${keyboard} subproject=${subproject} keymap=${keymap} -- cgit v1.2.3-70-g09d2