diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h index 452a99d7..45ef0afb 100644 --- a/keyboards/planck/config.h +++ b/keyboards/planck/config.h @@ -44,6 +44,8 @@ along with this program. If not, see . #define AUDIO_VOICES #define C6_AUDIO +#define CONSOLE_IN_ENABLE + #define BACKLIGHT_PIN B7 /* COL2ROW or ROW2COL */ diff --git a/quantum/quantum.c b/quantum/quantum.c index 49b1e3ee..8c4c5ed7 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -1297,7 +1297,7 @@ void shutdown_user() {} //------------------------------------------------------------------------------ -#ifdef CONSOLE_ENABLE +#ifdef CONSOLE_IN_ENABLE __attribute__ ((weak)) void process_console_data_user(uint8_t * data, uint8_t length) { @@ -1309,19 +1309,26 @@ void process_console_data_kb(uint8_t * data, uint8_t length) { } void process_console_data_quantum(uint8_t * data, uint8_t length) { + // This can be used for testing - it echos back the information received // print("Received message:\n "); // while (*data) { // sendchar(*data); // data++; // } switch (data[0]) { + case 0x01: + print("Saying hello\n"); + #ifdef AUDIO_ENABLE + audio_on(); + #endif + break; case 0xFE: + #ifdef CONSOLE_IN_BOOTLOADER print("Entering bootloader\n"); reset_keyboard(); - break; - case 0x01: - print("Saying hello\n"); - audio_on(); + #else + print("Unable to enter bootloader\n"); + #endif break; } process_console_data_kb(data, length); diff --git a/quantum/quantum.h b/quantum/quantum.h index 0e9e0176..a2d64bbc 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -193,7 +193,7 @@ void led_set_kb(uint8_t usb_led); void api_send_unicode(uint32_t unicode); -#ifdef CONSOLE_ENABLE +#ifdef CONSOLE_IN_ENABLE void process_console_data_user(uint8_t * data, uint8_t length); void process_console_data_kb(uint8_t * data, uint8_t length); void process_console_data_quantum(uint8_t * data, uint8_t length); diff --git a/tmk_core/protocol/lufa/descriptor.h b/tmk_core/protocol/lufa/descriptor.h index ccec89ca..ee5ecf47 100644 --- a/tmk_core/protocol/lufa/descriptor.h +++ b/tmk_core/protocol/lufa/descriptor.h @@ -208,8 +208,11 @@ 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) +# ifdef CONSOLE_IN_ENABLE +# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2) +# else +# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1) +# endif #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 530cc012..eec4d4f4 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -274,41 +274,43 @@ static bool console_flush = false; 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(); - // TODO: impl receivechar()/recvchar() - Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM); + #ifdef CONSOLE_IN_ENABLE + /* Create a temporary buffer to hold the read in report from the host */ + uint8_t ConsoleData[CONSOLE_EPSIZE]; + bool data_read = false; - /* Check to see if a packet has been sent from the host */ - if (Endpoint_IsOUTReceived()) - { - /* Check to see if the packet contains data */ - if (Endpoint_IsReadWriteAllowed()) - { + // TODO: impl receivechar()/recvchar() + Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM); - /* Read Console Report Data */ - Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL); - data_read = true; - } + /* Check to see if a packet has been sent from the host */ + if (Endpoint_IsOUTReceived()) + { + /* Check to see if the packet contains data */ + if (Endpoint_IsReadWriteAllowed()) + { - /* Finalize the stream transfer to send the last packet */ - Endpoint_ClearOUT(); + /* Read Console Report Data */ + Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL); + data_read = true; + } - if (data_read) { - /* Process Console Report Data */ - process_console_data_quantum(ConsoleData, sizeof(ConsoleData)); - } + /* Finalize the stream transfer to send the last packet */ + Endpoint_ClearOUT(); - } + if (data_read) { + /* Process Console Report Data */ + process_console_data_quantum(ConsoleData, sizeof(ConsoleData)); + } + + } + + #endif if (console_flush) { /* IN packet */ @@ -454,10 +456,10 @@ 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 + #ifdef CONSOLE_IN_ENABLE ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); -// #endif + #endif #endif #ifdef NKRO_ENABLE