Commit e50d7de 1 parent 958144d commit e50d7de Copy full SHA for e50d7de
File tree 1 file changed +20
-13
lines changed
1 file changed +20
-13
lines changed Original file line number Diff line number Diff line change 20
20
#include "timer.h"
21
21
#include "uart.h"
22
22
#include "debug.h"
23
+ #include "suspend.h"
23
24
24
25
25
26
#define UART_BAUD_RATE 115200
@@ -41,6 +42,23 @@ static void initForUsbConnectivity(void)
41
42
sei ();
42
43
}
43
44
45
+ void usb_remote_wakeup (void ) {
46
+ cli ();
47
+
48
+ int8_t ddr_orig = USBDDR ;
49
+ USBOUT |= (1 << USBMINUS );
50
+ USBDDR = ddr_orig | USBMASK ;
51
+ USBOUT ^= USBMASK ;
52
+
53
+ _delay_ms (25 );
54
+
55
+ USBOUT ^= USBMASK ;
56
+ USBDDR = ddr_orig ;
57
+ USBOUT &= ~(1 << USBMINUS );
58
+
59
+ sei ();
60
+ }
61
+
44
62
int main (void )
45
63
{
46
64
bool suspended = false;
@@ -70,19 +88,6 @@ int main(void)
70
88
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
71
89
if (timer_elapsed (last_timer ) > 5 ) {
72
90
suspended = true;
73
- /*
74
- uart_putchar('S');
75
- _delay_ms(1);
76
- cli();
77
- set_sleep_mode(SLEEP_MODE_PWR_DOWN);
78
- sleep_enable();
79
- sleep_bod_disable();
80
- sei();
81
- sleep_cpu();
82
- sleep_disable();
83
- _delay_ms(10);
84
- uart_putchar('W');
85
- */
86
91
}
87
92
}
88
93
#endif
@@ -95,6 +100,8 @@ int main(void)
95
100
keyboard_task ();
96
101
}
97
102
vusb_transfer_keyboard ();
103
+ } else if (suspend_wakeup_condition ()) {
104
+ usb_remote_wakeup ();
98
105
}
99
106
}
100
107
}
You can’t perform that action at this time.
0 commit comments