Пример #1
0
        private void pdr_DoWork(IProgressReporterDialogue sender)
        {
            //if ((int)REL_Type == 99)
            {
                var fw = new Firmware();
                fw.Progress -= fw_Progress1;
                fw.Progress += fw_ProgressPDR;
                softwares    = fw.getFWList(firmwareurl, REL_Type);

                foreach (var soft in softwares)
                {
                    if (sender.doWorkArgs.CancelRequested)
                    {
                        sender.doWorkArgs.CancelAcknowledged = true;
                        return;
                    }

                    updateDisplayNameInvoke(soft);
                }

                return;
            }

            try
            {
                APFirmware.GetList();

                var official = APFirmware.GetRelease(REL_Type);

                var before = softwares.ToJSON();

                softwares = ConvertToOld(official);

                var after = softwares.ToJSON();
            }
            catch { }

            foreach (var soft in softwares)
            {
                if (sender.doWorkArgs.CancelRequested)
                {
                    sender.doWorkArgs.CancelAcknowledged = true;
                    return;
                }
                updateDisplayNameInvoke(soft);
            }
        }
Пример #2
0
        public Firmware()
        {
            InitializeComponent();

            quad.CommandParameter           = APFirmware.MAV_TYPE.Copter;
            rover.CommandParameter          = APFirmware.MAV_TYPE.GROUND_ROVER;
            plane.CommandParameter          = APFirmware.MAV_TYPE.FIXED_WING;
            sub.CommandParameter            = APFirmware.MAV_TYPE.SUBMARINE;
            heli.CommandParameter           = APFirmware.MAV_TYPE.HELICOPTER;
            antennatracker.CommandParameter = APFirmware.MAV_TYPE.ANTENNA_TRACKER;

            quad.ImageSource           = ImageSource.FromStream(() => Xamarin.Properties.Resources.FW_icons_2013_logos_04.ToMemoryStream());
            rover.ImageSource          = ImageSource.FromStream(() => Xamarin.Properties.Resources.rover_11.ToMemoryStream());
            plane.ImageSource          = ImageSource.FromStream(() => Xamarin.Properties.Resources.APM_airframes_001.ToMemoryStream());
            sub.ImageSource            = ImageSource.FromStream(() => Xamarin.Properties.Resources.sub.ToMemoryStream());
            heli.ImageSource           = ImageSource.FromStream(() => Xamarin.Properties.Resources.APM_airframes_08.ToMemoryStream());
            antennatracker.ImageSource = ImageSource.FromStream(() => Xamarin.Properties.Resources.Antenna_Tracker_01.ToMemoryStream());

            Task.Run(() =>
            {
                APFirmware.GetList();

                var options = APFirmware.GetRelease(APFirmware.RELEASE_TYPES.OFFICIAL);

                // get max version for each mavtype
                options = options.GroupBy(b => b.MavType).Select(a =>
                                                                 a.Where(b => a.Key == b.MavType && b.MavFirmwareVersion == a.Max(c => c.MavFirmwareVersion))
                                                                 .FirstOrDefault()).ToList();

                UpdateIconName(antennatracker,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.ANTENNA_TRACKER.ToString()));
                UpdateIconName(heli,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.HELICOPTER.ToString()));
                UpdateIconName(sub,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.SUBMARINE.ToString()));
                UpdateIconName(rover,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.GROUND_ROVER.ToString()));
                UpdateIconName(quad,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(plane,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.FIXED_WING.ToString()));

                SetLoading(false);
            });
        }
        public void Activate()
        {
            MainV2.instance.DeviceChanged -= Instance_DeviceChanged;
            MainV2.instance.DeviceChanged += Instance_DeviceChanged;

            this.Enabled = false;

            flashdone = false;

            Task.Run(() =>
            {
                APFirmware.GetList("https://firmware.oborne.me/manifest.json.gz");

                var options = APFirmware.GetRelease(REL_Type);

                // get max version for each mavtype
                options = options.GroupBy(b => b.MavType).Select(a =>
                                                                 a.Where(b => a.Key == b.MavType && b.MavFirmwareVersion == a.Max(c => c.MavFirmwareVersion))
                                                                 .FirstOrDefault()).ToList();

                UpdateIconName(pictureAntennaTracker,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.ANTENNA_TRACKER.ToString()));
                UpdateIconName(pictureBoxHeli,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.HELICOPTER.ToString()));
                UpdateIconName(pictureBoxSub,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.SUBMARINE.ToString()));
                UpdateIconName(pictureBoxRover,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.GROUND_ROVER.ToString()));
                UpdateIconName(pictureBoxOctaQuad,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxOcta, options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxY6, options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxTri, options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxHexa, options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxQuad, options.First(a => a.MavType == APFirmware.MAV_TYPE.Copter.ToString()));
                UpdateIconName(pictureBoxPlane,
                               options.First(a => a.MavType == APFirmware.MAV_TYPE.FIXED_WING.ToString()));
            });
        }
        private void LookForPort(APFirmware.MAV_TYPE mavtype, bool alloptions = false)
        {
            var ports = Win32DeviceMgmt.GetAllCOMPorts();

            if (alloptions)
            {
                ports.Add(default(ArduPilot.DeviceInfo));
            }

            foreach (var deviceInfo in ports)
            {
                long?devid = detectedboardid;

                // make best guess at board_id based on usb info
                if (!devid.HasValue)
                {
                    devid = APFirmware.GetBoardID(deviceInfo);
                }

                if (devid.HasValue && devid.Value != 0 || alloptions == true)
                {
                    log.InfoFormat("{0}: {1} - {2}", deviceInfo.name, deviceInfo.description, deviceInfo.board);

                    var baseurl = "";

                    // get the options for this device
                    var fwitems = APFirmware.Manifest.Firmware.Where(a =>
                                                                     a.BoardId == devid && a.MavType == mavtype.ToString() &&
                                                                     a.MavFirmwareVersionType == REL_Type.ToString()).ToList();

                    if (alloptions)
                    {
                        fwitems = APFirmware.Manifest.Firmware.ToList();
                    }

                    if (fwitems?.Count == 1)
                    {
                        baseurl = fwitems[0].Url.ToString();
                    }
                    else if (fwitems?.Count > 0)
                    {
                        FirmwareSelection fws = new FirmwareSelection(fwitems, deviceInfo);
                        fws.ShowXamarinControl(550, 400);
                        baseurl = fws.FinalResult;
                        if (fws.FinalResult == null)
                        {
                            // user canceled
                            return;
                        }
                    }
                    else
                    {
                        CustomMessageBox.Show(Strings.No_firmware_available_for_this_board, Strings.ERROR);
                    }

                    var tempfile = Path.GetTempFileName();
                    try
                    {
                        // update to use mirror url
                        log.Info("Using " + baseurl);

                        var starttime = DateTime.Now;

                        // Create a request using a URL that can receive a post.
                        WebRequest request = WebRequest.Create(baseurl);
                        if (!String.IsNullOrEmpty(Settings.Instance.UserAgent))
                        {
                            ((HttpWebRequest)request).UserAgent = Settings.Instance.UserAgent;
                        }
                        request.Timeout = 10000;
                        // Set the Method property of the request to POST.
                        request.Method = "GET";
                        // Get the request stream.
                        Stream dataStream; //= request.GetRequestStream();
                                           // Get the response (using statement is exception safe)
                        using (WebResponse response = request.GetResponse())
                        {
                            // Display the status.
                            log.Info(((HttpWebResponse)response).StatusDescription);
                            // Get the stream containing content returned by the server.
                            using (dataStream = response.GetResponseStream())
                            {
                                long bytes   = response.ContentLength;
                                long contlen = bytes;

                                byte[] buf1 = new byte[1024];

                                using (FileStream fs = new FileStream(tempfile, FileMode.Create))
                                {
                                    fw_Progress1(0, Strings.DownloadingFromInternet);

                                    long length   = response.ContentLength;
                                    long progress = 0;
                                    dataStream.ReadTimeout = 30000;

                                    while (dataStream.CanRead)
                                    {
                                        try
                                        {
                                            fw_Progress1(length == 0 ? 50 : (int)((progress * 100) / length), Strings.DownloadingFromInternet);
                                        }
                                        catch
                                        {
                                        }
                                        int len = dataStream.Read(buf1, 0, 1024);
                                        if (len == 0)
                                        {
                                            break;
                                        }
                                        progress += len;
                                        bytes    -= len;
                                        fs.Write(buf1, 0, len);
                                    }

                                    fs.Close();
                                }
                                dataStream.Close();
                            }
                            response.Close();
                        }

                        var timetook = (DateTime.Now - starttime).TotalMilliseconds;

                        Tracking.AddTiming("Firmware Download", deviceInfo.board, timetook, deviceInfo.description);

                        fw_Progress1(100, Strings.DownloadedFromInternet);
                        log.Info("Downloaded");
                    }
                    catch
                    {
                        CustomMessageBox.Show(Strings.FailedDownload, Strings.ERROR);
                        return;
                    }

                    MissionPlanner.Utilities.Tracking.AddFW(mavtype.ToString(), deviceInfo.board);

                    var fw = new Firmware();
                    fw.Progress += fw_Progress1;

                    var uploadstarttime = DateTime.Now;

                    flashdone = true;

                    fw.UploadFlash(deviceInfo.name, tempfile, BoardDetect.boards.pass);

                    var uploadtime = (DateTime.Now - uploadstarttime).TotalMilliseconds;

                    Tracking.AddTiming("Firmware Upload", deviceInfo.board, uploadtime, deviceInfo.description);

                    return;
                }
                else
                {
                    CustomMessageBox.Show("Failed to discover board id. Please reconnect via usb and try again.", Strings.ERROR);
                    return;
                }
            }

            CustomMessageBox.Show("Failed to detect port to upload to", Strings.ERROR);
            return;
        }
Пример #5
0
        private async Task LookForPort(APFirmware.MAV_TYPE mavtype)
        {
            var ports = await Test.UsbDevices.GetDeviceInfoList().ConfigureAwait(false);

            foreach (var deviceInfo in ports)
            {
                long?devid = detectedboardid;

                // make best guess at board_id based on usb info
                if (!devid.HasValue)
                {
                    devid = APFirmware.GetBoardID(deviceInfo);
                }

                if (devid.HasValue && devid.Value != 0)
                {
                    log.InfoFormat("{0}: {1} - {2}", deviceInfo.name, deviceInfo.description, deviceInfo.board);

                    var baseurl = "";

                    // get the options for this device
                    var fwitems = APFirmware.Manifest.Firmware.Where(a =>
                                                                     a.BoardId == devid && a.MavType == mavtype.ToString() &&
                                                                     a.MavFirmwareVersionType == REL_Type.ToString()).ToList();

                    if (fwitems?.Count == 1)
                    {
                        baseurl = fwitems[0].Url.ToString();

                        await DownloadAndUpload(baseurl).ConfigureAwait(false);
                    }
                    else if (fwitems?.Count > 0)
                    {
                        FirmwareSelection fws = new FirmwareSelection(fwitems, deviceInfo);
                        fws.CloseAction += async() =>
                        {
                            Navigation.PopModalAsync();
                            baseurl = fws.FinalResult;

                            await DownloadAndUpload(baseurl).ConfigureAwait(false);

                            return;
                        };
                        await this.Navigation.PushModalAsync(fws).ConfigureAwait(false);

                        Debug.WriteLine(fws.FinalResult);
                        baseurl = fws.FinalResult;
                        if (fws.FinalResult == null)
                        {
                            // user canceled
                            return;
                        }
                    }
                    else
                    {
                        CustomMessageBox.Show(Strings.No_firmware_available_for_this_board, Strings.ERROR);
                        return;
                    }

                    return;
                }
                else
                {
                    CustomMessageBox.Show("Failed to discover board id. Please reconnect via usb and try again.", Strings.ERROR);
                    return;
                }
            }

            CustomMessageBox.Show("Failed to detect port to upload to", Strings.ERROR);
            return;
        }
Пример #6
0
        /// <summary>
        /// Try BundlePath first, then arm manifest, then cygwin on server
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        private async Task <string> CheckandGetSITLImage(string filename)
        {
            if (BundledPath != "")
            {
                filename = filename.Replace(".elf", "");
                var file = filename;
                if (!File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                {
                    string[] checks = new string[] { "{0}", "{0}.exe", "lib{0}.so", "{0}.so", "{0}.elf" };

                    foreach (var template in checks)
                    {
                        file = String.Format(template, filename);
                        if (File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                        {
                            return(BundledPath + System.IO.Path.DirectorySeparatorChar + file);
                        }
                        file = file.ToLower();
                        if (File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                        {
                            return(BundledPath + System.IO.Path.DirectorySeparatorChar + file);
                        }
                    }
                }

                return("");
            }

            if ((RuntimeInformation.OSArchitecture == Architecture.X64 ||
                 RuntimeInformation.OSArchitecture == Architecture.X86) && RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                var type = APFirmware.MAV_TYPE.Copter;
                if (filename.ToLower().Contains("copter"))
                {
                    type = APFirmware.MAV_TYPE.Copter;
                }
                if (filename.ToLower().Contains("plane"))
                {
                    type = APFirmware.MAV_TYPE.FIXED_WING;
                }
                if (filename.ToLower().Contains("rover"))
                {
                    type = APFirmware.MAV_TYPE.GROUND_ROVER;
                }
                if (filename.ToLower().Contains("heli"))
                {
                    type = APFirmware.MAV_TYPE.HELICOPTER;
                }

                var fw = APFirmware.GetOptions(new DeviceInfo()
                {
                    board = "", hardwareid = ""
                }, APFirmware.RELEASE_TYPES.OFFICIAL, type);
                fw = fw.Where(a => a.Platform == "SITL_x86_64_linux_gnu").ToList();
                if (fw.Count > 0)
                {
                    var path = sitldirectory + Path.GetFileNameWithoutExtension(filename);
                    if (!chk_skipdownload.Checked)
                    {
                        Download.getFilefromNet(fw.First().Url.AbsoluteUri, path);
                        try
                        {
                            int _0755 = S_IRUSR | S_IXUSR | S_IWUSR
                                        | S_IRGRP | S_IXGRP
                                        | S_IROTH | S_IXOTH;

                            chmod(path, _0755);
                        }
                        catch (Exception ex)
                        {
                            log.Error(ex);
                        }
                    }
                    return(path);
                }
            }

            if (RuntimeInformation.OSArchitecture == Architecture.Arm ||
                RuntimeInformation.OSArchitecture == Architecture.Arm64)
            {
                var type = APFirmware.MAV_TYPE.Copter;
                if (filename.ToLower().Contains("copter"))
                {
                    type = APFirmware.MAV_TYPE.Copter;
                }
                if (filename.ToLower().Contains("plane"))
                {
                    type = APFirmware.MAV_TYPE.FIXED_WING;
                }
                if (filename.ToLower().Contains("rover"))
                {
                    type = APFirmware.MAV_TYPE.GROUND_ROVER;
                }
                if (filename.ToLower().Contains("heli"))
                {
                    type = APFirmware.MAV_TYPE.HELICOPTER;
                }

                var fw = APFirmware.GetOptions(new DeviceInfo()
                {
                    board = "", hardwareid = ""
                }, APFirmware.RELEASE_TYPES.OFFICIAL, type);
                fw = fw.Where(a => a.Platform == "SITL_arm_linux_gnueabihf").ToList();
                if (fw.Count > 0)
                {
                    var path = sitldirectory + Path.GetFileNameWithoutExtension(filename);
                    if (!chk_skipdownload.Checked)
                    {
                        Download.getFilefromNet(fw.First().Url.AbsoluteUri, path);
                        try {
                            int _0755 = S_IRUSR | S_IXUSR | S_IWUSR
                                        | S_IRGRP | S_IXGRP
                                        | S_IROTH | S_IXOTH;

                            chmod(path, _0755);
                        }
                        catch (Exception ex)
                        {
                            log.Error(ex);
                        }
                    }
                    return(path);
                }
            }

            if (!chk_skipdownload.Checked)
            {
                // kill old session - so we can overwrite if needed
                try
                {
                    simulator.ForEach(a =>
                    {
                        try
                        {
                            a.Kill();
                        }
                        catch { }
                    });
                }
                catch
                {
                }

                var url    = sitlmasterurl;
                var result = CustomMessageBox.Show("Select the version you want to use?", "Select your version", CustomMessageBox.MessageBoxButtons.YesNo, CustomMessageBox.MessageBoxIcon.Question, "Latest(Dev)", "Stable");

                if (result == CustomMessageBox.DialogResult.Yes)
                {
                    // master by default
                }
                else if (result == CustomMessageBox.DialogResult.No)
                {
                    if (filename.ToLower().Contains("copter"))
                    {
                        url = sitlcopterstableurl;
                    }
                    if (filename.ToLower().Contains("rover"))
                    {
                        url = sitlroverstableurl;
                    }
                    if (filename.ToLower().Contains("plane"))
                    {
                        url = sitlplanestableurl;
                    }
                }

                Uri fullurl = new Uri(url, filename);

                var load = Common.LoadingBox("Downloading", "Downloading sitl software");

                var t1 = Download.getFilefromNetAsync(fullurl.ToString(),
                                                      sitldirectory + Path.GetFileNameWithoutExtension(filename) + ".exe");

                load.Refresh();

                var files = new string[] { "cygatomic-1.dll",
                                           "cyggcc_s-1.dll",
                                           "cyggomp-1.dll",
                                           "cygquadmath-0.dll",
                                           "cygssp-0.dll",
                                           "cygstdc++-6.dll",
                                           "cygwin1.dll" };

                // dependancys

                Parallel.ForEach(files, new ParallelOptions()
                {
                    MaxDegreeOfParallelism = 2
                }, (a, b) =>
                {
                    var depurl = new Uri(url, a);
                    var t2     = Download.getFilefromNet(depurl.ToString(), sitldirectory + depurl.Segments[depurl.Segments.Length - 1]);
                });

                await t1;

                load.Close();
            }

            return(sitldirectory + Path.GetFileNameWithoutExtension(filename) + ".exe");
        }
Пример #7
0
        private void prev()
        {
            // check validation of port.
            string comport = "";
            var    item    = this.ComBoDefault.SelectedItem;

            if (item is null)
            {
                MessageBox.Show("no Comport");
                return;
            }
            comport = item.ToString();

            string filename_fw = comport;

            if (this.RButtonCustom.Checked)
            {
                filename_fw = comport;
            }

            // firmware binding.
            APFirmware firmware;

            try
            {
                this.RichTextProgress.Text = "Load firmware...";
                firmware = APFirmware.LoadFirmware(filename_fw);

                StringBuilder sb = new StringBuilder();
                sb.AppendLine($"Board id : {firmware.BoardId}");
                sb.AppendLine($"Board revision : {firmware.BoardRevision}");
                sb.AppendLine($"Summary : {firmware.Summary}");
                sb.AppendLine($"Version : {firmware.Version}");
                this.RichTextProgress.Text += "\n" + sb.ToString();
            }
            catch (Exception ex)
            {
                this.RichTextProgress.Text += $"\nInvalid firmware. {ex.Message}";
                return;
            }

            // detect board
            bl = new ArduPilotBL(comport);
            try
            {
                bl.Initialize();
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("");
                sb.AppendLine($"BL_REV : {bl.BootLoaderRevision}");
                sb.AppendLine($"BoardId : {bl.BoardId}");
                sb.AppendLine($"BoardRevision : {bl.BoardRevision}");
                sb.AppendLine($"FirmwareMaxsize : {bl.FirmwareMaxsize}");
                sb.AppendLine($"Chip : {bl.Chip}");
                sb.AppendLine($"ChipDesc : {bl.ChipDesc}");
                this.RichTextProgress.Text += sb.ToString();
            }
            catch (Exception ex)
            {
                this.RichTextProgress.Text += $"\n{ex.Message}";
                return;
            }

            try
            {
                this.RichTextProgress.Text += "\nStart installation...";
                bl.ProgressEvent           += this.Progress;
                bl.Install(firmware, true);
                bl.ProgressEvent           -= this.Progress;
                this.RichTextProgress.Text += "\nComplete...";
            }
            catch (Exception ex)
            {
                this.RichTextProgress.Text += $"\nInstallation failed. {ex.Message}";
                return;

                throw;
            }
        }
Пример #8
0
        /// <summary>
        /// Try BundlePath first, then arm manifest, then cygwin on server
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        private async Task <string> CheckandGetSITLImage(string filename)
        {
            if (BundledPath != "")
            {
                filename = filename.Replace(".elf", "");
                var file = filename;
                if (!File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                {
                    string[] checks = new string[] { "{0}", "{0}.exe", "lib{0}.so", "{0}.so", "{0}.elf" };

                    foreach (var template in checks)
                    {
                        file = String.Format(template, filename);
                        if (File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                        {
                            return(BundledPath + System.IO.Path.DirectorySeparatorChar + file);
                        }
                        file = file.ToLower();
                        if (File.Exists(BundledPath + System.IO.Path.DirectorySeparatorChar + file))
                        {
                            return(BundledPath + System.IO.Path.DirectorySeparatorChar + file);
                        }
                    }
                }

                return("");
            }

            if (RuntimeInformation.OSArchitecture == Architecture.Arm ||
                RuntimeInformation.OSArchitecture == Architecture.Arm64)
            {
                var type = APFirmware.MAV_TYPE.Copter;
                if (filename.ToLower().Contains("copter"))
                {
                    type = APFirmware.MAV_TYPE.Copter;
                }
                if (filename.ToLower().Contains("plane"))
                {
                    type = APFirmware.MAV_TYPE.FIXED_WING;
                }
                if (filename.ToLower().Contains("rover"))
                {
                    type = APFirmware.MAV_TYPE.GROUND_ROVER;
                }
                if (filename.ToLower().Contains("heli"))
                {
                    type = APFirmware.MAV_TYPE.HELICOPTER;
                }

                var fw = APFirmware.GetOptions(new DeviceInfo()
                {
                    board = "", hardwareid = ""
                }, APFirmware.RELEASE_TYPES.OFFICIAL, type);
                fw = fw.Where(a => a.Platform == "SITL_arm_linux_gnueabihf").ToList();
                if (fw.Count > 0)
                {
                    if (!chk_skipdownload.Checked)
                    {
                        Download.getFilefromNetAsync(fw.First().Url.AbsoluteUri, sitldirectory + Path.GetFileNameWithoutExtension(filename));
                    }
                    return(sitldirectory + Path.GetFileNameWithoutExtension(filename));
                }
            }

            if (!chk_skipdownload.Checked)
            {
                Uri fullurl = new Uri(sitlurl, filename);

                var load = Common.LoadingBox("Downloading", "Downloading sitl software");

                var t1 = Download.getFilefromNetAsync(fullurl.ToString(),
                                                      sitldirectory + Path.GetFileNameWithoutExtension(filename) + ".exe");

                load.Refresh();

                var files = new string[] { "cygatomic-1.dll",
                                           "cyggcc_s-1.dll",
                                           "cyggomp-1.dll",
                                           "cygquadmath-0.dll",
                                           "cygssp-0.dll",
                                           "cygstdc++-6.dll",
                                           "cygwin1.dll" };

                // dependancys

                Parallel.ForEach(files, new ParallelOptions()
                {
                    MaxDegreeOfParallelism = 2
                }, (a, b) =>
                {
                    var depurl = new Uri(sitlurl, a);
                    var t2     = Download.getFilefromNet(depurl.ToString(), sitldirectory + depurl.Segments[depurl.Segments.Length - 1]);
                });

                load.Close();
            }

            return(sitldirectory + Path.GetFileNameWithoutExtension(filename) + ".exe");
        }