USBDevice *usb_bt_init(HCIInfo *hci) { struct USBBtState *s; if (!hci) return NULL; s = qemu_mallocz(sizeof(struct USBBtState)); if (!s) return NULL; s->dev.opaque = s; s->dev.speed = USB_SPEED_HIGH; s->dev.handle_packet = usb_generic_handle_packet; pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU BT dongle"); s->dev.handle_reset = usb_bt_handle_reset; s->dev.handle_control = usb_bt_handle_control; s->dev.handle_data = usb_bt_handle_data; s->dev.handle_destroy = usb_bt_handle_destroy; s->hci = hci; s->hci->opaque = s; s->hci->evt_recv = usb_bt_out_hci_packet_event; s->hci->acl_recv = usb_bt_out_hci_packet_acl; usb_bt_handle_reset(&s->dev); return &s->dev; }
USBDevice *usb_bt_init(HCIInfo *hci) { USBDevice *dev; struct USBBtState *s; if (!hci) return NULL; dev = usb_create_simple(NULL /* FIXME */, "usb-bt-dongle"); s = DO_UPCAST(struct USBBtState, dev, dev); s->dev.opaque = s; s->hci = hci; s->hci->opaque = s; s->hci->evt_recv = usb_bt_out_hci_packet_event; s->hci->acl_recv = usb_bt_out_hci_packet_acl; usb_bt_handle_reset(&s->dev); return dev; }