From 2b771e6761e1f73b913b713374abb96ddcd6519f Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 19 Apr 2019 18:19:05 +0100 Subject: [PATCH] Add InitProgress and EndProgress events to ATA dumper. --- .idea/.idea.DiscImageChef/.idea/contentModel.xml | 1 + DiscImageChef.Core/Devices/Dumping/ATA.cs | 14 ++++++++------ DiscImageChef.Core/Devices/Dumping/Dump.cs | 2 ++ DiscImageChef/Commands/DumpMedia.cs | 2 ++ 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.idea/.idea.DiscImageChef/.idea/contentModel.xml b/.idea/.idea.DiscImageChef/.idea/contentModel.xml index 73748faa5..3ac368934 100644 --- a/.idea/.idea.DiscImageChef/.idea/contentModel.xml +++ b/.idea/.idea.DiscImageChef/.idea/contentModel.xml @@ -5,6 +5,7 @@ + diff --git a/DiscImageChef.Core/Devices/Dumping/ATA.cs b/DiscImageChef.Core/Devices/Dumping/ATA.cs index 910af896c..c7c4a124b 100644 --- a/DiscImageChef.Core/Devices/Dumping/ATA.cs +++ b/DiscImageChef.Core/Devices/Dumping/ATA.cs @@ -41,7 +41,6 @@ using DiscImageChef.CommonTypes.Enums; using DiscImageChef.CommonTypes.Extents; using DiscImageChef.CommonTypes.Interfaces; using DiscImageChef.CommonTypes.Metadata; -using DiscImageChef.Console; using DiscImageChef.Core.Logging; using DiscImageChef.Decoders.ATA; using DiscImageChef.Decoders.PCMCIA; @@ -257,6 +256,7 @@ namespace DiscImageChef.Core.Devices.Dumping start = DateTime.UtcNow; DateTime timeSpeedStart = DateTime.UtcNow; ulong sectorSpeedStart = 0; + InitProgress?.Invoke(); for(ulong i = resume.NextBlock; i < blocks; i += blocksToRead) { if(aborted) @@ -317,7 +317,7 @@ namespace DiscImageChef.Core.Devices.Dumping } end = DateTime.Now; - DicConsole.WriteLine(); + EndProgress?.Invoke(); mhddLog.Close(); ibgLog.Close(dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024, blockSize * (double)(blocks + 1) / 1024 / @@ -342,6 +342,7 @@ namespace DiscImageChef.Core.Devices.Dumping dumpLog.WriteLine("Trimming bad sectors"); ulong[] tmpArray = resume.BadBlocks.ToArray(); + InitProgress?.Invoke(); foreach(ulong badSector in tmpArray) { if(aborted) @@ -365,7 +366,7 @@ namespace DiscImageChef.Core.Devices.Dumping outputPlugin.WriteSector(cmdBuf, badSector); } - DicConsole.WriteLine(); + EndProgress?.Invoke(); end = DateTime.UtcNow; UpdateStatus?.Invoke($"Trimmming finished in {(end - start).TotalSeconds} seconds."); dumpLog.WriteLine("Trimmming finished in {0} seconds.", (end - start).TotalSeconds); @@ -380,6 +381,7 @@ namespace DiscImageChef.Core.Devices.Dumping repeatRetryLba: ulong[] tmpArray = resume.BadBlocks.ToArray(); + InitProgress?.Invoke(); foreach(ulong badSector in tmpArray) { if(aborted) @@ -417,7 +419,7 @@ namespace DiscImageChef.Core.Devices.Dumping goto repeatRetryLba; } - DicConsole.WriteLine(); + EndProgress?.Invoke(); } #endregion Error handling LBA @@ -433,6 +435,7 @@ namespace DiscImageChef.Core.Devices.Dumping start = DateTime.UtcNow; DateTime timeSpeedStart = DateTime.UtcNow; ulong sectorSpeedStart = 0; + InitProgress?.Invoke(); for(ushort cy = 0; cy < cylinders; cy++) { for(byte hd = 0; hd < heads; hd++) @@ -497,7 +500,7 @@ namespace DiscImageChef.Core.Devices.Dumping } end = DateTime.Now; - DicConsole.WriteLine(); + EndProgress?.Invoke(); mhddLog.Close(); ibgLog.Close(dev, blocks, blockSize, (end - start).TotalSeconds, currentSpeed * 1024, blockSize * (double)(blocks + 1) / 1024 / @@ -665,7 +668,6 @@ namespace DiscImageChef.Core.Devices.Dumping filesystem.start); } - DicConsole.WriteLine(); string xmlDskTyp, xmlDskSubTyp; if(dev.IsCompactFlash) CommonTypes.Metadata.MediaType.MediaTypeToString(MediaType.CompactFlash, out xmlDskTyp, diff --git a/DiscImageChef.Core/Devices/Dumping/Dump.cs b/DiscImageChef.Core/Devices/Dumping/Dump.cs index 5ed0bafe6..27ad04c35 100644 --- a/DiscImageChef.Core/Devices/Dumping/Dump.cs +++ b/DiscImageChef.Core/Devices/Dumping/Dump.cs @@ -2,6 +2,8 @@ namespace DiscImageChef.Core.Devices.Dumping { public partial class Dump { + public event EndProgressHandler EndProgress; + public event InitProgressHandler InitProgress; public event UpdateStatusHandler UpdateStatus; public event ErrorMessageHandler ErrorMessage; public event ErrorMessageHandler StoppingErrorMessage; diff --git a/DiscImageChef/Commands/DumpMedia.cs b/DiscImageChef/Commands/DumpMedia.cs index 969eb5e3d..c26ff8a0c 100644 --- a/DiscImageChef/Commands/DumpMedia.cs +++ b/DiscImageChef/Commands/DumpMedia.cs @@ -301,6 +301,8 @@ namespace DiscImageChef.Commands dumper.StoppingErrorMessage += Progress.ErrorMessage; dumper.UpdateProgress += Progress.UpdateProgress; dumper.PulseProgress += Progress.PulseProgress; + dumper.InitProgress += Progress.InitProgress; + dumper.EndProgress += Progress.EndProgress; if(dev.IsUsb && dev.UsbVendorId == 0x054C && (dev.UsbProductId == 0x01C8 || dev.UsbProductId == 0x01C9 || dev.UsbProductId == 0x02D2))