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; }
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); }
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); }
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); }
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); } } }
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??? } }
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); } } }
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??? } }
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; }
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); }