#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_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);
}
{
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_unconfigure(usb);
usb->config = cfg;
+ usb->last_pma_alloc = PMA_USER;
usb_dev_configure(usb);
}
usb_ctl_send_status(usb);