X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=Src%2Fusbdev.c;h=4834592fbfd1b5c3c8b2897fa2978fef6bf5987c;hb=9c15daf7606d9a8ae58736963c8130cf7f4333ea;hp=9713bc8093f9452b01da53131e7ef3ddde60a321;hpb=25fbe7b4b71566ec1b9ab9f10b827eb7e527f711;p=home-hw.git diff --git a/Src/usbdev.c b/Src/usbdev.c index 9713bc8..4834592 100644 --- a/Src/usbdev.c +++ b/Src/usbdev.c @@ -91,8 +91,9 @@ static const byte desc_languages[] = { /*** Callbacks ***/ -static byte usb_rx_buf[64]; -static byte usb_tx_buf[64]; +byte rx_packet[64]; +byte tx_packet[64]; +volatile byte rx_packet_state, tx_packet_state; void usb_dev_reset(struct usb *usb) { @@ -110,7 +111,7 @@ void usb_dev_configure(struct usb *usb) { usb_ep_open(usb, 0x01, USB_EP_TYPE_BULK, 64); usb_ep_open(usb, 0x82, USB_EP_TYPE_BULK, 64); - usb_ep_receive(usb, 0x01, usb_rx_buf, 64); + usb_ep_receive(usb, 0x01, rx_packet, 64); } void usb_dev_unconfigure(struct usb *usb) @@ -136,21 +137,15 @@ void usb_dev_recv_done(struct usb *usb, byte epnum) { if (epnum == 0x01) { - // usb_tx_buf[0]++; - // usb_ep_send(usb, 0x82, usb_tx_buf, 33); - u32 len = usb_ep_received_size(usb, 0x01); - if (len >= 8) - { - memcpy(rx_display, usb_rx_buf, 8); - rx_display_ready = 1; - } - - usb_ep_receive(usb, 0x01, usb_rx_buf, 64); + if (len >= 8 && !rx_packet_state) + rx_packet_state = 1; + else + usb_ep_receive(usb, 0x01, rx_packet, 64); } } void usb_dev_send_done(struct usb *usb, byte epnum) { - // usb_ep_receive(usb, 0x01, usb_rx_buf, 64); + tx_packet_state = 0; }