Lines Matching refs:hUSB
139 HUSB hUSB = new(std::nothrow) HdcUSB();
140 if (hUSB == nullptr) {
141 WRITE_LOG(LOG_FATAL, "DetectMyNeed new hUSB failed");
144 hUSB->device = device;
146 int childRet = OpenDeviceMyNeed(hUSB);
149 delete hUSB;
152 libusb_release_interface(hUSB->devHandle, hUSB->interfaceNumber);
153 libusb_close(hUSB->devHandle);
154 hUSB->devHandle = nullptr;
156 WRITE_LOG(LOG_INFO, "Needed device found, busid:%d devid:%d connectkey:%s", hUSB->busId, hUSB->devId,
157 Hdc::MaskString(hUSB->serialNumber).c_str());
159 UpdateUSBDaemonInfo(hUSB, nullptr, STATUS_READY);
166 hSession->connectKey = hUSB->serialNumber;
170 delete hUSB;
178 delete hUSB;
185 HUSB hUSB = hSession->hUSB;
186 if (!hUSB->devHandle) {
187 WRITE_LOG(LOG_WARN, "KickoutZombie devHandle:%p isDead:%d", hUSB->devHandle, hSession->isDead);
190 if (LIBUSB_ERROR_NO_DEVICE != libusb_kernel_driver_active(hUSB->devHandle, hUSB->interfaceNumber)) {
194 Hdc::MaskString(hUSB->serialNumber).c_str());
295 int HdcHostUSB::CheckDescriptor(HUSB hUSB, libusb_device_descriptor& desc)
299 uint8_t curBus = libusb_get_bus_number(hUSB->device);
300 uint8_t curDev = libusb_get_device_address(hUSB->device);
301 hUSB->busId = curBus;
302 hUSB->devId = curDev;
303 if (libusb_get_device_descriptor(hUSB->device, &desc)) {
310 childRet = libusb_get_string_descriptor_ascii(hUSB->devHandle, desc.iSerialNumber, (uint8_t *)serialNum,
316 hUSB->serialNumber = serialNum;
324 void HdcHostUSB::UpdateUSBDaemonInfo(HUSB hUSB, HSession hSession, uint8_t connStatus)
329 di.connectKey = hUSB->serialNumber;
334 di.usbMountPoint = Base::StringFormat("%d-%d", hUSB->busId, hUSB->devId);
338 pServer->AdminDaemonMap(OP_QUERY, hUSB->serialNumber, pDi);
340 pServer->AdminDaemonMap(OP_ADD, hUSB->serialNumber, hdiNew);
342 pServer->AdminDaemonMap(OP_UPDATE, hUSB->serialNumber, hdiNew);
363 int HdcHostUSB::CheckActiveConfig(libusb_device *device, HUSB hUSB, libusb_device_descriptor& desc)
372 ret = libusb_set_configuration(hUSB->devHandle, 1);
390 CheckUsbEndpoint(ret, hUSB, descConfig);
395 void HdcHostUSB::CheckUsbEndpoint(int& ret, HUSB hUSB, libusb_config_descriptor *descConfig)
410 hUSB->interfaceNumber = ifDescriptor->bInterfaceNumber;
420 hUSB->hostBulkIn.endpoint = ep_desc->bEndpointAddress;
421 hUSB->hostBulkIn.bulkInOut = true;
423 hUSB->hostBulkOut.endpoint = ep_desc->bEndpointAddress;
424 hUSB->wMaxPacketSizeSend = ep_desc->wMaxPacketSize;
425 hUSB->hostBulkOut.bulkInOut = false;
428 if (hUSB->hostBulkIn.endpoint == 0 || hUSB->hostBulkOut.endpoint == 0) {
429 WRITE_LOG(LOG_DEBUG, "hostBulkIn.endpoint %d hUSB->hostBulkOut.endpoint %d",
430 hUSB->hostBulkIn.endpoint, hUSB->hostBulkOut.endpoint);
441 HUSB hUSB = hSession->hUSB;
442 std::unique_lock<std::mutex> lock(hUSB->lockDeviceHandle);
443 if (!hUSB->hostBulkIn.isShutdown) {
444 if (!hUSB->hostBulkIn.isComplete) {
445 libusb_cancel_transfer(hUSB->hostBulkIn.transfer);
446 hUSB->hostBulkIn.cv.notify_one();
448 hUSB->hostBulkIn.isShutdown = true;
451 if (!hUSB->hostBulkOut.isShutdown) {
452 if (!hUSB->hostBulkOut.isComplete) {
453 libusb_cancel_transfer(hUSB->hostBulkOut.transfer);
454 hUSB->hostBulkOut.cv.notify_one();
456 hUSB->hostBulkOut.isShutdown = true;
541 HUSB hUSB = hSession->hUSB;
549 ep = &hUSB->hostBulkOut;
552 ep = &hUSB->hostBulkIn;
554 hUSB->lockDeviceHandle.lock();
558 libusb_fill_bulk_transfer(ep->transfer, hUSB->devHandle, ep->endpoint, buf, bufSize, USBBulkCallback, ep,
561 hUSB->lockDeviceHandle.unlock();
580 HUSB hUSB = hSession->hUSB;
581 hUSB->hostBulkIn.isShutdown = false;
582 hUSB->hostBulkOut.isShutdown = false;
585 std::thread([this, hSession, hUSB]() {
588 int bulkInSize = hUSB->hostBulkIn.sizeEpBuf;
591 nextReadSize = (childRet < hUSB->wMaxPacketSizeSend ?
592 hUSB->wMaxPacketSizeSend : std::min(childRet, bulkInSize));
593 childRet = SubmitUsbBio(hSession, false, hUSB->hostBulkIn.buf, nextReadSize);
611 hUSB->hostBulkIn.buf, childRet);
619 hUSB->hostBulkIn.isShutdown = true;
621 RemoveIgnoreDevice(hUSB->usbMountPoint);
627 int HdcHostUSB::OpenDeviceMyNeed(HUSB hUSB)
629 libusb_device *device = hUSB->device;
631 int OpenRet = libusb_open(device, &hUSB->devHandle);
637 libusb_device_handle *handle = hUSB->devHandle;
639 if (CheckDescriptor(hUSB, desc)) {
642 if (CheckActiveConfig(device, hUSB, desc)) {
646 ret = libusb_claim_interface(handle, hUSB->interfaceNumber);
648 ret, hUSB->interfaceNumber);
653 libusb_close(hUSB->devHandle);
654 hUSB->devHandle = nullptr;
668 hSession->hUSB->hostBulkOut.isShutdown = true;
675 bool HdcHostUSB::FindDeviceByID(HUSB hUSB, const char *usbMountPoint, libusb_context *ctxUSB)
712 hUSB->device = listDevices[i];
713 int childRet = OpenDeviceMyNeed(hUSB);
738 HUSB hUSB = hSession->hUSB;
739 hUSB->usbMountPoint = pdi->usbMountPoint;
740 hUSB->ctxUSB = ctxUSB;
741 if (!FindDeviceByID(hUSB, hUSB->usbMountPoint.c_str(), hUSB->ctxUSB)) {
743 RemoveIgnoreDevice(hUSB->usbMountPoint);
747 UpdateUSBDaemonInfo(hUSB, hSession, STATUS_CONNECTED);
752 hUSB->usbMountPoint = pdi->usbMountPoint;
778 HUSB hUSB = hSession->hUSB;
779 hUSB->lockSendUsbBlock.lock();
785 hUSB->lockSendUsbBlock.unlock();