annotate USBLib/Communication/USBIO/USBIORegistry.cs @ 62:edc41c861d96

Updates and cleanup in Windows USB enumeration code
author Ivo Smits <Ivo@UCIS.nl>
date Sun, 13 Oct 2013 02:47:08 +0200
parents 6fcedb1030bf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
1 using System;
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
2 using System.Collections.Generic;
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
3 using UCIS.HWLib.Windows.Devices;
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
4
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
5 namespace UCIS.USBLib.Communication.USBIO {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
6 public class USBIORegistry : WindowsUsbDeviceRegistry, IUsbDeviceRegistry {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
7 public static readonly Guid USBIO_IID = new Guid("{325ddf96-938c-11d3-9e34-0080c82727f4}");
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
8 private USBIORegistry(DeviceNode device, String interfacepath) : base(device, interfacepath) { }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
9 public static List<USBIORegistry> GetDevicesByInterfaceClass(Guid classGuid) {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
10 List<USBIORegistry> deviceList = new List<USBIORegistry>();
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
11 IList<DeviceNode> usbdevices = DeviceNode.GetDevices(classGuid);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
12 foreach (DeviceNode device in usbdevices) {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
13 USBIORegistry regInfo = GetDeviceForDeviceNode(device, classGuid);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
14 if (regInfo != null) deviceList.Add(regInfo);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
15 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
16 return deviceList;
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
17 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
18 public static List<USBIORegistry> DeviceList {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
19 get { return GetDevicesByInterfaceClass(USBIO_IID); }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
20 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
21 public static USBIORegistry GetDeviceForDeviceNode(DeviceNode device, Guid classGuid) {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
22 String[] iLibUsb = device.GetInterfaces(classGuid);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
23 if (iLibUsb == null || iLibUsb.Length == 0) return null;
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
24 return new USBIORegistry(device, iLibUsb[0]);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
25 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
26 public static USBIORegistry GetDeviceForDeviceNode(DeviceNode device) {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
27 return GetDeviceForDeviceNode(device, USBIO_IID);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
28 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
29
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
30 public IUsbDevice Open() {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
31 return new USBIODevice(DevicePath, this);
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
32 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
33 IUsbDevice IUsbDeviceRegistry.Open() {
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
34 return Open();
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
35 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
36 }
6fcedb1030bf USBLib: Added support for USBIO driver
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
37 }