public Configuration(string arduinoPath) { // set path to the components this.arduinoPath = arduinoPath; buildPath = System.IO.Path.GetTempPath() + "IDE4Arduino/build/"; if (!Directory.Exists(buildPath)) { Directory.CreateDirectory(buildPath); } arduinoCoreLibPath = Path.Combine(arduinoPath, @"hardware\arduino\avr\libraries"); arduinoLibPath = Path.Combine(arduinoPath, @"libraries"); arduinoUserLibPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Arduino\libraries"); // Parse Platforms string[] vendors = Directory.GetDirectories(Path.Combine(arduinoPath, "hardware")); string userHardwareFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Arduino\hardware"); string[] usrVendors = Directory.GetDirectories(userHardwareFolder); List <ArduinoPlatform> platforms = new List <ArduinoPlatform>(); arduinoBoards = new List <ArduinoBoard>(); vendors = vendors.Concat(usrVendors).ToArray(); foreach (string vendor in vendors) { string vendor_name = Path.GetFileName(vendor); if (vendor_name.Equals("tools")) { continue; } string[] archs = Directory.GetDirectories(vendor); foreach (string arch in archs) { string arch_name = Path.GetFileName(arch); try { ArduinoPlatform p = new ArduinoPlatform(arduinoPath, Path.Combine(arch, "platform.txt"), vendor_name, arch_name); if (p.cfg.Count < 1) { continue; } arduinoBoards.AddRange(ArduinoBoard.parseBoardFile(Path.Combine(arch, "boards.txt"), p)); } catch { } } } recreateLibraries(); }