public static void FreeUsbResources() { // Free usb resources if (PlatformDetector.RunningPlatform() == PlatformDetector.Platform.Linux) { UsbDevice.Exit(); } }
static HidSelector() { if (Instance != null) { return; } switch (PlatformDetector.RunningPlatform()) { case PlatformDetector.Platform.Linux: Instance = new Libusb.LibusbHidManager(); break; case PlatformDetector.Platform.Mac: Instance = new MacOS.MacHidManager(); break; case PlatformDetector.Platform.Windows: Instance = new Windows.WinHidManager(); break; } var readyEvent = new ManualResetEvent(false); ManagerThread = new Thread(Instance.RunImpl); ManagerThread.IsBackground = true; ManagerThread.Start(readyEvent); readyEvent.WaitOne(); /* * foreach (var hidManager in new HidManager[] * { * new Windows.WinHidManager(), * //new Linux.LinuxHidManager(), //Disabled, because BlinkStick does not use this * new MacOS.MacHidManager(), * new Libusb.LibusbHidManager(), * new Unsupported.UnsupportedHidManager() * }) * { * if (hidManager.IsSupported) * { * var readyEvent = new ManualResetEvent(false); * * Instance = hidManager; * ManagerThread = new Thread(Instance.RunImpl); * ManagerThread.IsBackground = true; * ManagerThread.Start(readyEvent); * readyEvent.WaitOne(); * * break; * } * } */ }