static void run_event_loop(lcb_io_opt_t iobase) { my_iops_t *io = (my_iops_t *)iobase; if (!io->startstop_noop) { do_run_loop(io); } }
static void close_usb_device(IOHIDDeviceRef dev) { struct usb_list_struct *p; do_run_loop(); for (p = usb_list; p; p = p->next) { if (p->ref == dev) { IOHIDDeviceClose(dev, kIOHIDOptionsTypeNone); return; } } }
static IOHIDDeviceRef open_usb_device(int vid, int pid) { struct usb_list_struct *p; IOReturn ret; init_hid_manager(); do_run_loop(); for (p = usb_list; p; p = p->next) { if (p->vid == vid && p->pid == pid) { ret = IOHIDDeviceOpen(p->ref, kIOHIDOptionsTypeNone); if (ret == kIOReturnSuccess) return p->ref; } } return NULL; }