public static GetUserDataDirectory ( ) : string | ||
Результат | string |
public static void Reload() { string paramMetaDataXMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), ConfigurationManager.AppSettings["ParameterMetaDataXMLFileName"]); string paramMetaDataXMLFileNameBackup = String.Format("{0}{1}{2}", Settings.GetRunningDirectory(), Path.DirectorySeparatorChar, ConfigurationManager.AppSettings["ParameterMetaDataXMLFileNameBackup"]); try { if (File.Exists(paramMetaDataXMLFileName)) { _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName); } } catch { } try { // error loading the good file, load the backup if (File.Exists(paramMetaDataXMLFileNameBackup) && _parameterMetaDataXML == null) { _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileNameBackup); Console.WriteLine("Using backup param data"); } } catch { } }
public static void Reload() { string paramMetaDataXMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), "ParameterMetaData.xml"); string paramMetaDataXMLFileNameBackup = String.Format("{0}{1}{2}", Settings.GetRunningDirectory(), Path.DirectorySeparatorChar, "ParameterMetaDataBackup.xml"); try { log.Debug(paramMetaDataXMLFileName); if (File.Exists(paramMetaDataXMLFileName)) { _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName); } } catch (Exception ex) { log.Error(ex); } try { log.Debug(paramMetaDataXMLFileNameBackup); // error loading the good file, load the backup if (File.Exists(paramMetaDataXMLFileNameBackup) && _parameterMetaDataXML == null) { _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileNameBackup); Console.WriteLine("Using backup param data"); } } catch { } }
public static void Reload() { string paramMetaDataXMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), "apm.pdef.xml"); try { if (File.Exists(paramMetaDataXMLFileName)) { _parameterMetaDataXML = XDocument.Load(paramMetaDataXMLFileName); } } catch (Exception ex) { log.Error(ex); } }
/// <summary> /// retrived parameter info from the net /// </summary> public static void GetParameterInformation(string urls, string file = null) { var parameterLocationsString = urls; string XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), "ParameterMetaData.xml"); if (file != null) { XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), file); } if (!String.IsNullOrEmpty(parameterLocationsString)) { var parameterLocations = parameterLocationsString.Split(';').ToList(); parameterLocations.RemoveAll(String.IsNullOrEmpty); // precache all the base urls Parallel.ForEach(parameterLocations, parameterLocation => { // load the base urls var dataFromAddress = ReadDataFromAddress(parameterLocation.Trim()); // load the group urls ParseGroupInformation(dataFromAddress, null, parameterLocation.Trim(), string.Empty, string.Empty); }); using (var objXmlTextWriter = new XmlTextWriter(XMLFileName, null)) { objXmlTextWriter.Formatting = Formatting.Indented; objXmlTextWriter.WriteStartDocument(); objXmlTextWriter.WriteStartElement("Params"); foreach (string parameterLocation in parameterLocations) { string element = "none"; if (parameterLocation.ToLower().Contains("arducopter")) { element = "ArduCopter2"; } else if (parameterLocation.ToLower().Contains("arduplane")) { element = "ArduPlane"; } else if (parameterLocation.ToLower().Contains("rover")) { element = "ArduRover"; } else if (parameterLocation.ToLower().Contains("ardusub")) { element = "ArduSub"; } else if (parameterLocation.ToLower().Contains("tracker")) { element = "ArduTracker"; } // Read and parse the content. string dataFromAddress = ReadDataFromAddress(parameterLocation.Trim()); if (String.IsNullOrEmpty(dataFromAddress)) // 404 { continue; } if (dataFromAddress.Length < 200) // blank template file { continue; } // Write the start element for this parameter location objXmlTextWriter.WriteStartElement(element); ParseParameterInformation(dataFromAddress, objXmlTextWriter, string.Empty, string.Empty, element); ParseGroupInformation(dataFromAddress, objXmlTextWriter, parameterLocation.Trim(), string.Empty, element); // Write the end element for this parameter location objXmlTextWriter.WriteEndElement(); } objXmlTextWriter.WriteEndElement(); // Clear the stream objXmlTextWriter.WriteEndDocument(); objXmlTextWriter.Flush(); objXmlTextWriter.Close(); } XElement root = XElement.Load(XMLFileName); foreach (var vech in root.Elements()) { var paramlist = vech.Elements().OrderBy(xt => xt.Name.ToString()).ToArray(); vech.RemoveAll(); foreach (var item in paramlist) { vech.Add(item); } } root.Save(XMLFileName); } }
/// <summary> /// retrived parameter info from the net /// </summary> public static void GetParameterInformation(string urls = null, string file = null) { string parameterLocationsString = ConfigurationManager.AppSettings["ParameterLocations"]; if (urls != null) { parameterLocationsString = urls; } string XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), ConfigurationManager.AppSettings["ParameterMetaDataXMLFileName"]); if (file != null) { XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), file); } if (!String.IsNullOrEmpty(parameterLocationsString)) { var parameterLocations = parameterLocationsString.Split(';').ToList(); parameterLocations.RemoveAll(String.IsNullOrEmpty); using (var objXmlTextWriter = new XmlTextWriter(XMLFileName, null)) { objXmlTextWriter.Formatting = Formatting.Indented; objXmlTextWriter.WriteStartDocument(); objXmlTextWriter.WriteStartElement("Params"); foreach (string parameterLocation in parameterLocations) { string element = "none"; if (parameterLocation.ToLower().Contains("arducopter")) { element = MainV2.Firmwares.ArduCopter2.ToString(); } else if (parameterLocation.ToLower().Contains("arduplane")) { element = MainV2.Firmwares.ArduPlane.ToString(); } else if (parameterLocation.ToLower().Contains("rover")) { element = MainV2.Firmwares.ArduRover.ToString(); } else if (parameterLocation.ToLower().Contains("ardusub")) { element = MainV2.Firmwares.ArduSub.ToString(); } else if (parameterLocation.ToLower().Contains("tracker")) { element = MainV2.Firmwares.ArduTracker.ToString(); } // Read and parse the content. string dataFromAddress = ReadDataFromAddress(parameterLocation.Trim()); if (String.IsNullOrEmpty(dataFromAddress)) // 404 { continue; } if (dataFromAddress.Length < 200) // blank template file { continue; } // Write the start element for this parameter location objXmlTextWriter.WriteStartElement(element); ParseParameterInformation(dataFromAddress, objXmlTextWriter, string.Empty); ParseGroupInformation(dataFromAddress, objXmlTextWriter, parameterLocation.Trim()); // Write the end element for this parameter location objXmlTextWriter.WriteEndElement(); } objXmlTextWriter.WriteEndElement(); // Clear the stream objXmlTextWriter.WriteEndDocument(); objXmlTextWriter.Flush(); objXmlTextWriter.Close(); } } }
static void DoUpdateWorker_DoWork(IProgressReporterDialogue sender) { // TODO: Is this the right place? #region Fetch Parameter Meta Data var progressReporterDialogue = ((IProgressReporterDialogue)sender); progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Updated Parameters"); try { if (MissionPlanner.Utilities.Update.dobeta) { ParameterMetaDataParser.GetParameterInformation(ConfigurationManager.AppSettings["ParameterLocationsBleeding"], String.Format("{0}{1}", Settings.GetUserDataDirectory(), "ParameterMetaDataBackup.xml")); } else { ParameterMetaDataParser.GetParameterInformation(ConfigurationManager.AppSettings["ParameterLocations"], String.Format("{0}{1}", Settings.GetUserDataDirectory(), "ParameterMetaDataBackup.xml")); } } catch (Exception ex) { log.Error(ex.ToString()); CustomMessageBox.Show("Error getting Parameter Information"); } #endregion Fetch Parameter Meta Data progressReporterDialogue.UpdateProgressAndStatus(-1, "Getting Base URL"); try { File.WriteAllText( Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "writetest.txt", "this is a test"); } catch (Exception ex) { log.Info("Write test failed"); throw new Exception("Unable to write to the install directory", ex); } finally { try { File.Delete(Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "writetest.txt"); } catch { log.Info("Write test cleanup failed"); } } // check for updates // if (Debugger.IsAttached) { // log.Info("Skipping update test as it appears we are debugging"); } // else { updateCheckMain(progressReporterDialogue); } }
/// <summary> /// retrived parameter info from the net /// </summary> public static void GetParameterInformation(string urls, string file = null) { httpClient = new HttpClient(); if (!String.IsNullOrEmpty(Settings.Instance.UserAgent)) { httpClient.DefaultRequestHeaders.Add("User-Agent", Settings.Instance.UserAgent); } httpClient.Timeout = TimeSpan.FromSeconds(30); var parameterLocationsString = urls; string XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), "ParameterMetaData.xml"); if (file != null) { XMLFileName = String.Format("{0}{1}", Settings.GetUserDataDirectory(), file); } if (!String.IsNullOrEmpty(parameterLocationsString)) { var parameterLocations = parameterLocationsString.Split(';').ToList(); parameterLocations.RemoveAll(String.IsNullOrEmpty); ParallelOptions opt = new ParallelOptions() { MaxDegreeOfParallelism = 3 }; // precache all the base urls Parallel.ForEach(parameterLocations, opt, parameterLocation => { // load the base urls var dataFromAddress = ReadDataFromAddress(parameterLocation.Trim()); // load the group urls ParseGroupInformation(dataFromAddress, null, parameterLocation.Trim(), string.Empty, string.Empty); }); using (var objXmlTextWriter = new XmlTextWriter(XMLFileName, null)) { objXmlTextWriter.Formatting = Formatting.Indented; objXmlTextWriter.WriteStartDocument(); objXmlTextWriter.WriteStartElement("Params"); parameterLocations.Sort((a, b) => GetVehicle(a).CompareTo(GetVehicle(b))); var lastelement = ""; foreach (string parameterLocation in parameterLocations) { string element = GetVehicle(parameterLocation.ToLower()); // Read and parse the content. string dataFromAddress = ReadDataFromAddress(parameterLocation.Trim()); if (String.IsNullOrEmpty(dataFromAddress)) // 404 { continue; } if (dataFromAddress.Length < 200) // blank template file { continue; } // write start and end if (lastelement != element) { // Write the end element for this parameter location if (lastelement != "") { objXmlTextWriter.WriteEndElement(); } // Write the start element for this parameter location objXmlTextWriter.WriteStartElement(element); lastelement = element; } ParseParameterInformation(dataFromAddress, objXmlTextWriter, string.Empty, string.Empty, element); ParseGroupInformation(dataFromAddress, objXmlTextWriter, parameterLocation.Trim(), string.Empty, element); } objXmlTextWriter.WriteEndElement(); objXmlTextWriter.WriteEndElement(); // Clear the stream objXmlTextWriter.WriteEndDocument(); objXmlTextWriter.Flush(); objXmlTextWriter.Close(); } XElement root = XElement.Load(XMLFileName); foreach (var vech in root.Elements()) { var paramlist = vech.Elements().OrderBy(xt => xt.Name.ToString()).Distinct(new NameComparer()).ToArray(); vech.RemoveAll(); foreach (var item in paramlist) { vech.Add(item); } } root.Save(XMLFileName); Console.WriteLine("Saved to " + XMLFileName); } }
protected override void OnCreate(Bundle savedInstanceState) { Current = this; TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; SetSupportActionBar((Toolbar)FindViewById(ToolbarResource)); this.Window.AddFlags(WindowManagerFlags.Fullscreen | WindowManagerFlags.TurnScreenOn | WindowManagerFlags.HardwareAccelerated); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; Settings.CustomUserDataDirectory = Application.Context.GetExternalFilesDir(null).ToString(); Log.Info("MP", "Settings.CustomUserDataDirectory " + Settings.CustomUserDataDirectory); WinForms.BundledPath = Application.Context.ApplicationInfo.NativeLibraryDir; Log.Info("MP", "WinForms.BundledPath " + WinForms.BundledPath); Test.UsbDevices = new USBDevices(); Test.Radio = new Radio(); //ConfigFirmwareManifest.ExtraDeviceInfo /* * var intent = new global::Android.Content.Intent(Intent.ActionOpenDocumentTree); * * intent.AddFlags(ActivityFlags.GrantWriteUriPermission | ActivityFlags.GrantReadUriPermission); * intent.PutExtra(DocumentsContract.ExtraInitialUri, "Mission Planner"); * * StartActivityForResult(intent, 1); */ UserDialogs.Init(this); AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser; base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); { if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessFineLocation) != (int)Permission.Granted || ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted) { ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.AccessFineLocation, Manifest.Permission.LocationHardware, Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage }, 1); } while (ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted) { Thread.Sleep(1000); } } { // print some info var pm = this.PackageManager; var name = this.PackageName; var pi = pm.GetPackageInfo(name, PackageInfoFlags.Activities); Console.WriteLine("pi.ApplicationInfo.DataDir " + pi?.ApplicationInfo?.DataDir); Console.WriteLine("pi.ApplicationInfo.DeviceProtectedDataDir " + pi?.ApplicationInfo?.DeviceProtectedDataDir); Console.WriteLine("pi.ApplicationInfo.NativeLibraryDir " + pi?.ApplicationInfo?.NativeLibraryDir); } { try { // restore assets Directory.CreateDirectory(Settings.GetUserDataDirectory()); File.WriteAllText(Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "airports.csv", new StreamReader(Resources.OpenRawResource( Xamarin.Droid.Resource.Raw.airports)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "BurntKermit.mpsystheme", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.BurntKermit)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "ParameterMetaData.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.ParameterMetaDataBackup)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "camerasBuiltin.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.camerasBuiltin)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "checklistDefault.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.checklistDefault)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "mavcmd.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.mavcmd)).ReadToEnd()); } catch (Exception ex) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetTitle("Error"); alert.SetMessage("Failed to save to storage " + ex.ToString()); alert.SetNeutralButton("OK", (senderAlert, args) => { }); Dialog dialog = alert.Create(); dialog.Show(); } } global::Xamarin.Forms.Forms.Init(this, savedInstanceState); { // clean start, see if it was an intent/usb attach if (savedInstanceState == null) { proxyIfUsbAttached(this.Intent); } } LoadApplication(new App()); }
protected override void OnCreate(Bundle savedInstanceState) { Current = this; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; SetSupportActionBar((Toolbar)FindViewById(ToolbarResource)); this.Window.AddFlags(WindowManagerFlags.Fullscreen | WindowManagerFlags.TurnScreenOn | WindowManagerFlags.HardwareAccelerated); base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); Settings.CustomUserDataDirectory = Application.Context.GetExternalFilesDir(null).ToString(); Log.Info("MP", "Settings.CustomUserDataDirectory " + Settings.CustomUserDataDirectory); WinForms.BundledPath = Application.Context.ApplicationInfo.NativeLibraryDir; Log.Info("MP", "WinForms.BundledPath " + WinForms.BundledPath); Test.BlueToothDevice = new BTDevice(); Test.UsbDevices = new USBDevices(); Test.Radio = new Radio(); //ConfigFirmwareManifest.ExtraDeviceInfo /* * var intent = new global::Android.Content.Intent(Intent.ActionOpenDocumentTree); * * intent.AddFlags(ActivityFlags.GrantWriteUriPermission | ActivityFlags.GrantReadUriPermission); * intent.PutExtra(DocumentsContract.ExtraInitialUri, "Mission Planner"); * * StartActivityForResult(intent, 1); */ UserDialogs.Init(this); AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser; { if (ContextCompat.CheckSelfPermission(this, Manifest.Permission.AccessFineLocation) != (int)Permission.Granted || ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted || ContextCompat.CheckSelfPermission(this, Manifest.Permission.Bluetooth) != (int)Permission.Granted) { ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.AccessFineLocation, Manifest.Permission.LocationHardware, Manifest.Permission.WriteExternalStorage, Manifest.Permission.ReadExternalStorage, Manifest.Permission.Bluetooth }, 1); } while (ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted) { Thread.Sleep(1000); var text = "Checking Permissions - " + DateTime.Now.ToString("T"); DoToastMessage(text); } } try { // print some info var pm = this.PackageManager; var name = this.PackageName; var pi = pm.GetPackageInfo(name, PackageInfoFlags.Activities); Console.WriteLine("pi.ApplicationInfo.DataDir " + pi?.ApplicationInfo?.DataDir); Console.WriteLine("pi.ApplicationInfo.NativeLibraryDir " + pi?.ApplicationInfo?.NativeLibraryDir); // api level 24 - android 7 Console.WriteLine("pi.ApplicationInfo.DeviceProtectedDataDir " + pi?.ApplicationInfo?.DeviceProtectedDataDir); } catch {} { DoToastMessage("Staging Files"); try { // nofly dir Directory.CreateDirectory(Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "NoFly"); // restore assets Directory.CreateDirectory(Settings.GetUserDataDirectory()); File.WriteAllText(Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "airports.csv", new StreamReader(Resources.OpenRawResource( Xamarin.Droid.Resource.Raw.airports)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "BurntKermit.mpsystheme", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.BurntKermit)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "ParameterMetaData.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.ParameterMetaDataBackup)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "camerasBuiltin.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.camerasBuiltin)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "checklistDefault.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.checklistDefault)).ReadToEnd()); File.WriteAllText( Settings.GetUserDataDirectory() + Path.DirectorySeparatorChar + "mavcmd.xml", new StreamReader( Resources.OpenRawResource( Droid.Resource.Raw.mavcmd)).ReadToEnd()); { var pluginsdir = Settings.GetRunningDirectory() + "plugins"; Directory.CreateDirectory(pluginsdir); string[] files = new[] { "example2menu", "example3fencedist", "example4herelink", "example5latencytracker", "example6mapicondesc", "example7canrtcm", "example8modechange", "example9hudonoff", "examplewatchbutton", "generator", "InitialParamsCalculator" }; foreach (var file in files) { try { var id = (int)typeof(Droid.Resource.Raw) .GetField(file) .GetValue(null); var filename = pluginsdir + Path.DirectorySeparatorChar + file + ".cs"; if (File.Exists(filename)) { File.Delete(filename); } /* * File.WriteAllText(filename * , * new StreamReader( * Resources.OpenRawResource(id)).ReadToEnd()); */ } catch { } } } { var graphsdir = Settings.GetRunningDirectory() + "graphs"; Directory.CreateDirectory(graphsdir); string[] files = new[] { "ekf3Graphs", "ekfGraphs", "mavgraphs", "mavgraphs2", "mavgraphsMP" }; foreach (var file in files) { try { var id = (int)typeof(Droid.Resource.Raw) .GetField(file) .GetValue(null); File.WriteAllText( graphsdir + Path.DirectorySeparatorChar + file + ".xml", new StreamReader( Resources.OpenRawResource(id)).ReadToEnd()); } catch { } } } } catch (Exception ex) { AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.SetTitle("Error"); alert.SetMessage("Failed to save to storage " + ex.ToString()); alert.SetNeutralButton("OK", (senderAlert, args) => { }); Dialog dialog = alert.Create(); dialog.Show(); } } global::Xamarin.Forms.Forms.Init(this, savedInstanceState); { // clean start, see if it was an intent/usb attach if (savedInstanceState == null) { DoToastMessage("Init Saved State"); proxyIfUsbAttached(this.Intent); } } GC.Collect(); Task.Run(() => { var gdaldir = Settings.GetRunningDirectory() + "gdalimages"; Directory.CreateDirectory(gdaldir); MissionPlanner.Utilities.GDAL.GDALBase = new GDAL.GDAL(); GDAL.GDAL.ScanDirectory(gdaldir); GMap.NET.MapProviders.GMapProviders.List.Add(GDAL.GDALProvider.Instance); }); DoToastMessage("Launch App"); LoadApplication(new App()); }