static uint8_t reply_buffer[8];
+volatile uint8_t remote_wakeup_enabled = 0;
// ----- Functions -----
data = reply_buffer;
break;
case 0x0080: // GET_STATUS (device)
- reply_buffer[0] = 0;
+ //I think this is the corrent endianess
+ reply_buffer[0] = (remote_wakeup_enabled)<<1;
reply_buffer[1] = 0;
datalen = 2;
data = reply_buffer;
datalen = 2;
break;
case 0x0100: // CLEAR_FEATURE (device)
+ //Disable DEVICE_REMOTE_WAKEUP feature
+ if (setup.wValue == 0x01) {
+ remote_wakeup_enabled = 0;
+ }
+ break;
case 0x0101: // CLEAR_FEATURE (interface)
// TODO: Currently ignoring, perhaps useful? -HaaTa
endpoint0_stall();
endpoint0_stall();
return;
case 0x0300: // SET_FEATURE (device)
+ //Enable DEVICE_REMOTE_WAKEUP feature
+ if (setup.wValue == 0x01) {
+ remote_wakeup_enabled = 1;
+ }
+ break;
case 0x0301: // SET_FEATURE (interface)
// TODO: Currently ignoring, perhaps useful? -HaaTa
endpoint0_stall();
//serial_print("sleep\n");
USB0_ISTAT = USB_ISTAT_SLEEP;
}
+
+ if ( (status & USB_ISTAT_RESUME /* 20 */ ) ) {
+ //serial_print("resume\n");
+ USB0_ISTAT = USB_ISTAT_RESUME;
+ }
}