Example #1
0
        public Configuration SaveConfiguration(Dictionarys dicts)
        {
            var returnConf = new Configuration
                                 {
                                         Name = Name,
                                         FileLocation = FileLocation,
                                         DisplayConfigurations = new List<DisplayConfiguration>(),
                                         ControllerConfigurations = new List<ControllerConfiguration>(),
                                         TMDisplaySettings =
                                                 new TMDisplaySettings
                                                     {
                                                             ColourDeltaByDD = this.ColourDeltaByDD,
                                                             ShiftIntensity = this.ShiftIntensity,
                                                             Intensity = this.Intensity,
                                                             ShiftIntensityType =
                                                                     this.ShiftIntensityType,
                                                             ShiftIntensityAmount =
                                                                     this.ShiftIntensityAmount,
                                                             ShowHeaders = this.ShowHeader,
                                                             HeaderDisplayTime =
                                                                     this.HeaderDisplayTime + 1,
                                                             QuickInfoDisplayTime =
                                                                     this.QuickInfoDisplayTime + 1,
                                                             LapDisplayTime =
                                                                     this.LapTimeDisplayTime + 1,
                                                             DeltaRange = this.DeltaRange + 1,
                                                             DeltaMessageScreen =
                                                                     this.DeltaMessageScreen,
                                                             DeltaLightsOnDefault =
                                                                     this.DeltaLightsOnDefault,
                                                             WarningTextDisplayTime = this.WarningTextDisplayTime + 1,
                                                             QuickInfoLightsColour = this.QuickInfoLightsColour
                                                     },
                                         SerialPortSettings =
                                                 new SerialPortConfiguration
                                                     {
                                                             PreferredComPort =
                                                                     this
                                                                     .PreferredComPort,
                                                             SerialPortSpeed =
                                                                     AdvancedOptions
                                                                     .ParseSerialSpeedString
                                                                     (
                                                                             this
                                                                     .SerialPortSpeed),
                                                             UseCustomSerialSpeed =
                                                                     this
                                                                     .UseCustomSerialSpeed
                                                     },
                                         OtherSettings =
                                                 new OtherSettings
                                                     {
                                                             FuelCalculationLaps =
                                                                     this.FuelCalculationLaps + 2,
                                                             UseCustomFuelCalculationOptions =
                                                                     this
                                                                     .UseCustomFuelCalculationOptions,
                                                             UseWeightedFuelCalculations =
                                                                     this
                                                                     .UseWeightedFuelCalculations
                                                     },
                                         RefreshRates =
                                                 new RefreshRates
                                                     {
                                                             DisplayRefreshRate =
                                                                     AdvancedOptions
                                                                     .ParseRefreshRatesString(
                                                                             this
                                                                     .DisplayRefreshRate),
                                                             LEDRefreshRate =
                                                                     AdvancedOptions
                                                                     .ParseRefreshRatesString(
                                                                             this.LEDRefreshRate)
                                                     },
                                         AdvancedSettings =
                                                 new AdvancedSettings
                                                     {
                                                             LogArduinoMessages =
                                                                     this.LogArduinoMessages
                                                     }
                                 };
            if(returnConf.TMDisplaySettings.DeltaRange <= 0)
            {
                returnConf.TMDisplaySettings.DeltaRange = 1;
            }
            if (!UseCustomSerialSpeed) //Calculate and Auto Set Serial Speed
            {
                int numberTM1638 = 0;
                int numberTM1640 = 0;
                foreach (var unit in DisplayUnitConfigurations)
                {
                    if (unit.IsTM1640)
                    {
                        numberTM1640++;

                    }
                    else
                    {
                        numberTM1638++;
                    }

                }
                returnConf.SerialPortSettings.SerialPortSpeed = AdvancedOptions.CalculateRecommendSerialSpeed(
                returnConf.RefreshRates.DisplayRefreshRate,returnConf.RefreshRates.LEDRefreshRate, numberTM1638, numberTM1640);
            }
            //int controllerCount = 0;
            foreach (ControllerButtonConfiguration item in ControllerConfigurations)
            {
                var temp = new ControllerConfiguration();
                for (int y = 0; y < Constants.MaxNumberJoystickButtons; y++)
                {
                    var butFuncTemp = ButtonFunctionsEnum.None;

                    foreach (var butFunc in dicts.ButtonFunctions)
                    {
                        if (butFunc.Value.Name == item.ButtonFunctions[y])
                        {
                            butFuncTemp = butFunc.Key;
                        }
                    }
                    temp.ButtonFunctions[y] = butFuncTemp;
                    temp.ButtonOptions[y] = item.ButtonOptions[y];
                    temp.ButtonOptionsScreens[y] = item.ButtonOptionsScreens[y];
                    temp.ButtonNumbers[y] = item.ButtonNumbers[y];
                    temp.DeviceGuid = item.DeviceGuid;
                    temp.Selected = item.Selected;
                }
                //controllerCount++;
                returnConf.ControllerConfigurations.Add(temp);
            }
            returnConf.NumberControllers = returnConf.ControllerConfigurations.Count;
            foreach (DisplayUnitConfiguration displayConf in DisplayUnitConfigurations)
            {
                var temp = new DisplayConfiguration(false)
                    {
                        NumScreens = displayConf.NumScreens + 1,
                        Inverted = displayConf.Inverted,
                        IsTM1640 = displayConf.IsTM1640,
                        SwitchLEDs = displayConf.SwitchLEDs,
                        ShowDC = displayConf.ShowDC,
                        DCDisplayTime = displayConf.DCDisplayTime,
                        ShowLap = displayConf.ShowLap,
                        FFBClippingLights = displayConf.LEDsConfigurations.FFBClippingLights,
                        FFBClippingScreen = displayConf.LEDsConfigurations.FFBClippingScreen + 1,
                        PitLights = displayConf.LEDsConfigurations.PitLights,
                        ShiftClumps = displayConf.LEDsConfigurations.ShiftClumps,
                        RevLimiterLights = displayConf.LEDsConfigurations.RevLimiterLights,
                        ShowShiftLights = displayConf.LEDsConfigurations.ShowShiftLights,
                        DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow,
                        ShowEngineWarnings = displayConf.ShowEngineWarnings
                    };
                List<Screen> screenTemp = displayConf.Screens;
                foreach (Screen screen in screenTemp)
                {
                    int place = 0;
                    while (place < screen.Variables.Count)
                    {
                        if (screen.Variables[place] == null || screen.Variables[place] == "")
                        {
                            screen.Variables.RemoveAt(place);
                        }
                        else
                        {
                            place++;
                        }
                    }
                    if (screen.Variables.Count == 0)
                    {
                        screen.Variables.Add("Space");
                    }
                }
                temp.Screens = displayConf.Screens;
                try
                {
                    temp.WarningType = dicts.WarningTypes[displayConf.WarningType];
                }
                catch
                {
                    Enum.TryParse(displayConf.WarningType, out temp.WarningType);
                }
                try
                {
                    temp.LapStyle = dicts.LapDisplayStyles[displayConf.LapStyle];
                }
                catch
                {
                    Enum.TryParse(displayConf.LapStyle, out temp.LapStyle);
                }
                try
                {
                    temp.PitLimiterStyle = dicts.PitFlashStyles[displayConf.LEDsConfigurations.PitLimiterStyle];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterStyle, out temp.PitLimiterStyle);
                }
                try
                {
                    temp.PitLimiterSpeed = dicts.PitFlashSpeeds[displayConf.LEDsConfigurations.PitLimiterSpeed];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterSpeed, out temp.PitLimiterSpeed);
                }
                try
                {
                    temp.ShiftLightStyle = dicts.ShiftStyles[displayConf.LEDsConfigurations.ShiftLightStyle];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.ShiftLightStyle, out temp.ShiftLightStyle);
                }
                try
                {
                    temp.RevLimiterStyle = dicts.RevFlashStyles[displayConf.LEDsConfigurations.RevLimiterStyle];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.RevLimiterStyle, out temp.RevLimiterStyle);
                }
                temp.MatchCarShiftStyle = displayConf.LEDsConfigurations.MatchCarShiftLights;
                temp.MatchRedShift = displayConf.LEDsConfigurations.MatchRedShift;
                try
                {
                    temp.MatchCarShiftStyleOption =
                        dicts.MatchCarShiftOptions[displayConf.LEDsConfigurations.MatchCarShiftOptions];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.MatchCarShiftOptions, out temp.MatchCarShiftStyleOption);
                }
                temp.DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow;
                try
                {
                    temp.DeltaLightsPosition =
                        dicts.DeltaLightsPositionOptions[displayConf.LEDsConfigurations.DeltaLightsPosition];
                }
                catch
                {
                    Enum.TryParse(displayConf.LEDsConfigurations.DeltaLightsPosition, out temp.DeltaLightsPosition);
                }
                for (int y = 0; y < Constants.NumberButtonsOnTm1638; y++)
                {
                    var butFuncTemp = ButtonFunctionsEnum.None;

                    foreach (var butFunc in dicts.ButtonFunctions)
                    {
                        if (butFunc.Value.Name == displayConf.ButtonConfigurations.ButtonFunctions[y])
                        {
                            butFuncTemp = butFunc.Key;
                        }
                    }
                    temp.ButtonFunctions[y] = butFuncTemp;
                    temp.ButtonOptions[y] = displayConf.ButtonConfigurations.ButtonOptions[y];
                    temp.ButtonOptionsScreens[y] = displayConf.ButtonConfigurations.ButtonOptionsScreens[y];
                }
                returnConf.DisplayConfigurations.Add(temp);
            }
            return returnConf;
        }
Example #2
0
        public void LoadConfiguration(Configuration configuration, Dictionarys dicts)
        {
            Name = configuration.Name;
            FileLocation = configuration.FileLocation;
            Intensity = configuration.TMDisplaySettings.Intensity;
            ShiftIntensity = configuration.TMDisplaySettings.ShiftIntensity;
            ShiftIntensityType = configuration.TMDisplaySettings.ShiftIntensityType;
            ShiftIntensityAmount = configuration.TMDisplaySettings.ShiftIntensityAmount;
            ShowHeader = configuration.TMDisplaySettings.ShowHeaders;
            HeaderDisplayTime = configuration.TMDisplaySettings.HeaderDisplayTime - 1;
            QuickInfoDisplayTime = configuration.TMDisplaySettings.QuickInfoDisplayTime - 1;
            LapTimeDisplayTime = configuration.TMDisplaySettings.LapDisplayTime - 1;
            PreferredComPort = configuration.SerialPortSettings.PreferredComPort;
            LogArduinoMessages = configuration.AdvancedSettings.LogArduinoMessages;
            SerialPortSpeed = configuration.SerialPortSettings.SerialPortSpeed.ToString(CultureInfo.InvariantCulture);
            DisplayRefreshRate = configuration.RefreshRates.DisplayRefreshRate.ToString(CultureInfo.InvariantCulture);
            LEDRefreshRate = configuration.RefreshRates.LEDRefreshRate.ToString(CultureInfo.InvariantCulture);
            UseCustomSerialSpeed = configuration.SerialPortSettings.UseCustomSerialSpeed;
            ColourDeltaByDD = configuration.TMDisplaySettings.ColourDeltaByDD;
            DeltaLightsOnDefault = configuration.TMDisplaySettings.DeltaLightsOnDefault;
            DeltaMessageScreen = configuration.TMDisplaySettings.DeltaMessageScreen;
            DeltaRange = configuration.TMDisplaySettings.DeltaRange - 1;
            UseCustomFuelCalculationOptions = configuration.OtherSettings.UseCustomFuelCalculationOptions;
            FuelCalculationLaps = configuration.OtherSettings.FuelCalculationLaps - 2;
            UseWeightedFuelCalculations = configuration.OtherSettings.UseWeightedFuelCalculations;
            WarningTextDisplayTime = configuration.TMDisplaySettings.WarningTextDisplayTime - 1;
            QuickInfoLightsColour = configuration.TMDisplaySettings.QuickInfoLightsColour;

            ArduinoIOConfiguration = new ArduinoIO();
            FergoTechConfiguration = new FergoTechComponents();

            ControllerConfigurations = new List<ControllerButtonConfiguration>();
            foreach (ControllerConfiguration item in configuration.ControllerConfigurations)
            {
                var temp = new ControllerButtonConfiguration
                    {
                        DeviceGuid = item.DeviceGuid,
                        ButtonNumbers = item.ButtonNumbers,
                        ButtonOptions = item.ButtonOptions,
                        ButtonOptionsScreens = item.ButtonOptionsScreens,
                        Selected = item.Selected
                    };
                for (int k = 0; k < Constants.MaxNumberJoystickButtons; k++)
                {
                    temp.ButtonFunctions[k] = dicts.ButtonFunctions[item.ButtonFunctions[k]].Name;
                }
                ControllerConfigurations.Add(temp);
            }
            NumberControllers = configuration.ControllerConfigurations.Count;
            DisplayUnitConfigurations = new List<DisplayUnitConfiguration>();
            int unitCount = 0;
            foreach (DisplayConfiguration displayConf in configuration.DisplayConfigurations)
            {
                unitCount++;
                var temp = new DisplayUnitConfiguration
                    {
                        NumScreens = displayConf.NumScreens - 1,
                        Inverted = displayConf.Inverted,
                        IsTM1640 = displayConf.IsTM1640,
                        SwitchLEDs = displayConf.SwitchLEDs,
                        ShowDC = displayConf.ShowDC,
                        DCDisplayTime = displayConf.DCDisplayTime,
                        ShowLap = displayConf.ShowLap,
                        ButtonConfigurations = new ButtonConfiguration(),
                        UnitNumber = unitCount,
                        ShowEngineWarnings = displayConf.ShowEngineWarnings
                    };
                DisplayConfiguration conf = displayConf;
                foreach (var lstyle in dicts.LapDisplayStyles.Where(lstyle => conf.LapStyle == lstyle.Value))
                {
                    temp.LapStyle = lstyle.Key;
                } foreach (var wtype in dicts.WarningTypes.Where(wtype => conf.WarningType == wtype.Value))
                {
                    temp.WarningType = wtype.Key;
                }

                for (int n = 0; n < Constants.NumberButtonsOnTm1638; n++)
                {
                    temp.ButtonConfigurations.ButtonFunctions[n] =
                        dicts.ButtonFunctions[displayConf.ButtonFunctions[n]].Name;
                    temp.ButtonConfigurations.ButtonOptions[n] = displayConf.ButtonOptions[n];
                    temp.ButtonConfigurations.ButtonOptionsScreens[n] = displayConf.ButtonOptionsScreens[n];
                }
                temp.LEDsConfigurations = new LEDsConfiguration
                                              {
                                                      FFBClippingLights = displayConf.FFBClippingLights,
                                                      FFBClippingScreen = displayConf.FFBClippingScreen - 1,
                                                      PitLights = displayConf.PitLights,
                                                      RevLimiterLights = displayConf.RevLimiterLights,
                                                      ShowShiftLights = displayConf.ShowShiftLights,
                                                      ShiftClumps = displayConf.ShiftClumps,
                                                      MatchCarShiftLights = displayConf.MatchCarShiftStyle,
                                                      MatchRedShift = displayConf.MatchRedShift,
                                                      DeltaLightsShow = displayConf.DeltaLightsShow,
                                                      MatchCarShiftOptions = "",
                                              };
                foreach (var opt in dicts.MatchCarShiftOptions)
                {
                    if (opt.Value == displayConf.MatchCarShiftStyleOption)
                    {
                        temp.LEDsConfigurations.MatchCarShiftOptions = opt.Key;
                    }
                }
                temp.LEDsConfigurations.DeltaLightsPosition = "";
                foreach (var opt in dicts.DeltaLightsPositionOptions)
                {
                    if (opt.Value == displayConf.DeltaLightsPosition)
                    {
                        temp.LEDsConfigurations.DeltaLightsPosition = opt.Key;
                    }
                }
                foreach (var plspeed in dicts.PitFlashSpeeds)
                {
                    if (plspeed.Value == displayConf.PitLimiterSpeed)
                    {
                        temp.LEDsConfigurations.PitLimiterSpeed = plspeed.Key;
                    }
                }
                foreach (var plstyle in dicts.PitFlashStyles)
                {
                    if (plstyle.Value == displayConf.PitLimiterStyle)
                    {
                        temp.LEDsConfigurations.PitLimiterStyle = plstyle.Key;
                    }
                }
                foreach (var revlstyle in dicts.RevFlashStyles)
                {
                    if (revlstyle.Value == displayConf.RevLimiterStyle)
                    {
                        temp.LEDsConfigurations.RevLimiterStyle = revlstyle.Key;
                    }
                }
                foreach (var shiftstyle in dicts.ShiftStyles)
                {
                    if (shiftstyle.Value == displayConf.ShiftLightStyle)
                    {
                        temp.LEDsConfigurations.ShiftLightStyle = shiftstyle.Key;
                    }
                }
                temp.Screens = displayConf.Screens;
                DisplayUnitConfigurations.Add(temp);
            }
        }
Example #3
0
 private void CreateNewConfiguration()
 {
     var temp = new Configuration(true)
     {
         Name = "Unnamed" + this.rand.Next(1, 100).ToString(CultureInfo.InvariantCulture)
     };
     this.hostApp.DisplayMngr.Configurations.Add(temp);
     CurrentConfigurationCBox.Items.Add(temp.Name);
     CurrentConfigurationCBox.SelectedIndex = CurrentConfigurationCBox.Items.Count - 1;
 }
Example #4
0
        /// <summary>
        ///     Load configuration file from disk
        /// </summary>
        /// <param name="filename">File path</param>
        /// <param name="confOut">New Loaded Configuration</param>
        /// <returns>Bool. True if good, False if failed</returns>
        public bool LoadConfFile(string filename, out Configuration confOut)
        {
            Configuration configurationLoaded;
            if (Configuration.LoadConfigurationFromFile(filename, out configurationLoaded))
            {
                confOut = configurationLoaded;
                return true;
            }

            //Not True below...
            confOut = configurationLoaded;
            return false;
        }
Example #5
0
        public static bool LoadConfigurationFromFile(string fileLocation, out Configuration loaded)
        {
            var newConf = new Configuration { FileLocation = fileLocation };
            bool fileReadOk = true;
            int currentDisplayUnit = 0;
            int currentController = 0;
            int currentButton = 0;
            int currentScreen = 0;
            try
            {
                using (var sr = new StreamReader(fileLocation))
                {
                    bool fileEnded = false;
                    while (sr.EndOfStream == false && !fileEnded)
                    {
                        string line = sr.ReadLine();
                        // ReSharper disable StringIndexOfIsCultureSpecific.1
                        if (line == null) continue;
                        int commaLoc = line.IndexOf(",");
                        // ReSharper restore StringIndexOfIsCultureSpecific.1
                        if (commaLoc <= 0) continue;
                        string parameter = line.Substring(0, commaLoc);
                        string value = line.Substring(commaLoc + 1);

                        ButtonFunctionsEnum temp;
                        switch (parameter)
                        {
                            //ButtonOptionsScreens
                            case "ConfName":
                                newConf.Name = value;
                                break;
                            case "ComPort":
                                int.TryParse(value, out newConf.SerialPortSettings.PreferredComPort);
                                break;
                            case "SerialSpeed":
                                int.TryParse(value, out newConf.SerialPortSettings.SerialPortSpeed);
                                break;
                            case "LogArduinoMessages":
                                Boolean.TryParse(value, out newConf.AdvancedSettings.LogArduinoMessages);
                                break;
                            case "UseCustomSerialSpeed":
                                Boolean.TryParse(value, out newConf.SerialPortSettings.UseCustomSerialSpeed);
                                break;
                            case "DisplayRefreshRate":
                                int.TryParse(value, out newConf.RefreshRates.DisplayRefreshRate);
                                break;
                            case "LEDRefreshRate":
                                int.TryParse(value, out newConf.RefreshRates.LEDRefreshRate);
                                break;
                            case "UseCustomFuelCalculations":
                                Boolean.TryParse(value, out newConf.OtherSettings.UseCustomFuelCalculationOptions);
                                break;
                            case "UseWeightedFuelCalculation":
                                Boolean.TryParse(value, out newConf.OtherSettings.UseWeightedFuelCalculations);
                                break;
                            case "CustomFuelLaps":
                                int.TryParse(value, out newConf.OtherSettings.FuelCalculationLaps);
                                break;
                            case "ButtonFunction1":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[0] = temp;
                                }
                                break;
                            case "ButtonFunction2":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[1] = temp;
                                }
                                break;
                            case "ButtonFunction3":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[2] = temp;
                                }
                                break;
                            case "ButtonFunction4":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[3] = temp;
                                }
                                break;
                            case "ButtonFunction5":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[4] = temp;
                                }
                                break;
                            case "ButtonFunction6":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[5] = temp;
                                }
                                break;
                            case "ButtonFunction7":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[6] = temp;
                                }
                                break;
                            case "ButtonFunction8":
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[7] = temp;
                                }
                                break;
                            case "ButtonOption1":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[0] = value;
                                break;
                            case "ButtonOption2":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[1] = value;
                                break;
                            case "ButtonOption3":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[2] = value;
                                break;
                            case "ButtonOption4":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[3] = value;
                                break;
                            case "ButtonOption5":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[4] = value;
                                break;
                            case "ButtonOption6":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[5] = value;
                                break;
                            case "ButtonOption7":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[6] = value;
                                break;
                            case "ButtonOption8":
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[7] = value;
                                break; ///////
                            case "ButtonOptionScreens1":
                                int buttonOptionScreenInt1;
                                int.TryParse(value, out buttonOptionScreenInt1);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[0] =
                                    buttonOptionScreenInt1;
                                break;
                            case "ButtonOptionScreens2":
                                int buttonOptionScreenInt2;
                                int.TryParse(value, out buttonOptionScreenInt2);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[1] =
                                    buttonOptionScreenInt2;
                                break;
                            case "ButtonOptionScreens3":
                                int buttonOptionScreenInt3;
                                int.TryParse(value, out buttonOptionScreenInt3);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[2] =
                                    buttonOptionScreenInt3;
                                break;
                            case "ButtonOptionScreens4":
                                int buttonOptionScreenInt4;
                                int.TryParse(value, out buttonOptionScreenInt4);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[3] =
                                    buttonOptionScreenInt4;
                                break;
                            case "ButtonOptionScreens5":
                                int buttonOptionScreenInt5;
                                int.TryParse(value, out buttonOptionScreenInt5);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[4] =
                                    buttonOptionScreenInt5;
                                break;
                            case "ButtonOptionScreens6":
                                int buttonOptionScreenInt6;
                                int.TryParse(value, out buttonOptionScreenInt6);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[5] =
                                    buttonOptionScreenInt6;
                                break;
                            case "ButtonOptionScreens7":
                                int buttonOptionScreenInt7;
                                int.TryParse(value, out buttonOptionScreenInt7);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[6] =
                                    buttonOptionScreenInt7;
                                break;
                            case "ButtonOptionScreens8":
                                int buttonOptionScreenInt8;
                                int.TryParse(value, out buttonOptionScreenInt8);
                                newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[7] =
                                    buttonOptionScreenInt8;
                                break;
                            case "FFBClipLights":
                                Boolean.TryParse(value,
                                                 out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingLights);
                                break;
                            case "FFBClipScreen":
                                Int32.TryParse(value,
                                               out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingScreen);
                                break;
                            case "HeaderDisplayTime":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.HeaderDisplayTime);
                                break;
                            case "LapDisplayTime":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.LapDisplayTime);
                                break;
                            case "ShowEngineWarnings":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowEngineWarnings);
                                break;
                            case "WarningType":
                                Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].WarningType);
                                break;
                            case "LapStyle":
                                Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].LapStyle);
                                break;
                            case "PitLights":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLights);
                                break;
                            case "ShiftClumps":
                                Boolean.TryParse(value,
                                                 out newConf.DisplayConfigurations[currentDisplayUnit].ShiftClumps);
                                break;
                            case "PitLimiterSpeed":
                                Enum.TryParse(value,
                                              out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterSpeed);
                                break;
                            case "PitLimiterStyle":
                                Enum.TryParse(value,
                                              out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterStyle);
                                break;
                            case "QuickInfoDisplayTime":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.QuickInfoDisplayTime);
                                break;
                            case "RevLimiterLights":
                                Boolean.TryParse(value,
                                                 out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterLights);
                                break;
                            case "RevLimiterStyle":
                                Enum.TryParse(value,
                                              out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterStyle);
                                break;
                            case "ShiftLightStyle":
                                Enum.TryParse(value,
                                              out newConf.DisplayConfigurations[currentDisplayUnit].ShiftLightStyle);
                                break;
                            case "MatchCarShiftStyle":
                                Boolean.TryParse(
                                    value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyle);
                                break;
                            case "MatchCarShiftConfiguration":
                                Enum.TryParse(
                                    value,
                                    out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyleOption);
                                break;
                            case "MatchRedShift":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchRedShift);
                                break;
                            case "ShowHeaders":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.ShowHeaders);
                                break;

                            case "ColourDeltaByDD":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.ColourDeltaByDD);
                                break;
                            case "DeltaLightsOnDefault":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.DeltaLightsOnDefault);
                                break;
                            case "DeltamessageScreen":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaMessageScreen);
                                break;
                            case "DeltaRange":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaRange);
                                break;

                            case "ShowLap":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowLap);
                                break;
                            case "Inverted":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].Inverted);
                                break;
                            case "TM1640":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].IsTM1640);
                                break;
                            case "DeltaLightsPosition":
                                Enum.TryParse(
                                    value,
                                    out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsPosition);
                                break;
                            case "DeltaLightsShow":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsShow);
                                break;

                            case "SwitchLEDs":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].SwitchLEDs);
                                break;
                            case "ShowDC":
                                Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowDC);
                                break;
                            case "DCDisplayTime":
                                Int32.TryParse(value,
                                               out newConf.DisplayConfigurations[currentDisplayUnit].DCDisplayTime);
                                break;
                            case "ShowShiftLights":
                                Boolean.TryParse(value,
                                                 out newConf.DisplayConfigurations[currentDisplayUnit].ShowShiftLights);
                                break;
                            case "NumScreens":
                                Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].NumScreens);
                                break;
                            case "Intensity":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.Intensity);
                                break;
                            case "ShiftIntensity":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensity);
                                break;
                            case "ShiftIntensityType":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityType);
                                break;
                            case "WarningTextDisplayTime":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.WarningTextDisplayTime);
                                break;
                            case "QuickInfoLightsColour":
                                Boolean.TryParse(value, out newConf.TMDisplaySettings.QuickInfoLightsColour);
                                break;
                            case "ShiftIntensityAmount":
                                Int32.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityAmount);
                                break;
                            case "ScreenNumber":
                                Int32.TryParse(value, out currentScreen);
                                if (newConf.DisplayConfigurations[currentDisplayUnit].Screens.Count <= currentScreen)
                                {
                                    var tempScreen = new Screen();
                                    tempScreen.Variables.Clear();
                                    newConf.DisplayConfigurations[currentDisplayUnit].Screens.Add(tempScreen);
                                }
                                break;
                            case "DisplayUnit":
                                Int32.TryParse(value, out currentDisplayUnit);
                                if (newConf.DisplayConfigurations.Count <= currentDisplayUnit)
                                {
                                    var unitTemp = new DisplayConfiguration(true);
                                    unitTemp.Screens.Clear();
                                    newConf.DisplayConfigurations.Add(unitTemp);
                                }
                                currentScreen = 0;
                                break;
                            case "UseCustomHeader":
                                bool tempUch;
                                Boolean.TryParse(value, out tempUch);
                                newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].UseCustomHeader = tempUch;
                                break;
                            case "CustomHeader":
                                newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].CustomHeader = value;
                                break;
                            case "Variable":
                                newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].Variables.Add(
                                    value);
                                break;
                            case "ControllerNumber":
                                currentButton = -1;
                                Int32.TryParse(value, out currentController);
                                if (newConf.ControllerConfigurations.Count <= currentController)
                                {
                                    var controllerTemp = new ControllerConfiguration();
                                    newConf.ControllerConfigurations.Add(controllerTemp);
                                }
                                break;
                            case "DeviceGuid":
                                Guid.TryParse(value, out newConf.ControllerConfigurations[currentController].DeviceGuid);
                                break;
                            case "ConButtonFunction":
                                currentButton++;
                                if (Enum.TryParse(value, out temp))
                                {
                                    newConf.ControllerConfigurations[currentController].ButtonFunctions[currentButton] =
                                        temp;
                                }
                                break;
                            case "ConButtonOption":
                                newConf.ControllerConfigurations[currentController].ButtonOptions[currentButton] = value;
                                break;
                            case "ConButtonOptionScreens":
                                int conButtonOptionScreenInt1;
                                int.TryParse(value, out conButtonOptionScreenInt1);
                                newConf.ControllerConfigurations[currentController].ButtonOptionsScreens[currentButton]
                                    =
                                    conButtonOptionScreenInt1;
                                break;
                            case "ConButtonNumber":
                                int conButtonNumberInt1;
                                int.TryParse(value, out conButtonNumberInt1);
                                newConf.ControllerConfigurations[currentController].ButtonNumbers[currentButton] =
                                    conButtonNumberInt1;
                                break;
                            case "ContSelected":
                                Boolean.TryParse(value, out newConf.ControllerConfigurations[currentController].Selected);
                                break;

                            case "END":
                                fileEnded = true;
                                break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(String.Format("The file could not be read: {0}", e.Message), "File Read Error");
                fileReadOk = false;
            }
            loaded = fileReadOk ? newConf : null;
            return fileReadOk;
        }
Example #6
0
 // Add Error checking for BOOL Return!!!
 public static bool SaveConfigurationToFile(string fileLocation, Configuration conf)
 {
     var sb = new StringBuilder("");
     sb.AppendLine("iRduino Configuration File");
     sb.AppendLine(String.Format("File saved on: {0}  {1}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()));
     sb.AppendLine("[ Configuration Options ]");
     sb.AppendLine(String.Format("{0},{1}", "ConfName", conf.Name));
     sb.AppendLine(String.Format("{0},{1}", "ComPort", conf.SerialPortSettings.PreferredComPort));
     sb.AppendLine(String.Format("{0},{1}", "SerialSpeed", conf.SerialPortSettings.SerialPortSpeed));
     sb.AppendLine(String.Format("{0},{1}", "UseCustomSerialSpeed", conf.SerialPortSettings.UseCustomSerialSpeed));
     sb.AppendLine(String.Format("{0},{1}", "LogArduinoMessages", conf.AdvancedSettings.LogArduinoMessages));
     sb.AppendLine(String.Format("{0},{1}", "DisplayRefreshRate", conf.RefreshRates.DisplayRefreshRate));
     sb.AppendLine(String.Format("{0},{1}", "LEDRefreshRate", conf.RefreshRates.LEDRefreshRate));
     sb.AppendLine(String.Format("{0},{1}", "UseCustomFuelCalculations", conf.OtherSettings.UseCustomFuelCalculationOptions));
     sb.AppendLine(String.Format("{0},{1}", "UseWeightedFuelCalculation", conf.OtherSettings.UseWeightedFuelCalculations));
     sb.AppendLine(String.Format("{0},{1}", "CustomFuelLaps", conf.OtherSettings.FuelCalculationLaps));
     sb.AppendLine("[ Common Display Options ]");
     sb.AppendLine(String.Format("{0},{1}", "HeaderDisplayTime",
                                 conf.TMDisplaySettings.HeaderDisplayTime.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "LapDisplayTime",
                                 conf.TMDisplaySettings.LapDisplayTime.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "QuickInfoDisplayTime",
                                 conf.TMDisplaySettings.QuickInfoDisplayTime.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "ShowHeaders",
                                 conf.TMDisplaySettings.ShowHeaders));
     sb.AppendLine(String.Format("{0},{1}", "Intensity",
                                 conf.TMDisplaySettings.Intensity.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "ShiftIntensity",
                                 conf.TMDisplaySettings.ShiftIntensity.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "ShiftIntensityType",
                                 conf.TMDisplaySettings.ShiftIntensityType.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "ShiftIntensityAmount",
                                 conf.TMDisplaySettings.ShiftIntensityAmount.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "ColourDeltaByDD",
                                 conf.TMDisplaySettings.ColourDeltaByDD.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "DeltaLightsOnDefault",
                                 conf.TMDisplaySettings.DeltaLightsOnDefault.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "DeltamessageScreen",
                                 conf.TMDisplaySettings.DeltaMessageScreen.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "DeltaRange",
                                 conf.TMDisplaySettings.DeltaRange.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "QuickInfoLightsColour",
                                 conf.TMDisplaySettings.QuickInfoLightsColour.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine(String.Format("{0},{1}", "WarningTextDisplayTime",
                                 conf.TMDisplaySettings.WarningTextDisplayTime.ToString(
                                     CultureInfo.InvariantCulture)));
     sb.AppendLine("[ TM Display Units ]");
     //Start looping display units
     for (int unit = 0; unit < conf.DisplayConfigurations.Count; unit++)
     {
         //displayUnitString
         sb.AppendLine(String.Format("{0},{1}", "DisplayUnit", unit));
         sb.AppendLine("     [ Display Unit Button Functions ]");
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction1",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[0]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction2",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[1]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction3",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[2]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction4",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[3]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction5",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[4]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction6",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[5]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction7",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[6]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonFunction8",
                                     conf.DisplayConfigurations[unit].ButtonFunctions[7]));
         sb.AppendLine("     [ Display Unit Button Options ]");
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption1",
                                     conf.DisplayConfigurations[unit].ButtonOptions[0]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption2",
                                     conf.DisplayConfigurations[unit].ButtonOptions[1]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption3",
                                     conf.DisplayConfigurations[unit].ButtonOptions[2]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption4",
                                     conf.DisplayConfigurations[unit].ButtonOptions[3]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption5",
                                     conf.DisplayConfigurations[unit].ButtonOptions[4]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption6",
                                     conf.DisplayConfigurations[unit].ButtonOptions[5]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption7",
                                     conf.DisplayConfigurations[unit].ButtonOptions[6]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOption8",
                                     conf.DisplayConfigurations[unit].ButtonOptions[7]));
         sb.AppendLine("     [ Display Unit Button Screens ]");
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens1",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[0]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens2",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[1]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens3",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[2]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens4",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[3]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens5",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[4]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens6",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[5]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens7",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[6]));
         sb.AppendLine(String.Format("{0},{1}", "ButtonOptionScreens8",
                                     conf.DisplayConfigurations[unit].ButtonOptionsScreens[7]));
         sb.AppendLine("     [ Display Unit Configuration ]");
         sb.AppendLine(String.Format("{0},{1}", "FFBClipLights",
                                     conf.DisplayConfigurations[unit].FFBClippingLights));
         sb.AppendLine(String.Format("{0},{1}", "FFBClipScreen",
                                     conf.DisplayConfigurations[unit].FFBClippingScreen.ToString(
                                         CultureInfo.InvariantCulture)));
         sb.AppendLine(String.Format("{0},{1}", "Inverted",
                                     conf.DisplayConfigurations[unit].Inverted));
         sb.AppendLine(String.Format("{0},{1}", "TM1640",
                                     conf.DisplayConfigurations[unit].IsTM1640));
         sb.AppendLine(String.Format("{0},{1}", "SwitchLEDs",
                                     conf.DisplayConfigurations[unit].SwitchLEDs));
         sb.AppendLine(String.Format("{0},{1}", "ShowDC",
                                     conf.DisplayConfigurations[unit].ShowDC));
         sb.AppendLine(String.Format("{0},{1}", "DCDisplayTime",
                                     conf.DisplayConfigurations[unit].DCDisplayTime.ToString(
                                         CultureInfo.InvariantCulture)));
         sb.AppendLine(String.Format("{0},{1}", "LapStyle",
                                     conf.DisplayConfigurations[unit].LapStyle));
         sb.AppendLine(String.Format("{0},{1}", "PitLights",
                                     conf.DisplayConfigurations[unit].PitLights));
         sb.AppendLine(String.Format("{0},{1}", "PitLimiterSpeed",
                                     conf.DisplayConfigurations[unit].PitLimiterSpeed));
         sb.AppendLine(String.Format("{0},{1}", "PitLimiterStyle",
                                     conf.DisplayConfigurations[unit].PitLimiterStyle));
         sb.AppendLine(String.Format("{0},{1}", "RevLimiterLights",
                                     conf.DisplayConfigurations[unit].RevLimiterLights));
         sb.AppendLine(String.Format("{0},{1}", "RevLimiterStyle",
                                     conf.DisplayConfigurations[unit].RevLimiterStyle));
         sb.AppendLine(String.Format("{0},{1}", "ShiftLightStyle",
                                     conf.DisplayConfigurations[unit].ShiftLightStyle));
         sb.AppendLine(String.Format("{0},{1}", "MatchCarShiftStyle", conf.DisplayConfigurations[unit].MatchCarShiftStyle));
         sb.AppendLine(String.Format("{0},{1}", "MatchCarShiftConfiguration", conf.DisplayConfigurations[unit].MatchCarShiftStyleOption));
         sb.AppendLine(String.Format("{0},{1}", "MatchRedShift", conf.DisplayConfigurations[unit].MatchRedShift));
         sb.AppendLine(String.Format("{0},{1}", "ShowLap",
                                     conf.DisplayConfigurations[unit].ShowLap));
         sb.AppendLine(String.Format("{0},{1}", "ShowShiftLights",
                                     conf.DisplayConfigurations[unit].ShowShiftLights));
         sb.AppendLine(String.Format("{0},{1}", "ShiftClumps",
                                     conf.DisplayConfigurations[unit].ShiftClumps));
         sb.AppendLine(String.Format("{0},{1}", "DeltaLightsShow",
                                     conf.DisplayConfigurations[unit].DeltaLightsShow));
         sb.AppendLine(String.Format("{0},{1}", "DeltaLightsPosition",
                                     conf.DisplayConfigurations[unit].DeltaLightsPosition));
         sb.AppendLine(String.Format("{0},{1}", "WarningType",
                                     conf.DisplayConfigurations[unit].WarningType));
         sb.AppendLine(String.Format("{0},{1}", "ShowEngineWarnings",
                                     conf.DisplayConfigurations[unit].ShowEngineWarnings));
         sb.AppendLine("     [ Display Unit Screens ]");
         sb.AppendLine(String.Format("{0},{1}", "NumScreens",
                                     conf.DisplayConfigurations[unit].NumScreens.ToString(
                                         CultureInfo.InvariantCulture)));
         for (int i = 0; i < conf.DisplayConfigurations[unit].NumScreens; i++)
         {
             sb.AppendLine(String.Format("{0},{1}", "ScreenNumber", i.ToString(CultureInfo.InvariantCulture)));
             sb.AppendLine(String.Format("{0},{1}", "UseCustomHeader", conf.DisplayConfigurations[unit].Screens[i].UseCustomHeader));
             sb.AppendLine(String.Format("{0},{1}", "CustomHeader", conf.DisplayConfigurations[unit].Screens[i].CustomHeader));
             foreach (string dv in conf.DisplayConfigurations[unit].Screens[i].Variables)
             {
                 sb.AppendLine(String.Format("{0},{1}", "Variable", dv));
             }
         }
     }
     sb.AppendLine("[ Controller Configuration ]");
     for (int c = 0; c < conf.ControllerConfigurations.Count; c++)
     {
         sb.AppendLine(String.Format("{0},{1}", "ControllerNumber", c.ToString(CultureInfo.InvariantCulture)));
         sb.AppendLine(String.Format("{0},{1}", "DeviceGuid", conf.ControllerConfigurations[c].DeviceGuid));
         sb.AppendLine(String.Format("{0},{1}", "ContSelected", conf.ControllerConfigurations[c].Selected));
         for (int t = 1; t <= Constants.MaxNumberJoystickButtons; t++)
         {
             sb.AppendLine(String.Format("{0},{1}", "ConButtonFunction",
                                         conf.ControllerConfigurations[c].ButtonFunctions[t - 1]));
             sb.AppendLine(String.Format("{0},{1}", "ConButtonOption",
                                         conf.ControllerConfigurations[c].ButtonOptions[t - 1]));
             sb.AppendLine(String.Format("{0},{1}", "ConButtonOptionScreens",
                                         conf.ControllerConfigurations[c].ButtonOptionsScreens[t - 1]));
             sb.AppendLine(String.Format("{0},{1}", "ConButtonNumber",
                                         conf.ControllerConfigurations[c].ButtonNumbers[t - 1]));
         }
     }
     sb.AppendLine(String.Format("{0},{1}", "END", "END"));
     sb.AppendLine("[ END ]");
     using (var outfile = new StreamWriter(fileLocation))
     {
         outfile.Write(sb.ToString());
     }
     return true;
 }