private bool InitializeMobo() { if (_gLed.InitAPI() != 0) { return(false); } List <GLedType> ledTypes = new List <GLedType>(); if (!_gLed.GetLedLayout(ledTypes)) { return(false); } // Create entry in _gLedSettings for all leds. for (int i = 0; i < ledTypes.Count; ++i) { _gLedSettings.Add(new GLedSetting()); } // Start by turning all the Leds OFF. GLedSetting nullLed = new GLedSetting(); nullLed.m_LedMode = GLedMode.Null; SetAllMoboLeds(ref nullLed); return(true); }
static void ApplyGLedConfigFromFile(string path, IGLed gLed, int ledCount) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(GLedSetting)); FileStream input = File.OpenRead(path); try { GLedSetting ledSetting = (GLedSetting)xmlSerializer.Deserialize(input); GLedSetting[] array = new GLedSetting[ledCount]; for (int i = 0; i < ledCount; i++) { array[i] = ledSetting; } gLed.SetLedData(array); gLed.Apply(-1); } catch (Exception e) { Console.WriteLine("Invalid input file: " + path); Console.WriteLine("ERROR: " + e.Message); } input.Close(); }
private void SetAllMoboLeds(ref GLedSetting ledSetting) { for (int i = 0; i < _gLedSettings.Count; ++i) { _gLedSettings[i] = ledSetting; } ApplyGLedSettings(); }
private GLedSetting IdiLedToGLed(ref IdiLed idiLed) { GLedSetting gLedSetting = new GLedSetting(); gLedSetting.m_LedMode = GLedMode.Null; switch (idiLed.Mode) { case IdiLedMode.STATIC: gLedSetting.m_LedMode = GLedMode.Static; break; case IdiLedMode.FLASH: gLedSetting.m_LedMode = GLedMode.Flash; break; default: throw new NotImplementedException("Missing implementation of IdiLed mode " + idiLed.Mode.ToString() + " in RGBFusionManager.\n"); } if (idiLed.Enabled) { gLedSetting.m_Colour = new GLedColour(idiLed.Colour.White, idiLed.Colour.Red, idiLed.Colour.Green, idiLed.Colour.Blue); } else { gLedSetting.m_Colour = new GLedColour(0); } gLedSetting.m_MinBrightness = idiLed.MinBrightness; gLedSetting.m_MaxBrightness = idiLed.MaxBrightness; // time0 == flash OFF time. // time1 = time0 + flash ON time // time2 = 0 (infinite?) gLedSetting.m_Time0 = idiLed.TimeMs0; gLedSetting.m_Time1 = (ushort)(idiLed.TimeMs0 + idiLed.TimeMs1); gLedSetting.m_CtrlVal0 = 10; gLedSetting.m_Time2 = (ushort)(gLedSetting.m_CtrlVal0 * gLedSetting.m_Time1); return(gLedSetting); }
private void SetAllMoboLeds(ref IdiLed idiLed) { GLedSetting gledSetting = IdiLedToGLed(ref idiLed); SetAllMoboLeds(ref gledSetting); }
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); } } }