示例#1
0
        public List <ControlDevice> GetDevices()
        {
            var terp = new OpenConfiguration();

            terp.SetOption(OpenOption.Transient, true);

            var       loader = new HidDeviceLoader();
            HidDevice device = null;

            HidSharp.HidDevice[] devices = null;
            foreach (var supportedId in supportedIds)
            {
                HidSharp.HidDevice[] tempdevices = loader.GetDevices(VENDOR_ID, supportedId).ToArray();
                if (tempdevices.Length > 0)
                {
                    devices = tempdevices;
                }
            }

            if (devices == null || devices.Length == 0)
            {
                return(new List <ControlDevice>());
            }


            int  attempts = 0;
            bool success  = false;

            while (attempts < 100 && !success)
            {
                try
                {
                    Console.WriteLine("Attempting connection");
                    device = devices[attempts % devices.Count()];
                    byte[] t = device.GetRawReportDescriptor();
                    Console.WriteLine(device.GetFriendlyName());

                    stream = device.Open(terp);
                    stream.SetCalibration();
                    stream.SendPacket(0x60, 0);
                    success = true;
                }
                catch
                {
                    attempts++;
                    Thread.Sleep(100);
                }
            }

            if (!success)
            {
                return(new List <ControlDevice>());
            }

            Bitmap pcieArea;
            Bitmap rgbPins;
            Bitmap vrm;

            Assembly myAssembly = Assembly.GetExecutingAssembly();

            using (Stream myStream = myAssembly.GetManifestResourceStream("IT8297Driver.PCIArea.png"))
            {
                pcieArea = (Bitmap)Image.FromStream(myStream);
            }

            using (Stream myStream = myAssembly.GetManifestResourceStream("IT8297Driver.rgbpins.png"))
            {
                rgbPins = (Bitmap)Image.FromStream(myStream);
            }

            using (Stream myStream = myAssembly.GetManifestResourceStream("IT8297Driver.VRM.png"))
            {
                vrm = (Bitmap)Image.FromStream(myStream);
            }


            byte[] buffer = new byte[64];
            buffer[0] = 0xCC;
            stream.GetFeature(buffer);
            It8297ReportComplete report = GetReport(buffer);

            stream.SetLedCount();

            stream.Init();

            List <ControlDevice> result = new List <ControlDevice>();

            result.Add(new ControlDevice
            {
                LEDs                     = leds1,
                Driver                   = this,
                DeviceType               = DeviceTypes.Fan,
                Name                     = "ARGB Header 1",
                ProductImage             = rgbPins,
                SupportsLEDCountOverride = true
            });


            result.Add(new ControlDevice
            {
                LEDs                     = leds2,
                Driver                   = this,
                DeviceType               = DeviceTypes.Fan,
                Name                     = "ARGB Header 2",
                ProductImage             = rgbPins,
                SupportsLEDCountOverride = true
            });


            result.Add(new ControlDevice
            {
                LEDs         = vrmLeds,
                Driver       = this,
                DeviceType   = DeviceTypes.MotherBoard,
                Name         = "VRM Block",
                ProductImage = vrm
            });


            result.Add(new ControlDevice
            {
                LEDs         = pciLeds,
                Driver       = this,
                DeviceType   = DeviceTypes.MotherBoard,
                Name         = "PCI area",
                ProductImage = pcieArea
            });

            return(result);
        }
示例#2
0
        public List <IT8297ControlDevice> GetDevices()
        {
            var mbmanu    = MotherboardInfo.Manufacturer;
            var mbmodel   = MotherboardInfo.Model;
            var mbpn      = MotherboardInfo.PartNumber;
            var mbproduct = MotherboardInfo.Product;
            var bm        = MotherboardInfo.SystemName;

            var terp = new OpenConfiguration();

            terp.SetOption(OpenOption.Transient, true);

            var       loader = new HidDeviceLoader();
            HidDevice device = null;

            HidSharp.HidDevice[] devices = null;
            foreach (var supportedId in supportedIds)
            {
                HidSharp.HidDevice[] tempdevices = loader.GetDevices(VENDOR_ID, supportedId).ToArray();
                if (tempdevices.Length > 0)
                {
                    devices = tempdevices;
                }
            }

            if (devices == null || devices.Length == 0)
            {
                return(new List <IT8297ControlDevice>());
            }


            int  attempts = 0;
            bool success  = false;

            foreach (HidDevice ddevice in devices)
            {
                device = ddevice;
                try
                {
                    var ps = attempts % devices.Count();
                    Console.WriteLine("Trying connection " + ps);
                    //    device = devices[attempts % devices.Count()];
                    Console.WriteLine(device.DevicePath);
                    byte[] t = device.GetRawReportDescriptor();
                    Debug.WriteLine("got raw");
                    Console.WriteLine(device.GetFriendlyName());
                    Debug.WriteLine("got friendly name");
                    stream = device.Open(terp);
                    Debug.WriteLine("got strean");
                    stream.SetCalibration();
                    Debug.WriteLine("set callibration");
                    stream.SendPacket(0x60, 0);
                    success = true;
                }
                catch
                {
                    attempts++;
                    Thread.Sleep(100);
                }
            }

            if (!success)
            {
                return(new List <IT8297ControlDevice>());
            }

            Bitmap pcieArea;
            Bitmap rgbPins;
            Bitmap vrm;

            Debug.WriteLine("Loading PCI Area png");

            pcieArea = (Bitmap)Image.FromStream(new MemoryStream(PCIArea_png.binary));


            Debug.WriteLine("Loading RGB Pins png");

            rgbPins = (Bitmap)Image.FromStream(new MemoryStream(rgbpins_png.binary));


            Debug.WriteLine("Loading VRM Area png");

            vrm = (Bitmap)Image.FromStream(new MemoryStream(VRM_png.binary));



            byte[] buffer = new byte[64];
            buffer[0] = 0xCC;
            stream.GetFeature(buffer);
            It8297ReportComplete report = GetReport(buffer);

            stream.SetLedCount();

            stream.Init();


            string name = report.ProductName;

            boardname = mbproduct;

            string layout = "";

            if (!GBMaps.ContainsKey(name))
            {
                name = "IT8297BX-GBX570";
            }

            layout = GBMaps[name];


            if (GBoverrides.ContainsKey(mbproduct))
            {
                layout = GBoverrides[mbproduct];
            }

            List <IT8297ControlDevice> result = new List <IT8297ControlDevice>();

            switch (layout)
            {
            case "FALLBACK":
            {
                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 1",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x58,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 2",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x59,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "VRM Block",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 32,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "PCI Area",
                        ProductImage      = pcieArea,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 35,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "C1C2 Header",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x24,
                            Setter       = RGBSetter.Single
                        }
                    });



                break;
            }

            case "390":
            {
                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 1",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x58,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[21],
                        Driver            = this,
                        DeviceType        = DeviceTypes.MotherBoard,
                        Name              = "VRM",
                        ProductImage      = vrm,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x59,
                            Setter       = RGBSetter.Strip,
                            RGBOrder     = RGBOrder.GRB
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 1",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x20,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 2",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x21,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 3",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x22,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Chipset",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x23,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 4",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x24,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 5",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x25,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 6",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x26,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Thing 7",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x27,
                            Setter       = RGBSetter.Single
                        }
                    });



                break;
            }

            case "MINI_ITX":
            {
                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 1",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x58,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Back I/O",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_BACK_IO,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[4],
                        Driver            = this,
                        Name              = "MOBO Backlight",
                        ProductImage      = pcieArea,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress   = HDR_CPU,
                            Setter         = RGBSetter.Composite,
                            CompositeOrder = new int[]
                            {
                                0x20, 0x21, 0x22, 0x23
                            }
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "C1C2 Header",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x24,
                            Setter       = RGBSetter.Single
                        }
                    });

                //result.Add(new IT8297ControlDevice
                //{
                //    LEDs = new ControlDevice.LedUnit[1],
                //    Driver = this,
                //    Name = "PCIExpress",
                //    ProductImage = pcieArea,
                //    DeviceType = DeviceTypes.MotherBoard,
                //    GigabyteRGBDevice = new GigabyteRGBDevice
                //    {
                //        FirstAddress = HDR_PCIE,
                //        Setter = RGBSetter.Single
                //    }
                //});


                //result.Add(new IT8297ControlDevice
                //{
                //    LEDs = new ControlDevice.LedUnit[1],
                //    Driver = this,
                //    DeviceType = DeviceTypes.Fan,
                //    Name = "C1C2 Header",
                //    ProductImage = rgbPins,
                //    GigabyteRGBDevice = new GigabyteRGBDevice
                //    {
                //        FirstAddress = 0x24,
                //        Setter = RGBSetter.Single
                //    }
                //});

                break;
            }

            case "ITX":
            {
                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 1",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x58,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Back I/O",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_BACK_IO,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "CPU Header",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_CPU,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "PCIExpress",
                        ProductImage      = pcieArea,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_PCIE,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "C1C2 Header",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x24,
                            Setter       = RGBSetter.Single
                        }
                    });

                break;
            }

            case "STD_ATX":
            {
                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 1",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x58,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        OverrideSupport = OverrideSupport.All,

                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "ARGB Header 2",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x59,
                            Setter       = RGBSetter.Strip
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "Back I/O",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_BACK_IO,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "CPU Header",
                        ProductImage      = vrm,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_CPU,
                            Setter       = RGBSetter.Single
                        }
                    });

                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        Name              = "PCIExpress",
                        ProductImage      = pcieArea,
                        DeviceType        = DeviceTypes.MotherBoard,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = HDR_PCIE,
                            Setter       = RGBSetter.Single
                        }
                    });


                result.Add(new IT8297ControlDevice
                    {
                        LEDs              = new ControlDevice.LedUnit[1],
                        Driver            = this,
                        DeviceType        = DeviceTypes.Fan,
                        Name              = "C1C2 Header",
                        ProductImage      = rgbPins,
                        GigabyteRGBDevice = new GigabyteRGBDevice
                        {
                            FirstAddress = 0x24,
                            Setter       = RGBSetter.Single
                        }
                    });

                break;
            }
            }


            foreach (IT8297ControlDevice it8297ControlDevice in result.Where(x => x.LEDs == null || x.LEDs.Length < 1))
            {
                SetDeviceOverride(it8297ControlDevice, new GenericFan());
            }


            foreach (IT8297ControlDevice it8297ControlDevice in result)
            {
                for (int i = 0; i < it8297ControlDevice.LEDs.Length; i++)
                {
                    it8297ControlDevice.LEDs[i] = new ControlDevice.LedUnit
                    {
                        Color = new LEDColor(0, 0, 0),
                        Data  = new ControlDevice.LEDData
                        {
                            LEDNumber = i
                        },
                        LEDName = it8297ControlDevice.Name + " " + (i + 1)
                    };
                }
            }



            return(result);
        }