1
0

ChibiOS/kinetis: sending remote wakeup.

This commit is contained in:
flabbergast 2015-10-14 19:55:09 +01:00
parent aa2c568235
commit 2e06ccf70a
3 changed files with 24 additions and 4 deletions

View File

@ -121,10 +121,10 @@ int main(void) {
while(USB_DRIVER.state == USB_SUSPENDED) { while(USB_DRIVER.state == USB_SUSPENDED) {
/* Do this in the suspended state */ /* Do this in the suspended state */
suspend_power_down(); // on AVR this deep sleeps for 15ms suspend_power_down(); // on AVR this deep sleeps for 15ms
// TODO: remote wakeup /* Remote wakeup */
// if(USB_Device_RemoteWakeupEnabled (USB_DRIVER.status & 2) && suspend_wakeup_condition()) { if((USB_DRIVER.status & 2) && suspend_wakeup_condition()) {
// USB_Device_SendRemoteWakeup(); send_remote_wakeup(&USB_DRIVER);
// } }
} }
/* Woken up */ /* Woken up */
// variables has been already cleared by the wakeup hook // variables has been already cleared by the wakeup hook

View File

@ -1024,6 +1024,23 @@ void init_usb_driver(USBDriver *usbp) {
#endif #endif
} }
/*
* Send remote wakeup packet
* Note: should not be called from ISR
*/
void send_remote_wakeup(USBDriver *usbp) {
(void)usbp;
#if defined(K20x) || defined(KL2x)
#if KINETIS_USB_USE_USB0
USB0->CTL |= USBx_CTL_RESUME;
chThdSleepMilliseconds(15);
USB0->CTL &= ~USBx_CTL_RESUME;
#endif /* KINETIS_USB_USE_USB0 */
#else /* K20x || KL2x */
#warning Sending remote wakeup packet not implemented for your platform.
#endif /* K20x || KL2x */
}
/* --------------------------------------------------------- /* ---------------------------------------------------------
* Keyboard functions * Keyboard functions
* --------------------------------------------------------- * ---------------------------------------------------------

View File

@ -36,6 +36,9 @@
/* Initialize the USB driver and bus */ /* Initialize the USB driver and bus */
void init_usb_driver(USBDriver *usbp); void init_usb_driver(USBDriver *usbp);
/* Send remote wakeup packet */
void send_remote_wakeup(USBDriver *usbp);
/* --------------- /* ---------------
* Keyboard header * Keyboard header
* --------------- * ---------------