an conditional for console in

This commit is contained in:
Jack Humbert 2017-12-28 17:37:45 -05:00
parent f8d340a9dd
commit 426ace718b
5 changed files with 49 additions and 35 deletions

View File

@ -44,6 +44,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define AUDIO_VOICES
#define C6_AUDIO
#define CONSOLE_IN_ENABLE
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */

View File

@ -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 0xFE:
print("Entering bootloader\n");
reset_keyboard();
break;
case 0x01:
print("Saying hello\n");
audio_on();
#ifdef AUDIO_ENABLE
audio_on();
#endif
break;
case 0xFE:
#ifdef CONSOLE_IN_BOOTLOADER
print("Entering bootloader\n");
reset_keyboard();
#else
print("Unable to enter bootloader\n");
#endif
break;
}
process_console_data_kb(data, length);

View File

@ -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);

View File

@ -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

View File

@ -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