#ifndef USB_DEVICE_H
#define USB_DEVICE_H
//
#include <stm32h747xx.h>
typedef struct {
volatile USB_OTG_GlobalTypeDef *core;
volatile USB_OTG_DeviceTypeDef *device;
} usb_device_t;
struct usb_configuration_t;
typedef struct {
} usb_class_t;
// has configuration etc
#define USB_DEVICE_SIZE sizeof(usb_device_t)
extern usb_device_t* usb1_device;
void* usb_device_init(void* peripheral_address, usb_class_t* class, void* buffer);
void usb_device_setup(void* device);
void* usb_device_wait_for_handshake(void* device);
#endif // USB_DEVICE_H