int yyySignalOutPkt(yInterfaceSt *iface) { pktItem *pktitem; yPktQueuePopH2D(iface, &pktitem); while (pktitem!=NULL){ int transfered,res; res = libusb_interrupt_transfer(iface->hdl, iface->wrendp, (u8*)&pktitem->pkt, sizeof(USB_Packet), &transfered, 5000/*5 sec*/); yFree(pktitem); if(res<0){ return YAPI_IO_ERROR; } yPktQueuePopH2D(iface, &pktitem); } return YAPI_SUCCESS; }
int yyySignalOutPkt(yInterfaceSt *iface, char *errmsg) { int res =YAPI_SUCCESS; pktItem *pktitem; yPktQueuePopH2D(iface, &pktitem); while (pktitem!=NULL){ if(iface->devref==NULL){ yFree(pktitem); return YERR(YAPI_IO_ERROR); } res = IOHIDDeviceSetReport(iface->devref, kIOHIDReportTypeOutput, 0, /* Report ID*/ (u8*)&pktitem->pkt, sizeof(USB_Packet)); yFree(pktitem); if (res != kIOReturnSuccess) { dbglog("IOHIDDeviceSetReport failed with 0x%x\n", res); return YERRMSG(YAPI_IO_ERROR,"IOHIDDeviceSetReport failed");; } yPktQueuePopH2D(iface, &pktitem); } return YAPI_SUCCESS; }