diff --git a/DiscImageChef.Core/Devices/Scanning/ATA.cs b/DiscImageChef.Core/Devices/Scanning/ATA.cs index 27472b603..a98c1b94a 100644 --- a/DiscImageChef.Core/Devices/Scanning/ATA.cs +++ b/DiscImageChef.Core/Devices/Scanning/ATA.cs @@ -151,14 +151,12 @@ namespace DiscImageChef.Core.Devices.Scanning else results.A += blocksToRead; ScanTime?.Invoke(i, duration); - ScanSpeed?.Invoke(i, currentSpeed * 1024); mhddLog.Write(i, duration); ibgLog.Write(i, currentSpeed * 1024); } else { ScanUnreadable?.Invoke(i); - ScanSpeed?.Invoke(i, 0); results.Errored += blocksToRead; for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); @@ -172,7 +170,8 @@ namespace DiscImageChef.Core.Devices.Scanning double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds; if(elapsed < 1) continue; - currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + ScanSpeed?.Invoke(i, currentSpeed * 1024); sectorSpeedStart = 0; timeSpeedStart = DateTime.UtcNow; } @@ -250,14 +249,12 @@ namespace DiscImageChef.Core.Devices.Scanning else results.A += blocksToRead; ScanTime?.Invoke(currentBlock, duration); - ScanSpeed?.Invoke(currentBlock, currentSpeed * 1024); mhddLog.Write(currentBlock, duration); ibgLog.Write(currentBlock, currentSpeed * 1024); } else { ScanUnreadable?.Invoke(currentBlock); - ScanSpeed?.Invoke(currentBlock, 0); results.Errored += blocksToRead; results.UnreadableSectors.Add(currentBlock); mhddLog.Write(currentBlock, duration < 500 ? 65535 : duration); @@ -271,7 +268,8 @@ namespace DiscImageChef.Core.Devices.Scanning double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds; if(elapsed < 1) continue; - currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + ScanSpeed?.Invoke(currentBlock, currentSpeed * 1024); sectorSpeedStart = 0; timeSpeedStart = DateTime.UtcNow; } diff --git a/DiscImageChef.Core/Devices/Scanning/SCSI.cs b/DiscImageChef.Core/Devices/Scanning/SCSI.cs index 2767da9d9..5928da597 100644 --- a/DiscImageChef.Core/Devices/Scanning/SCSI.cs +++ b/DiscImageChef.Core/Devices/Scanning/SCSI.cs @@ -319,7 +319,6 @@ namespace DiscImageChef.Core.Devices.Scanning else results.A += blocksToRead; ScanTime?.Invoke(i, cmdDuration); - ScanSpeed?.Invoke(i, currentSpeed * 1024); mhddLog.Write(i, cmdDuration); ibgLog.Write(i, currentSpeed * 1024); } @@ -340,6 +339,7 @@ namespace DiscImageChef.Core.Devices.Scanning results.Errored += blocksToRead; for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); + ScanUnreadable?.Invoke(i); mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration); ibgLog.Write(i, 0); @@ -348,7 +348,6 @@ namespace DiscImageChef.Core.Devices.Scanning else { ScanUnreadable?.Invoke(i); - ScanSpeed?.Invoke(i, 0); results.Errored += blocksToRead; for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); @@ -363,7 +362,8 @@ namespace DiscImageChef.Core.Devices.Scanning double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds; if(elapsed < 1) continue; - currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + ScanSpeed?.Invoke(i, currentSpeed * 1024); sectorSpeedStart = 0; timeSpeedStart = DateTime.UtcNow; } @@ -416,7 +416,6 @@ namespace DiscImageChef.Core.Devices.Scanning else results.A += blocksToRead; ScanTime?.Invoke(i, cmdDuration); - ScanSpeed?.Invoke(i, currentSpeed * 1024); mhddLog.Write(i, cmdDuration); ibgLog.Write(i, currentSpeed * 1024); } @@ -424,7 +423,6 @@ namespace DiscImageChef.Core.Devices.Scanning else { ScanUnreadable?.Invoke(i); - ScanSpeed?.Invoke(i, 0); results.Errored += blocksToRead; for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); @@ -437,7 +435,8 @@ namespace DiscImageChef.Core.Devices.Scanning double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds; if(elapsed < 1) continue; - currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + ScanSpeed?.Invoke(i, currentSpeed * 1024); sectorSpeedStart = 0; timeSpeedStart = DateTime.UtcNow; } diff --git a/DiscImageChef.Core/Devices/Scanning/SecureDigital.cs b/DiscImageChef.Core/Devices/Scanning/SecureDigital.cs index 25c2f502f..c3133a9e9 100644 --- a/DiscImageChef.Core/Devices/Scanning/SecureDigital.cs +++ b/DiscImageChef.Core/Devices/Scanning/SecureDigital.cs @@ -182,14 +182,12 @@ namespace DiscImageChef.Core.Devices.Scanning else results.A += blocksToRead; ScanTime?.Invoke(i, duration); - ScanSpeed?.Invoke(i, currentSpeed * 1024); mhddLog.Write(i, duration); ibgLog.Write(i, currentSpeed * 1024); } else { ScanUnreadable?.Invoke(i); - ScanSpeed?.Invoke(i, 0); results.Errored += blocksToRead; for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); @@ -203,7 +201,8 @@ namespace DiscImageChef.Core.Devices.Scanning double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds; if(elapsed < 1) continue; - currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed); + ScanSpeed?.Invoke(i, currentSpeed * 1024); sectorSpeedStart = 0; timeSpeedStart = DateTime.UtcNow; }