an conditional for console in

pjrc_hid
Jack Humbert 7 years ago
parent f8d340a9dd
commit 426ace718b

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

@ -1297,7 +1297,7 @@ void shutdown_user() {}
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
#ifdef CONSOLE_ENABLE #ifdef CONSOLE_IN_ENABLE
__attribute__ ((weak)) __attribute__ ((weak))
void process_console_data_user(uint8_t * data, uint8_t length) { 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) { 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 "); // print("Received message:\n ");
// while (*data) { // while (*data) {
// sendchar(*data); // sendchar(*data);
// data++; // data++;
// } // }
switch (data[0]) { switch (data[0]) {
case 0x01:
print("Saying hello\n");
#ifdef AUDIO_ENABLE
audio_on();
#endif
break;
case 0xFE: case 0xFE:
#ifdef CONSOLE_IN_BOOTLOADER
print("Entering bootloader\n"); print("Entering bootloader\n");
reset_keyboard(); reset_keyboard();
break; #else
case 0x01: print("Unable to enter bootloader\n");
print("Saying hello\n"); #endif
audio_on();
break; break;
} }
process_console_data_kb(data, length); process_console_data_kb(data, length);

@ -193,7 +193,7 @@ void led_set_kb(uint8_t usb_led);
void api_send_unicode(uint32_t unicode); 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_user(uint8_t * data, uint8_t length);
void process_console_data_kb(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); void process_console_data_quantum(uint8_t * data, uint8_t length);

@ -208,8 +208,11 @@ typedef struct
#ifdef CONSOLE_ENABLE #ifdef CONSOLE_ENABLE
# define CONSOLE_IN_EPNUM (RAW_OUT_EPNUM + 1) # define CONSOLE_IN_EPNUM (RAW_OUT_EPNUM + 1)
# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2) # ifdef CONSOLE_IN_ENABLE
//# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1) # define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 2)
# else
# define CONSOLE_OUT_EPNUM (RAW_OUT_EPNUM + 1)
# endif
#else #else
# define CONSOLE_OUT_EPNUM RAW_OUT_EPNUM # define CONSOLE_OUT_EPNUM RAW_OUT_EPNUM
#endif #endif

@ -274,41 +274,43 @@ static bool console_flush = false;
static void Console_Task(void) static void Console_Task(void)
{ {
/* Device must be connected and configured for the task to run */ /* Device must be connected and configured for the task to run */
if (USB_DeviceState != DEVICE_STATE_Configured) if (USB_DeviceState != DEVICE_STATE_Configured)
return; 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(); uint8_t ep = Endpoint_GetCurrentEndpoint();
// TODO: impl receivechar()/recvchar() #ifdef CONSOLE_IN_ENABLE
Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM); /* 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 */ // TODO: impl receivechar()/recvchar()
if (Endpoint_IsOUTReceived()) Endpoint_SelectEndpoint(CONSOLE_OUT_EPNUM);
{
/* Check to see if the packet contains data */
if (Endpoint_IsReadWriteAllowed())
{
/* Read Console Report Data */ /* Check to see if a packet has been sent from the host */
Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL); if (Endpoint_IsOUTReceived())
data_read = true; {
} /* Check to see if the packet contains data */
if (Endpoint_IsReadWriteAllowed())
{
/* Finalize the stream transfer to send the last packet */ /* Read Console Report Data */
Endpoint_ClearOUT(); Endpoint_Read_Stream_LE(&ConsoleData, sizeof(ConsoleData), NULL);
data_read = true;
}
if (data_read) { /* Finalize the stream transfer to send the last packet */
/* Process Console Report Data */ Endpoint_ClearOUT();
process_console_data_quantum(ConsoleData, sizeof(ConsoleData));
}
} if (data_read) {
/* Process Console Report Data */
process_console_data_quantum(ConsoleData, sizeof(ConsoleData));
}
}
#endif
if (console_flush) { if (console_flush) {
/* IN packet */ /* IN packet */
@ -454,10 +456,10 @@ void EVENT_USB_Device_ConfigurationChanged(void)
/* Setup Console HID Report Endpoints */ /* Setup Console HID Report Endpoints */
ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN, ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
// #if 0 #ifdef CONSOLE_IN_ENABLE
ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT, ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE); CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
// #endif #endif
#endif #endif
#ifdef NKRO_ENABLE #ifdef NKRO_ENABLE

Loading…
Cancel
Save