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