From 07e68b224056a07a3cc86877dae8ae3dcc3f45da Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Sun, 3 Sep 2017 17:15:12 -0400 Subject: [PATCH] using pjrc hid UP to communicate with toolbox --- keyboards/planck/config.h | 2 +- keyboards/planck/keymaps/default/keymap.c | 2 +- keyboards/planck/rules.mk | 6 +- quantum/audio/audio.c | 5 +- quantum/quantum.c | 6 +- tmk_core/protocol/lufa/descriptor.h | 4 +- tmk_core/protocol/lufa/lufa.c | 89 +++++++++++++++-------- 7 files changed, 72 insertions(+), 42 deletions(-) diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index ebaf3fb6..c8f4377f 100644 --- a/keyboards/planck/config.h +++ b/keyboards/planck/config.h @@ -23,7 +23,7 @@ along with this program. If not, see . /* USB Device descriptor parameter */ #define VENDOR_ID 0xFEED #define PRODUCT_ID 0x6060 -#define MANUFACTURER Ortholinear Keyboards +#define MANUFACTURER OLKB #define PRODUCT The Planck Keyboard #define DESCRIPTION A compact ortholinear keyboard diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c index f71a2b59..2cfc1330 100644 --- a/keyboards/planck/keymaps/default/keymap.c +++ b/keyboards/planck/keymaps/default/keymap.c @@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-----------------------------------------------------------------------------------' */ [_ADJUST] = { - {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, + {_______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL }, {_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______}, {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______}, {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______} diff --git a/keyboards/planck/rules.mk b/keyboards/planck/rules.mk index 8f8477c1..c4091f01 100644 --- a/keyboards/planck/rules.mk +++ b/keyboards/planck/rules.mk @@ -53,11 +53,11 @@ OPT_DEFS += -DBOOTLOADER_SIZE=4096 BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000) MOUSEKEY_ENABLE = no # Mouse keys(+4700) EXTRAKEY_ENABLE = yes # Audio control and System control(+450) -CONSOLE_ENABLE = no # Console for debug(+400) +CONSOLE_ENABLE = yes # Console for debug(+400) COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = yes # MIDI controls +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = yes # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c index 8e8570d2..ba9279cf 100644 --- a/quantum/audio/audio.c +++ b/quantum/audio/audio.c @@ -186,7 +186,7 @@ void audio_init() void stop_all_notes() { - dprintf("audio stop all notes"); + dprintf("audio stop all notes\n"); if (!audio_initialized) { audio_init(); @@ -219,7 +219,7 @@ void stop_all_notes() void stop_note(float freq) { - dprintf("audio stop note freq=%d", (int)freq); + dprintf("audio stop note freq=%d\n", (int)freq); if (playing_note) { if (!audio_initialized) { @@ -717,6 +717,7 @@ void audio_toggle(void) { } void audio_on(void) { + PLAY_SONG(startup_song); audio_config.enable = 1; eeconfig_update_audio(audio_config.raw); audio_on_user(); diff --git a/quantum/quantum.c b/quantum/quantum.c index 65213eae..54adc040 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -134,11 +134,11 @@ void reset_keyboard(void) { clear_keyboard(); #if defined(AUDIO_ENABLE) || (defined(MIDI_ENABLE) && defined(MIDI_ENABLE_BASIC)) music_all_notes_off(); - uint16_t timer_start = timer_read(); + // uint16_t timer_start = timer_read(); PLAY_SONG(goodbye_song); shutdown_user(); - while(timer_elapsed(timer_start) < 250) - wait_ms(1); + // while(timer_elapsed(timer_start) < 500) + wait_ms(250); stop_all_notes(); #else wait_ms(250); diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index 43001c97..da725b83 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -205,8 +205,8 @@ typedef struct #ifdef CONSOLE_ENABLE # define CONSOLE_IN_EPNUM (RAW_OUT_EPNUM + 1) -//# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2) -# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1) +# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2) +//# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1) #else # define CONSOLE_OUT_EPNUM RAW_OUT_EPNUM #endif diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index e3f8724e..c651e4ba 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -260,19 +260,52 @@ static void raw_hid_task(void) } #endif +__attribute__ ((weak)) +void ProcessConsoleHIDReport(uint8_t * data, uint8_t length) { + + // print("Received message:\n "); + // while (*data) { + // sendchar(*data); + // data++; + // } + switch (data[0]) { + case 0xFE: + print("Entering bootloader\n"); + reset_keyboard(); + break; + case 0x01: + print("Saying hello\n"); + audio_on(); + break; + } +} + /******************************************************************************* * Console ******************************************************************************/ #ifdef CONSOLE_ENABLE + +static bool console_flush = false; +#define CONSOLE_FLUSH_SET(b) do { \ + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {\ + console_flush = b; \ + } \ +} while (0) + + static void Console_Task(void) { + /* Device must be connected and configured for the task to run */ if (USB_DeviceState != DEVICE_STATE_Configured) return; + + /* Create a temporary buffer to hold the read in report from the host */ + uint8_t ConsoleData[CONSOLE_EPSIZE]; + bool data_read = false; uint8_t ep = Endpoint_GetCurrentEndpoint(); -#if 0 // TODO: impl receivechar()/recvchar() Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM); @@ -282,38 +315,43 @@ static void Console_Task(void) /* Check to see if the packet contains data */ if (Endpoint_IsReadWriteAllowed()) { - /* Create a temporary buffer to hold the read in report from the host */ - uint8_t ConsoleData[CONSOLE_EPSIZE]; /* Read Console Report Data */ Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL); - - /* Process Console Report Data */ - //ProcessConsoleHIDReport(ConsoleData); + data_read = true; } /* Finalize the stream transfer to send the last packet */ Endpoint_ClearOUT(); - } -#endif - /* IN packet */ - Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM); - if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) { - Endpoint_SelectEndpoint(ep); - return; + if (data_read) { + /* Process Console Report Data */ + ProcessConsoleHIDReport(ConsoleData, sizeof(ConsoleData)); + } + } - // fill empty bank - while (Endpoint_IsReadWriteAllowed()) - Endpoint_Write_8(0); + if (console_flush) { + /* IN packet */ + Endpoint_SelectEndpoint(CONSOLE_IN_EPNUM); + if (!Endpoint_IsEnabled() || !Endpoint_IsConfigured()) { + Endpoint_SelectEndpoint(ep); + return; + } - // flash senchar packet - if (Endpoint_IsINReady()) { - Endpoint_ClearIN(); + // fill empty bank + while (Endpoint_IsReadWriteAllowed()) + Endpoint_Write_8(0); + + // flash senchar packet + if (Endpoint_IsINReady()) { + Endpoint_ClearIN(); + } + // CONSOLE_FLUSH_SET(false); } Endpoint_SelectEndpoint(ep); + } #endif @@ -381,13 +419,6 @@ void EVENT_USB_Device_WakeUp() #ifdef CONSOLE_ENABLE -static bool console_flush = false; -#define CONSOLE_FLUSH_SET(b) do { \ - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {\ - console_flush = b; \ - } \ -} while (0) - // called every 1ms void EVENT_USB_Device_StartOfFrame(void) { @@ -395,9 +426,9 @@ void EVENT_USB_Device_StartOfFrame(void) if (++count % 50) return; count = 0; - if (!console_flush) return; + //if (!console_flush) return; Console_Task(); - console_flush = false; + //console_flush = false; } #endif @@ -440,11 +471,9 @@ void EVENT_USB_Device_ConfigurationChanged(void) /* Setup Console HID Report Endpoints */ ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); -#if 0 ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); #endif -#endif #ifdef NKRO_ENABLE /* Setup NKRO HID Report Endpoints */