Exemple #1
0
 public byte[] readdatafromfile(string filename, int address, int length, EDCFileType type)
 {
     byte[] retval = new byte[length];
     try
     {
         FileStream fsi1 = File.OpenRead(filename);
         while (address > fsi1.Length)
         {
             address -= (int)fsi1.Length;
         }
         BinaryReader br1 = new BinaryReader(fsi1);
         fsi1.Position = address;
         string temp = string.Empty;
         for (int i = 0; i < length; i++)
         {
             retval.SetValue(br1.ReadByte(), i);
         }
         // depends on filetype (EDC16 is not reversed)
         if (type != EDCFileType.EDC16)
         {
             retval = reverseEndian(retval);
         }
         fsi1.Flush();
         br1.Close();
         fsi1.Close();
         fsi1.Dispose();
     }
     catch (Exception E)
     {
         Console.WriteLine(E.Message);
     }
     return(retval);
 }
        private bool CheckMajorMapsPresent(SymbolCollection newSymbols, EDCFileType type, out string _message)
        {
            _message = string.Empty;
            if (type == EDCFileType.EDC15C || type == EDCFileType.EDC15M || type == EDCFileType.EDC16 || type == EDCFileType.EDC17) return false; ;

            if (type == EDCFileType.EDC15P || type == EDCFileType.EDC15P6)
            {
                if (MapsWithNameMissing("Injector duration", newSymbols)) _message += "Injector duration maps missing" + Environment.NewLine;
                if (MapsWithNameMissing("Inverse driver wish", newSymbols)) _message += "Inverse driver wish map missing" + Environment.NewLine;
            }
            if (type == EDCFileType.EDC15P || type == EDCFileType.EDC15P6 || type == EDCFileType.EDC15V)
            {
                if (MapsWithNameMissing("MAF correction", newSymbols)) _message += "MAF correction map missing" + Environment.NewLine;
                if (MapsWithNameMissing("MAF linearization", newSymbols)) _message += "MAF linearization map missing" + Environment.NewLine;
                if (MapsWithNameMissing("MAP linearization", newSymbols)) _message += "MAP linearization map missing" + Environment.NewLine;
                if (MapsWithNameMissing("SOI limiter", newSymbols)) _message += "SOI limiter missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Idle RPM", newSymbols)) _message += "Idle RPM map missing" + Environment.NewLine;
            if (MapsWithNameMissing("EGR", newSymbols)) _message += "EGR maps missing" + Environment.NewLine;
            if (MapsWithNameMissing("SVBL", newSymbols)) _message += "SVBL missing" + Environment.NewLine;
            if (MapsWithNameMissing("Torque limiter", newSymbols)) _message += "Torque limiter missing" + Environment.NewLine;
            if (MapsWithNameMissing("Smoke limiter", newSymbols)) _message += "Smoke limiter missing" + Environment.NewLine;
            //if (MapsWithNameMissing("IQ by MAF limiter", newSymbols)) _message += "IQ by MAF limiter missing" + Environment.NewLine;
            if (MapsWithNameMissing("Start of injection", newSymbols)) _message += "Start of injection maps missing" + Environment.NewLine;
            if (MapsWithNameMissing("N75 duty cycle", newSymbols)) _message += "N75 duty cycle map missing" + Environment.NewLine;
            if (MapsWithNameMissing("Boost target map", newSymbols)) _message += "Boost target map missing" + Environment.NewLine;
            if (MapsWithNameMissing("Driver wish", newSymbols)) _message += "Driver wish map missing" + Environment.NewLine;
            if (MapsWithNameMissing("Boost limit map", newSymbols)) _message += "Boost limit map missing" + Environment.NewLine;

            if (_message == "") return true;
            return false;
        }
Exemple #3
0
        public IEDCFileParser GetParserForFile(string filename, bool isPrimaryFile)
        {
            IEDCFileParser parser   = null;
            EDCFileType    fileType = DetermineFileType(filename, isPrimaryFile);

            switch (fileType)
            {
            case EDCFileType.EDC15P:
                parser = new EDC15PFileParser();
                break;

            case EDCFileType.EDC15P6:
                parser = new EDC15P6FileParser();
                break;

            case EDCFileType.EDC15V:
                parser = new EDC15VFileParser();
                break;

            case EDCFileType.EDC15C:
                parser = new EDC15CFileParser();
                break;

            case EDCFileType.EDC15M:
                parser = new EDC15MFileParser();
                break;

            case EDCFileType.EDC16:
                parser = new EDC16FileParser();
                break;

            case EDCFileType.EDC17:
                parser = new EDC17FileParser();
                break;

            case EDCFileType.MSA15:     //?
            case EDCFileType.MSA12:
            case EDCFileType.MSA11:
                parser = new MSA15FileParser();
                break;

            case EDCFileType.MSA6:
                parser = new MSA6FileParser();
                break;
            }
            return(parser);
        }
Exemple #4
0
        public int[] readdatafromfileasint(string filename, int address, int length, EDCFileType type)
        {
            int[]      retval = new int[length];
            FileStream fsi1   = File.OpenRead(filename);

            while (address > fsi1.Length)
            {
                address -= (int)fsi1.Length;
            }
            BinaryReader br1 = new BinaryReader(fsi1);

            fsi1.Position = address;
            string temp = string.Empty;

            for (int i = 0; i < length; i++)
            {
                if (type != EDCFileType.EDC16)
                {
                    int iVal = Convert.ToInt32(br1.ReadByte());
                    iVal += Convert.ToInt32(br1.ReadByte()) * 256;
                    retval.SetValue(iVal, i);
                }
                else
                {
                    int iVal = Convert.ToInt32(br1.ReadByte()) * 256;
                    iVal += Convert.ToInt32(br1.ReadByte());
                    retval.SetValue(iVal, i);
                }
            }
            // little endian, reverse bytes
            //retval = reverseEndian(retval);
            fsi1.Flush();
            br1.Close();
            fsi1.Close();
            fsi1.Dispose();
            return(retval);
        }
Exemple #5
0
        public ChecksumResultDetails UpdateChecksum(string filename, bool verifyOnly)
        {
            byte[]                allBytes;
            ChecksumResult        res    = new ChecksumResult();;
            ChecksumResultDetails result = new ChecksumResultDetails();

            EDCFileType fileType = DetermineFileType(filename, false);

            switch (fileType)
            {
            case EDCFileType.EDC15P:
            case EDCFileType.EDC15P6:
                allBytes = File.ReadAllBytes(filename);
                res      = CalculateEDC15PChecksum(filename, allBytes, verifyOnly, out result);
                break;

            case EDCFileType.EDC15V:
                // EDC15VM+ is similar to EDC15P
                allBytes = File.ReadAllBytes(filename);
                res      = CalculateEDC15VMChecksum(filename, allBytes, verifyOnly, out result);
                break;

            case EDCFileType.EDC15C:
                //TODO: Implement EDC15C checksum routine here
                break;

            case EDCFileType.EDC15M:
                //TODO: Implement EDC15M checksum routine here
                break;

            case EDCFileType.EDC16:
                //TODO: Implement EDC16x checksum routine here
                break;

            case EDCFileType.EDC17:
                //TODO: Implement EDC17x checksum routine here
                break;

            case EDCFileType.MSA15:
            case EDCFileType.MSA12:
            case EDCFileType.MSA11:
                //TODO: Implement MSA15 checksum routine here

                // this should be Bosch TDI V3.1 (Version 2.04)

                /* result.TypeResult = ChecksumType.VAG_EDC15P_V41;
                 * allBytes = File.ReadAllBytes(filename);
                 * //allBytes = reverseEndian(allBytes);
                 * MSA15_checksum msa15chks = new MSA15_checksum();
                 *
                 * res = msa15chks.tdi41_checksum_search(allBytes, (uint)allBytes.Length, false);
                 * result.NumberChecksumsTotal = msa15chks.ChecksumsFound;
                 * result.NumberChecksumsFail = msa15chks.ChecksumsIncorrect;
                 * result.NumberChecksumsOk = msa15chks.ChecksumsFound - msa15chks.ChecksumsIncorrect;
                 * if (res == ChecksumResult.ChecksumOK)
                 * {
                 *   //Console.WriteLine("Checksum matched");
                 *   result.CalculationOk = true;
                 * }
                 * else if (res == ChecksumResult.ChecksumFail)
                 * {
                 *   Console.WriteLine("UpdateChecksum: Checksum failed " + filename);
                 *   if (!verifyOnly)
                 *   {
                 *       File.WriteAllBytes(filename, allBytes);
                 *       result.CalculationOk = true;
                 *       Console.WriteLine("UpdateChecksum: Checksum fixed");
                 *   }
                 *
                 * }*/
                break;

            case EDCFileType.MSA6:
                //TODO: Implement MSA6 checksum routine here
                break;
            }
            if (result.CalculationOk)
            {
                result.CalculationResult = ChecksumResult.ChecksumOK;
            }
            return(result);
        }
Exemple #6
0
        public void savedatatobinary(int address, int length, byte[] data, string filename, bool DoTransActionEntry, string note, EDCFileType type)
        {
            // depends on filetype (EDC16 is not reversed)
            if (type != EDCFileType.EDC16)
            {
                data = reverseEndian(data);
            }
            if (address > 0 && address < m_currentfilelength)
            {
                try
                {
                    byte[] beforedata = readdatafromfile(filename, address, length, type);

                    FileStream   fsi1 = File.OpenWrite(filename);
                    BinaryWriter bw1  = new BinaryWriter(fsi1);
                    fsi1.Position = address;
                    for (int i = 0; i < length; i++)
                    {
                        bw1.Write((byte)data.GetValue(i));
                    }
                    fsi1.Flush();
                    bw1.Close();
                    fsi1.Close();
                    fsi1.Dispose();

                    if (m_ProjectTransactionLog != null && DoTransActionEntry)
                    {
                        // depends on filetype (EDC16 is not reversed)
                        if (type != EDCFileType.EDC16)
                        {
                            data = reverseEndian(data);
                        }
                        TransactionEntry tentry = new TransactionEntry(DateTime.Now, address, length, beforedata, data, 0, 0, note);
                        m_ProjectTransactionLog.AddToTransactionLog(tentry);
                        if (m_CurrentWorkingProject != string.Empty)
                        {
                            m_ProjectLog.WriteLogbookEntry(LogbookEntryType.TransactionExecuted, GetSymbolNameByAddress(address) + " " + note);
                        }
                    }
                }
                catch (Exception E)
                {
                    frmInfoBox info = new frmInfoBox("Failed to write to binary. Is it read-only? Details: " + E.Message);
                }
            }
        }
Exemple #7
0
        public EDCFileType DetermineFileType(string fileName, bool isPrimaryFile)
        {
            byte[] allBytes    = File.ReadAllBytes(fileName);
            string boschnumber = ExtractBoschPartnumber(allBytes);
            //Console.WriteLine("Bosch number: " + boschnumber);
            partNumberConverter pnc  = new partNumberConverter();
            ECUInfo             info = pnc.ConvertPartnumber(boschnumber, allBytes.Length);

            if (info.EcuType.Contains("EDC15P-6"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC15P6;
                }
                return(EDCFileType.EDC15P6);
            }
            else if (info.EcuType.Contains("EDC15P"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC15P;
                }
                return(EDCFileType.EDC15P);
            }
            else if (info.EcuType.Contains("EDC15M"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC15M;
                }
                return(EDCFileType.EDC15M);
            }
            else if (info.EcuType.Contains("MSA15") || info.EcuType.Contains("EDC15V-5"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.MSA15;
                }
                return(EDCFileType.MSA15);
            }
            else if (info.EcuType.Contains("MSA12"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.MSA12;
                }
                return(EDCFileType.MSA12);
            }
            else if (info.EcuType.Contains("MSA11"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.MSA11;
                }
                return(EDCFileType.MSA11);
            }
            else if (info.EcuType.Contains("MSA6"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.MSA6;
                }
                return(EDCFileType.MSA6);
            }
            else if (info.EcuType.Contains("EDC15V"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC15V;
                }
                return(EDCFileType.EDC15V);
            }
            if (info.EcuType.Contains("EDC15C"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC15C;
                }
                return(EDCFileType.EDC15C);
            }
            else if (info.EcuType.Contains("EDC16"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC16;
                }
                return(EDCFileType.EDC16);
            }
            else if (info.EcuType.Contains("EDC17"))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC17;
                }
                return(EDCFileType.EDC17);
            }

            else if (IsEDC16Partnumber(boschnumber))
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC16;
                }
                return(EDCFileType.EDC16);
            }
            else if (boschnumber != string.Empty)
            {
                if (allBytes.Length == 1024 * 1024 * 2)
                {
                    if (isPrimaryFile)
                    {
                        m_currentFileType = EDCFileType.EDC17;
                    }
                    return(EDCFileType.EDC17);
                }
                else if (boschnumber.StartsWith("EDC17"))
                {
                    if (isPrimaryFile)
                    {
                        m_currentFileType = EDCFileType.EDC17;
                    }
                    return(EDCFileType.EDC17);
                }
                else
                {
                    if (isPrimaryFile)
                    {
                        m_currentFileType = EDCFileType.EDC15V;
                    }
                    return(EDCFileType.EDC15V);
                }
            }
            else
            {
                if (isPrimaryFile)
                {
                    m_currentFileType = EDCFileType.EDC16;
                }
                return(EDCFileType.EDC16); // default to EDC16???
            }
        }
Exemple #8
0
 public void savedatatobinary(int address, int length, byte[] data, string filename, bool DoTransActionEntry, EDCFileType type)
 {
     // depends on filetype (EDC16 is not reversed)
     if (type != EDCFileType.EDC16)
     {
         data = reverseEndian(data);
     }
     if (address > 0 && address < Tools.Instance.m_currentfilelength)
     {
         try
         {
             byte[]       beforedata = readdatafromfile(filename, address, length, type);
             FileStream   fsi1       = File.OpenWrite(filename);
             BinaryWriter bw1        = new BinaryWriter(fsi1);
             fsi1.Position = address;
             for (int i = 0; i < length; i++)
             {
                 bw1.Write((byte)data.GetValue(i));
             }
             fsi1.Flush();
             bw1.Close();
             fsi1.Close();
             fsi1.Dispose();
         }
         catch (Exception E)
         {
             // MessageBox.Show("Failed to write to binary. Is it read-only? Details: " + E.Message);
         }
     }
 }
Exemple #9
0
        public EDCFileType DetermineFileType(string fileName, bool isPrimaryFile)
        {
            byte[] allBytes = File.ReadAllBytes(fileName);
            string boschnumber = ExtractBoschPartnumber(allBytes);
            //Console.WriteLine("Bosch number: " + boschnumber);
            partNumberConverter pnc = new partNumberConverter();
            ECUInfo info = pnc.ConvertPartnumber(boschnumber, allBytes.Length);
            if (info.EcuType.Contains("EDC15P-6"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15P6;
                return EDCFileType.EDC15P6;
            }
            else if (info.EcuType.Contains("EDC15P"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15P;
                return EDCFileType.EDC15P;
            }
            else if (info.EcuType.Contains("EDC15M"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15M;
                return EDCFileType.EDC15M;
            }
            else if (info.EcuType.Contains("MSA15") || info.EcuType.Contains("EDC15V-5"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.MSA15;
                return EDCFileType.MSA15;
            }
            else if (info.EcuType.Contains("MSA12"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.MSA12;
                return EDCFileType.MSA12;
            }
            else if (info.EcuType.Contains("MSA11"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.MSA11;
                return EDCFileType.MSA11;
            }
            else if (info.EcuType.Contains("MSA6"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.MSA6;
                return EDCFileType.MSA6;
            }
            else if (info.EcuType.Contains("EDC15V"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15V;
                return EDCFileType.EDC15V;
            }
            if (info.EcuType.Contains("EDC15C"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15C;
                return EDCFileType.EDC15C;
            }
            else if (info.EcuType.Contains("EDC16"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC16;
                return EDCFileType.EDC16;
            }
            else if (info.EcuType.Contains("EDC17"))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC17;
                return EDCFileType.EDC17;
            }

            else if (IsEDC16Partnumber(boschnumber))
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC16;
                return EDCFileType.EDC16;
            }
            else if (boschnumber != string.Empty)
            {
                if (allBytes.Length == 1024 * 1024 * 2)
                {
                    if (isPrimaryFile) m_currentFileType = EDCFileType.EDC17;
                    return EDCFileType.EDC17;
                }
                else if (boschnumber.StartsWith("EDC17"))
                {
                    if (isPrimaryFile) m_currentFileType = EDCFileType.EDC17;
                    return EDCFileType.EDC17;
                }
                else
                {
                    if (isPrimaryFile) m_currentFileType = EDCFileType.EDC15V;
                    return EDCFileType.EDC15V;
                }
            }
            else
            {
                if (isPrimaryFile) m_currentFileType = EDCFileType.EDC16;
                return EDCFileType.EDC16; // default to EDC16???
            }
        }
Exemple #10
0
 public void savedatatobinary(int address, int length, byte[] data, string filename, bool DoTransActionEntry, EDCFileType type)
 {
     // depends on filetype (EDC16 is not reversed)
     if (type != EDCFileType.EDC16)
     {
         data = reverseEndian(data);
     }
     if (address > 0 && address < Tools.Instance.m_currentfilelength)
     {
         try
         {
             byte[] beforedata = readdatafromfile(filename, address, length, type);
             FileStream fsi1 = File.OpenWrite(filename);
             BinaryWriter bw1 = new BinaryWriter(fsi1);
             fsi1.Position = address;
             for (int i = 0; i < length; i++)
             {
                 bw1.Write((byte)data.GetValue(i));
             }
             fsi1.Flush();
             bw1.Close();
             fsi1.Close();
             fsi1.Dispose();
         }
         catch (Exception E)
         {
            // MessageBox.Show("Failed to write to binary. Is it read-only? Details: " + E.Message);
         }
     }
 }
Exemple #11
0
        public void savedatatobinary(int address, int length, byte[] data, string filename, bool DoTransActionEntry, string note, EDCFileType type)
        {
            // depends on filetype (EDC16 is not reversed)
            if (type != EDCFileType.EDC16)
            {
                data = reverseEndian(data);
            }
            if (address > 0 && address < m_currentfilelength)
            {
                try
                {
                    byte[] beforedata = readdatafromfile(filename, address, length, type);

                    FileStream fsi1 = File.OpenWrite(filename);
                    BinaryWriter bw1 = new BinaryWriter(fsi1);
                    fsi1.Position = address;
                    for (int i = 0; i < length; i++)
                    {
                        bw1.Write((byte)data.GetValue(i));
                    }
                    fsi1.Flush();
                    bw1.Close();
                    fsi1.Close();
                    fsi1.Dispose();

                    if (m_ProjectTransactionLog != null && DoTransActionEntry)
                    {
                        // depends on filetype (EDC16 is not reversed)
                        if (type != EDCFileType.EDC16)
                        {
                            data = reverseEndian(data);
                        }
                        TransactionEntry tentry = new TransactionEntry(DateTime.Now, address, length, beforedata, data, 0, 0, note);
                        m_ProjectTransactionLog.AddToTransactionLog(tentry);
                        if (m_CurrentWorkingProject != string.Empty)
                        {
                            m_ProjectLog.WriteLogbookEntry(LogbookEntryType.TransactionExecuted, GetSymbolNameByAddress(address) + " " + note);
                        }
                    }

                }
                catch (Exception E)
                {
                    frmInfoBox info = new frmInfoBox("Failed to write to binary. Is it read-only? Details: " + E.Message);
                }
            }
        }
Exemple #12
0
        public int[] readdatafromfileasint(string filename, int address, int length, EDCFileType type)
        {
            int[] retval = new int[length];
            FileStream fsi1 = File.OpenRead(filename);
            while (address > fsi1.Length) address -= (int)fsi1.Length;
            BinaryReader br1 = new BinaryReader(fsi1);
            fsi1.Position = address;
            string temp = string.Empty;

            for (int i = 0; i < length; i++)
            {
                if (type != EDCFileType.EDC16)
                {
                    int iVal = Convert.ToInt32(br1.ReadByte());
                    iVal += Convert.ToInt32(br1.ReadByte()) * 256;
                    retval.SetValue(iVal, i);
                }
                else
                {
                    int iVal = Convert.ToInt32(br1.ReadByte()) * 256;
                    iVal += Convert.ToInt32(br1.ReadByte());
                    retval.SetValue(iVal, i);
                }
            }
            // little endian, reverse bytes
            //retval = reverseEndian(retval);
            fsi1.Flush();
            br1.Close();
            fsi1.Close();
            fsi1.Dispose();
            return retval;
        }
Exemple #13
0
 public byte[] readdatafromfile(string filename, int address, int length, EDCFileType type)
 {
     byte[] retval = new byte[length];
     try
     {
         FileStream fsi1 = File.OpenRead(filename);
         while (address > fsi1.Length) address -= (int)fsi1.Length;
         BinaryReader br1 = new BinaryReader(fsi1);
         fsi1.Position = address;
         string temp = string.Empty;
         for (int i = 0; i < length; i++)
         {
             retval.SetValue(br1.ReadByte(), i);
         }
         // depends on filetype (EDC16 is not reversed)
         if (type != EDCFileType.EDC16)
         {
             retval = reverseEndian(retval);
         }
         fsi1.Flush();
         br1.Close();
         fsi1.Close();
         fsi1.Dispose();
     }
     catch (Exception E)
     {
         Console.WriteLine(E.Message);
     }
     return retval;
 }
Exemple #14
0
        private bool CheckMajorMapsPresent(SymbolCollection newSymbols, EDCFileType type, out string _message)
        {
            _message = string.Empty;
            if (type == EDCFileType.EDC15C || type == EDCFileType.EDC15M || type == EDCFileType.EDC16 || type == EDCFileType.EDC17)
            {
                return(false);
            }
            ;

            if (type == EDCFileType.EDC15P || type == EDCFileType.EDC15P6)
            {
                if (MapsWithNameMissing("Injector duration", newSymbols))
                {
                    _message += "Injector duration maps missing" + Environment.NewLine;
                }
                if (MapsWithNameMissing("Inverse driver wish", newSymbols))
                {
                    _message += "Inverse driver wish map missing" + Environment.NewLine;
                }
            }
            if (type == EDCFileType.EDC15P || type == EDCFileType.EDC15P6 || type == EDCFileType.EDC15V)
            {
                if (MapsWithNameMissing("MAF correction", newSymbols))
                {
                    _message += "MAF correction map missing" + Environment.NewLine;
                }
                if (MapsWithNameMissing("MAF linearization", newSymbols))
                {
                    _message += "MAF linearization map missing" + Environment.NewLine;
                }
                if (MapsWithNameMissing("MAP linearization", newSymbols))
                {
                    _message += "MAP linearization map missing" + Environment.NewLine;
                }
                if (MapsWithNameMissing("SOI limiter", newSymbols))
                {
                    _message += "SOI limiter missing" + Environment.NewLine;
                }
            }
            if (MapsWithNameMissing("Idle RPM", newSymbols))
            {
                _message += "Idle RPM map missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("EGR", newSymbols))
            {
                _message += "EGR maps missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("SVBL", newSymbols))
            {
                _message += "SVBL missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Torque limiter", newSymbols))
            {
                _message += "Torque limiter missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Smoke limiter", newSymbols))
            {
                _message += "Smoke limiter missing" + Environment.NewLine;
            }
            //if (MapsWithNameMissing("IQ by MAF limiter", newSymbols)) _message += "IQ by MAF limiter missing" + Environment.NewLine;
            if (MapsWithNameMissing("Start of injection", newSymbols))
            {
                _message += "Start of injection maps missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("N75 duty cycle", newSymbols))
            {
                _message += "N75 duty cycle map missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Boost target map", newSymbols))
            {
                _message += "Boost target map missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Driver wish", newSymbols))
            {
                _message += "Driver wish map missing" + Environment.NewLine;
            }
            if (MapsWithNameMissing("Boost limit map", newSymbols))
            {
                _message += "Boost limit map missing" + Environment.NewLine;
            }

            if (_message == "")
            {
                return(true);
            }
            return(false);
        }