示例#1
0
        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();
        }