public override bool start() { Monitor.Enter(mLock); try { if (WinUSBController.initUSB() == false) { Console.WriteLine("WinUSBController.start() : Failed init"); Monitor.Exit(mLock); this.stop(); return(false); } mDeviceHandle = WinUSBController.open((ushort)VendorID, (ushort)ProductID); mIsDeviceOpen = WinUSBController.isOpen(mDeviceHandle); if (mIsDeviceOpen == false) { Console.WriteLine("WinUSBController.start() : Failed open, vendor(0x{0:X4}), product(0x{1:X4})", (ushort)VendorID, (ushort)ProductID); Monitor.Exit(mLock); this.stop(); return(false); } int ret = WinUSBController.controlTransfer(mDeviceHandle, USBXPRESS, USBXPRESS_REQUEST, USBXPRESS_CLEAR_TO_SEND, 0, null, 0, 0); if (ret < 0) { Console.WriteLine(String.Format("WinUSBController.start() : Failed controlTransfer({0})", ret)); Monitor.Exit(mLock); this.stop(); return(false); } mThreadState = true; mThread = new Thread(threadFunc); mThread.Start(); } catch (Exception e) { Console.WriteLine("SiUSBController.start() : Failed catch({0})", e.Message); Monitor.Exit(mLock); this.stop(); return(false); } Monitor.Exit(mLock); return(true); }
private int beginTransaction() { // Claim Interface int ret = WinUSBController.claimInterface(mDeviceHandle, 0); if (ret < 0) { Console.WriteLine(String.Format("WinUSBController.beginTransaction() : Failed claimInterface({0})", ret)); return(ret); } ret = WinUSBController.controlTransfer(mDeviceHandle, USBXPRESS, USBXPRESS_REQUEST, USBXPRESS_FLUSH_BUFFERS, 0, null, 0, 0); if (ret < 0) { Console.WriteLine(String.Format("WinUSBController.beginTransaction() : Failed controlTransfer({0})", ret)); WinUSBController.releaseInterface(mDeviceHandle, 0); return(ret); } return(ret); }