]> mj.ucw.cz Git - home-hw.git/blobdiff - usb/Src/usb.c
Auto: Meditation mode turned off
[home-hw.git] / usb / Src / usb.c
index ffac01d0e768ac94c08786519b0dc0bd52d95d6e..f7b92a66ebb19829fd3c80d44b0adb09bad71e75 100644 (file)
@@ -6,6 +6,11 @@
 
 #include <string.h>
 
 
 #include <string.h>
 
+// Layout of packet memory
+#define PMA_EP00 0x18
+#define PMA_EP80 0x58
+#define PMA_USER 0x98
+
 void usb_init(struct usb *usb, PCD_HandleTypeDef *hpcd)
 {
   memset(usb, 0, sizeof(*usb));
 void usb_init(struct usb *usb, PCD_HandleTypeDef *hpcd)
 {
   memset(usb, 0, sizeof(*usb));
@@ -17,8 +22,8 @@ void usb_init(struct usb *usb, PCD_HandleTypeDef *hpcd)
 
 void usb_start(struct usb *usb)
 {
 
 void usb_start(struct usb *usb)
 {
-  HAL_PCDEx_PMAConfig(usb->hpcd, 0x00, PCD_SNG_BUF, 0x18);
-  HAL_PCDEx_PMAConfig(usb->hpcd, 0x80, PCD_SNG_BUF, 0x58);
+  HAL_PCDEx_PMAConfig(usb->hpcd, 0x00, PCD_SNG_BUF, PMA_EP00);
+  HAL_PCDEx_PMAConfig(usb->hpcd, 0x80, PCD_SNG_BUF, PMA_EP80);
 
   HAL_PCD_Start(usb->hpcd);
 }
 
   HAL_PCD_Start(usb->hpcd);
 }
@@ -223,6 +228,7 @@ static void dev_set_configuration(struct usb *usb, struct setup_request *setup)
        {
          usb->config = cfg;
          usb->state = USB_STATE_CONFIGURED;
        {
          usb->config = cfg;
          usb->state = USB_STATE_CONFIGURED;
+         usb->last_pma_alloc = PMA_USER;
          usb_dev_configure(usb);
        }
       usb_ctl_send_status(usb);
          usb_dev_configure(usb);
        }
       usb_ctl_send_status(usb);
@@ -239,6 +245,7 @@ static void dev_set_configuration(struct usb *usb, struct setup_request *setup)
        {
          usb_dev_unconfigure(usb);
          usb->config = cfg;
        {
          usb_dev_unconfigure(usb);
          usb->config = cfg;
+         usb->last_pma_alloc = PMA_USER;
          usb_dev_configure(usb);
        }
       usb_ctl_send_status(usb);
          usb_dev_configure(usb);
        }
       usb_ctl_send_status(usb);