diff --git a/Aaru.Core/Devices/Scanning/ATA.cs b/Aaru.Core/Devices/Scanning/ATA.cs index e833ee1a6..1c221bc2b 100644 --- a/Aaru.Core/Devices/Scanning/ATA.cs +++ b/Aaru.Core/Devices/Scanning/ATA.cs @@ -121,7 +121,6 @@ public sealed partial class MediaScan MhddLog mhddLog; IbgLog ibgLog; - double duration; if(ataReader.IsLba) { @@ -148,21 +147,20 @@ public sealed partial class MediaScan UpdateProgress?.Invoke(string.Format(Localization.Core.Reading_sector_0_of_1_2, i, results.Blocks, - ByteSize.FromMegabytes(currentSpeed) - .Per(_oneSecond) - .Humanize()), + ByteSize.FromMegabytes(currentSpeed).Per(_oneSecond).Humanize()), (long)i, (long)results.Blocks); _speedStopwatch.Restart(); - bool error = ataReader.ReadBlocks(out cmdBuf, i, blocksToRead, out duration, out _, out _); + bool error = ataReader.ReadBlocks(out cmdBuf, i, blocksToRead, out double _, out _, out _); _speedStopwatch.Stop(); - accumulatedSpeedMs += _speedStopwatch.ElapsedMilliseconds; + accumulatedSpeedMs += _speedStopwatch.Elapsed.TotalMilliseconds; accumulatedSpeedSectors += blocksToRead; + results.ProcessingTime += _speedStopwatch.Elapsed.TotalMilliseconds; if(!error) { - switch(duration) + switch(_speedStopwatch.Elapsed.TotalMilliseconds) { case >= 500: results.F += blocksToRead; @@ -190,8 +188,8 @@ public sealed partial class MediaScan break; } - ScanTime?.Invoke(i, duration); - mhddLog.Write(i, duration); + ScanTime?.Invoke(i, _speedStopwatch.Elapsed.TotalMilliseconds); + mhddLog.Write(i, _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, currentSpeed * 1024); } else @@ -201,7 +199,10 @@ public sealed partial class MediaScan for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); - mhddLog.Write(i, duration < 500 ? 65535 : duration); + mhddLog.Write(i, + _speedStopwatch.Elapsed.TotalMilliseconds < 500 + ? 65535 + : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, 0); } @@ -288,13 +289,14 @@ public sealed partial class MediaScan .Humanize())); _speedStopwatch.Restart(); - bool error = ataReader.ReadChs(out cmdBuf, cy, hd, sc, out duration, out _); - accumulatedSpeedMs += _speedStopwatch.ElapsedMilliseconds; + bool error = ataReader.ReadChs(out cmdBuf, cy, hd, sc, out double _, out _); + accumulatedSpeedMs += _speedStopwatch.Elapsed.TotalMilliseconds; accumulatedSpeedSectors++; + results.ProcessingTime += _speedStopwatch.Elapsed.TotalMilliseconds; if(!error) { - switch(duration) + switch(_speedStopwatch.Elapsed.TotalMilliseconds) { case >= 500: results.F += blocksToRead; @@ -322,8 +324,8 @@ public sealed partial class MediaScan break; } - ScanTime?.Invoke(currentBlock, duration); - mhddLog.Write(currentBlock, duration); + ScanTime?.Invoke(currentBlock, _speedStopwatch.Elapsed.TotalMilliseconds); + mhddLog.Write(currentBlock, _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(currentBlock, currentSpeed * 1024); } else @@ -331,7 +333,11 @@ public sealed partial class MediaScan ScanUnreadable?.Invoke(currentBlock); results.Errored++; results.UnreadableSectors.Add(currentBlock); - mhddLog.Write(currentBlock, duration < 500 ? 65535 : duration); + + mhddLog.Write(currentBlock, + _speedStopwatch.Elapsed.TotalMilliseconds < 500 + ? 65535 + : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(currentBlock, 0); } diff --git a/Aaru.Core/Devices/Scanning/SCSI.cs b/Aaru.Core/Devices/Scanning/SCSI.cs index 74a1c0b63..47b39574a 100644 --- a/Aaru.Core/Devices/Scanning/SCSI.cs +++ b/Aaru.Core/Devices/Scanning/SCSI.cs @@ -377,8 +377,6 @@ public sealed partial class MediaScan { if(_aborted) break; - double cmdDuration; - if(results.Blocks - i < blocksToRead) blocksToRead = (uint)(results.Blocks - i); if(currentSpeed > results.MaxSpeed && currentSpeed > 0) results.MaxSpeed = currentSpeed; @@ -411,20 +409,20 @@ public sealed partial class MediaScan MmcErrorField.None, MmcSubchannel.None, _dev.Timeout, - out cmdDuration); + out double _); } else - sense = scsiReader.ReadBlocks(out _, i, blocksToRead, out cmdDuration, out _, out _); + sense = scsiReader.ReadBlocks(out _, i, blocksToRead, out double _, out _, out _); _speedStopwatch.Stop(); - accumulatedSpeedMs += _speedStopwatch.ElapsedMilliseconds; + accumulatedSpeedMs += _speedStopwatch.Elapsed.TotalMilliseconds; accumulatedSpeedSectors += blocksToRead; - results.ProcessingTime += cmdDuration; + results.ProcessingTime += _speedStopwatch.Elapsed.TotalMilliseconds; if(!sense) { - switch(cmdDuration) + switch(_speedStopwatch.Elapsed.TotalMilliseconds) { case >= 500: results.F += blocksToRead; @@ -452,8 +450,8 @@ public sealed partial class MediaScan break; } - ScanTime?.Invoke(i, cmdDuration); - mhddLog.Write(i, cmdDuration); + ScanTime?.Invoke(i, _speedStopwatch.Elapsed.TotalMilliseconds); + mhddLog.Write(i, _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, currentSpeed * 1024); } else @@ -484,7 +482,11 @@ public sealed partial class MediaScan for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); ScanUnreadable?.Invoke(i); - mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration); + + mhddLog.Write(i, + _speedStopwatch.Elapsed.TotalMilliseconds < 500 + ? 65535 + : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, 0); } @@ -498,7 +500,10 @@ public sealed partial class MediaScan for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); - mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration); + mhddLog.Write(i, + _speedStopwatch.Elapsed.TotalMilliseconds < 500 + ? 65535 + : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, 0); } @@ -569,13 +574,13 @@ public sealed partial class MediaScan _speedStopwatch.Restart(); sense = scsiReader.ReadBlocks(out _, i, blocksToRead, out double cmdDuration, out _, out _); _speedStopwatch.Stop(); - accumulatedSpeedMs += _speedStopwatch.ElapsedMilliseconds; + accumulatedSpeedMs += _speedStopwatch.Elapsed.TotalMilliseconds; accumulatedSpeedSectors += blocksToRead; - results.ProcessingTime += cmdDuration; + results.ProcessingTime += _speedStopwatch.Elapsed.TotalMilliseconds; if(!sense && !_dev.Error) { - switch(cmdDuration) + switch(_speedStopwatch.Elapsed.TotalMilliseconds) { case >= 500: results.F += blocksToRead; @@ -603,8 +608,8 @@ public sealed partial class MediaScan break; } - ScanTime?.Invoke(i, cmdDuration); - mhddLog.Write(i, cmdDuration); + ScanTime?.Invoke(i, _speedStopwatch.Elapsed.TotalMilliseconds); + mhddLog.Write(i, _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, currentSpeed * 1024); } @@ -616,7 +621,7 @@ public sealed partial class MediaScan for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); - mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration); + mhddLog.Write(i, cmdDuration < 500 ? 65535 : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, 0); } diff --git a/Aaru.Core/Devices/Scanning/SecureDigital.cs b/Aaru.Core/Devices/Scanning/SecureDigital.cs index 8b95f9a87..b286eed6a 100644 --- a/Aaru.Core/Devices/Scanning/SecureDigital.cs +++ b/Aaru.Core/Devices/Scanning/SecureDigital.cs @@ -52,8 +52,7 @@ public sealed partial class MediaScan byte[] cmdBuf; bool sense; results.Blocks = 0; - const uint timeout = 5; - double duration; + const uint timeout = 5; const ushort sdProfile = 0x0001; ushort blocksToRead = 128; uint blockSize = 512; @@ -145,7 +144,7 @@ public sealed partial class MediaScan if(supportsCmd23) { - sense = _dev.ReadWithBlockCount(out cmdBuf, out _, 0, blockSize, 1, byteAddressed, timeout, out duration); + sense = _dev.ReadWithBlockCount(out cmdBuf, out _, 0, blockSize, 1, byteAddressed, timeout, out double _); if(sense || _dev.Error) { @@ -177,7 +176,7 @@ public sealed partial class MediaScan blocksToRead, byteAddressed, timeout, - out duration); + out double _); if(sense) blocksToRead /= 2; @@ -264,7 +263,7 @@ public sealed partial class MediaScan blockSize, byteAddressed, timeout, - out duration); + out double _); } else if(supportsCmd23) { @@ -275,10 +274,10 @@ public sealed partial class MediaScan blocksToRead, byteAddressed, timeout, - out duration); + out double _); } else if(_useBufferedReads) - error = _dev.BufferedOsRead(out cmdBuf, (long)(i * blockSize), blockSize * blocksToRead, out duration); + error = _dev.BufferedOsRead(out cmdBuf, (long)(i * blockSize), blockSize * blocksToRead, out double _); else { error = _dev.ReadMultipleUsingSingle(out cmdBuf, @@ -288,16 +287,17 @@ public sealed partial class MediaScan blocksToRead, byteAddressed, timeout, - out duration); + out double _); } _speedStopwatch.Stop(); - accumulatedSpeedMs += _speedStopwatch.ElapsedMilliseconds; + accumulatedSpeedMs += _speedStopwatch.Elapsed.TotalMilliseconds; accumulatedSpeedSectors += blocksToRead; + results.ProcessingTime += _speedStopwatch.Elapsed.TotalMilliseconds; if(!error) { - switch(duration) + switch(_speedStopwatch.Elapsed.TotalMilliseconds) { case >= 500: results.F += blocksToRead; @@ -325,8 +325,8 @@ public sealed partial class MediaScan break; } - ScanTime?.Invoke(i, duration); - mhddLog.Write(i, duration); + ScanTime?.Invoke(i, _speedStopwatch.Elapsed.TotalMilliseconds); + mhddLog.Write(i, _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, currentSpeed * 1024); } else @@ -336,7 +336,10 @@ public sealed partial class MediaScan for(ulong b = i; b < i + blocksToRead; b++) results.UnreadableSectors.Add(b); - mhddLog.Write(i, duration < 500 ? 65535 : duration); + mhddLog.Write(i, + _speedStopwatch.Elapsed.TotalMilliseconds < 500 + ? 65535 + : _speedStopwatch.Elapsed.TotalMilliseconds); ibgLog.Write(i, 0); }