]> mj.ucw.cz Git - home-hw.git/blobdiff - Src/usbdev.c
Communicating with the host
[home-hw.git] / Src / usbdev.c
index 3e6e76a3bec050b4b4c03265def7d3a73c22c21d..1c05584f5dfdf310ca677db9070ce784b1c08eb1 100644 (file)
@@ -88,6 +88,9 @@ static const byte desc_languages[] = {
 
 /*** Callbacks ***/
 
+static byte usb_rx_buf[64];
+static byte usb_tx_buf[64];
+
 void usb_dev_reset(struct usb *usb)
 {
   usb->desc_device = desc_device;
@@ -102,10 +105,15 @@ void usb_dev_reset(struct usb *usb)
 
 void usb_dev_configure(struct usb *usb)
 {
+  usb_ep_open(usb, 0x01, USB_EP_TYPE_BULK, 64);
+  usb_ep_open(usb, 0x81, USB_EP_TYPE_BULK, 64);
+  usb_ep_receive(usb, 0x01, usb_rx_buf, 64);
 }
 
 void usb_dev_unconfigure(struct usb *usb)
 {
+  usb_ep_close(usb, 0x01);
+  usb_ep_close(usb, 0x81);
 }
 
 bool usb_dev_setup_hook(struct usb *usb, struct setup_request *setup)
@@ -123,8 +131,14 @@ void usb_dev_ctl_send_done(struct usb *usb)
 
 void usb_dev_recv_done(struct usb *usb, byte epnum)
 {
+  if (epnum == 0x01)
+    {
+      usb_tx_buf[0]++;
+      usb_ep_send(usb, 0x81, usb_tx_buf, 33);
+    }
 }
 
 void usb_dev_send_done(struct usb *usb, byte epnum)
 {
+  usb_ep_receive(usb, 0x01, usb_rx_buf, 64);
 }