private String[][] GetValuesFromInternalConfiguration(InternalDroneConfiguration droneConfiguration)
        {
            return new String[][]
            {
                new String[] { "General", "Mainboard version", droneConfiguration.GeneralConfiguration.MainboardVersion },
                new String[] { "General", "Software version", droneConfiguration.GeneralConfiguration.SoftwareVersion },
                new String[] { "General", "Software compilation date", droneConfiguration.GeneralConfiguration.SoftwareCompilationDate.ToString("yyyy-MM-dd HH:mm") },
                new String[] { "General", "Motor software versions", ConvertListToString(droneConfiguration.GeneralConfiguration.MotorSoftwareVersions) },
                new String[] { "General", "Motor hardware versions", ConvertListToString(droneConfiguration.GeneralConfiguration.MotorHardwareVersions) },
                new String[] { "General", "Motor suppliers", ConvertListToString(droneConfiguration.GeneralConfiguration.MotorSuppliers) },
                new String[] { "General", "Drone name", droneConfiguration.GeneralConfiguration.DroneName },
                new String[] { "General", "Flight time", String.Format("{0:0} hours, {0:0} minutes", droneConfiguration.GeneralConfiguration.FlightTime.TotalHours, droneConfiguration.GeneralConfiguration.FlightTime.Minutes) }, 

                new String[] { "Control", "Max altitude", String.Format("{0:0.00} m", droneConfiguration.ControlConfiguration.MaxAltitude / 1000.0) },
                new String[] { "General", "Min altitude", String.Format("{0:0.00} m", droneConfiguration.ControlConfiguration.MinAltitude / 1000.0) },
                
                new String[] { "Network", "SSID", droneConfiguration.NetworkConfiguration.Ssid },
                new String[] { "Network", "SSID password", droneConfiguration.NetworkConfiguration.NetworkPassword },
                new String[] { "Network", "Infrastructure", droneConfiguration.NetworkConfiguration.Infrastructure.ToString() },
                new String[] { "Network", "Navigation data port", droneConfiguration.NetworkConfiguration.NavigationDataPort.ToString() },
                new String[] { "Network", "Video data port", droneConfiguration.NetworkConfiguration.VideoDataPort.ToString() },
                new String[] { "Network", "Command data port", droneConfiguration.NetworkConfiguration.CommandDataPort.ToString() },
                new String[] { "Other", "Ultrasound frequency", droneConfiguration.OtherConfiguration.UltraSoundFrequency.ToString() },
            };
        }
        public DroneConfigurationOutput(InternalDroneConfiguration droneConfiguration)
        {
            InitializeComponent();

            String[] headers = new String[] { "Section", "Subsection", "Value" };
            String[][] values = GetValuesFromInternalConfiguration(droneConfiguration);

            listViewItems.View = CreateGridViewColumns(headers);
            listViewItems.DataContext = ConvertStringListToRows(values);
        }
        public InternalDroneConfiguration GetDroneConfiguration()
        {
            Connect();
            String configText = GetConfigText();

            List<InternalDroneConfigurationState> configStates = configReader.GetConfigValues(configText);
            var droneConfig = new InternalDroneConfiguration();
            droneConfig.DetermineInternalConfiguration(configStates);


            return droneConfig;
        }
 protected override void ResetVariables()
 {
     currentByteBuffer = new Byte[byteBufferSize];
     currentConfiguration = new InternalDroneConfiguration();
 }
        private void Init(DroneConfig droneConfig)
        {
            this.droneConfig = droneConfig;
            droneConfig.Initialize();

            CreateDroneWorkers();

            internalDroneConfiguration = new InternalDroneConfiguration();
        }
 private void DetermineInternalDroneConfiguration()
 {
     internalDroneConfiguration = controlInfoRetriever.GetDroneConfiguration();
 }