slow-acting
This commit is contained in:
		
							parent
							
								
									7c57104b51
								
							
						
					
					
						commit
						13ff230615
					
				
					 4 changed files with 80 additions and 30 deletions
				
			
		| 
						 | 
				
			
			@ -264,15 +264,27 @@ static void raw_hid_task(void)
 | 
			
		|||
 * 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,39 +294,45 @@ 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 */
 | 
			
		||||
          process_console_data_quantum(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,12 +399,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 +407,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,10 +452,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
 | 
			
		||||
// #if 0
 | 
			
		||||
    ConfigSuccess &= ENDPOINT_CONFIG(CONSOLE_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
 | 
			
		||||
                                     CONSOLE_EPSIZE, ENDPOINT_BANK_SINGLE);
 | 
			
		||||
#endif
 | 
			
		||||
// #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef NKRO_ENABLE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue