@ -264,6 +264,14 @@ static void raw_hid_task(void)
* Console
* Console
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifdef CONSOLE_ENABLE
# 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 )
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 */
@ -272,7 +280,11 @@ static void Console_Task(void)
uint8_t ep = Endpoint_GetCurrentEndpoint ( ) ;
uint8_t ep = Endpoint_GetCurrentEndpoint ( ) ;
#if 0
# 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 ;
// TODO: impl receivechar()/recvchar()
// TODO: impl receivechar()/recvchar()
Endpoint_SelectEndpoint ( CONSOLE_OUT_EPNUM ) ;
Endpoint_SelectEndpoint ( CONSOLE_OUT_EPNUM ) ;
@ -282,21 +294,25 @@ static void Console_Task(void)
/* Check to see if the packet contains data */
/* Check to see if the packet contains data */
if ( Endpoint_IsReadWriteAllowed ( ) )
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 */
/* Read Console Report Data */
Endpoint_Read_Stream_LE ( & ConsoleData , sizeof ( ConsoleData ) , NULL ) ;
Endpoint_Read_Stream_LE ( & ConsoleData , sizeof ( ConsoleData ) , NULL ) ;
data_read = true ;
/* Process Console Report Data */
//ProcessConsoleHIDReport(ConsoleData);
}
}
/* Finalize the stream transfer to send the last packet */
/* Finalize the stream transfer to send the last packet */
Endpoint_ClearOUT ( ) ;
Endpoint_ClearOUT ( ) ;
if ( data_read ) {
/* Process Console Report Data */
process_console_data_quantum ( ConsoleData , sizeof ( ConsoleData ) ) ;
}
}
}
# endif
# endif
if ( console_flush ) {
/* IN packet */
/* IN packet */
Endpoint_SelectEndpoint ( CONSOLE_IN_EPNUM ) ;
Endpoint_SelectEndpoint ( CONSOLE_IN_EPNUM ) ;
if ( ! Endpoint_IsEnabled ( ) | | ! Endpoint_IsConfigured ( ) ) {
if ( ! Endpoint_IsEnabled ( ) | | ! Endpoint_IsConfigured ( ) ) {
@ -312,9 +328,14 @@ static void Console_Task(void)
if ( Endpoint_IsINReady ( ) ) {
if ( Endpoint_IsINReady ( ) ) {
Endpoint_ClearIN ( ) ;
Endpoint_ClearIN ( ) ;
}
}
// CONSOLE_FLUSH_SET(false);
console_flush = false ;
}
Endpoint_SelectEndpoint ( ep ) ;
Endpoint_SelectEndpoint ( ep ) ;
}
}
# endif
# endif
@ -380,13 +401,8 @@ void EVENT_USB_Device_WakeUp()
# ifdef CONSOLE_ENABLE
// #ifdef CONSOLE_ENABLE
static bool console_flush = false ;
#if 0
# define CONSOLE_FLUSH_SET(b) do { \
ATOMIC_BLOCK ( ATOMIC_RESTORESTATE ) { \
console_flush = b ; \
} \
} while ( 0 )
// called every 1ms
// called every 1ms
void EVENT_USB_Device_StartOfFrame ( void )
void EVENT_USB_Device_StartOfFrame ( void )
@ -395,9 +411,9 @@ void EVENT_USB_Device_StartOfFrame(void)
if ( + + count % 50 ) return ;
if ( + + count % 50 ) return ;
count = 0 ;
count = 0 ;
if ( ! console_flush ) return ;
//if (!console_flush) return;
Console_Task ( ) ;
Console_Task ( ) ;
console_flush = false ;
//console_flush = false;
}
}
# endif
# endif
@ -440,7 +456,7 @@ 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
@ -1101,7 +1117,7 @@ static void setup_usb(void)
USB_Init ( ) ;
USB_Init ( ) ;
// for Console_Task
// for Console_Task
USB_Device_EnableSOFEvents ( ) ;
//USB_Device_EnableSOFEvents();
print_set_sendchar ( sendchar ) ;
print_set_sendchar ( sendchar ) ;
}
}
@ -1216,6 +1232,10 @@ int main(void)
raw_hid_task ( ) ;
raw_hid_task ( ) ;
# endif
# endif
# ifdef CONSOLE_ENABLE
Console_Task ( ) ;
# endif
# if !defined(INTERRUPT_CONTROL_ENDPOINT)
# if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask ( ) ;
USB_USBTask ( ) ;
# endif
# endif