Add intial code of RemoteWakeUp
This commit is contained in:
		@@ -133,16 +133,29 @@ static void Console_Task(void)
 | 
				
			|||||||
/*******************************************************************************
 | 
					/*******************************************************************************
 | 
				
			||||||
 * USB Events
 | 
					 * USB Events
 | 
				
			||||||
 ******************************************************************************/
 | 
					 ******************************************************************************/
 | 
				
			||||||
/** Event handler for the USB_Connect event. */
 | 
					#include "led.h"
 | 
				
			||||||
void EVENT_USB_Device_Connect(void)
 | 
					void EVENT_USB_Device_Connect(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Event handler for the USB_Disconnect event. */
 | 
					 | 
				
			||||||
void EVENT_USB_Device_Disconnect(void)
 | 
					void EVENT_USB_Device_Disconnect(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void EVENT_USB_Device_Reset(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void EVENT_USB_Device_Suspend()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    led_set(1<<USB_LED_CAPS_LOCK);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void EVENT_USB_Device_WakeUp()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    led_set(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void EVENT_USB_Device_StartOfFrame(void)
 | 
					void EVENT_USB_Device_StartOfFrame(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    Console_Task();
 | 
					    Console_Task();
 | 
				
			||||||
@@ -466,6 +479,17 @@ static void SetupHardware(void)
 | 
				
			|||||||
    USB_Device_EnableSOFEvents();
 | 
					    USB_Device_EnableSOFEvents();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "matrix.h"
 | 
				
			||||||
 | 
					static bool wakeup_condition(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    matrix_scan();
 | 
				
			||||||
 | 
					    for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
 | 
				
			||||||
 | 
					        if (matrix_get_row(r)) return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void)  __attribute__ ((weak));
 | 
					int main(void)  __attribute__ ((weak));
 | 
				
			||||||
int main(void)
 | 
					int main(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -474,9 +498,17 @@ int main(void)
 | 
				
			|||||||
    host_set_driver(&lufa_driver);
 | 
					    host_set_driver(&lufa_driver);
 | 
				
			||||||
    sei();
 | 
					    sei();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: can't print here
 | 
					 | 
				
			||||||
    debug("LUFA init\n");
 | 
					 | 
				
			||||||
    while (1) {
 | 
					    while (1) {
 | 
				
			||||||
 | 
					        while (USB_DeviceState == DEVICE_STATE_Suspended) {
 | 
				
			||||||
 | 
					            // TODO: power saving
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (USB_Device_RemoteWakeupEnabled) {
 | 
				
			||||||
 | 
					                if (wakeup_condition()) {
 | 
				
			||||||
 | 
					                    USB_Device_SendRemoteWakeup();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        keyboard_task();
 | 
					        keyboard_task();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
 | 
					#if !defined(INTERRUPT_CONTROL_ENDPOINT)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user