Ejemplo n.º 1
0
        private void OnReadExternalFlashStarted(bool checkIfReadRequired, bool onlyReadRequiredSectors, bool shouldVerifyReadData, byte[] baseImage, MemoryLayout flashLayout, Operation.CompletedOperationDelegate operationCompletedDel)
        {
            var readImage = baseImage;

            if ((readImage == null) || (readImage.Length != flashLayout.Size))
            {
                readImage = new byte[flashLayout.Size];

                //fill the memory image with 0xFF because that is what blank data in the flash chip is
                for (int x = 0; x < readImage.Length; x++)
                {
                    readImage[x] = 0xFF;
                }
            }

            var sectorImages = MemoryUtils.SplitMemoryImageIntoSectors(readImage, flashLayout);

            var KWP2000CommViewModel = App.CommInterfaceViewModel as KWP2000Interface_ViewModel;

            var settings = new ReadExternalFlashOperation.ReadExternalFlashSettings();

            settings.CheckIfSectorReadRequired               = checkIfReadRequired;
            settings.OnlyReadNonMatchingSectors              = onlyReadRequiredSectors;
            settings.VerifyReadData                          = shouldVerifyReadData;
            settings.SecuritySettings.RequestSeed            = KWP2000CommViewModel.SeedRequest;
            settings.SecuritySettings.SupportSpecialKey      = KWP2000CommViewModel.ShouldSupportSpecialKey;
            settings.SecuritySettings.UseExtendedSeedRequest = KWP2000CommViewModel.ShouldUseExtendedSeedRequest;

            App.CurrentOperation = new ReadExternalFlashOperation(KWP2000CommViewModel.KWP2000CommInterface, KWP2000CommViewModel.DesiredBaudRates, settings, sectorImages);
            App.CurrentOperation.CompletedOperationEvent += operationCompletedDel;

            App.DisplayStatusMessage("Reading ECU flash memory.", StatusMessageType.USER);

            App.CurrentOperation.Start();
        }
Ejemplo n.º 2
0
        private void OnWriteExternalFlashStarted(byte[] flashMemoryImage, MemoryLayout flashMemoryLayout, Operation.CompletedOperationDelegate onOperationComplete, bool diffWrite, bool verify)
        {
            var KWP2000CommViewModel = App.CommInterfaceViewModel as KWP2000Interface_ViewModel;

            var settings = new WriteExternalFlashOperation.WriteExternalFlashSettings();

            settings.CheckIfWriteRequired                    = diffWrite;
            settings.OnlyWriteNonMatchingSectors             = diffWrite;
            settings.VerifyWrittenData                       = verify;
            settings.EraseEntireFlashAtOnce                  = false;
            settings.SecuritySettings.RequestSeed            = KWP2000CommViewModel.SeedRequest;
            settings.SecuritySettings.SupportSpecialKey      = KWP2000CommViewModel.ShouldSupportSpecialKey;
            settings.SecuritySettings.UseExtendedSeedRequest = KWP2000CommViewModel.ShouldUseExtendedSeedRequest;

            var sectorImages = MemoryUtils.SplitMemoryImageIntoSectors(flashMemoryImage, flashMemoryLayout);

            App.CurrentOperation = new WriteExternalFlashOperation(KWP2000CommViewModel.KWP2000CommInterface, KWP2000CommViewModel.DesiredBaudRates, settings, sectorImages);
            App.CurrentOperation.CompletedOperationEvent += onOperationComplete;

            App.OperationInProgress      = true;
            App.PercentOperationComplete = 0.0f;

            App.DisplayStatusMessage("Writing ECU flash memory.", StatusMessageType.USER);

            App.CurrentOperation.Start();
        }