Example #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();
        }
Example #2
0
        public static ArduinoBoard[] parseBoardFile(string file, ArduinoPlatform p)
        {
            List <ArduinoBoard> boards = new List <ArduinoBoard>();

            Dictionary <string, string> tcfg = ConfigParser.parseFile(file);

            // get list of boards
            List <string> bNames = tcfg.Where(kv => kv.Key.EndsWith("name")).Select(kv => kv.Key.Split('.')[0]).ToList();

            bNames = bNames.Distinct().ToList();

            foreach (string bName in bNames)
            {
                boards.Add(new ArduinoBoard(bName, tcfg, Path.GetDirectoryName(file), p));
            }

            return(boards.ToArray());
        }
Example #3
0
        public ArduinoBoard(string boardShort, Dictionary <string, string> data, string path, ArduinoPlatform p)
        {
            cfg = new Dictionary <string, string>(p.cfg);

            Dictionary <string, string> bcfg = data.Where(kv => kv.Key.StartsWith(boardShort)).ToDictionary(kv => kv.Key.Replace(boardShort + ".", ""), kv => kv.Value);

            bcfg.ToList().ForEach(x => cfg[x.Key] = x.Value);

            if (cfg.ContainsKey("build.usb_manufacturer"))
            {
                cfg["build.usb_manufacturer"] = "\"\\\"" + cfg["build.usb_manufacturer"].Replace("\"", "") + "\\\"\"";
            }

            if (cfg.ContainsKey("build.usb_product"))
            {
                cfg["build.usb_product"] = "\"\\\"" + cfg["build.usb_product"].Replace("\"", "") + "\\\"\"";
            }

            cfg = ConfigParser.parseDict(cfg, cfg);
            cfg = ConfigParser.parseDict(cfg, cfg);

            id        = boardShort;
            name      = cfg["name"];
            this.path = path;

            corePath    = Path.Combine(path, @"cores\" + cfg["build.core"]);       //.Replace('\\','/');
            variantPath = Path.Combine(path, @"variants\" + cfg["build.variant"]); //.Replace('\\', '/');

            Dictionary <string, string> types = cfg.Where(kv => kv.Key.StartsWith("menu.cpu")).ToDictionary(x => x.Key.Remove(0, 9), x => x.Value);

            cpu_names = types.Keys.Select(key => key.Split('.')[0]).ToList().Distinct().ToArray();
        }