예제 #1
0
 public RGBFusionManager()
 {
     _gLed         = new GLedImpl();
     _gvLed        = new GvLedImpl();
     _gLedSettings = new List <GLedSetting>();
 }
예제 #2
0
        static void MotherboardControlAPI()
        {
            IGLed gLed = new GLedImpl();

            string rgbFusionSDKVer = "";

            gLed.GetSdkVersion(out rgbFusionSDKVer);
            Console.WriteLine("Gigabyte Fusion RGB SDK Version " + rgbFusionSDKVer + " Detected.");
            Console.WriteLine("Initializing...");

            uint result = gLed.InitAPI();

            if (result != 0u)
            {
                Console.WriteLine("Failed to Intialize RGB Fusion SDK");
                return;
            }

            Console.WriteLine("Successfully Initialized RGB Fusion SDK");
            string firmwareStr = gLed.FirmwareVersion();

            Console.WriteLine("RGB Fusion MCU Firmware Version: " + firmwareStr);

            int maxDivision = gLed.GetMaxDivision();

            Console.WriteLine("Max LED zones supported: " + maxDivision);

            List <GLedType> ledTypes = new List <GLedType>();

            gLed.GetLedLayout(ledTypes);

            var li = 0;

            foreach (var led in ledTypes)
            {
                Console.WriteLine("Zone " + li + " Led: " + led.ToString());
                ++li;
            }

            GLedSetting[] nullAllSettings = new GLedSetting[maxDivision];
            for (var i = 0; i < nullAllSettings.Length; i++)
            {
                nullAllSettings[i].m_LedMode = 0;
            }
            result = gLed.SetLedData(nullAllSettings);
            result = gLed.Apply(-1);

            string moboXmlDirPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "//IdiotRGB//RGBFusion/Motherboard";

            if (!Directory.Exists(moboXmlDirPath))
            {
                var info = Directory.CreateDirectory(moboXmlDirPath);
            }

            string moboXmlFilePath = moboXmlDirPath + "//GLedType_SampleTest.xml";

            GLedSetting   loadedLedSetting = new GLedSetting();
            XmlSerializer xmlSerializer    = new XmlSerializer(typeof(GLedSetting));

            if (!File.Exists(moboXmlFilePath))
            {
                FileStream output = File.Create(moboXmlFilePath);

                // Initialize the file with some default GLedSetting
                loadedLedSetting.m_Colour        = new GLedColour(0, 255, 0, 0);
                loadedLedSetting.m_LedMode       = GLedMode.Static;
                loadedLedSetting.m_MaxBrightness = 100;

                xmlSerializer.Serialize(output, loadedLedSetting);
                output.Close();
            }

            ApplyGLedConfigFromFile(moboXmlFilePath, gLed, maxDivision);

            using (FileSystemWatcher watcher = new FileSystemWatcher())
            {
                watcher.Path         = moboXmlDirPath;
                watcher.Filter       = Path.GetFileName(moboXmlFilePath);
                watcher.NotifyFilter = NotifyFilters.LastWrite
                                       | NotifyFilters.LastAccess
                                       | NotifyFilters.Size;
                watcher.Changed += (object source, FileSystemEventArgs e) =>
                {
                    ApplyGLedConfigFromFile(e.FullPath, gLed, maxDivision);
                };

                Console.WriteLine("Watching file: " + moboXmlFilePath);
                watcher.EnableRaisingEvents = true;

                while (!moboThreadStop)
                {
                    Thread.Sleep(5);
                }
            }
        }