#include "usb.h" #include "usb_device_cdc.h" #include "queue.h" #include usb_device_t *dummy_usb_device_init() { usb_device_t* device = malloc(sizeof(usb_device_t)); device->state = INIT; device->setup.detected_setup_errors = 0; device->core = calloc(sizeof(USB_OTG_GlobalTypeDef), 1); device->device = calloc(sizeof(USB_OTG_DeviceTypeDef), 1); device->out = calloc(sizeof(USB_OTG_OUTEndpointTypeDef), 8); device->in = calloc(sizeof(USB_OTG_INEndpointTypeDef), 8); device->fifos = calloc(sizeof(usb_fifo_t), 8); device->setup.received_setup_commands = queue_malloc(sizeof(usb_setup_command_t), MAX_SETUP_PACKETS); queue_init(device->setup.received_setup_commands, sizeof(usb_setup_command_t), MAX_SETUP_PACKETS); return device; } int main() { usb_device_t* device = dummy_usb_device_init(); usb_class_header_t* header = usb_device_cdc_init(device, 0x1234, 0x1234, NULL, NULL, 0x0000, NULL); device->class = header; device->vt = USB_CLASS_CDC_ACM; usb_device_cdc_acm_configure(device); usb_setup_command_t config_cmd = { .wLength = 160 }; usb_device_cdc_send_configuration(device, &config_cmd); return 0; }