예제 #1
0
        private async void LoadDeviceList(string deviceFile)
        {
            var list = new ObservableCollection <JLinkTargetDeviceViewModel>();

            var versions = await PackageManager.ListToolchainPackages("JLink");

            if (versions != null)
            {
                Versions = new List <string>(versions.Select(v => v.Version.ToString()));
            }

            if (File.Exists(deviceFile))
            {
                using (TextReader tr = System.IO.File.OpenText(deviceFile))
                {
                    tr.ReadLine();

                    string line = null;
                    while ((line = await tr.ReadLineAsync()) != null)
                    {
                        line = line.Replace("\"", string.Empty);
                        line = line.Replace("{", string.Empty);
                        line = line.Replace("}", string.Empty);
                        var splits = line.Split(',');
                        var newdev = new JLinkTargetDeviceViewModel();
                        newdev.Manufacturer = splits[0];
                        newdev.Device       = splits[1].Trim();
                        newdev.Core         = splits[2].Trim();
                        newdev.FlashStart   = Convert.ToUInt32(splits[3].Trim(), 16);
                        newdev.FlashLength  = Convert.ToUInt32(splits[4].Trim(), 16);
                        newdev.RamStart     = Convert.ToUInt32(splits[5].Trim(), 16);
                        newdev.RamLength    = Convert.ToUInt32(splits[6].Trim(), 16);

                        list.Add(newdev);
                    }
                }

                unfilteredList = list;

                await FilterListAsync();

                var selectedDevice = list.FirstOrDefault((d) => d.Device == settings.DeviceKey);

                await Dispatcher.UIThread.InvokeAsync(() =>
                {
                    SelectedDevice = selectedDevice;
                });
            }

            hasLoaded = true;
        }