Merge pull request #27 from smasher816/wakeup-devel
Inital Remote Wakeup Support
This commit is contained in:
commit
622ea5d85f
@ -167,6 +167,7 @@ volatile uint8_t usb_reboot_timer = 0;
|
|||||||
|
|
||||||
static uint8_t reply_buffer[8];
|
static uint8_t reply_buffer[8];
|
||||||
|
|
||||||
|
volatile uint8_t remote_wakeup_enabled = 0;
|
||||||
|
|
||||||
|
|
||||||
// ----- Functions -----
|
// ----- Functions -----
|
||||||
@ -294,7 +295,8 @@ static void usb_setup()
|
|||||||
data = reply_buffer;
|
data = reply_buffer;
|
||||||
break;
|
break;
|
||||||
case 0x0080: // GET_STATUS (device)
|
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;
|
reply_buffer[1] = 0;
|
||||||
datalen = 2;
|
datalen = 2;
|
||||||
data = reply_buffer;
|
data = reply_buffer;
|
||||||
@ -314,6 +316,11 @@ static void usb_setup()
|
|||||||
datalen = 2;
|
datalen = 2;
|
||||||
break;
|
break;
|
||||||
case 0x0100: // CLEAR_FEATURE (device)
|
case 0x0100: // CLEAR_FEATURE (device)
|
||||||
|
//Disable DEVICE_REMOTE_WAKEUP feature
|
||||||
|
if (setup.wValue == 0x01) {
|
||||||
|
remote_wakeup_enabled = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0x0101: // CLEAR_FEATURE (interface)
|
case 0x0101: // CLEAR_FEATURE (interface)
|
||||||
// TODO: Currently ignoring, perhaps useful? -HaaTa
|
// TODO: Currently ignoring, perhaps useful? -HaaTa
|
||||||
endpoint0_stall();
|
endpoint0_stall();
|
||||||
@ -334,6 +341,11 @@ static void usb_setup()
|
|||||||
endpoint0_stall();
|
endpoint0_stall();
|
||||||
return;
|
return;
|
||||||
case 0x0300: // SET_FEATURE (device)
|
case 0x0300: // SET_FEATURE (device)
|
||||||
|
//Enable DEVICE_REMOTE_WAKEUP feature
|
||||||
|
if (setup.wValue == 0x01) {
|
||||||
|
remote_wakeup_enabled = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0x0301: // SET_FEATURE (interface)
|
case 0x0301: // SET_FEATURE (interface)
|
||||||
// TODO: Currently ignoring, perhaps useful? -HaaTa
|
// TODO: Currently ignoring, perhaps useful? -HaaTa
|
||||||
endpoint0_stall();
|
endpoint0_stall();
|
||||||
@ -1108,6 +1120,11 @@ restart:
|
|||||||
//serial_print("sleep\n");
|
//serial_print("sleep\n");
|
||||||
USB0_ISTAT = USB_ISTAT_SLEEP;
|
USB0_ISTAT = USB_ISTAT_SLEEP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( (status & USB_ISTAT_RESUME /* 20 */ ) ) {
|
||||||
|
//serial_print("resume\n");
|
||||||
|
USB0_ISTAT = USB_ISTAT_RESUME;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,6 +56,8 @@ extern volatile uint8_t usb_cdc_line_coding[7];
|
|||||||
extern volatile uint8_t usb_cdc_line_rtsdtr;
|
extern volatile uint8_t usb_cdc_line_rtsdtr;
|
||||||
extern volatile uint8_t usb_cdc_transmit_flush_timer;
|
extern volatile uint8_t usb_cdc_transmit_flush_timer;
|
||||||
|
|
||||||
|
extern volatile uint8_t remote_wakeup_enabled;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----- Functions -----
|
// ----- Functions -----
|
||||||
|
@ -76,6 +76,13 @@ void usb_keyboard_send()
|
|||||||
uint32_t wait_count = 0;
|
uint32_t wait_count = 0;
|
||||||
usb_packet_t *tx_packet;
|
usb_packet_t *tx_packet;
|
||||||
|
|
||||||
|
if (remote_wakeup_enabled) {
|
||||||
|
USB0_CTL |= USB_CTL_RESUME;
|
||||||
|
_delay_ms(5); //wait 1 to 15ms
|
||||||
|
USB0_CTL &= ~USB_CTL_RESUME;
|
||||||
|
_delay_ms(5);
|
||||||
|
}
|
||||||
|
|
||||||
// Wait till ready
|
// Wait till ready
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user