X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao_usb.c;h=1868ec3cea8355fd1de3e4e09f3e0cb987e86d6a;hp=8a0c672c6211f9e72d2881c4775bc1c52aaf1e18;hb=c65f1a1acd2ca00758833cec5d3f8056d303d3e2;hpb=5e2393eb6b1a6d7b180bd63d5165ee7b7ff5f9e0 diff --git a/ao_usb.c b/ao_usb.c index 8a0c672c..1868ec3c 100644 --- a/ao_usb.c +++ b/ao_usb.c @@ -102,7 +102,7 @@ ao_usb_ep0_flush(void) USBCS0 = cs0; } -#define LE_WORD(x) ((x)&0xFF),((x)>>8) +#define LE_WORD(x) ((x)&0xFF),((uint8_t) (((uint16_t) (x))>>8)) /* CDC definitions */ #define CS_INTERFACE 0x24 @@ -241,7 +241,7 @@ static const uint8_t ao_usb_descriptors [] = /* iSerial */ 0x0e, AO_USB_DESC_STRING, - 't', 0, 'e', 0, 'l', 0, 'e', 0, '-', 0, '0', 0, + '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, '0', 0, /* Terminating zero */ 0 @@ -369,6 +369,7 @@ ao_usb_ep0_setup(void) } break; case AO_USB_RECIP_INTERFACE: + #pragma disable_warning 110 switch(ao_usb_setup.request) { case AO_USB_REQ_GET_STATUS: ao_usb_ep0_queue_byte(0); @@ -513,7 +514,7 @@ ao_usb_getchar(void) __critical } void -ao_usb_init(void) +ao_usb_enable(void) { /* Turn on the USB controller */ SLEEP |= SLEEP_USB_EN; @@ -536,6 +537,30 @@ ao_usb_init(void) USBCIF = 0; USBOIF = 0; USBIIF = 0; +} + +void +ao_usb_disable(void) +{ + /* Disable USB interrupts */ + USBIIE = 0; + USBOIE = 0; + USBCIE = 0; + IEN2 &= ~IEN2_USBIE; - ao_add_task(&ao_usb_task, ao_usb_ep0); + /* Clear any pending interrupts */ + USBCIF = 0; + USBOIF = 0; + USBIIF = 0; + + /* Turn off the USB controller */ + SLEEP &= ~SLEEP_USB_EN; +} + +void +ao_usb_init(void) +{ + ao_usb_enable(); + + ao_add_task(&ao_usb_task, ao_usb_ep0, "usb"); }