int main(int argc, char** argv) { if (openUSBDevice() < 0) return -1; printf("openUSBDevice complete...\n"); if (allocateTransfers() < 0) return -1; printf("allocateTransfers() complete...\n"); submitTransfers(); printf("submitTransfers() complete..\n"); waitForCompletion(); deallocateUSBDevice(); return 0; }
int main(int argc, char *argv[]) { struct Kicker_t kicker; int ret; //usb_set_debug(2); if ( argc != 3 ) { printf("Usage: %s <KickerNumber> <Duration>\n",argv[0]); printf(" 0xF000 0xF000 -> Master OFF (default)\n"); printf(" 0xFFFF 0xFFFF -> Master ON\n"); return(3); } kicker.Select = atoi(argv[1]); kicker.Time = atoi(argv[2]); printf("SEL %i %i" ,kicker.Select ,kicker.Time); openUSBDevice(); ret=usb_interrupt_write(current_handle,out_ep,(char *) &kicker,sizeof(struct Kicker_t),10); if (ret != sizeof(struct Kicker_t)) { printf("usb_interrupt_write returned %d instead of %d\n",ret,sizeof(struct Kicker_t)); //usleep(1000); } else { //printf("%X %X %X %X\n",rxdata[0],rxdata[1],rxdata[2],rxdata[3]); } closeUSBDevice(); return 0; }
int iterateDevices(io_iterator_t deviceIterator) { io_object_t usbDevice; int err = -1; IOReturn ret; IOUSBDeviceInterface245 **dev=NULL; SInt32 config = 0; int exclusiveErrs, attempts; for(attempts = 1; attempts < 5; attempts++) { exclusiveErrs = 0; usbDevice = IOIteratorNext(deviceIterator); if(usbDevice == IO_OBJECT_NULL) { fprintf(stderr, "Unable to find first matching USB device\n"); return(-1); } while(usbDevice != IO_OBJECT_NULL) { dev = getUSBDevice(usbDevice); if(dev != nil) { config = openUSBDevice(dev); if(config == -2) { exclusiveErrs++; } else if(config >= 0) { // Device sucessfully opened if(config > 0) { useUSBDevice(dev, config); } else { printf("What use is a device with a zero configuration????\n"); } ret = (*dev)->USBDeviceClose(dev); } ret = (*dev)->Release(dev); // Not worth bothering with errors here } IOObjectRelease(usbDevice); if(config >= 0) // we have sucessfully used device { return(0); } usbDevice = IOIteratorNext(deviceIterator); }; if(exclusiveErrs > 0) { sleep(1); IOIteratorReset(deviceIterator); printf("Trying open again %d\n", attempts); } else { break; } } return(err); }