Skip to content

Commit

Permalink
V-USB remote wakeup
Browse files Browse the repository at this point in the history
  • Loading branch information
luizribeiro committed Nov 27, 2016
1 parent 093bfd6 commit 391c979
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions tmk_core/protocol/vusb/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "timer.h"
#include "uart.h"
#include "debug.h"
#include "suspend.h"


#define UART_BAUD_RATE 115200
Expand All @@ -41,6 +42,23 @@ static void initForUsbConnectivity(void)
sei();
}

void usb_remote_wakeup(void) {
cli();

int8_t ddr_orig = USBDDR;
USBOUT |= (1 << USBMINUS);
USBDDR = ddr_orig | USBMASK;
USBOUT ^= USBMASK;

_delay_ms(25);

USBOUT ^= USBMASK;
USBDDR = ddr_orig;
USBOUT &= ~(1 << USBMINUS);

sei();
}

int main(void)
{
bool suspended = false;
Expand Down Expand Up @@ -70,19 +88,6 @@ int main(void)
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
if (timer_elapsed(last_timer) > 5) {
suspended = true;
/*
uart_putchar('S');
_delay_ms(1);
cli();
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_bod_disable();
sei();
sleep_cpu();
sleep_disable();
_delay_ms(10);
uart_putchar('W');
*/
}
}
#endif
Expand All @@ -95,6 +100,8 @@ int main(void)
keyboard_task();
}
vusb_transfer_keyboard();
} else if (suspend_wakeup_condition()) {
usb_remote_wakeup();
}
}
}

0 comments on commit 391c979

Please sign in to comment.