public static HelicopterControllerSettings FromXmlElement(XElement controllerElement)
        {
            var controllerSetting = new HelicopterControllerSettings()
            {
                IsSafetyEnabled = controllerElement.Attribute("IsSafetyEnabled").ParseOptionalBoolean(),
                PidLoopIntervalMilliseconds = controllerElement.Attribute("PidLoopIntervalMilliseconds").ParseInt(),
                YawControllerSettings = YawControllerSettings.FromXmlElement(controllerElement.Element("Yaw")),
                TiltControllerSettings = TiltControllerSettings.FromXmlElement(controllerElement.Element("Tilt")),
            };

            return controllerSetting;
        }
        public void LoadSettings(HelicopterControllerSettings settings)
        {
            if (settings.IsSafetyEnabled)
            {
                EnableSafety();
            }
            else
            {
                DisableSafety();
            }

            SetPidLoopInterval(settings.PidLoopIntervalMilliseconds);
            Yaw.LoadSettings(settings.YawControllerSettings);
            Tilt.LoadSettings(settings.TiltControllerSettings);

            Yaw.RefreshAllValues();
            Tilt.RefreshAllValues();
            Log.Debug("Loaded settings for Helicopter Controller");
        }
 public void Connect(HelicopterControllerSettings settings)
 {
     if (!IsConnected)
     {
         Microcontroller.Connect();
         LoadSettings(settings);
         InitializeController();
         Log.DebugFormat("Connected to {0}", ControllerIdentity);
     }
     else
     {
         throw new Exception("Microcontroller is already connected.");
     }
 }