From 49144eeb0131e986751f5330d1ba7898cc4d9a01 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 22 Dec 2017 02:04:18 +0000 Subject: [PATCH] REFACTOR: All refactor in DiscImageChef.Decoders. --- .../Devices/Dumping/CompactDisc.cs | 14 +- DiscImageChef.Core/Devices/ReaderATA.cs | 120 ++--- DiscImageChef.Core/Devices/Report/ATA.cs | 140 +++--- DiscImageChef.Decoders/ATA/Identify.cs | 35 +- DiscImageChef.Decoders/ATA/Registers.cs | 102 ++-- DiscImageChef.Decoders/Blu-ray/BCA.cs | 5 + DiscImageChef.Decoders/Blu-ray/Cartridge.cs | 6 + DiscImageChef.Decoders/Blu-ray/DDS.cs | 5 + DiscImageChef.Decoders/Blu-ray/DI.cs | 11 +- DiscImageChef.Decoders/Blu-ray/Spare.cs | 5 + DiscImageChef.Decoders/CD/ATIP.cs | 19 +- DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs | 5 + DiscImageChef.Decoders/CD/Enums.cs | 7 +- DiscImageChef.Decoders/CD/FullTOC.cs | 66 +-- DiscImageChef.Decoders/CD/PMA.cs | 18 +- DiscImageChef.Decoders/CD/Sector.cs | 4 + DiscImageChef.Decoders/CD/Session.cs | 37 +- DiscImageChef.Decoders/CD/TOC.cs | 39 +- DiscImageChef.Decoders/DVD/AACS.cs | 5 + DiscImageChef.Decoders/DVD/ADIP.cs | 5 + DiscImageChef.Decoders/DVD/BCA.cs | 5 + DiscImageChef.Decoders/DVD/CPRM.cs | 5 + DiscImageChef.Decoders/DVD/CSS&CPRM.cs | 30 +- DiscImageChef.Decoders/DVD/Cartridge.cs | 42 +- DiscImageChef.Decoders/DVD/DDS.cs | 14 +- DiscImageChef.Decoders/DVD/DMI.cs | 5 + DiscImageChef.Decoders/DVD/Enums.cs | 13 + DiscImageChef.Decoders/DVD/Layers.cs | 5 + DiscImageChef.Decoders/DVD/PFI.cs | 4 + DiscImageChef.Decoders/DVD/PRI.cs | 5 + DiscImageChef.Decoders/DVD/RMD.cs | 5 + DiscImageChef.Decoders/DVD/Spare.cs | 34 +- DiscImageChef.Decoders/DVD/UDI.cs | 5 + DiscImageChef.Decoders/Floppy/Amiga.cs | 4 + DiscImageChef.Decoders/Floppy/Apple2.cs | 71 ++- DiscImageChef.Decoders/Floppy/AppleSony.cs | 84 ++-- DiscImageChef.Decoders/Floppy/Commodore.cs | 4 + DiscImageChef.Decoders/Floppy/Enums.cs | 5 + DiscImageChef.Decoders/Floppy/ISO.cs | 4 + .../Floppy/Perpendicular.cs | 4 + DiscImageChef.Decoders/Floppy/System34.cs | 4 + DiscImageChef.Decoders/Floppy/System3740.cs | 4 + DiscImageChef.Decoders/LisaTag.cs | 220 ++++----- DiscImageChef.Decoders/MMC/CID.cs | 41 +- DiscImageChef.Decoders/MMC/CSD.cs | 94 ++-- DiscImageChef.Decoders/MMC/ExtendedCSD.cs | 10 +- DiscImageChef.Decoders/MMC/OCR.cs | 61 +-- DiscImageChef.Decoders/MMC/VendorString.cs | 6 +- DiscImageChef.Decoders/PCMCIA/CIS.cs | 81 ++-- DiscImageChef.Decoders/PCMCIA/Enums.cs | 6 + DiscImageChef.Decoders/PCMCIA/Types.cs | 70 +++ DiscImageChef.Decoders/PCMCIA/VendorCode.cs | 3 + .../SCSI/DiscStructureCapabilities.cs | 15 +- DiscImageChef.Decoders/SCSI/EVPD.cs | 442 +++++++++--------- DiscImageChef.Decoders/SCSI/Enums.cs | 10 + DiscImageChef.Decoders/SCSI/Inquiry.cs | 4 + DiscImageChef.Decoders/SCSI/MMC/AACS.cs | 10 +- DiscImageChef.Decoders/SCSI/MMC/CPRM.cs | 5 + .../SCSI/MMC/DiscInformation.cs | 20 +- DiscImageChef.Decoders/SCSI/MMC/Enums.cs | 12 + DiscImageChef.Decoders/SCSI/MMC/Features.cs | 265 +++++++++-- DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs | 5 + .../SCSI/MMC/WriteProtect.cs | 5 + DiscImageChef.Decoders/SCSI/Modes/00_SFF.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/01.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/01_MMC.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/02.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/03.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/04.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/05.cs | 34 +- DiscImageChef.Decoders/SCSI/Modes/06.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/07.cs | 5 + DiscImageChef.Decoders/SCSI/Modes/07_MMC.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/08.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/0A.cs | 8 +- DiscImageChef.Decoders/SCSI/Modes/0B.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/0D.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/0E.cs | 9 +- DiscImageChef.Decoders/SCSI/Modes/0F.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/10.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/10_SSC.cs | 14 +- DiscImageChef.Decoders/SCSI/Modes/11.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/12_13_14.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/1A.cs | 8 +- DiscImageChef.Decoders/SCSI/Modes/1B.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/1C.cs | 8 +- DiscImageChef.Decoders/SCSI/Modes/1C_SFF.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/1D.cs | 4 + .../SCSI/Modes/21_Certance.cs | 4 + .../SCSI/Modes/22_Certance.cs | 18 +- DiscImageChef.Decoders/SCSI/Modes/24_IBM.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/2A.cs | 38 +- DiscImageChef.Decoders/SCSI/Modes/2F_IBM.cs | 35 +- DiscImageChef.Decoders/SCSI/Modes/30_Apple.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/3B_HP.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/3C_HP.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/3D_HP.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/3D_IBM.cs | 4 + .../SCSI/Modes/3E_Fujitsu.cs | 5 + DiscImageChef.Decoders/SCSI/Modes/3E_HP.cs | 7 +- DiscImageChef.Decoders/SCSI/Modes/Headers.cs | 4 + DiscImageChef.Decoders/SCSI/Modes/Mode10.cs | 23 +- DiscImageChef.Decoders/SCSI/Modes/Mode6.cs | 15 +- DiscImageChef.Decoders/SCSI/Modes/Structs.cs | 5 + .../SCSI/SSC/BlockLimits.cs | 21 +- .../SCSI/SSC/DensitySupport.cs | 72 +-- DiscImageChef.Decoders/SCSI/Sense.cs | 101 ++-- DiscImageChef.Decoders/SCSI/Types.cs | 4 + DiscImageChef.Decoders/SCSI/VendorString.cs | 6 +- DiscImageChef.Decoders/SecureDigital/CID.cs | 38 +- DiscImageChef.Decoders/SecureDigital/CSD.cs | 69 +-- DiscImageChef.Decoders/SecureDigital/OCR.cs | 51 +- DiscImageChef.Decoders/SecureDigital/SCR.cs | 46 +- .../SecureDigital/VendorString.cs | 6 +- DiscImageChef.Decoders/Sega/CD.cs | 10 +- DiscImageChef.Decoders/Sega/Dreamcast.cs | 7 +- DiscImageChef.Decoders/Sega/Saturn.cs | 7 +- DiscImageChef.Decoders/Xbox/DMI.cs | 51 +- DiscImageChef.Decoders/Xbox/SS.cs | 129 ++--- DiscImageChef.Devices/Command.cs | 22 +- .../Device/AtaCommands/Ata28.cs | 130 +++--- .../Device/AtaCommands/Ata48.cs | 108 ++--- .../Device/AtaCommands/AtaCHS.cs | 102 ++-- .../Device/AtaCommands/Atapi.cs | 12 +- .../Device/AtaCommands/Cfa.cs | 38 +- .../Device/AtaCommands/MCPT.cs | 12 +- .../Device/AtaCommands/Smart.cs | 102 ++-- DiscImageChef.Devices/Device/Commands.cs | 6 +- DiscImageChef.Devices/Device/Constructor.cs | 2 +- DiscImageChef.Devices/FreeBSD/Command.cs | 118 ++--- DiscImageChef.Devices/Linux/Command.cs | 116 ++--- DiscImageChef.Devices/Windows/Command.cs | 200 ++++---- DiscImageChef.DiscImages/CloneCD.cs | 4 +- DiscImageChef.Filesystems/LisaFS/Dir.cs | 6 +- DiscImageChef.Filesystems/LisaFS/Extent.cs | 4 +- DiscImageChef.Filesystems/LisaFS/File.cs | 8 +- DiscImageChef.Filesystems/LisaFS/Info.cs | 12 +- DiscImageChef.Filesystems/LisaFS/Super.cs | 6 +- DiscImageChef.Tests.Devices/ATA/Ata28.cs | 16 +- DiscImageChef.Tests.Devices/ATA/Ata48.cs | 14 +- DiscImageChef.Tests.Devices/ATA/AtaCHS.cs | 12 +- DiscImageChef.Tests.Devices/ATA/Atapi.cs | 2 +- DiscImageChef.Tests.Devices/ATA/Cfa.cs | 6 +- DiscImageChef.Tests.Devices/ATA/MCPT.cs | 2 +- DiscImageChef.Tests.Devices/ATA/Smart.cs | 16 +- .../DecodeATARegisters.cs | 64 +-- DiscImageChef/Commands/DeviceInfo.cs | 46 +- DiscImageChef/Commands/MediaInfo.cs | 16 +- 148 files changed, 2606 insertions(+), 1939 deletions(-) diff --git a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs index 3a82a195..edf71680 100644 --- a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs +++ b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs @@ -166,12 +166,12 @@ namespace DiscImageChef.Core.Devices.Dumping foreach(FullTOC.TrackDataDescriptor track in toc.Value.TrackDescriptors) { - if(track.TNO == 1 && ((TOC_CONTROL)(track.CONTROL & 0x0D) == TOC_CONTROL.DataTrack || - (TOC_CONTROL)(track.CONTROL & 0x0D) == - TOC_CONTROL.DataTrackIncremental)) allFirstSessionTracksAreAudio &= firstTrackLastSession != 1; + if(track.TNO == 1 && ((TocControl)(track.CONTROL & 0x0D) == TocControl.DataTrack || + (TocControl)(track.CONTROL & 0x0D) == + TocControl.DataTrackIncremental)) allFirstSessionTracksAreAudio &= firstTrackLastSession != 1; - if((TOC_CONTROL)(track.CONTROL & 0x0D) == TOC_CONTROL.DataTrack || - (TOC_CONTROL)(track.CONTROL & 0x0D) == TOC_CONTROL.DataTrackIncremental) + if((TocControl)(track.CONTROL & 0x0D) == TocControl.DataTrack || + (TocControl)(track.CONTROL & 0x0D) == TocControl.DataTrackIncremental) { hasDataTrack = true; allFirstSessionTracksAreAudio &= track.TNO >= firstTrackLastSession; @@ -265,8 +265,8 @@ namespace DiscImageChef.Core.Devices.Dumping { Sequence = new TrackSequenceType {Session = trk.SessionNumber, TrackNumber = trk.POINT} }; - if((TOC_CONTROL)(trk.CONTROL & 0x0D) == TOC_CONTROL.DataTrack || - (TOC_CONTROL)(trk.CONTROL & 0x0D) == TOC_CONTROL.DataTrackIncremental) + if((TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrack || + (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrackIncremental) track.TrackType1 = TrackTypeTrackType.mode1; else track.TrackType1 = TrackTypeTrackType.audio; if(trk.PHOUR > 0) diff --git a/DiscImageChef.Core/Devices/ReaderATA.cs b/DiscImageChef.Core/Devices/ReaderATA.cs index 7c69ffd8..355760a2 100644 --- a/DiscImageChef.Core/Devices/ReaderATA.cs +++ b/DiscImageChef.Core/Devices/ReaderATA.cs @@ -103,33 +103,33 @@ namespace DiscImageChef.Core.Devices bool AtaFindReadCommand() { - bool sense = dev.Read(out byte[] cmdBuf, out AtaErrorRegistersCHS errorChs, false, 0, 0, 1, 1, timeout, out _); - ataRead = !sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && cmdBuf.Length > 0; + bool sense = dev.Read(out byte[] cmdBuf, out AtaErrorRegistersChs errorChs, false, 0, 0, 1, 1, timeout, out _); + ataRead = !sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && cmdBuf.Length > 0; sense = dev.Read(out cmdBuf, out errorChs, true, 0, 0, 1, 1, timeout, out _); - ataReadRetry = !sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && cmdBuf.Length > 0; + ataReadRetry = !sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && cmdBuf.Length > 0; sense = dev.ReadDma(out cmdBuf, out errorChs, false, 0, 0, 1, 1, timeout, out _); - ataReadDma = !sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && cmdBuf.Length > 0; + ataReadDma = !sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && cmdBuf.Length > 0; sense = dev.ReadDma(out cmdBuf, out errorChs, true, 0, 0, 1, 1, timeout, out _); - ataReadDmaRetry = !sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && cmdBuf.Length > 0; + ataReadDmaRetry = !sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && cmdBuf.Length > 0; - sense = dev.Read(out cmdBuf, out AtaErrorRegistersLBA28 errorLba, false, 0, 1, timeout, out _); - ataReadLba = !sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0; + sense = dev.Read(out cmdBuf, out AtaErrorRegistersLba28 errorLba, false, 0, 1, timeout, out _); + ataReadLba = !sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0; sense = dev.Read(out cmdBuf, out errorLba, true, 0, 1, timeout, out _); - ataReadRetryLba = !sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0; + ataReadRetryLba = !sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0; sense = dev.ReadDma(out cmdBuf, out errorLba, false, 0, 1, timeout, out _); - ataReadDmaLba = !sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0; + ataReadDmaLba = !sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0; sense = dev.ReadDma(out cmdBuf, out errorLba, true, 0, 1, timeout, out _); - ataReadDmaRetryLba = !sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0; + ataReadDmaRetryLba = !sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0; - sense = dev.Read(out cmdBuf, out AtaErrorRegistersLBA48 errorLba48, 0, 1, timeout, out _); - ataReadLba48 = !sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && cmdBuf.Length > 0; + sense = dev.Read(out cmdBuf, out AtaErrorRegistersLba48 errorLba48, 0, 1, timeout, out _); + ataReadLba48 = !sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && cmdBuf.Length > 0; sense = dev.ReadDma(out cmdBuf, out errorLba48, 0, 1, timeout, out _); - ataReadDmaLba48 = !sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && cmdBuf.Length > 0; + ataReadDmaLba48 = !sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && cmdBuf.Length > 0; sense = dev.Seek(out errorChs, 0, 0, 1, timeout, out _); - ataSeek = !sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0; + ataSeek = !sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0; sense = dev.Seek(out errorLba, 0, timeout, out _); - ataSeekLba = !sense && (errorLba.status & 0x27) == 0 && errorChs.error == 0; + ataSeekLba = !sense && (errorLba.Status & 0x27) == 0 && errorChs.Error == 0; if(IsLba) { @@ -216,39 +216,39 @@ namespace DiscImageChef.Core.Devices { byte[] cmdBuf; bool sense; - AtaErrorRegistersLBA48 errorLba48; + AtaErrorRegistersLba48 errorLba48; if(ataReadDmaLba48) { sense = dev.ReadDma(out cmdBuf, out errorLba48, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && cmdBuf.Length > 0); } else if(ataReadLba48) { sense = dev.Read(out cmdBuf, out errorLba48, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && cmdBuf.Length > 0); } else { - AtaErrorRegistersLBA28 errorLba; + AtaErrorRegistersLba28 errorLba; if(ataReadDmaRetryLba) { sense = dev.ReadDma(out cmdBuf, out errorLba, true, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0); } else if(ataReadDmaLba) { sense = dev.ReadDma(out cmdBuf, out errorLba, false, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0); } else if(ataReadRetryLba) { sense = dev.Read(out cmdBuf, out errorLba, true, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0); } else if(ataReadLba) { sense = dev.Read(out cmdBuf, out errorLba, false, 0, (byte)BlocksToRead, timeout, out _); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && cmdBuf.Length > 0); + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && cmdBuf.Length > 0); } } @@ -268,8 +268,8 @@ namespace DiscImageChef.Core.Devices { bool error = true; bool sense; - AtaErrorRegistersLBA28 errorLba; - AtaErrorRegistersLBA48 errorLba48; + AtaErrorRegistersLba28 errorLba; + AtaErrorRegistersLba48 errorLba48; byte status = 0, errorByte = 0; buffer = null; duration = 0; @@ -277,44 +277,44 @@ namespace DiscImageChef.Core.Devices if(ataReadDmaLba48) { sense = dev.ReadDma(out buffer, out errorLba48, block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && buffer.Length > 0); - status = errorLba48.status; - errorByte = errorLba48.error; + error = !(!sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && buffer.Length > 0); + status = errorLba48.Status; + errorByte = errorLba48.Error; } else if(ataReadLba48) { sense = dev.Read(out buffer, out errorLba48, block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba48.status & 0x27) == 0 && errorLba48.error == 0 && buffer.Length > 0); - status = errorLba48.status; - errorByte = errorLba48.error; + error = !(!sense && (errorLba48.Status & 0x27) == 0 && errorLba48.Error == 0 && buffer.Length > 0); + status = errorLba48.Status; + errorByte = errorLba48.Error; } else if(ataReadDmaRetryLba) { sense = dev.ReadDma(out buffer, out errorLba, true, (uint)block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && buffer.Length > 0); - status = errorLba.status; - errorByte = errorLba.error; + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && buffer.Length > 0); + status = errorLba.Status; + errorByte = errorLba.Error; } else if(ataReadDmaLba) { sense = dev.ReadDma(out buffer, out errorLba, false, (uint)block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && buffer.Length > 0); - status = errorLba.status; - errorByte = errorLba.error; + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && buffer.Length > 0); + status = errorLba.Status; + errorByte = errorLba.Error; } else if(ataReadRetryLba) { sense = dev.Read(out buffer, out errorLba, true, (uint)block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && buffer.Length > 0); - status = errorLba.status; - errorByte = errorLba.error; + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && buffer.Length > 0); + status = errorLba.Status; + errorByte = errorLba.Error; } else if(ataReadLba) { sense = dev.Read(out buffer, out errorLba, false, (uint)block, (byte)count, timeout, out duration); - error = !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0 && buffer.Length > 0); - status = errorLba.status; - errorByte = errorLba.error; + error = !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0 && buffer.Length > 0); + status = errorLba.Status; + errorByte = errorLba.Error; } if(error) DicConsole.DebugWriteLine("ATA Reader", "ATA ERROR: {0} STATUS: {1}", errorByte, status); @@ -326,7 +326,7 @@ namespace DiscImageChef.Core.Devices { bool error = true; bool sense; - AtaErrorRegistersCHS errorChs; + AtaErrorRegistersChs errorChs; byte status = 0, errorByte = 0; buffer = null; duration = 0; @@ -334,30 +334,30 @@ namespace DiscImageChef.Core.Devices if(ataReadDmaRetry) { sense = dev.ReadDma(out buffer, out errorChs, true, cylinder, head, sectir, 1, timeout, out duration); - error = !(!sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && buffer.Length > 0); - status = errorChs.status; - errorByte = errorChs.error; + error = !(!sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && buffer.Length > 0); + status = errorChs.Status; + errorByte = errorChs.Error; } else if(ataReadDma) { sense = dev.ReadDma(out buffer, out errorChs, false, cylinder, head, sectir, 1, timeout, out duration); - error = !(!sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && buffer.Length > 0); - status = errorChs.status; - errorByte = errorChs.error; + error = !(!sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && buffer.Length > 0); + status = errorChs.Status; + errorByte = errorChs.Error; } else if(ataReadRetry) { sense = dev.Read(out buffer, out errorChs, true, cylinder, head, sectir, 1, timeout, out duration); - error = !(!sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && buffer.Length > 0); - status = errorChs.status; - errorByte = errorChs.error; + error = !(!sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && buffer.Length > 0); + status = errorChs.Status; + errorByte = errorChs.Error; } else if(ataRead) { sense = dev.Read(out buffer, out errorChs, false, cylinder, head, sectir, 1, timeout, out duration); - error = !(!sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0 && buffer.Length > 0); - status = errorChs.status; - errorByte = errorChs.error; + error = !(!sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0 && buffer.Length > 0); + status = errorChs.Status; + errorByte = errorChs.Error; } if(error) DicConsole.DebugWriteLine("ATA Reader", "ATA ERROR: {0} STATUS: {1}", errorByte, status); @@ -367,14 +367,14 @@ namespace DiscImageChef.Core.Devices bool AtaSeek(ulong block, out double duration) { - bool sense = dev.Seek(out AtaErrorRegistersLBA28 errorLba, (uint)block, timeout, out duration); - return !(!sense && (errorLba.status & 0x27) == 0 && errorLba.error == 0); + bool sense = dev.Seek(out AtaErrorRegistersLba28 errorLba, (uint)block, timeout, out duration); + return !(!sense && (errorLba.Status & 0x27) == 0 && errorLba.Error == 0); } bool AtaSeekChs(ushort cylinder, byte head, byte sector, out double duration) { - bool sense = dev.Seek(out AtaErrorRegistersCHS errorChs, cylinder, head, sector, timeout, out duration); - return !(!sense && (errorChs.status & 0x27) == 0 && errorChs.error == 0); + bool sense = dev.Seek(out AtaErrorRegistersChs errorChs, cylinder, head, sector, timeout, out duration); + return !(!sense && (errorChs.Status & 0x27) == 0 && errorChs.Error == 0); } } } \ No newline at end of file diff --git a/DiscImageChef.Core/Devices/Report/ATA.cs b/DiscImageChef.Core/Devices/Report/ATA.cs index b559b1aa..372c3658 100644 --- a/DiscImageChef.Core/Devices/Report/ATA.cs +++ b/DiscImageChef.Core/Devices/Report/ATA.cs @@ -681,13 +681,13 @@ namespace DiscImageChef.Core.Devices.Report bool sense; DicConsole.WriteLine("Trying READ SECTOR(S) in CHS mode..."); - sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersCHS errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); + sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersChs errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); mediaTest.SupportsRead = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorschs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -696,11 +696,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in CHS mode..."); sense = dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, TIMEOUT, out _); mediaTest.SupportsReadRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorsretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -710,11 +710,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); mediaTest.SupportsReadDma = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmachs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -723,11 +723,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA RETRY in CHS mode..."); sense = dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, TIMEOUT, out _); mediaTest.SupportsReadDmaRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmaretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -736,19 +736,19 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying SEEK in CHS mode..."); sense = dev.Seek(out errorChs, 0, 0, 1, TIMEOUT, out _); mediaTest.SupportsSeek = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.status, errorChs.error); + errorChs.Status, errorChs.Error); DicConsole.WriteLine("Trying READ SECTOR(S) in LBA mode..."); - sense = dev.Read(out readBuf, out AtaErrorRegistersLBA28 errorLba, false, 0, 1, TIMEOUT, out _); + sense = dev.Read(out readBuf, out AtaErrorRegistersLba28 errorLba, false, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectors", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -757,11 +757,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in LBA mode..."); sense = dev.Read(out readBuf, out errorLba, true, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorsretry", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -770,11 +770,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA in LBA mode..."); sense = dev.ReadDma(out readBuf, out errorLba, false, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadDmaLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdma", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -783,11 +783,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA RETRY in LBA mode..."); sense = dev.ReadDma(out readBuf, out errorLba, true, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadDmaRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmaretry", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -796,19 +796,19 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying SEEK in LBA mode..."); sense = dev.Seek(out errorLba, 0, TIMEOUT, out _); mediaTest.SupportsSeekLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.status, errorChs.error); + errorChs.Status, errorChs.Error); DicConsole.WriteLine("Trying READ SECTOR(S) in LBA48 mode..."); - sense = dev.Read(out readBuf, out AtaErrorRegistersLBA48 errorLba48, 0, 1, TIMEOUT, out _); + sense = dev.Read(out readBuf, out AtaErrorRegistersLba48 errorLba48, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadLba48 = - !sense && (errorLba48.status & 0x01) != 0x01 && errorLba48.error == 0 && + !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectors48", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -817,11 +817,11 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA in LBA48 mode..."); sense = dev.ReadDma(out readBuf, out errorLba48, 0, 1, TIMEOUT, out _); mediaTest.SupportsReadDmaLba48 = - !sense && (errorLba48.status & 0x01) != 0x01 && errorLba48.error == 0 && + !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdma48", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -831,11 +831,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorChs, false, 0, 0, 1, mediaTest.LongBlockSize, TIMEOUT, out _); mediaTest.SupportsReadLong = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongchs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -845,11 +845,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, mediaTest.LongBlockSize, TIMEOUT, out _); mediaTest.SupportsReadLongRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongretrychs", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -859,11 +859,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorLba, false, 0, mediaTest.LongBlockSize, TIMEOUT, out _); mediaTest.SupportsReadLongLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlong", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -873,11 +873,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorLba, true, 0, mediaTest.LongBlockSize, TIMEOUT, out _); mediaTest.SupportsReadLongRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", - sense, errorChs.status, errorChs.error, readBuf.Length); + sense, errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongretry", "_debug_" + mediaTest.MediumTypeName + ".bin", "read results", @@ -1048,12 +1048,12 @@ namespace DiscImageChef.Core.Devices.Report bool sense; DicConsole.WriteLine("Trying READ SECTOR(S) in CHS mode..."); - sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersCHS errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); + sense = dev.Read(out byte[] readBuf, out AtaErrorRegistersChs errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsRead = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorschs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1061,10 +1061,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in CHS mode..."); sense = dev.Read(out readBuf, out errorChs, true, 0, 0, 1, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorsretrychs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1072,10 +1072,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA in CHS mode..."); sense = dev.ReadDma(out readBuf, out errorChs, false, 0, 0, 1, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadDma = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmachs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1083,10 +1083,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA RETRY in CHS mode..."); sense = dev.ReadDma(out readBuf, out errorChs, true, 0, 0, 1, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadDmaRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmaretrychs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1094,17 +1094,17 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying SEEK in CHS mode..."); sense = dev.Seek(out errorChs, 0, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsSeek = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0; + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorChs.status, errorChs.error); + errorChs.Status, errorChs.Error); DicConsole.WriteLine("Trying READ SECTOR(S) in LBA mode..."); - sense = dev.Read(out readBuf, out AtaErrorRegistersLBA28 errorLba, false, 0, 1, TIMEOUT, out _); + sense = dev.Read(out readBuf, out AtaErrorRegistersLba28 errorLba, false, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectors", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1112,10 +1112,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ SECTOR(S) RETRY in LBA mode..."); sense = dev.Read(out readBuf, out errorLba, true, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectorsretry", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1123,10 +1123,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA in LBA mode..."); sense = dev.ReadDma(out readBuf, out errorLba, false, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadDmaLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdma", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1134,10 +1134,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA RETRY in LBA mode..."); sense = dev.ReadDma(out readBuf, out errorLba, true, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadDmaRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdmaretry", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1145,17 +1145,17 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying SEEK in LBA mode..."); sense = dev.Seek(out errorLba, 0, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsSeekLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0; + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}", sense, - errorLba.status, errorLba.error); + errorLba.Status, errorLba.Error); DicConsole.WriteLine("Trying READ SECTOR(S) in LBA48 mode..."); - sense = dev.Read(out readBuf, out AtaErrorRegistersLBA48 errorLba48, 0, 1, TIMEOUT, out _); + sense = dev.Read(out readBuf, out AtaErrorRegistersLba48 errorLba48, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLba48 = - !sense && (errorLba48.status & 0x01) != 0x01 && errorLba48.error == 0 && readBuf.Length > 0; + !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba48.status, errorLba48.error, readBuf.Length); + errorLba48.Status, errorLba48.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readsectors48", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1163,10 +1163,10 @@ namespace DiscImageChef.Core.Devices.Report DicConsole.WriteLine("Trying READ DMA in LBA48 mode..."); sense = dev.ReadDma(out readBuf, out errorLba48, 0, 1, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadDmaLba48 = - !sense && (errorLba48.status & 0x01) != 0x01 && errorLba48.error == 0 && readBuf.Length > 0; + !sense && (errorLba48.Status & 0x01) != 0x01 && errorLba48.Error == 0 && readBuf.Length > 0; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba48.status, errorLba48.error, readBuf.Length); + errorLba48.Status, errorLba48.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readdma48", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1175,11 +1175,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorChs, false, 0, 0, 1, report.ATA.ReadCapabilities.LongBlockSize, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLong = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongchs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1188,11 +1188,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorChs, true, 0, 0, 1, report.ATA.ReadCapabilities.LongBlockSize, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLongRetry = - !sense && (errorChs.status & 0x01) != 0x01 && errorChs.error == 0 && readBuf.Length > 0 && + !sense && (errorChs.Status & 0x01) != 0x01 && errorChs.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorChs.status, errorChs.error, readBuf.Length); + errorChs.Status, errorChs.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongretrychs", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1201,11 +1201,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorLba, false, 0, report.ATA.ReadCapabilities.LongBlockSize, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLongLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlong", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); @@ -1214,11 +1214,11 @@ namespace DiscImageChef.Core.Devices.Report sense = dev.ReadLong(out readBuf, out errorLba, true, 0, report.ATA.ReadCapabilities.LongBlockSize, TIMEOUT, out _); report.ATA.ReadCapabilities.SupportsReadLongRetryLba = - !sense && (errorLba.status & 0x01) != 0x01 && errorLba.error == 0 && readBuf.Length > 0 && + !sense && (errorLba.Status & 0x01) != 0x01 && errorLba.Error == 0 && readBuf.Length > 0 && BitConverter.ToUInt64(readBuf, 0) != checkCorrectRead; DicConsole.DebugWriteLine("ATA Report", "Sense = {0}, Status = 0x{1:X2}, Error = 0x{2:X2}, Length = {3}", sense, - errorLba.status, errorLba.error, readBuf.Length); + errorLba.Status, errorLba.Error, readBuf.Length); if(debug) DataFile.WriteTo("ATA Report", "readlongretry", "_debug_" + report.ATA.Model + ".bin", "read results", readBuf); diff --git a/DiscImageChef.Decoders/ATA/Identify.cs b/DiscImageChef.Decoders/ATA/Identify.cs index 8943b860..f0161ccf 100644 --- a/DiscImageChef.Decoders/ATA/Identify.cs +++ b/DiscImageChef.Decoders/ATA/Identify.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Text; using DiscImageChef.Console; @@ -52,6 +53,9 @@ namespace DiscImageChef.Decoders.ATA /// T13-2161D rev. 5 (ACS-3) /// CF+ & CF Specification rev. 1.4 (CFA) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Identify { [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 2)] @@ -3151,9 +3155,9 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.Capabilities3.HasFlag(CapabilitiesBit3.Sanitize)) { sb.AppendLine().Append("Sanitize feature set is supported"); - if(ATAID.Capabilities3.HasFlag(CapabilitiesBit3.SanitizeCommands)) - sb.AppendLine().Append("Sanitize commands are specified by ACS-3 or higher"); - else sb.AppendLine().Append("Sanitize commands are specified by ACS-2"); + sb.AppendLine().Append(ATAID.Capabilities3.HasFlag(CapabilitiesBit3.SanitizeCommands) + ? "Sanitize commands are specified by ACS-3 or higher" + : "Sanitize commands are specified by ACS-2"); if(ATAID.Capabilities3.HasFlag(CapabilitiesBit3.SanitizeAntifreeze)) sb.AppendLine().Append("SANITIZE ANTIFREEZE LOCK EXT is supported"); @@ -3239,19 +3243,21 @@ namespace DiscImageChef.Decoders.ATA if(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Enabled)) { sb.AppendLine("Security is enabled"); - if(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Locked)) sb.AppendLine("Security is locked"); - else sb.AppendLine("Security is not locked"); + sb.AppendLine(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Locked) + ? "Security is locked" + : "Security is not locked"); - if(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Frozen)) sb.AppendLine("Security is frozen"); - else sb.AppendLine("Security is not frozen"); + sb.AppendLine(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Frozen) + ? "Security is frozen" + : "Security is not frozen"); - if(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Expired)) - sb.AppendLine("Security count has expired"); - else sb.AppendLine("Security count has notexpired"); + sb.AppendLine(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Expired) + ? "Security count has expired" + : "Security count has notexpired"); - if(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Maximum)) - sb.AppendLine("Security level is maximum"); - else sb.AppendLine("Security level is high"); + sb.AppendLine(ATAID.SecurityStatus.HasFlag(SecurityStatusBit.Maximum) + ? "Security level is maximum" + : "Security level is high"); } else sb.AppendLine("Security is not enabled"); @@ -3382,8 +3388,7 @@ namespace DiscImageChef.Decoders.ATA static string DescrambleATAString(byte[] buffer, int offset, int length) { - byte[] outbuf; - outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length]; + byte[] outbuf = buffer[offset + length - 1] != 0x00 ? new byte[length + 1] : new byte[length]; for(int i = 0; i < length; i += 2) { diff --git a/DiscImageChef.Decoders/ATA/Registers.cs b/DiscImageChef.Decoders/ATA/Registers.cs index 965daec3..00a7009d 100644 --- a/DiscImageChef.Decoders/ATA/Registers.cs +++ b/DiscImageChef.Decoders/ATA/Registers.cs @@ -32,72 +32,72 @@ namespace DiscImageChef.Decoders.ATA { - public struct AtaRegistersCHS + public struct AtaRegistersChs { - public byte feature; - public byte sectorCount; - public byte sector; - public byte cylinderLow; - public byte cylinderHigh; - public byte deviceHead; - public byte command; + public byte Feature; + public byte SectorCount; + public byte Sector; + public byte CylinderLow; + public byte CylinderHigh; + public byte DeviceHead; + public byte Command; } - public struct AtaRegistersLBA28 + public struct AtaRegistersLba28 { - public byte feature; - public byte sectorCount; - public byte lbaLow; - public byte lbaMid; - public byte lbaHigh; - public byte deviceHead; - public byte command; + public byte Feature; + public byte SectorCount; + public byte LbaLow; + public byte LbaMid; + public byte LbaHigh; + public byte DeviceHead; + public byte Command; } - public struct AtaRegistersLBA48 + public struct AtaRegistersLba48 { - public ushort feature; - public ushort sectorCount; - public ushort lbaLow; - public ushort lbaMid; - public ushort lbaHigh; - public byte deviceHead; - public byte command; + public ushort Feature; + public ushort SectorCount; + public ushort LbaLow; + public ushort LbaMid; + public ushort LbaHigh; + public byte DeviceHead; + public byte Command; } - public struct AtaErrorRegistersCHS + public struct AtaErrorRegistersChs { - public byte status; - public byte error; - public byte sectorCount; - public byte sector; - public byte cylinderLow; - public byte cylinderHigh; - public byte deviceHead; - public byte command; + public byte Status; + public byte Error; + public byte SectorCount; + public byte Sector; + public byte CylinderLow; + public byte CylinderHigh; + public byte DeviceHead; + public byte Command; } - public struct AtaErrorRegistersLBA28 + public struct AtaErrorRegistersLba28 { - public byte status; - public byte error; - public byte sectorCount; - public byte lbaLow; - public byte lbaMid; - public byte lbaHigh; - public byte deviceHead; - public byte command; + public byte Status; + public byte Error; + public byte SectorCount; + public byte LbaLow; + public byte LbaMid; + public byte LbaHigh; + public byte DeviceHead; + public byte Command; } - public struct AtaErrorRegistersLBA48 + public struct AtaErrorRegistersLba48 { - public byte status; - public byte error; - public ushort sectorCount; - public ushort lbaLow; - public ushort lbaMid; - public ushort lbaHigh; - public byte deviceHead; - public byte command; + public byte Status; + public byte Error; + public ushort SectorCount; + public ushort LbaLow; + public ushort LbaMid; + public ushort LbaHigh; + public byte DeviceHead; + public byte Command; } } \ No newline at end of file diff --git a/DiscImageChef.Decoders/Blu-ray/BCA.cs b/DiscImageChef.Decoders/Blu-ray/BCA.cs index a9684fbe..e9be9118 100644 --- a/DiscImageChef.Decoders/Blu-ray/BCA.cs +++ b/DiscImageChef.Decoders/Blu-ray/BCA.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,10 @@ namespace DiscImageChef.Decoders.Bluray /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class BCA { #region Public methods diff --git a/DiscImageChef.Decoders/Blu-ray/Cartridge.cs b/DiscImageChef.Decoders/Blu-ray/Cartridge.cs index b14ad355..99ad147c 100644 --- a/DiscImageChef.Decoders/Blu-ray/Cartridge.cs +++ b/DiscImageChef.Decoders/Blu-ray/Cartridge.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,11 @@ namespace DiscImageChef.Decoders.Bluray /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] public static class Cartridge { #region Public methods diff --git a/DiscImageChef.Decoders/Blu-ray/DDS.cs b/DiscImageChef.Decoders/Blu-ray/DDS.cs index 2c59db39..8c7d97c3 100644 --- a/DiscImageChef.Decoders/Blu-ray/DDS.cs +++ b/DiscImageChef.Decoders/Blu-ray/DDS.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,10 @@ namespace DiscImageChef.Decoders.Bluray /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DDS { #region Private constants diff --git a/DiscImageChef.Decoders/Blu-ray/DI.cs b/DiscImageChef.Decoders/Blu-ray/DI.cs index 24d5938c..2fe49b2b 100644 --- a/DiscImageChef.Decoders/Blu-ray/DI.cs +++ b/DiscImageChef.Decoders/Blu-ray/DI.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -52,6 +53,10 @@ namespace DiscImageChef.Decoders.Bluray /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DI { #region Private constants @@ -93,8 +98,10 @@ namespace DiscImageChef.Decoders.Bluray { if(offset >= 100) break; - DiscInformationUnits unit = new DiscInformationUnits(); - unit.Signature = BigEndianBitConverter.ToUInt16(DIResponse, 0 + offset); + DiscInformationUnits unit = new DiscInformationUnits + { + Signature = BigEndianBitConverter.ToUInt16(DIResponse, 0 + offset) + }; if(unit.Signature != DIUIdentifier) break; diff --git a/DiscImageChef.Decoders/Blu-ray/Spare.cs b/DiscImageChef.Decoders/Blu-ray/Spare.cs index 5fc35712..6a80d221 100644 --- a/DiscImageChef.Decoders/Blu-ray/Spare.cs +++ b/DiscImageChef.Decoders/Blu-ray/Spare.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,10 @@ namespace DiscImageChef.Decoders.Bluray /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class Spare { #region Public methods diff --git a/DiscImageChef.Decoders/CD/ATIP.cs b/DiscImageChef.Decoders/CD/ATIP.cs index 8356842c..a98ba97e 100644 --- a/DiscImageChef.Decoders/CD/ATIP.cs +++ b/DiscImageChef.Decoders/CD/ATIP.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,10 @@ namespace DiscImageChef.Decoders.CD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class ATIP { public struct CDATIP @@ -292,8 +297,7 @@ namespace DiscImageChef.Decoders.CD if(response.DDCD) { sb.AppendFormat("Indicative Target Writing Power: 0x{0:X2}", response.ITWP).AppendLine(); - if(response.DiscType) sb.AppendLine("Disc is DDCD-RW"); - else sb.AppendLine("Disc is DDCD-R"); + sb.AppendLine(response.DiscType ? "Disc is DDCD-RW" : "Disc is DDCD-R"); switch(response.ReferenceSpeed) { case 2: @@ -398,8 +402,7 @@ namespace DiscImageChef.Decoders.CD } } - if(response.URU) sb.AppendLine("Disc use is unrestricted"); - else sb.AppendLine("Disc use is restricted"); + sb.AppendLine(response.URU ? "Disc use is unrestricted" : "Disc use is restricted"); sb.AppendFormat("ATIP Start time of Lead-in: {0}:{1:D2}:{2:D2}", response.LeadInStartMin, response.LeadInStartSec, response.LeadInStartFrame).AppendLine(); @@ -428,16 +431,16 @@ namespace DiscImageChef.Decoders.CD int type = response.LeadInStartFrame % 10; int frm = response.LeadInStartFrame - type; - string manufacturer; if(response.DiscType) sb.AppendLine("Disc uses phase change"); else { - if(type < 5) sb.AppendLine("Disc uses long strategy type dye (Cyanine, AZO, etc...)"); - else sb.AppendLine("Disc uses short strategy type dye (Phthalocyanine, etc...)"); + sb.AppendLine(type < 5 + ? "Disc uses long strategy type dye (Cyanine, AZO, etc...)" + : "Disc uses short strategy type dye (Phthalocyanine, etc...)"); } - manufacturer = ManufacturerFromATIP(response.LeadInStartSec, frm); + string manufacturer = ManufacturerFromATIP(response.LeadInStartSec, frm); if(manufacturer != "") sb.AppendFormat("Disc manufactured by: {0}", manufacturer).AppendLine(); diff --git a/DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs b/DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs index 2732bf6a..832ccfe2 100644 --- a/DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs +++ b/DiscImageChef.Decoders/CD/CDTextOnLeadIn.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,10 @@ namespace DiscImageChef.Decoders.CD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class CDTextOnLeadIn { public enum PackTypeIndicator : byte diff --git a/DiscImageChef.Decoders/CD/Enums.cs b/DiscImageChef.Decoders/CD/Enums.cs index 4a9f165a..2698510d 100644 --- a/DiscImageChef.Decoders/CD/Enums.cs +++ b/DiscImageChef.Decoders/CD/Enums.cs @@ -30,9 +30,12 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.CD { - public enum TOC_ADR : byte + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + public enum TocAdr : byte { /// /// Q Sub-channel mode information not supplied @@ -60,7 +63,7 @@ namespace DiscImageChef.Decoders.CD VideoTrackPointer = 0x04 } - public enum TOC_CONTROL : byte + public enum TocControl : byte { /// /// Stereo audio, no pre-emphasis diff --git a/DiscImageChef.Decoders/CD/FullTOC.cs b/DiscImageChef.Decoders/CD/FullTOC.cs index 717c6e27..27bc297e 100644 --- a/DiscImageChef.Decoders/CD/FullTOC.cs +++ b/DiscImageChef.Decoders/CD/FullTOC.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -53,6 +54,9 @@ namespace DiscImageChef.Decoders.CD /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V /// ISO/IEC 60908: Audio recording - Compact disc digital audio system /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class FullTOC { const string StereoNoPre = "Stereo audio track with no pre-emphasis"; @@ -270,24 +274,24 @@ namespace DiscImageChef.Decoders.CD else { sb.AppendFormat("First track number: {0} (", descriptor.PMIN); - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.Append(StereoNoPre); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.Append(StereoPreEm); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.Append(QuadNoPreEm); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.Append(QuadPreEmph); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.Append(DataUnintrp); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.Append(DataIncrtly); break; } @@ -306,24 +310,24 @@ namespace DiscImageChef.Decoders.CD else { sb.AppendFormat("Last track number: {0} (", descriptor.PMIN); - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.Append(StereoNoPre); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.Append(StereoPreEm); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.Append(QuadNoPreEm); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.Append(QuadPreEmph); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.Append(DataUnintrp); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.Append(DataIncrtly); break; } @@ -345,16 +349,16 @@ namespace DiscImageChef.Decoders.CD .AppendLine(); //sb.AppendFormat("Absolute time: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine(); - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: - case TOC_CONTROL.TwoChanPreEmph: - case TOC_CONTROL.FourChanNoPreEmph: - case TOC_CONTROL.FourChanPreEmph: + case TocControl.TwoChanNoPreEmph: + case TocControl.TwoChanPreEmph: + case TocControl.FourChanNoPreEmph: + case TocControl.FourChanPreEmph: sb.AppendLine("Lead-out is audio type"); break; - case TOC_CONTROL.DataTrack: - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrack: + case TocControl.DataTrackIncremental: sb.AppendLine("Lead-out is data type"); break; } @@ -385,9 +389,9 @@ namespace DiscImageChef.Decoders.CD { string type = "Audio"; - if((TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrack || - (TOC_CONTROL)(descriptor.CONTROL & 0x0D) == - TOC_CONTROL.DataTrackIncremental) type = "Data"; + if((TocControl)(descriptor.CONTROL & 0x0D) == TocControl.DataTrack || + (TocControl)(descriptor.CONTROL & 0x0D) == + TocControl.DataTrackIncremental) type = "Data"; if(descriptor.PHOUR > 0) sb.AppendFormat("{5} track {3} starts at: {4:D2}:{0:D2}:{1:D2}:{2:D2} (", @@ -398,24 +402,24 @@ namespace DiscImageChef.Decoders.CD descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.POINT, type); - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.Append(StereoNoPre); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.Append(StereoPreEm); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.Append(QuadNoPreEm); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.Append(QuadPreEmph); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.Append(DataUnintrp); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.Append(DataIncrtly); break; } diff --git a/DiscImageChef.Decoders/CD/PMA.cs b/DiscImageChef.Decoders/CD/PMA.cs index 30dbb848..b09e29a2 100644 --- a/DiscImageChef.Decoders/CD/PMA.cs +++ b/DiscImageChef.Decoders/CD/PMA.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,9 @@ namespace DiscImageChef.Decoders.CD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class PMA { public struct CDPMA @@ -198,24 +202,24 @@ namespace DiscImageChef.Decoders.CD if(descriptor.POINT > 0) { sb.AppendFormat("Track {0}", descriptor.POINT); - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.Append(" (Stereo audio track with no pre-emphasis)"); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.Append(" (Stereo audio track with 50/15 μs pre-emphasis)"); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.Append(" (Quadraphonic audio track with no pre-emphasis)"); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.Append(" (Quadraphonic audio track with 50/15 μs pre-emphasis)"); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.Append(" (Data track, recorded uninterrupted)"); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.Append(" (Data track, recorded incrementally)"); break; } diff --git a/DiscImageChef.Decoders/CD/Sector.cs b/DiscImageChef.Decoders/CD/Sector.cs index c16b4b05..9fa983ed 100644 --- a/DiscImageChef.Decoders/CD/Sector.cs +++ b/DiscImageChef.Decoders/CD/Sector.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Linq; namespace DiscImageChef.Decoders.CD { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Sector { public static readonly byte[] ScrambleTable = diff --git a/DiscImageChef.Decoders/CD/Session.cs b/DiscImageChef.Decoders/CD/Session.cs index b39bc09b..21904a8f 100644 --- a/DiscImageChef.Decoders/CD/Session.cs +++ b/DiscImageChef.Decoders/CD/Session.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -51,6 +52,9 @@ namespace DiscImageChef.Decoders.CD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Session { public struct CDSessionInfo @@ -161,51 +165,52 @@ namespace DiscImageChef.Decoders.CD (descriptor.TrackStartAddress & 0x00FF0000) >> 16, (descriptor.TrackStartAddress & 0xFF000000) >> 24).AppendLine(); - switch((TOC_ADR)descriptor.ADR) + switch((TocAdr)descriptor.ADR) { - case TOC_ADR.NoInformation: + case TocAdr.NoInformation: sb.AppendLine("Q subchannel mode not given"); break; - case TOC_ADR.CurrentPosition: + case TocAdr.CurrentPosition: sb.AppendLine("Q subchannel stores current position"); break; - case TOC_ADR.ISRC: + case TocAdr.ISRC: sb.AppendLine("Q subchannel stores ISRC"); break; - case TOC_ADR.MediaCatalogNumber: + case TocAdr.MediaCatalogNumber: sb.AppendLine("Q subchannel stores media catalog number"); break; } - if((descriptor.CONTROL & (byte)TOC_CONTROL.ReservedMask) == (byte)TOC_CONTROL.ReservedMask) + if((descriptor.CONTROL & (byte)TocControl.ReservedMask) == (byte)TocControl.ReservedMask) sb.AppendFormat("Reserved flags 0x{0:X2} set", descriptor.CONTROL).AppendLine(); else { - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.AppendLine("Stereo audio track with no pre-emphasis"); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.AppendLine("Stereo audio track with 50/15 μs pre-emphasis"); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.AppendLine("Quadraphonic audio track with no pre-emphasis"); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.AppendLine("Stereo audio track with 50/15 μs pre-emphasis"); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.AppendLine("Data track, recorded uninterrupted"); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.AppendLine("Data track, recorded incrementally"); break; } - if((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == - (byte)TOC_CONTROL.CopyPermissionMask) sb.AppendLine("Digital copy of track is permitted"); - else sb.AppendLine("Digital copy of track is prohibited"); + sb.AppendLine((descriptor.CONTROL & (byte)TocControl.CopyPermissionMask) == + (byte)TocControl.CopyPermissionMask + ? "Digital copy of track is permitted" + : "Digital copy of track is prohibited"); #if DEBUG if(descriptor.Reserved1 != 0) diff --git a/DiscImageChef.Decoders/CD/TOC.cs b/DiscImageChef.Decoders/CD/TOC.cs index 3f5b7b2e..62d703a2 100644 --- a/DiscImageChef.Decoders/CD/TOC.cs +++ b/DiscImageChef.Decoders/CD/TOC.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Console; @@ -53,6 +54,9 @@ namespace DiscImageChef.Decoders.CD /// ISO/IEC 61104: Compact disc video system - 12 cm CD-V /// ISO/IEC 60908: Audio recording - Compact disc digital audio system /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class TOC { public struct CDTOC @@ -163,21 +167,21 @@ namespace DiscImageChef.Decoders.CD (descriptor.TrackStartAddress & 0x00FF0000) >> 16, (descriptor.TrackStartAddress & 0xFF000000) >> 24).AppendLine(); - switch((TOC_ADR)descriptor.ADR) + switch((TocAdr)descriptor.ADR) { - case TOC_ADR.NoInformation: + case TocAdr.NoInformation: sb.AppendLine("Q subchannel mode not given"); break; - case TOC_ADR.TrackPointer: + case TocAdr.TrackPointer: sb.AppendLine("Q subchannel stores track pointer"); break; - case TOC_ADR.VideoTrackPointer: + case TocAdr.VideoTrackPointer: sb.AppendLine("Q subchannel stores video track pointer"); break; - case TOC_ADR.ISRC: + case TocAdr.ISRC: sb.AppendLine("Q subchannel stores ISRC"); break; - case TOC_ADR.MediaCatalogNumber: + case TocAdr.MediaCatalogNumber: sb.AppendLine("Q subchannel stores media catalog number"); break; default: @@ -185,35 +189,36 @@ namespace DiscImageChef.Decoders.CD break; } - if((descriptor.CONTROL & (byte)TOC_CONTROL.ReservedMask) == (byte)TOC_CONTROL.ReservedMask) + if((descriptor.CONTROL & (byte)TocControl.ReservedMask) == (byte)TocControl.ReservedMask) sb.AppendFormat("Reserved flags 0x{0:X2} set", descriptor.CONTROL).AppendLine(); else { - switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D)) + switch((TocControl)(descriptor.CONTROL & 0x0D)) { - case TOC_CONTROL.TwoChanNoPreEmph: + case TocControl.TwoChanNoPreEmph: sb.AppendLine("Stereo audio track with no pre-emphasis"); break; - case TOC_CONTROL.TwoChanPreEmph: + case TocControl.TwoChanPreEmph: sb.AppendLine("Stereo audio track with 50/15 μs pre-emphasis"); break; - case TOC_CONTROL.FourChanNoPreEmph: + case TocControl.FourChanNoPreEmph: sb.AppendLine("Quadraphonic audio track with no pre-emphasis"); break; - case TOC_CONTROL.FourChanPreEmph: + case TocControl.FourChanPreEmph: sb.AppendLine("Quadraphonic audio track with 50/15 μs pre-emphasis"); break; - case TOC_CONTROL.DataTrack: + case TocControl.DataTrack: sb.AppendLine("Data track, recorded uninterrupted"); break; - case TOC_CONTROL.DataTrackIncremental: + case TocControl.DataTrackIncremental: sb.AppendLine("Data track, recorded incrementally"); break; } - if((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == - (byte)TOC_CONTROL.CopyPermissionMask) sb.AppendLine("Digital copy of track is permitted"); - else sb.AppendLine("Digital copy of track is prohibited"); + sb.AppendLine((descriptor.CONTROL & (byte)TocControl.CopyPermissionMask) == + (byte)TocControl.CopyPermissionMask + ? "Digital copy of track is permitted" + : "Digital copy of track is prohibited"); #if DEBUG if(descriptor.Reserved1 != 0) diff --git a/DiscImageChef.Decoders/DVD/AACS.cs b/DiscImageChef.Decoders/DVD/AACS.cs index 6deab609..84776e34 100644 --- a/DiscImageChef.Decoders/DVD/AACS.cs +++ b/DiscImageChef.Decoders/DVD/AACS.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class AACS { public struct HDLeadInCopyright diff --git a/DiscImageChef.Decoders/DVD/ADIP.cs b/DiscImageChef.Decoders/DVD/ADIP.cs index 90aed4b7..575cbb0e 100644 --- a/DiscImageChef.Decoders/DVD/ADIP.cs +++ b/DiscImageChef.Decoders/DVD/ADIP.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class ADIP { public struct ADIPInformation diff --git a/DiscImageChef.Decoders/DVD/BCA.cs b/DiscImageChef.Decoders/DVD/BCA.cs index 617f5a42..b22ac62d 100644 --- a/DiscImageChef.Decoders/DVD/BCA.cs +++ b/DiscImageChef.Decoders/DVD/BCA.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class BCA { public struct BurstCuttingArea diff --git a/DiscImageChef.Decoders/DVD/CPRM.cs b/DiscImageChef.Decoders/DVD/CPRM.cs index c3bd3c1f..2daf15de 100644 --- a/DiscImageChef.Decoders/DVD/CPRM.cs +++ b/DiscImageChef.Decoders/DVD/CPRM.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class CPRM { public struct DiscMediaIdentifier diff --git a/DiscImageChef.Decoders/DVD/CSS&CPRM.cs b/DiscImageChef.Decoders/DVD/CSS&CPRM.cs index ceaa61f6..1ce578d8 100644 --- a/DiscImageChef.Decoders/DVD/CSS&CPRM.cs +++ b/DiscImageChef.Decoders/DVD/CSS&CPRM.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.DVD @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class CSS_CPRM { public struct LeadInCopyright @@ -117,21 +122,18 @@ namespace DiscImageChef.Decoders.DVD public static LeadInCopyright? DecodeLeadInCopyright(byte[] response) { - if(response == null) return null; + if(response?.Length != 8) return null; - if(response.Length != 8) return null; - - LeadInCopyright cmi = new LeadInCopyright(); - - cmi.DataLength = (ushort)((response[0] << 8) + response[1]); - cmi.Reserved1 = response[2]; - cmi.Reserved2 = response[3]; - cmi.CopyrightType = (CopyrightType)response[4]; - cmi.RegionInformation = response[5]; - cmi.Reserved3 = response[6]; - cmi.Reserved4 = response[7]; - - return cmi; + return new LeadInCopyright + { + DataLength = (ushort)((response[0] << 8) + response[1]), + Reserved1 = response[2], + Reserved2 = response[3], + CopyrightType = (CopyrightType)response[4], + RegionInformation = response[5], + Reserved3 = response[6], + Reserved4 = response[7] + }; } public static string PrettifyLeadInCopyright(LeadInCopyright? cmi) diff --git a/DiscImageChef.Decoders/DVD/Cartridge.cs b/DiscImageChef.Decoders/DVD/Cartridge.cs index e061ab9d..23e42580 100644 --- a/DiscImageChef.Decoders/DVD/Cartridge.cs +++ b/DiscImageChef.Decoders/DVD/Cartridge.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.DVD @@ -49,6 +50,10 @@ namespace DiscImageChef.Decoders.DVD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class Cartridge { public struct MediumStatus @@ -122,27 +127,24 @@ namespace DiscImageChef.Decoders.DVD public static MediumStatus? Decode(byte[] response) { - if(response == null) return null; + if(response?.Length != 8) return null; - if(response.Length != 8) return null; - - MediumStatus status = new MediumStatus(); - - status.DataLength = (ushort)((response[0] << 8) + response[1]); - status.Reserved1 = response[2]; - status.Reserved2 = response[3]; - status.Cartridge |= (response[4] & 0x80) == 0x80; - status.OUT |= (response[4] & 0x40) == 0x40; - status.Reserved3 = (byte)((response[4] & 0x30) >> 4); - status.MSWI |= (response[4] & 0x08) == 0x08; - status.CWP |= (response[4] & 0x04) == 0x04; - status.PWP |= (response[4] & 0x02) == 0x02; - status.Reserved4 |= (response[4] & 0x01) == 0x01; - status.DiscType = response[5]; - status.Reserved5 = response[6]; - status.RAMSWI = response[7]; - - return status; + return new MediumStatus + { + DataLength = (ushort)((response[0] << 8) + response[1]), + Reserved1 = response[2], + Reserved2 = response[3], + Cartridge = (response[4] & 0x80) == 0x80, + OUT = (response[4] & 0x40) == 0x40, + Reserved3 = (byte)((response[4] & 0x30) >> 4), + MSWI = (response[4] & 0x08) == 0x08, + CWP = (response[4] & 0x04) == 0x04, + PWP = (response[4] & 0x02) == 0x02, + Reserved4 = (response[4] & 0x01) == 0x01, + DiscType = response[5], + Reserved5 = response[6], + RAMSWI = response[7] + }; } public static string Prettify(MediumStatus? status) diff --git a/DiscImageChef.Decoders/DVD/DDS.cs b/DiscImageChef.Decoders/DVD/DDS.cs index cf37e0c1..ded9727c 100644 --- a/DiscImageChef.Decoders/DVD/DDS.cs +++ b/DiscImageChef.Decoders/DVD/DDS.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.DVD @@ -52,6 +53,10 @@ namespace DiscImageChef.Decoders.DVD /// ECMA 272: 120 mm DVD Rewritable Disk (DVD-RAM) /// ECMA 330: 120 mm (4,7 Gbytes per side) and 80 mm (1,46 Gbytes per side) DVD Rewritable Disk (DVD-RAM) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DDS { public struct DiscDefinitionStructure @@ -196,13 +201,10 @@ namespace DiscImageChef.Decoders.DVD public static DiscDefinitionStructure? Decode(byte[] response) { - if(response == null) return null; + if(response?.Length != 2052) return null; - if(response.Length != 2052) return null; - - DiscDefinitionStructure dds = new DiscDefinitionStructure(); - - dds.Identifier = (ushort)((response[4] << 8) + response[5]); + DiscDefinitionStructure dds = + new DiscDefinitionStructure {Identifier = (ushort)((response[4] << 8) + response[5])}; if(dds.Identifier != 0x0A0A) return null; diff --git a/DiscImageChef.Decoders/DVD/DMI.cs b/DiscImageChef.Decoders/DVD/DMI.cs index 4b43af82..fe3070e4 100644 --- a/DiscImageChef.Decoders/DVD/DMI.cs +++ b/DiscImageChef.Decoders/DVD/DMI.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class DMI { public struct DiscManufacturingInformation diff --git a/DiscImageChef.Decoders/DVD/Enums.cs b/DiscImageChef.Decoders/DVD/Enums.cs index fa29327c..34bfb5e5 100644 --- a/DiscImageChef.Decoders/DVD/Enums.cs +++ b/DiscImageChef.Decoders/DVD/Enums.cs @@ -30,9 +30,12 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { #region Public enumerations + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DiskCategory : byte { /// @@ -94,6 +97,7 @@ namespace DiscImageChef.Decoders.DVD Nintendo = 15 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum MaximumRateField : byte { /// @@ -119,6 +123,7 @@ namespace DiscImageChef.Decoders.DVD Unspecified = 0x0F } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum LayerTypeFieldMask : byte { Embossed = 0x01, @@ -127,6 +132,7 @@ namespace DiscImageChef.Decoders.DVD Reserved = 0x08 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum LinearDensityField : byte { /// @@ -159,6 +165,7 @@ namespace DiscImageChef.Decoders.DVD ThreeFive = 0x08 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum TrackDensityField : byte { /// @@ -183,6 +190,7 @@ namespace DiscImageChef.Decoders.DVD Three = 0x04 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum CopyrightType : byte { /// @@ -203,6 +211,7 @@ namespace DiscImageChef.Decoders.DVD AACS = 0x10 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum WPDiscTypes : byte { /// @@ -217,6 +226,7 @@ namespace DiscImageChef.Decoders.DVD Reserved2 = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DVDSize { /// @@ -229,6 +239,7 @@ namespace DiscImageChef.Decoders.DVD Eighty = 1 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DVDRAMDiscType { /// @@ -241,6 +252,7 @@ namespace DiscImageChef.Decoders.DVD Uncased = 1 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DVDLayerStructure { Unspecified = 0, @@ -249,6 +261,7 @@ namespace DiscImageChef.Decoders.DVD Reserved = 3 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DVDRecordingSpeed { None = 0, diff --git a/DiscImageChef.Decoders/DVD/Layers.cs b/DiscImageChef.Decoders/DVD/Layers.cs index 9e9fe57a..45d43143 100644 --- a/DiscImageChef.Decoders/DVD/Layers.cs +++ b/DiscImageChef.Decoders/DVD/Layers.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Layers { public struct LayerCapacity diff --git a/DiscImageChef.Decoders/DVD/PFI.cs b/DiscImageChef.Decoders/DVD/PFI.cs index 00542f95..20086e01 100644 --- a/DiscImageChef.Decoders/DVD/PFI.cs +++ b/DiscImageChef.Decoders/DVD/PFI.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.DVD @@ -66,6 +67,9 @@ namespace DiscImageChef.Decoders.DVD /// ECMA 382: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Recordable Disk for Dual Layer (DVD-R for DL) /// ECMA 384: 120 mm (8,54 Gbytes per side) and 80 mm (2,66 Gbytes per side) DVD Re-recordable Disk for Dual Layer (DVD-RW for DL) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class PFI { public struct PhysicalFormatInformation diff --git a/DiscImageChef.Decoders/DVD/PRI.cs b/DiscImageChef.Decoders/DVD/PRI.cs index 632f092a..7bd281af 100644 --- a/DiscImageChef.Decoders/DVD/PRI.cs +++ b/DiscImageChef.Decoders/DVD/PRI.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class PRI { public struct PreRecordedInformation diff --git a/DiscImageChef.Decoders/DVD/RMD.cs b/DiscImageChef.Decoders/DVD/RMD.cs index a57d1d92..c57f89f5 100644 --- a/DiscImageChef.Decoders/DVD/RMD.cs +++ b/DiscImageChef.Decoders/DVD/RMD.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class RMD { public struct LastBorderOutRMD diff --git a/DiscImageChef.Decoders/DVD/Spare.cs b/DiscImageChef.Decoders/DVD/Spare.cs index 74a91aa0..2db3529d 100644 --- a/DiscImageChef.Decoders/DVD/Spare.cs +++ b/DiscImageChef.Decoders/DVD/Spare.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.DVD @@ -49,6 +50,10 @@ namespace DiscImageChef.Decoders.DVD /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class Spare { public struct SpareAreaInformation @@ -87,23 +92,20 @@ namespace DiscImageChef.Decoders.DVD public static SpareAreaInformation? Decode(byte[] response) { - if(response == null) return null; + if(response?.Length != 16) return null; - if(response.Length != 16) return null; - - SpareAreaInformation sai = new SpareAreaInformation(); - - sai.DataLength = (ushort)((response[0] << 8) + response[1]); - sai.Reserved1 = response[2]; - sai.Reserved2 = response[3]; - sai.UnusedPrimaryBlocks = - (uint)((response[4] << 24) + (response[5] << 16) + (response[6] << 8) + response[7]); - sai.UnusedSupplementaryBlocks = - (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]); - sai.AllocatedSupplementaryBlocks = - (uint)((response[12] << 24) + (response[13] << 16) + (response[14] << 8) + response[15]); - - return sai; + return new SpareAreaInformation + { + DataLength = (ushort)((response[0] << 8) + response[1]), + Reserved1 = response[2], + Reserved2 = response[3], + UnusedPrimaryBlocks = + (uint)((response[4] << 24) + (response[5] << 16) + (response[6] << 8) + response[7]), + UnusedSupplementaryBlocks = + (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]), + AllocatedSupplementaryBlocks = + (uint)((response[12] << 24) + (response[13] << 16) + (response[14] << 8) + response[15]) + }; } public static string Prettify(SpareAreaInformation? sai) diff --git a/DiscImageChef.Decoders/DVD/UDI.cs b/DiscImageChef.Decoders/DVD/UDI.cs index 3a51ea02..9e20b5ff 100644 --- a/DiscImageChef.Decoders/DVD/UDI.cs +++ b/DiscImageChef.Decoders/DVD/UDI.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.DVD { /// @@ -48,6 +50,9 @@ namespace DiscImageChef.Decoders.DVD /// T10/1836-D revision 2g /// ECMA 365 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class UDI { public struct UniqueDiscIdentifier diff --git a/DiscImageChef.Decoders/Floppy/Amiga.cs b/DiscImageChef.Decoders/Floppy/Amiga.cs index 87b20b45..eb9cffc0 100644 --- a/DiscImageChef.Decoders/Floppy/Amiga.cs +++ b/DiscImageChef.Decoders/Floppy/Amiga.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -37,6 +38,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for Commodore Amiga decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Amiga { public struct Sector diff --git a/DiscImageChef.Decoders/Floppy/Apple2.cs b/DiscImageChef.Decoders/Floppy/Apple2.cs index c45af811..ab7b58c1 100644 --- a/DiscImageChef.Decoders/Floppy/Apple2.cs +++ b/DiscImageChef.Decoders/Floppy/Apple2.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -42,6 +43,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for Apple ][ floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Apple2 { /// @@ -295,17 +299,15 @@ namespace DiscImageChef.Decoders.Floppy // Pre DOS 3.3 if(sector.addressField.prologue[2] == 0xB5) return Decode5and3(sector.dataField.data); // DOS 3.3 - if(sector.addressField.prologue[2] == 0x96) return Decode6and2(sector.dataField.data); + return sector.addressField.prologue[2] == 0x96 ? Decode6and2(sector.dataField.data) : null; // Unknown - return null; // Not Apple ][ GCR? } public static RawSector MarshalSector(byte[] data, int offset = 0) { - int temp; - return MarshalSector(data, out temp, offset); + return MarshalSector(data, out _, offset); } public static RawSector MarshalSector(byte[] data, out int endOffset, int offset = 0) @@ -315,11 +317,7 @@ namespace DiscImageChef.Decoders.Floppy // Not an Apple ][ GCR sector if(data == null || data.Length < 363) return null; - RawSector sector; int position = offset; - MemoryStream gaps; - bool onSync; - int syncCount; try { @@ -333,28 +331,18 @@ namespace DiscImageChef.Decoders.Floppy // Epilogue not in correct position if(data[position + 11] != 0xDE || data[position + 12] != 0xAA) return null; - sector = new RawSector(); - sector.addressField = new RawAddressField(); - sector.addressField.prologue = new byte[3]; - sector.addressField.prologue[0] = data[position]; - sector.addressField.prologue[1] = data[position + 1]; - sector.addressField.prologue[2] = data[position + 2]; - sector.addressField.volume = new byte[2]; - sector.addressField.volume[0] = data[position + 3]; - sector.addressField.volume[1] = data[position + 4]; - sector.addressField.track = new byte[2]; - sector.addressField.track[0] = data[position + 5]; - sector.addressField.track[1] = data[position + 6]; - sector.addressField.sector = new byte[2]; - sector.addressField.sector[0] = data[position + 7]; - sector.addressField.sector[1] = data[position + 8]; - sector.addressField.checksum = new byte[2]; - sector.addressField.checksum[0] = data[position + 9]; - sector.addressField.checksum[1] = data[position + 10]; - sector.addressField.epilogue = new byte[3]; - sector.addressField.epilogue[0] = data[position + 11]; - sector.addressField.epilogue[1] = data[position + 12]; - sector.addressField.epilogue[2] = data[position + 13]; + RawSector sector = new RawSector + { + addressField = new RawAddressField + { + prologue = new[] {data[position], data[position + 1], data[position + 2]}, + volume = new[] {data[position + 3], data[position + 4]}, + track = new[] {data[position + 5], data[position + 6]}, + sector = new[] {data[position + 7], data[position + 8]}, + checksum = new[] {data[position + 9], data[position + 10]}, + epilogue = new[] {data[position + 11], data[position + 12], data[position + 13]} + } + }; DicConsole.DebugWriteLine("Apple ][ GCR Decoder", "Volume {0}", (((sector.addressField.volume[0] & 0x55) << 1) | @@ -373,9 +361,9 @@ namespace DiscImageChef.Decoders.Floppy sector.addressField.epilogue[2]); position += 14; - syncCount = 0; - onSync = false; - gaps = new MemoryStream(); + int syncCount = 0; + bool onSync = false; + MemoryStream gaps = new MemoryStream(); while(data[position] == 0xFF) { @@ -495,8 +483,7 @@ namespace DiscImageChef.Decoders.Floppy public static RawTrack MarshalTrack(byte[] data, int offset = 0) { - int temp; - return MarshalTrack(data, out temp, offset); + return MarshalTrack(data, out _, offset); } public static RawTrack MarshalTrack(byte[] data, out int endOffset, int offset = 0) @@ -551,9 +538,7 @@ namespace DiscImageChef.Decoders.Floppy if(sectors.Count == 0) return null; - RawTrack track = new RawTrack(); - track.gap = gaps.ToArray(); - track.sectors = sectors.ToArray(); + RawTrack track = new RawTrack {gap = gaps.ToArray(), sectors = sectors.ToArray()}; endOffset = position; return track; } @@ -564,7 +549,7 @@ namespace DiscImageChef.Decoders.Floppy MemoryStream raw = new MemoryStream(); raw.Write(track.gap, 0, track.gap.Length); - foreach(byte[] rawSector in track.sectors.Select(sector => MarshalSector(sector))) + foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) { raw.Write(rawSector, 0, rawSector.Length); } return raw.ToArray(); @@ -572,8 +557,7 @@ namespace DiscImageChef.Decoders.Floppy public static List MarshalDisk(byte[] data, int offset = 0) { - int temp; - return MarshalDisk(data, out temp, offset); + return MarshalDisk(data, out _, offset); } public static List MarshalDisk(byte[] data, out int endOffset, int offset = 0) @@ -605,15 +589,14 @@ namespace DiscImageChef.Decoders.Floppy if(disk == null) return null; MemoryStream raw = new MemoryStream(); - foreach(byte[] rawTrack in disk.Select(track => MarshalTrack(track))) { raw.Write(rawTrack, 0, rawTrack.Length); } + foreach(byte[] rawTrack in disk.Select(MarshalTrack)) { raw.Write(rawTrack, 0, rawTrack.Length); } return raw.ToArray(); } public static bool IsApple2GCR(byte[] data) { - int position; - RawSector sector = MarshalSector(data, out position, 0); + RawSector sector = MarshalSector(data, out int position); return sector != null && position != 0; } diff --git a/DiscImageChef.Decoders/Floppy/AppleSony.cs b/DiscImageChef.Decoders/Floppy/AppleSony.cs index 98b1c2f7..26520241 100644 --- a/DiscImageChef.Decoders/Floppy/AppleSony.cs +++ b/DiscImageChef.Decoders/Floppy/AppleSony.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -44,6 +45,10 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for Apple Sony GCR floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class AppleSony { /// @@ -149,8 +154,7 @@ namespace DiscImageChef.Decoders.Floppy sector.addressField.prologue[2] != 0x96) return null; uint ck1, ck2, ck3; - byte carry; - byte w1, w2, w3, w4; + byte w3; byte[] bf1 = new byte[175]; byte[] bf2 = new byte[175]; byte[] bf3 = new byte[175]; @@ -161,9 +165,9 @@ namespace DiscImageChef.Decoders.Floppy w3 = 0; for(int i = 0; i <= 174; i++) { - w4 = nib_data[j++]; - w1 = nib_data[j++]; - w2 = nib_data[j++]; + byte w4 = nib_data[j++]; + byte w1 = nib_data[j++]; + byte w2 = nib_data[j++]; if(i != 174) w3 = nib_data[j++]; @@ -181,7 +185,7 @@ namespace DiscImageChef.Decoders.Floppy ck1 = (ck1 & 0xFF) << 1; if((ck1 & 0x0100) > 0) ck1++; - carry = (byte)((bf1[j] ^ ck1) & 0xFF); + byte carry = (byte)((bf1[j] ^ ck1) & 0xFF); ck3 += carry; if((ck1 & 0x0100) > 0) { @@ -219,8 +223,7 @@ namespace DiscImageChef.Decoders.Floppy public static RawSector MarshalSector(byte[] data, int offset = 0) { - int temp; - return MarshalSector(data, out temp, offset); + return MarshalSector(data, out _, offset); } public static RawSector MarshalSector(byte[] data, out int endOffset, int offset = 0) @@ -230,11 +233,7 @@ namespace DiscImageChef.Decoders.Floppy // Not an Apple ][ GCR sector if(data == null || data.Length < 363) return null; - RawSector sector; int position = offset; - MemoryStream gaps; - bool onSync; - int syncCount; try { @@ -246,25 +245,24 @@ namespace DiscImageChef.Decoders.Floppy // Epilogue not in correct position if(data[position + 8] != 0xDE || data[position + 9] != 0xAA) return null; - sector = new RawSector(); - sector.addressField = new RawAddressField(); - sector.addressField.prologue = new byte[3]; - sector.addressField.prologue[0] = data[position]; - sector.addressField.prologue[1] = data[position + 1]; - sector.addressField.prologue[2] = data[position + 2]; - sector.addressField.track = data[position + 3]; - sector.addressField.sector = data[position + 4]; - sector.addressField.side = data[position + 5]; - sector.addressField.format = (AppleEncodedFormat)data[position + 6]; - sector.addressField.checksum = data[position + 7]; - sector.addressField.epilogue = new byte[2]; - sector.addressField.epilogue[0] = data[position + 8]; - sector.addressField.epilogue[1] = data[position + 9]; + RawSector sector = new RawSector + { + addressField = new RawAddressField + { + prologue = new[] {data[position], data[position + 1], data[position + 2]}, + track = data[position + 3], + sector = data[position + 4], + side = data[position + 5], + format = (AppleEncodedFormat)data[position + 6], + checksum = data[position + 7], + epilogue = new[] {data[position + 8], data[position + 9]} + } + }; position += 10; - syncCount = 0; - onSync = false; - gaps = new MemoryStream(); + int syncCount = 0; + bool onSync = false; + MemoryStream gaps = new MemoryStream(); while(data[position] == 0xFF) { @@ -282,12 +280,11 @@ namespace DiscImageChef.Decoders.Floppy return null; sector.innerGap = gaps.ToArray(); - sector.dataField = new RawDataField(); - sector.dataField.prologue = new byte[3]; - sector.dataField.prologue[0] = data[position]; - sector.dataField.prologue[1] = data[position + 1]; - sector.dataField.prologue[2] = data[position + 2]; - sector.dataField.spare = data[position + 3]; + sector.dataField = new RawDataField + { + prologue = new[] {data[position], data[position + 1], data[position + 2]}, + spare = data[position + 3] + }; position += 4; gaps = new MemoryStream(); @@ -382,8 +379,7 @@ namespace DiscImageChef.Decoders.Floppy public static RawTrack MarshalTrack(byte[] data, int offset = 0) { - int temp; - return MarshalTrack(data, out temp, offset); + return MarshalTrack(data, out _, offset); } public static RawTrack MarshalTrack(byte[] data, out int endOffset, int offset = 0) @@ -434,9 +430,7 @@ namespace DiscImageChef.Decoders.Floppy if(sectors.Count == 0) return null; - RawTrack track = new RawTrack(); - track.gap = gaps.ToArray(); - track.sectors = sectors.ToArray(); + RawTrack track = new RawTrack {gap = gaps.ToArray(), sectors = sectors.ToArray()}; endOffset = position; return track; } @@ -447,7 +441,7 @@ namespace DiscImageChef.Decoders.Floppy MemoryStream raw = new MemoryStream(); raw.Write(track.gap, 0, track.gap.Length); - foreach(byte[] rawSector in track.sectors.Select(sector => MarshalSector(sector))) + foreach(byte[] rawSector in track.sectors.Select(MarshalSector)) { raw.Write(rawSector, 0, rawSector.Length); } return raw.ToArray(); @@ -455,8 +449,7 @@ namespace DiscImageChef.Decoders.Floppy public static List MarshalDisk(byte[] data, int offset = 0) { - int temp; - return MarshalDisk(data, out temp, offset); + return MarshalDisk(data, out _, offset); } public static List MarshalDisk(byte[] data, out int endOffset, int offset = 0) @@ -488,15 +481,14 @@ namespace DiscImageChef.Decoders.Floppy if(disk == null) return null; MemoryStream raw = new MemoryStream(); - foreach(byte[] rawTrack in disk.Select(track => MarshalTrack(track))) { raw.Write(rawTrack, 0, rawTrack.Length); } + foreach(byte[] rawTrack in disk.Select(MarshalTrack)) { raw.Write(rawTrack, 0, rawTrack.Length); } return raw.ToArray(); } public static bool IsAppleSonyGCR(byte[] data) { - int position; - RawSector sector = MarshalSector(data, out position, 0); + RawSector sector = MarshalSector(data, out int position); return sector != null && position != 0; } diff --git a/DiscImageChef.Decoders/Floppy/Commodore.cs b/DiscImageChef.Decoders/Floppy/Commodore.cs index bbd53351..8c9aa522 100644 --- a/DiscImageChef.Decoders/Floppy/Commodore.cs +++ b/DiscImageChef.Decoders/Floppy/Commodore.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -37,6 +38,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for Commodore GCR floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Commodore { /// diff --git a/DiscImageChef.Decoders/Floppy/Enums.cs b/DiscImageChef.Decoders/Floppy/Enums.cs index 25f53e55..1fd6b9a9 100644 --- a/DiscImageChef.Decoders/Floppy/Enums.cs +++ b/DiscImageChef.Decoders/Floppy/Enums.cs @@ -30,11 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.Floppy { /// /// In-sector code for sector size /// + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum IBMSectorSizeCode : byte { /// @@ -71,6 +74,7 @@ namespace DiscImageChef.Decoders.Floppy FricelyFriceKilo = 7 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum IBMIdType : byte { IndexMark = 0xFC, @@ -79,6 +83,7 @@ namespace DiscImageChef.Decoders.Floppy DeletedDataMark = 0xF8 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum AppleEncodedFormat : byte { /// diff --git a/DiscImageChef.Decoders/Floppy/ISO.cs b/DiscImageChef.Decoders/Floppy/ISO.cs index c52dce7f..9ee89f5b 100644 --- a/DiscImageChef.Decoders/Floppy/ISO.cs +++ b/DiscImageChef.Decoders/Floppy/ISO.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -47,6 +48,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for ISO floppy decoding (also used by Atari ST and others) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class ISO { /// diff --git a/DiscImageChef.Decoders/Floppy/Perpendicular.cs b/DiscImageChef.Decoders/Floppy/Perpendicular.cs index b8800100..1499535c 100644 --- a/DiscImageChef.Decoders/Floppy/Perpendicular.cs +++ b/DiscImageChef.Decoders/Floppy/Perpendicular.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -47,6 +48,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for perpendicular MFM floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Perpendicular { /// diff --git a/DiscImageChef.Decoders/Floppy/System34.cs b/DiscImageChef.Decoders/Floppy/System34.cs index 1bf539dd..e2765fb5 100644 --- a/DiscImageChef.Decoders/Floppy/System34.cs +++ b/DiscImageChef.Decoders/Floppy/System34.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -47,6 +48,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for IBM System 34 floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class System34 { /// diff --git a/DiscImageChef.Decoders/Floppy/System3740.cs b/DiscImageChef.Decoders/Floppy/System3740.cs index 0d9b35f2..fab31ab2 100644 --- a/DiscImageChef.Decoders/Floppy/System3740.cs +++ b/DiscImageChef.Decoders/Floppy/System3740.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; namespace DiscImageChef.Decoders.Floppy @@ -47,6 +48,9 @@ namespace DiscImageChef.Decoders.Floppy /// /// Methods and structures for IBM System 3740 floppy decoding /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class System3740 { /// diff --git a/DiscImageChef.Decoders/LisaTag.cs b/DiscImageChef.Decoders/LisaTag.cs index ce7638b7..d318860e 100644 --- a/DiscImageChef.Decoders/LisaTag.cs +++ b/DiscImageChef.Decoders/LisaTag.cs @@ -31,9 +31,13 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders { + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class LisaTag { /// @@ -42,48 +46,48 @@ namespace DiscImageChef.Decoders public struct ProfileTag { /// 0x00, Lisa OS version number - public ushort version; + public ushort Version; /// 0x02 bits 7 to 6, kind of info in this block - public byte kind; + public byte Kind; /// 0x02 bits 5 to 0, reserved - public byte reserved; + public byte Reserved; /// 0x03, disk volume number - public byte volume; + public byte Volume; /// 0x04, file ID - public short fileID; + public short FileId; /// /// 0x06 bit 7, checksum valid? /// - public bool validChk; + public bool ValidChk; /// /// 0x06 bits 6 to 0, used bytes in block /// - public ushort usedBytes; + public ushort UsedBytes; /// /// 0x08, 3 bytes, absolute page number /// - public uint absPage; + public uint AbsPage; /// /// 0x0B, checksum of data /// - public byte checksum; + public byte Checksum; /// /// 0x0C, relative page number /// - public ushort relPage; + public ushort RelPage; /// /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block /// - public uint nextBlock; + public uint NextBlock; /// /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block /// - public uint prevBlock; + public uint PrevBlock; /// On-memory value for easy first block search. - public bool isFirst; + public bool IsFirst; /// On-memory value for easy last block search. - public bool isLast; + public bool IsLast; } /// @@ -92,52 +96,52 @@ namespace DiscImageChef.Decoders public struct PriamTag { /// 0x00, Lisa OS version number - public ushort version; + public ushort Version; /// 0x02 bits 7 to 6, kind of info in this block - public byte kind; + public byte Kind; /// 0x02 bits 5 to 0, reserved - public byte reserved; + public byte Reserved; /// 0x03, disk volume number - public byte volume; + public byte Volume; /// 0x04, file ID - public short fileID; + public short FileId; /// /// 0x06 bit 7, checksum valid? /// - public bool validChk; + public bool ValidChk; /// /// 0x06 bits 6 to 0, used bytes in block /// - public ushort usedBytes; + public ushort UsedBytes; /// /// 0x08, 3 bytes, absolute page number /// - public uint absPage; + public uint AbsPage; /// /// 0x0B, checksum of data /// - public byte checksum; + public byte Checksum; /// /// 0x0C, relative page number /// - public ushort relPage; + public ushort RelPage; /// /// 0x0E, 3 bytes, next block, 0xFFFFFF if it's last block /// - public uint nextBlock; + public uint NextBlock; /// /// 0x11, 3 bytes, previous block, 0xFFFFFF if it's first block /// - public uint prevBlock; + public uint PrevBlock; /// /// 0x14, disk size /// - public uint diskSize; + public uint DiskSize; /// On-memory value for easy first block search. - public bool isFirst; + public bool IsFirst; /// On-memory value for easy last block search. - public bool isLast; + public bool IsLast; } /// @@ -146,32 +150,32 @@ namespace DiscImageChef.Decoders public struct SonyTag { /// 0x00, Lisa OS version number - public ushort version; + public ushort Version; /// 0x02 bits 7 to 6, kind of info in this block - public byte kind; + public byte Kind; /// 0x02 bits 5 to 0, reserved - public byte reserved; + public byte Reserved; /// 0x03, disk volume number - public byte volume; + public byte Volume; /// 0x04, file ID - public short fileID; + public short FileId; /// /// 0x06, relative page number /// - public ushort relPage; + public ushort RelPage; /// /// 0x08, 3 bytes, next block, 0x7FF if it's last block, 0x8000 set if block is valid /// - public ushort nextBlock; + public ushort NextBlock; /// /// 0x0A, 3 bytes, previous block, 0x7FF if it's first block /// - public ushort prevBlock; + public ushort PrevBlock; /// On-memory value for easy first block search. - public bool isFirst; + public bool IsFirst; /// On-memory value for easy last block search. - public bool isLast; + public bool IsLast; } public static SonyTag? DecodeSonyTag(byte[] tag) @@ -182,17 +186,17 @@ namespace DiscImageChef.Decoders BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; - snTag.version = BigEndianBitConverter.ToUInt16(tag, 0); - snTag.kind = (byte)((tag[2] & 0xC0) >> 6); - snTag.reserved = (byte)(tag[2] & 0x3F); - snTag.volume = tag[3]; - snTag.fileID = BigEndianBitConverter.ToInt16(tag, 4); - snTag.relPage = BigEndianBitConverter.ToUInt16(tag, 6); - snTag.nextBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 8) & 0x7FF); - snTag.prevBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 10) & 0x7FF); + snTag.Version = BigEndianBitConverter.ToUInt16(tag, 0); + snTag.Kind = (byte)((tag[2] & 0xC0) >> 6); + snTag.Reserved = (byte)(tag[2] & 0x3F); + snTag.Volume = tag[3]; + snTag.FileId = BigEndianBitConverter.ToInt16(tag, 4); + snTag.RelPage = BigEndianBitConverter.ToUInt16(tag, 6); + snTag.NextBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 8) & 0x7FF); + snTag.PrevBlock = (ushort)(BigEndianBitConverter.ToUInt16(tag, 10) & 0x7FF); - snTag.isLast = snTag.nextBlock == 0x7FF; - snTag.isFirst = snTag.prevBlock == 0x7FF; + snTag.IsLast = snTag.NextBlock == 0x7FF; + snTag.IsFirst = snTag.PrevBlock == 0x7FF; return snTag; } @@ -207,37 +211,37 @@ namespace DiscImageChef.Decoders byte[] tmp = new byte[4]; - phTag.version = BigEndianBitConverter.ToUInt16(tag, 0); - phTag.kind = (byte)((tag[2] & 0xC0) >> 6); - phTag.reserved = (byte)(tag[2] & 0x3F); - phTag.volume = tag[3]; - phTag.fileID = BigEndianBitConverter.ToInt16(tag, 4); - phTag.validChk |= (tag[6] & 0x80) == 0x80; - phTag.usedBytes = (ushort)(BigEndianBitConverter.ToUInt16(tag, 6) & 0x7FFF); + phTag.Version = BigEndianBitConverter.ToUInt16(tag, 0); + phTag.Kind = (byte)((tag[2] & 0xC0) >> 6); + phTag.Reserved = (byte)(tag[2] & 0x3F); + phTag.Volume = tag[3]; + phTag.FileId = BigEndianBitConverter.ToInt16(tag, 4); + phTag.ValidChk |= (tag[6] & 0x80) == 0x80; + phTag.UsedBytes = (ushort)(BigEndianBitConverter.ToUInt16(tag, 6) & 0x7FFF); tmp[0] = 0x00; tmp[1] = tag[8]; tmp[2] = tag[9]; tmp[3] = tag[10]; - phTag.absPage = BigEndianBitConverter.ToUInt32(tmp, 0); + phTag.AbsPage = BigEndianBitConverter.ToUInt32(tmp, 0); - phTag.checksum = tag[11]; - phTag.relPage = BigEndianBitConverter.ToUInt16(tag, 12); + phTag.Checksum = tag[11]; + phTag.RelPage = BigEndianBitConverter.ToUInt16(tag, 12); tmp[0] = 0x00; tmp[1] = tag[14]; tmp[2] = tag[15]; tmp[3] = tag[16]; - phTag.nextBlock = BigEndianBitConverter.ToUInt32(tmp, 0); + phTag.NextBlock = BigEndianBitConverter.ToUInt32(tmp, 0); tmp[0] = 0x00; tmp[1] = tag[17]; tmp[2] = tag[18]; tmp[3] = tag[19]; - phTag.prevBlock = BigEndianBitConverter.ToUInt32(tmp, 0); + phTag.PrevBlock = BigEndianBitConverter.ToUInt32(tmp, 0); - phTag.isLast = phTag.nextBlock == 0xFFFFFF; - phTag.isFirst = phTag.prevBlock == 0xFFFFFF; + phTag.IsLast = phTag.NextBlock == 0xFFFFFF; + phTag.IsFirst = phTag.PrevBlock == 0xFFFFFF; return phTag; } @@ -252,39 +256,39 @@ namespace DiscImageChef.Decoders byte[] tmp = new byte[4]; - pmTag.version = BigEndianBitConverter.ToUInt16(tag, 0); - pmTag.kind = (byte)((tag[2] & 0xC0) >> 6); - pmTag.reserved = (byte)(tag[2] & 0x3F); - pmTag.volume = tag[3]; - pmTag.fileID = BigEndianBitConverter.ToInt16(tag, 4); - pmTag.validChk |= (tag[6] & 0x80) == 0x80; - pmTag.usedBytes = (ushort)(BigEndianBitConverter.ToUInt16(tag, 6) & 0x7FFF); + pmTag.Version = BigEndianBitConverter.ToUInt16(tag, 0); + pmTag.Kind = (byte)((tag[2] & 0xC0) >> 6); + pmTag.Reserved = (byte)(tag[2] & 0x3F); + pmTag.Volume = tag[3]; + pmTag.FileId = BigEndianBitConverter.ToInt16(tag, 4); + pmTag.ValidChk |= (tag[6] & 0x80) == 0x80; + pmTag.UsedBytes = (ushort)(BigEndianBitConverter.ToUInt16(tag, 6) & 0x7FFF); tmp[0] = 0x00; tmp[1] = tag[8]; tmp[2] = tag[9]; tmp[3] = tag[10]; - pmTag.absPage = BigEndianBitConverter.ToUInt32(tmp, 0); + pmTag.AbsPage = BigEndianBitConverter.ToUInt32(tmp, 0); - pmTag.checksum = tag[11]; - pmTag.relPage = BigEndianBitConverter.ToUInt16(tag, 12); + pmTag.Checksum = tag[11]; + pmTag.RelPage = BigEndianBitConverter.ToUInt16(tag, 12); tmp[0] = 0x00; tmp[1] = tag[14]; tmp[2] = tag[15]; tmp[3] = tag[16]; - pmTag.nextBlock = BigEndianBitConverter.ToUInt32(tmp, 0); + pmTag.NextBlock = BigEndianBitConverter.ToUInt32(tmp, 0); tmp[0] = 0x00; tmp[1] = tag[17]; tmp[2] = tag[18]; tmp[3] = tag[19]; - pmTag.prevBlock = BigEndianBitConverter.ToUInt32(tmp, 0); + pmTag.PrevBlock = BigEndianBitConverter.ToUInt32(tmp, 0); - pmTag.diskSize = BigEndianBitConverter.ToUInt32(tag, 20); + pmTag.DiskSize = BigEndianBitConverter.ToUInt32(tag, 20); - pmTag.isLast = pmTag.nextBlock == 0xFFFFFF; - pmTag.isFirst = pmTag.prevBlock == 0xFFFFFF; + pmTag.IsLast = pmTag.NextBlock == 0xFFFFFF; + pmTag.IsFirst = pmTag.PrevBlock == 0xFFFFFF; return pmTag; } @@ -303,21 +307,21 @@ namespace DiscImageChef.Decoders if(snTag == null) return null; pmTag = new PriamTag(); - pmTag.absPage = 0; - pmTag.checksum = 0; - pmTag.diskSize = 0; - pmTag.fileID = snTag.Value.fileID; - pmTag.kind = snTag.Value.kind; - pmTag.nextBlock = snTag.Value.nextBlock; - pmTag.prevBlock = snTag.Value.prevBlock; - pmTag.relPage = snTag.Value.relPage; - pmTag.reserved = snTag.Value.reserved; - pmTag.usedBytes = 0; - pmTag.validChk = false; - pmTag.version = snTag.Value.version; - pmTag.volume = snTag.Value.volume; - pmTag.isFirst = snTag.Value.isFirst; - pmTag.isLast = snTag.Value.isLast; + pmTag.AbsPage = 0; + pmTag.Checksum = 0; + pmTag.DiskSize = 0; + pmTag.FileId = snTag.Value.FileId; + pmTag.Kind = snTag.Value.Kind; + pmTag.NextBlock = snTag.Value.NextBlock; + pmTag.PrevBlock = snTag.Value.PrevBlock; + pmTag.RelPage = snTag.Value.RelPage; + pmTag.Reserved = snTag.Value.Reserved; + pmTag.UsedBytes = 0; + pmTag.ValidChk = false; + pmTag.Version = snTag.Value.Version; + pmTag.Volume = snTag.Value.Volume; + pmTag.IsFirst = snTag.Value.IsFirst; + pmTag.IsLast = snTag.Value.IsLast; return pmTag; case 20: @@ -326,21 +330,21 @@ namespace DiscImageChef.Decoders if(phTag == null) return null; pmTag = new PriamTag(); - pmTag.absPage = phTag.Value.absPage; - pmTag.checksum = phTag.Value.checksum; - pmTag.diskSize = 0; - pmTag.fileID = phTag.Value.fileID; - pmTag.kind = phTag.Value.kind; - pmTag.nextBlock = phTag.Value.nextBlock; - pmTag.prevBlock = phTag.Value.prevBlock; - pmTag.relPage = phTag.Value.relPage; - pmTag.reserved = phTag.Value.reserved; - pmTag.usedBytes = phTag.Value.usedBytes; - pmTag.validChk = phTag.Value.validChk; - pmTag.version = phTag.Value.version; - pmTag.volume = phTag.Value.volume; - pmTag.isFirst = phTag.Value.isFirst; - pmTag.isLast = phTag.Value.isLast; + pmTag.AbsPage = phTag.Value.AbsPage; + pmTag.Checksum = phTag.Value.Checksum; + pmTag.DiskSize = 0; + pmTag.FileId = phTag.Value.FileId; + pmTag.Kind = phTag.Value.Kind; + pmTag.NextBlock = phTag.Value.NextBlock; + pmTag.PrevBlock = phTag.Value.PrevBlock; + pmTag.RelPage = phTag.Value.RelPage; + pmTag.Reserved = phTag.Value.Reserved; + pmTag.UsedBytes = phTag.Value.UsedBytes; + pmTag.ValidChk = phTag.Value.ValidChk; + pmTag.Version = phTag.Value.Version; + pmTag.Volume = phTag.Value.Volume; + pmTag.IsFirst = phTag.Value.IsFirst; + pmTag.IsLast = phTag.Value.IsLast; return pmTag; case 24: return DecodePriamTag(tag); diff --git a/DiscImageChef.Decoders/MMC/CID.cs b/DiscImageChef.Decoders/MMC/CID.cs index 34e3cca9..ec64f88d 100644 --- a/DiscImageChef.Decoders/MMC/CID.cs +++ b/DiscImageChef.Decoders/MMC/CID.cs @@ -31,10 +31,15 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.MMC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] public class CID { public byte Manufacturer; @@ -47,18 +52,18 @@ namespace DiscImageChef.Decoders.MMC public byte CRC; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static CID DecodeCID(uint[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; + if(response?.Length != 4) return null; byte[] data = new byte[16]; - byte[] tmp; - tmp = BitConverter.GetBytes(response[0]); + byte[] tmp = BitConverter.GetBytes(response[0]); Array.Copy(tmp, 0, data, 0, 4); tmp = BitConverter.GetBytes(response[1]); Array.Copy(tmp, 0, data, 4, 4); @@ -72,22 +77,20 @@ namespace DiscImageChef.Decoders.MMC public static CID DecodeCID(byte[] response) { - if(response == null) return null; + if(response?.Length != 16) return null; - if(response.Length != 16) return null; - - byte[] tmp; - - CID cid = new CID(); - cid.Manufacturer = response[0]; - cid.DeviceType = (byte)(response[1] & 0x03); - tmp = new byte[6]; + CID cid = new CID + { + Manufacturer = response[0], + DeviceType = (byte)(response[1] & 0x03), + ProductRevision = response[9], + ProductSerialNumber = BitConverter.ToUInt32(response, 10), + ManufacturingDate = response[14], + CRC = (byte)((response[15] & 0xFE) >> 1) + }; + byte[] tmp = new byte[6]; Array.Copy(response, 3, tmp, 0, 6); cid.ProductName = StringHandlers.CToString(tmp); - cid.ProductRevision = response[9]; - cid.ProductSerialNumber = BitConverter.ToUInt32(response, 10); - cid.ManufacturingDate = response[14]; - cid.CRC = (byte)((response[15] & 0xFE) >> 1); return cid; } diff --git a/DiscImageChef.Decoders/MMC/CSD.cs b/DiscImageChef.Decoders/MMC/CSD.cs index 7cc70bd7..d9a5a997 100644 --- a/DiscImageChef.Decoders/MMC/CSD.cs +++ b/DiscImageChef.Decoders/MMC/CSD.cs @@ -31,10 +31,15 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.MMC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class CSD { public byte Structure; @@ -72,18 +77,18 @@ namespace DiscImageChef.Decoders.MMC public byte CRC; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static CSD DecodeCSD(uint[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; + if(response?.Length != 4) return null; byte[] data = new byte[16]; - byte[] tmp; - tmp = BitConverter.GetBytes(response[0]); + byte[] tmp = BitConverter.GetBytes(response[0]); Array.Copy(tmp, 0, data, 0, 4); tmp = BitConverter.GetBytes(response[1]); Array.Copy(tmp, 0, data, 4, 4); @@ -97,47 +102,44 @@ namespace DiscImageChef.Decoders.MMC public static CSD DecodeCSD(byte[] response) { - if(response == null) return null; + if(response?.Length != 16) return null; - if(response.Length != 16) return null; - - CSD csd = new CSD(); - - csd.Structure = (byte)((response[0] & 0xC0) >> 6); - csd.Version = (byte)((response[0] & 0x3C) >> 2); - csd.TAAC = response[1]; - csd.NSAC = response[2]; - csd.Speed = response[3]; - csd.Classes = (ushort)((response[4] << 4) + ((response[5] & 0xF0) >> 4)); - csd.ReadBlockLength = (byte)(response[5] & 0x0F); - csd.ReadsPartialBlocks = (response[6] & 0x80) == 0x80; - csd.WriteMisalignment = (response[6] & 0x40) == 0x40; - csd.ReadMisalignment = (response[6] & 0x20) == 0x20; - csd.DSRImplemented = (response[6] & 0x10) == 0x10; - csd.Size = (ushort)(((response[6] & 0x03) << 10) + (response[7] << 2) + ((response[8] & 0xC0) >> 6)); - csd.ReadCurrentAtVddMin = (byte)((response[8] & 0x38) >> 3); - csd.ReadCurrentAtVddMax = (byte)(response[8] & 0x07); - csd.WriteCurrentAtVddMin = (byte)((response[9] & 0xE0) >> 5); - csd.WriteCurrentAtVddMax = (byte)((response[9] & 0x1C) >> 2); - csd.SizeMultiplier = (byte)(((response[9] & 0x03) << 1) + ((response[10] & 0x80) >> 7)); - csd.EraseGroupSize = (byte)((response[10] & 0x7C) >> 2); - csd.EraseGroupSizeMultiplier = (byte)(((response[10] & 0x03) << 3) + ((response[11] & 0xE0) >> 5)); - csd.WriteProtectGroupSize = (byte)(response[11] & 0x1F); - csd.WriteProtectGroupEnable = (response[12] & 0x80) == 0x80; - csd.DefaultECC = (byte)((response[12] & 0x60) >> 5); - csd.WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2); - csd.WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6)); - csd.WritesPartialBlocks = (response[13] & 0x20) == 0x20; - csd.ContentProtection = (response[13] & 0x01) == 0x01; - csd.FileFormatGroup = (response[14] & 0x80) == 0x80; - csd.Copy = (response[14] & 0x40) == 0x40; - csd.PermanentWriteProtect = (response[14] & 0x20) == 0x20; - csd.TemporaryWriteProtect = (response[14] & 0x10) == 0x10; - csd.FileFormat = (byte)((response[14] & 0x0C) >> 2); - csd.ECC = (byte)(response[14] & 0x03); - csd.CRC = (byte)((response[15] & 0xFE) >> 1); - - return csd; + return new CSD + { + Structure = (byte)((response[0] & 0xC0) >> 6), + Version = (byte)((response[0] & 0x3C) >> 2), + TAAC = response[1], + NSAC = response[2], + Speed = response[3], + Classes = (ushort)((response[4] << 4) + ((response[5] & 0xF0) >> 4)), + ReadBlockLength = (byte)(response[5] & 0x0F), + ReadsPartialBlocks = (response[6] & 0x80) == 0x80, + WriteMisalignment = (response[6] & 0x40) == 0x40, + ReadMisalignment = (response[6] & 0x20) == 0x20, + DSRImplemented = (response[6] & 0x10) == 0x10, + Size = (ushort)(((response[6] & 0x03) << 10) + (response[7] << 2) + ((response[8] & 0xC0) >> 6)), + ReadCurrentAtVddMin = (byte)((response[8] & 0x38) >> 3), + ReadCurrentAtVddMax = (byte)(response[8] & 0x07), + WriteCurrentAtVddMin = (byte)((response[9] & 0xE0) >> 5), + WriteCurrentAtVddMax = (byte)((response[9] & 0x1C) >> 2), + SizeMultiplier = (byte)(((response[9] & 0x03) << 1) + ((response[10] & 0x80) >> 7)), + EraseGroupSize = (byte)((response[10] & 0x7C) >> 2), + EraseGroupSizeMultiplier = (byte)(((response[10] & 0x03) << 3) + ((response[11] & 0xE0) >> 5)), + WriteProtectGroupSize = (byte)(response[11] & 0x1F), + WriteProtectGroupEnable = (response[12] & 0x80) == 0x80, + DefaultECC = (byte)((response[12] & 0x60) >> 5), + WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2), + WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6)), + WritesPartialBlocks = (response[13] & 0x20) == 0x20, + ContentProtection = (response[13] & 0x01) == 0x01, + FileFormatGroup = (response[14] & 0x80) == 0x80, + Copy = (response[14] & 0x40) == 0x40, + PermanentWriteProtect = (response[14] & 0x20) == 0x20, + TemporaryWriteProtect = (response[14] & 0x10) == 0x10, + FileFormat = (byte)((response[14] & 0x0C) >> 2), + ECC = (byte)(response[14] & 0x03), + CRC = (byte)((response[15] & 0xFE) >> 1) + }; } public static string PrettifyCSD(CSD csd) diff --git a/DiscImageChef.Decoders/MMC/ExtendedCSD.cs b/DiscImageChef.Decoders/MMC/ExtendedCSD.cs index cd517d46..02f7a39a 100644 --- a/DiscImageChef.Decoders/MMC/ExtendedCSD.cs +++ b/DiscImageChef.Decoders/MMC/ExtendedCSD.cs @@ -31,11 +31,16 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Runtime.InteropServices; using System.Text; namespace DiscImageChef.Decoders.MMC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] [StructLayout(LayoutKind.Sequential)] public class ExtendedCSD { @@ -197,7 +202,10 @@ namespace DiscImageChef.Decoders.MMC [MarshalAs(UnmanagedType.ByValArray, SizeConst = 15)] public byte[] Reserved18; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static ExtendedCSD DecodeExtendedCSD(byte[] response) { diff --git a/DiscImageChef.Decoders/MMC/OCR.cs b/DiscImageChef.Decoders/MMC/OCR.cs index 74068ad3..f61fdf21 100644 --- a/DiscImageChef.Decoders/MMC/OCR.cs +++ b/DiscImageChef.Decoders/MMC/OCR.cs @@ -31,10 +31,15 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.MMC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class OCR { public bool PowerUp; @@ -58,42 +63,40 @@ namespace DiscImageChef.Decoders.MMC public bool OneSix; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static OCR DecodeOCR(uint response) { - OCR ocr = new OCR(); - - ocr.PowerUp = (response & 0x80000000) == 0x80000000; - ocr.AccessMode = (byte)((response & 0x60000000) >> 29); - ocr.ThreeFive = (response & 0x00800000) == 0x00800000; - ocr.ThreeFour = (response & 0x00400000) == 0x00400000; - ocr.ThreeThree = (response & 0x00200000) == 0x00200000; - ocr.ThreeTwo = (response & 0x00100000) == 0x00100000; - ocr.ThreeOne = (response & 0x00080000) == 0x00080000; - ocr.ThreeZero = (response & 0x00040000) == 0x00040000; - ocr.TwoNine = (response & 0x00020000) == 0x00020000; - ocr.TwoEight = (response & 0x00010000) == 0x00010000; - ocr.TwoSeven = (response & 0x00008000) == 0x00008000; - ocr.TwoSix = (response & 0x00004000) == 0x00004000; - ocr.TwoFive = (response & 0x00002000) == 0x00002000; - ocr.TwoFour = (response & 0x00001000) == 0x00001000; - ocr.TwoThree = (response & 0x00000800) == 0x00000800; - ocr.TwoTwo = (response & 0x00000400) == 0x00000400; - ocr.TwoOne = (response & 0x00000200) == 0x00000200; - ocr.TwoZero = (response & 0x00000100) == 0x00000100; - ocr.OneSix = (response & 0x00000080) == 0x00000080; - - return ocr; + return new OCR + { + PowerUp = (response & 0x80000000) == 0x80000000, + AccessMode = (byte)((response & 0x60000000) >> 29), + ThreeFive = (response & 0x00800000) == 0x00800000, + ThreeFour = (response & 0x00400000) == 0x00400000, + ThreeThree = (response & 0x00200000) == 0x00200000, + ThreeTwo = (response & 0x00100000) == 0x00100000, + ThreeOne = (response & 0x00080000) == 0x00080000, + ThreeZero = (response & 0x00040000) == 0x00040000, + TwoNine = (response & 0x00020000) == 0x00020000, + TwoEight = (response & 0x00010000) == 0x00010000, + TwoSeven = (response & 0x00008000) == 0x00008000, + TwoSix = (response & 0x00004000) == 0x00004000, + TwoFive = (response & 0x00002000) == 0x00002000, + TwoFour = (response & 0x00001000) == 0x00001000, + TwoThree = (response & 0x00000800) == 0x00000800, + TwoTwo = (response & 0x00000400) == 0x00000400, + TwoOne = (response & 0x00000200) == 0x00000200, + TwoZero = (response & 0x00000100) == 0x00000100, + OneSix = (response & 0x00000080) == 0x00000080 + }; } public static OCR DecodeOCR(byte[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; - - return DecodeOCR(BitConverter.ToUInt32(response, 0)); + return response?.Length != 4 ? null : DecodeOCR(BitConverter.ToUInt32(response, 0)); } public static string PrettifyOCR(OCR ocr) diff --git a/DiscImageChef.Decoders/MMC/VendorString.cs b/DiscImageChef.Decoders/MMC/VendorString.cs index 4bf5e237..0c2d6cd4 100644 --- a/DiscImageChef.Decoders/MMC/VendorString.cs +++ b/DiscImageChef.Decoders/MMC/VendorString.cs @@ -34,12 +34,12 @@ namespace DiscImageChef.Decoders.MMC { public static class VendorString { - public static string Prettify(byte MMCVendorID) + public static string Prettify(byte mmcVendorId) { - switch(MMCVendorID) + switch(mmcVendorId) { case 0x15: return "Samsung"; - default: return $"Unknown manufacturer ID 0x{MMCVendorID:X2}"; + default: return $"Unknown manufacturer ID 0x{mmcVendorId:X2}"; } } } diff --git a/DiscImageChef.Decoders/PCMCIA/CIS.cs b/DiscImageChef.Decoders/PCMCIA/CIS.cs index 7c533fa2..5afa75db 100644 --- a/DiscImageChef.Decoders/PCMCIA/CIS.cs +++ b/DiscImageChef.Decoders/PCMCIA/CIS.cs @@ -32,11 +32,15 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; namespace DiscImageChef.Decoders.PCMCIA { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class CIS { // TODO: Handle links? Or are they removed in lower layers of the operating system drivers? @@ -47,9 +51,7 @@ namespace DiscImageChef.Decoders.PCMCIA while(position < data.Length) { - Tuple tuple = new Tuple(); - - tuple.Code = (TupleCodes)data[position]; + Tuple tuple = new Tuple {Code = (TupleCodes)data[position]}; if(tuple.Code == TupleCodes.CISTPL_NULL) continue; @@ -75,28 +77,27 @@ namespace DiscImageChef.Decoders.PCMCIA if(tuple.Code != TupleCodes.CISTPL_DEVICEGEO && tuple.Code != TupleCodes.CISTPL_DEVICEGEO_A) return null; - if(tuple.Data == null) return null; - - return DecodeDeviceGeometryTuple(tuple.Data); + return tuple.Data == null ? null : DecodeDeviceGeometryTuple(tuple.Data); } public static DeviceGeometryTuple DecodeDeviceGeometryTuple(byte[] data) { - if(data == null) return null; - if((data.Length - 2) % 6 != 0) return null; + if((data?.Length - 2) % 6 != 0) return null; DeviceGeometryTuple tuple = new DeviceGeometryTuple(); List geometries = new List(); for(int position = 2; position < data.Length; position += 6) { - DeviceGeometry geometry = new DeviceGeometry(); - geometry.CardInterface = data[position]; - geometry.EraseBlockSize = data[position + 1]; - geometry.ReadBlockSize = data[position + 2]; - geometry.WriteBlockSize = data[position + 3]; - geometry.Partitions = data[position + 4]; - geometry.Interleaving = data[position + 5]; + DeviceGeometry geometry = new DeviceGeometry + { + CardInterface = data[position], + EraseBlockSize = data[position + 1], + ReadBlockSize = data[position + 2], + WriteBlockSize = data[position + 3], + Partitions = data[position + 4], + Interleaving = data[position + 5] + }; geometries.Add(geometry); } @@ -145,13 +146,9 @@ namespace DiscImageChef.Decoders.PCMCIA public static ManufacturerIdentificationTuple DecodeManufacturerIdentificationTuple(Tuple tuple) { - if(tuple == null) return null; + if(tuple?.Code != TupleCodes.CISTPL_MANFID) return null; - if(tuple.Code != TupleCodes.CISTPL_MANFID) return null; - - if(tuple.Data == null) return null; - - return DecodeManufacturerIdentificationTuple(tuple.Data); + return tuple.Data == null ? null : DecodeManufacturerIdentificationTuple(tuple.Data); } public static ManufacturerIdentificationTuple DecodeManufacturerIdentificationTuple(byte[] data) @@ -160,20 +157,18 @@ namespace DiscImageChef.Decoders.PCMCIA if(data.Length < 6) return null; - ManufacturerIdentificationTuple tuple = new ManufacturerIdentificationTuple(); - tuple.Code = (TupleCodes)data[0]; - tuple.Link = data[1]; - tuple.ManufacturerID = BitConverter.ToUInt16(data, 2); - tuple.CardID = BitConverter.ToUInt16(data, 4); - - return tuple; + return new ManufacturerIdentificationTuple + { + Code = (TupleCodes)data[0], + Link = data[1], + ManufacturerID = BitConverter.ToUInt16(data, 2), + CardID = BitConverter.ToUInt16(data, 4) + }; } public static string PrettifyManufacturerIdentificationTuple(ManufacturerIdentificationTuple tuple) { - if(tuple == null) return null; - - if(tuple.Code != TupleCodes.CISTPL_MANFID) return null; + if(tuple?.Code != TupleCodes.CISTPL_MANFID) return null; StringBuilder sb = new StringBuilder(); sb.AppendLine("PCMCIA Manufacturer Identification Tuple:"); @@ -195,13 +190,9 @@ namespace DiscImageChef.Decoders.PCMCIA public static Level1VersionTuple DecodeLevel1VersionTuple(Tuple tuple) { - if(tuple == null) return null; + if(tuple?.Code != TupleCodes.CISTPL_VERS_1) return null; - if(tuple.Code != TupleCodes.CISTPL_VERS_1) return null; - - if(tuple.Data == null) return null; - - return DecodeLevel1VersionTuple(tuple.Data); + return tuple.Data == null ? null : DecodeLevel1VersionTuple(tuple.Data); } public static Level1VersionTuple DecodeLevel1VersionTuple(byte[] data) @@ -215,11 +206,13 @@ namespace DiscImageChef.Decoders.PCMCIA bool firstString = false; bool secondString = false; - Level1VersionTuple tuple = new Level1VersionTuple(); - tuple.Code = (TupleCodes)data[0]; - tuple.Link = data[1]; - tuple.MajorVersion = data[2]; - tuple.MinorVersion = data[3]; + Level1VersionTuple tuple = new Level1VersionTuple + { + Code = (TupleCodes)data[0], + Link = data[1], + MajorVersion = data[2], + MinorVersion = data[3] + }; for(int position = 4; position < data.Length; position++) { @@ -259,9 +252,7 @@ namespace DiscImageChef.Decoders.PCMCIA public static string PrettifyLevel1VersionTuple(Level1VersionTuple tuple) { - if(tuple == null) return null; - - if(tuple.Code != TupleCodes.CISTPL_VERS_1) return null; + if(tuple?.Code != TupleCodes.CISTPL_VERS_1) return null; StringBuilder sb = new StringBuilder(); sb.AppendLine("PCMCIA Level 1 Version / Product Information Tuple:"); diff --git a/DiscImageChef.Decoders/PCMCIA/Enums.cs b/DiscImageChef.Decoders/PCMCIA/Enums.cs index 5a627639..74c0a886 100644 --- a/DiscImageChef.Decoders/PCMCIA/Enums.cs +++ b/DiscImageChef.Decoders/PCMCIA/Enums.cs @@ -30,11 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.PCMCIA { /// /// Tuple codes. /// + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum TupleCodes : byte { /// @@ -199,6 +202,7 @@ namespace DiscImageChef.Decoders.PCMCIA CISTPL_SPCL = 0x90 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DeviceTypeCodes : byte { /// @@ -243,6 +247,7 @@ namespace DiscImageChef.Decoders.PCMCIA DTYPE_EXTEND = 14 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DeviceSpeedCodes : byte { /// @@ -271,6 +276,7 @@ namespace DiscImageChef.Decoders.PCMCIA DSPEED_EXT = 7 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum FunctionCodes : byte { MultiFunction = 0x00, diff --git a/DiscImageChef.Decoders/PCMCIA/Types.cs b/DiscImageChef.Decoders/PCMCIA/Types.cs index 2f41af3d..18767aa7 100644 --- a/DiscImageChef.Decoders/PCMCIA/Types.cs +++ b/DiscImageChef.Decoders/PCMCIA/Types.cs @@ -30,11 +30,16 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.PCMCIA { /// /// Basic classure of a PCMCIA tuple /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class Tuple { public TupleCodes Code; @@ -45,6 +50,9 @@ namespace DiscImageChef.Decoders.PCMCIA /// /// Checksum tuple /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class ChecksumTuple { /// @@ -72,6 +80,9 @@ namespace DiscImageChef.Decoders.PCMCIA /// /// Indirect Access PC Card Memory /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class IndirectTuple { /// @@ -87,6 +98,9 @@ namespace DiscImageChef.Decoders.PCMCIA /// /// Link target tuple /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class LinkTargetTuple { /// @@ -106,6 +120,9 @@ namespace DiscImageChef.Decoders.PCMCIA /// /// 16-bit PC Card Long Link Tuple /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class LongLinkTuple { /// @@ -122,6 +139,10 @@ namespace DiscImageChef.Decoders.PCMCIA public uint Address; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] public class ConfigurationAddress { /// @@ -137,6 +158,9 @@ namespace DiscImageChef.Decoders.PCMCIA /// /// Multiple function link tuple /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class MultipleFunctionLinkTuple { /// @@ -157,6 +181,9 @@ namespace DiscImageChef.Decoders.PCMCIA public ConfigurationAddress[] Addresses; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class NoLinkTuple { /// @@ -169,6 +196,9 @@ namespace DiscImageChef.Decoders.PCMCIA public byte Link; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class AlternateStringTuple { /// @@ -185,6 +215,10 @@ namespace DiscImageChef.Decoders.PCMCIA public string[] Strings; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] public class ExtendedDeviceSpeed { /// @@ -201,6 +235,9 @@ namespace DiscImageChef.Decoders.PCMCIA public byte Exponent; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public struct DeviceInfo { /// @@ -233,6 +270,9 @@ namespace DiscImageChef.Decoders.PCMCIA public byte SizeCode; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class DeviceTuple { /// @@ -249,6 +289,9 @@ namespace DiscImageChef.Decoders.PCMCIA public DeviceInfo[] Infos; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public struct OtherConditionInfo { /// @@ -265,6 +308,9 @@ namespace DiscImageChef.Decoders.PCMCIA public bool MWAIT; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class OtherConditionTuple { /// @@ -285,6 +331,9 @@ namespace DiscImageChef.Decoders.PCMCIA public DeviceInfo[] Infos; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public struct DeviceGeometry { /// @@ -317,6 +366,10 @@ namespace DiscImageChef.Decoders.PCMCIA public byte Interleaving; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class DeviceGeometryTuple { /// @@ -333,6 +386,9 @@ namespace DiscImageChef.Decoders.PCMCIA public DeviceGeometry[] Geometries; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class FunctionIdentificationTuple { /// @@ -357,6 +413,10 @@ namespace DiscImageChef.Decoders.PCMCIA public bool POST; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class ManufacturerIdentificationTuple { /// @@ -377,6 +437,10 @@ namespace DiscImageChef.Decoders.PCMCIA public ushort CardID; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class Level1VersionTuple { /// @@ -409,6 +473,9 @@ namespace DiscImageChef.Decoders.PCMCIA public string[] AdditionalInformation; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class Level2VersionTuple { /// @@ -453,6 +520,9 @@ namespace DiscImageChef.Decoders.PCMCIA public string Information; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class GeometryTuple { /// diff --git a/DiscImageChef.Decoders/PCMCIA/VendorCode.cs b/DiscImageChef.Decoders/PCMCIA/VendorCode.cs index 9a4fd69e..364b8a41 100644 --- a/DiscImageChef.Decoders/PCMCIA/VendorCode.cs +++ b/DiscImageChef.Decoders/PCMCIA/VendorCode.cs @@ -30,8 +30,11 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.PCMCIA { + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public static class VendorCode { public static string Prettify(ushort id) diff --git a/DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs b/DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs index b4289f4e..ef202bb4 100644 --- a/DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs +++ b/DiscImageChef.Decoders/SCSI/DiscStructureCapabilities.cs @@ -31,9 +31,14 @@ // ****************************************************************************/ using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DiscStructureCapabilities { public struct Capability @@ -64,10 +69,12 @@ namespace DiscImageChef.Decoders.SCSI while(offset < response.Length) { - Capability cap = new Capability(); - cap.FormatCode = response[offset]; - cap.SDS = (response[offset + 1] & 0x80) == 0x80; - cap.RDS = (response[offset + 1] & 0x40) == 0x40; + Capability cap = new Capability + { + FormatCode = response[offset], + SDS = (response[offset + 1] & 0x80) == 0x80, + RDS = (response[offset + 1] & 0x40) == 0x40 + }; caps.Add(cap); offset += 4; } diff --git a/DiscImageChef.Decoders/SCSI/EVPD.cs b/DiscImageChef.Decoders/SCSI/EVPD.cs index d14ac39a..752a1ff2 100644 --- a/DiscImageChef.Decoders/SCSI/EVPD.cs +++ b/DiscImageChef.Decoders/SCSI/EVPD.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -39,6 +40,11 @@ using DiscImageChef.Decoders.ATA; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] public static class EVPD { /// @@ -48,9 +54,7 @@ namespace DiscImageChef.Decoders.SCSI /// Page 0x00. public static byte[] DecodePage00(byte[] page) { - if(page == null) return null; - - if(page[1] != 0) return null; + if(page?[1] != 0) return null; if(page.Length != page[3] + 4) return null; @@ -88,9 +92,7 @@ namespace DiscImageChef.Decoders.SCSI /// Page 0x80. public static string DecodePage80(byte[] page) { - if(page == null) return null; - - if(page[1] != 0x80) return null; + if(page?[1] != 0x80) return null; if(page.Length != page[3] + 4) return null; @@ -140,21 +142,20 @@ namespace DiscImageChef.Decoders.SCSI public static Page_81? DecodePage_81(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x81) return null; + if(pageResponse?[1] != 0x81) return null; if(pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 6) return null; - Page_81 decoded = new Page_81(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - decoded.Current = (ScsiDefinitions)(pageResponse[4] & 0x7F); - decoded.Default = (ScsiDefinitions)(pageResponse[5] & 0x7F); + Page_81 decoded = new Page_81 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + Current = (ScsiDefinitions)(pageResponse[4] & 0x7F), + Default = (ScsiDefinitions)(pageResponse[5] & 0x7F) + }; int position = 6; List definitions = new List(); @@ -222,9 +223,7 @@ namespace DiscImageChef.Decoders.SCSI /// Page 0x82. public static string DecodePage82(byte[] page) { - if(page == null) return null; - - if(page[1] != 0x82) return null; + if(page?[1] != 0x82) return null; if(page.Length != page[3] + 4) return null; @@ -378,32 +377,34 @@ namespace DiscImageChef.Decoders.SCSI public static Page_83? DecodePage_83(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x83) return null; + if(pageResponse?[1] != 0x83) return null; if(pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 6) return null; - Page_83 decoded = new Page_83(); + Page_83 decoded = new Page_83 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4) + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); int position = 4; List descriptors = new List(); while(position < pageResponse.Length) { - IdentificatonDescriptor descriptor = new IdentificatonDescriptor(); - descriptor.ProtocolIdentifier = (ProtocolIdentifiers)((pageResponse[position] & 0xF0) >> 4); - descriptor.CodeSet = (IdentificationCodeSet)(pageResponse[position] & 0x0F); - descriptor.PIV |= (pageResponse[position + 1] & 0x80) == 0x80; - descriptor.Association = (IdentificationAssociation)((pageResponse[position + 1] & 0x30) >> 4); - descriptor.Type = (IdentificationTypes)(pageResponse[position + 1] & 0x0F); - descriptor.Length = pageResponse[position + 3]; + IdentificatonDescriptor descriptor = new IdentificatonDescriptor + { + ProtocolIdentifier = (ProtocolIdentifiers)((pageResponse[position] & 0xF0) >> 4), + CodeSet = (IdentificationCodeSet)(pageResponse[position] & 0x0F), + PIV = (pageResponse[position + 1] & 0x80) == 0x80, + Association = (IdentificationAssociation)((pageResponse[position + 1] & 0x30) >> 4), + Type = (IdentificationTypes)(pageResponse[position + 1] & 0x0F), + Length = pageResponse[position + 3] + }; descriptor.Binary = new byte[descriptor.Length]; if(descriptor.Length + position + 4 >= pageResponse.Length) descriptor.Length = (byte)(pageResponse.Length - position - 4); @@ -534,6 +535,7 @@ namespace DiscImageChef.Decoders.SCSI (byte)descriptor.CodeSet).AppendLine(); break; } + break; case IdentificationTypes.Inquiry: switch(descriptor.CodeSet) { @@ -550,6 +552,7 @@ namespace DiscImageChef.Decoders.SCSI (byte)descriptor.CodeSet).AppendLine(); break; } + break; case IdentificationTypes.EUI: if(descriptor.CodeSet == IdentificationCodeSet.ASCII || @@ -782,27 +785,26 @@ namespace DiscImageChef.Decoders.SCSI public static Page_84? DecodePage_84(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x84) return null; + if(pageResponse?[1] != 0x84) return null; if(pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 10) return null; - Page_84 decoded = new Page_84(); + Page_84 decoded = new Page_84 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4) + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); int position = 4; List identifiers = new List(); while(position < pageResponse.Length) { - SoftwareIdentifier identifier = new SoftwareIdentifier(); - identifier.Identifier = new byte[6]; + SoftwareIdentifier identifier = new SoftwareIdentifier {Identifier = new byte[6]}; Array.Copy(pageResponse, position, identifier.Identifier, 0, 6); identifiers.Add(identifier); position += 6; @@ -909,29 +911,31 @@ namespace DiscImageChef.Decoders.SCSI public static Page_85? DecodePage_85(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x85) return null; + if(pageResponse?[1] != 0x85) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 4) return null; - Page_85 decoded = new Page_85(); + Page_85 decoded = new Page_85 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4) + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4); int position = 4; List descriptors = new List(); while(position < pageResponse.Length) { - NetworkDescriptor descriptor = new NetworkDescriptor(); - descriptor.Association = (IdentificationAssociation)((pageResponse[position] & 0x60) >> 5); - descriptor.Type = (NetworkServiceTypes)(pageResponse[position] & 0x1F); - descriptor.Length = (ushort)((pageResponse[position + 2] << 8) + pageResponse[position + 3]); + NetworkDescriptor descriptor = new NetworkDescriptor + { + Association = (IdentificationAssociation)((pageResponse[position] & 0x60) >> 5), + Type = (NetworkServiceTypes)(pageResponse[position] & 0x1F), + Length = (ushort)((pageResponse[position + 2] << 8) + pageResponse[position + 3]) + }; descriptor.Address = new byte[descriptor.Length]; Array.Copy(pageResponse, position + 4, descriptor.Address, 0, descriptor.Length); @@ -1164,49 +1168,45 @@ namespace DiscImageChef.Decoders.SCSI public static Page_86? DecodePage_86(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x86) return null; + if(pageResponse?[1] != 0x86) return null; if(pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 64) return null; - Page_86 decoded = new Page_86(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.ActivateMicrocode = (byte)((pageResponse[4] & 0xC0) >> 6); - decoded.SPT = (byte)((pageResponse[4] & 0x38) >> 3); - decoded.GRD_CHK |= (pageResponse[4] & 0x04) == 0x04; - decoded.APP_CHK |= (pageResponse[4] & 0x02) == 0x02; - decoded.REF_CHK |= (pageResponse[4] & 0x01) == 0x01; - decoded.UASK_SUP |= (pageResponse[5] & 0x20) == 0x20; - decoded.GROUP_SUP |= (pageResponse[5] & 0x10) == 0x10; - decoded.PRIOR_SUP |= (pageResponse[5] & 0x08) == 0x08; - decoded.HEADSUP |= (pageResponse[5] & 0x04) == 0x04; - decoded.ORDSUP |= (pageResponse[5] & 0x02) == 0x02; - decoded.SIMPSUP |= (pageResponse[5] & 0x01) == 0x01; - decoded.WU_SUP |= (pageResponse[6] & 0x08) == 0x08; - decoded.CRD_SUP |= (pageResponse[6] & 0x04) == 0x04; - decoded.NV_SUP |= (pageResponse[6] & 0x02) == 0x02; - decoded.V_SUP |= (pageResponse[6] & 0x01) == 0x01; - decoded.NO_PI_CHK |= (pageResponse[7] & 0x20) == 0x20; - decoded.P_I_I_SUP |= (pageResponse[7] & 0x10) == 0x10; - decoded.LUICLR |= (pageResponse[7] & 0x01) == 0x01; - decoded.R_SUP |= (pageResponse[8] & 0x10) == 0x10; - decoded.HSSRELEF |= (pageResponse[8] & 0x02) == 0x02; - decoded.CBCS |= (pageResponse[8] & 0x01) == 0x01; - decoded.Nexus = (byte)(pageResponse[9] & 0x0F); - decoded.ExtendedTestMinutes = (ushort)((pageResponse[10] << 8) + pageResponse[11]); - decoded.POA_SUP |= (pageResponse[12] & 0x80) == 0x80; - decoded.HRA_SUP |= (pageResponse[12] & 0x40) == 0x40; - decoded.VSA_SUP |= (pageResponse[12] & 0x20) == 0x20; - decoded.MaximumSenseLength = pageResponse[13]; - - return decoded; + return new Page_86 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + ActivateMicrocode = (byte)((pageResponse[4] & 0xC0) >> 6), + SPT = (byte)((pageResponse[4] & 0x38) >> 3), + GRD_CHK = (pageResponse[4] & 0x04) == 0x04, + APP_CHK = (pageResponse[4] & 0x02) == 0x02, + REF_CHK = (pageResponse[4] & 0x01) == 0x01, + UASK_SUP = (pageResponse[5] & 0x20) == 0x20, + GROUP_SUP = (pageResponse[5] & 0x10) == 0x10, + PRIOR_SUP = (pageResponse[5] & 0x08) == 0x08, + HEADSUP = (pageResponse[5] & 0x04) == 0x04, + ORDSUP = (pageResponse[5] & 0x02) == 0x02, + SIMPSUP = (pageResponse[5] & 0x01) == 0x01, + WU_SUP = (pageResponse[6] & 0x08) == 0x08, + CRD_SUP = (pageResponse[6] & 0x04) == 0x04, + NV_SUP = (pageResponse[6] & 0x02) == 0x02, + V_SUP = (pageResponse[6] & 0x01) == 0x01, + NO_PI_CHK = (pageResponse[7] & 0x20) == 0x20, + P_I_I_SUP = (pageResponse[7] & 0x10) == 0x10, + LUICLR = (pageResponse[7] & 0x01) == 0x01, + R_SUP = (pageResponse[8] & 0x10) == 0x10, + HSSRELEF = (pageResponse[8] & 0x02) == 0x02, + CBCS = (pageResponse[8] & 0x01) == 0x01, + Nexus = (byte)(pageResponse[9] & 0x0F), + ExtendedTestMinutes = (ushort)((pageResponse[10] << 8) + pageResponse[11]), + POA_SUP = (pageResponse[12] & 0x80) == 0x80, + HRA_SUP = (pageResponse[12] & 0x40) == 0x40, + VSA_SUP = (pageResponse[12] & 0x20) == 0x20, + MaximumSenseLength = pageResponse[13] + }; } public static string PrettifyPage_86(byte[] pageResponse) @@ -1254,6 +1254,7 @@ namespace DiscImageChef.Decoders.SCSI .AppendLine(); break; } + break; case PeripheralDeviceTypes.SequentialAccess when page.SPT == 1: sb.AppendLine("Logical unit supports logical block protection"); break; @@ -1346,25 +1347,23 @@ namespace DiscImageChef.Decoders.SCSI public static Page_89? DecodePage_89(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0x89) return null; + if(pageResponse?[1] != 0x89) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 572) return null; - Page_89 decoded = new Page_89(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4); - - decoded.VendorIdentification = new byte[8]; - decoded.ProductIdentification = new byte[16]; - decoded.ProductRevisionLevel = new byte[4]; - decoded.Signature = new byte[20]; - decoded.IdentifyData = new byte[512]; + Page_89 decoded = new Page_89 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4), + VendorIdentification = new byte[8], + ProductIdentification = new byte[16], + ProductRevisionLevel = new byte[4], + Signature = new byte[20], + IdentifyData = new byte[512] + }; Array.Copy(pageResponse, 8, decoded.VendorIdentification, 0, 8); Array.Copy(pageResponse, 8, decoded.ProductIdentification, 0, 16); @@ -1478,25 +1477,25 @@ namespace DiscImageChef.Decoders.SCSI public static Page_C0_Quantum? DecodePage_C0_Quantum(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xC0) return null; + if(pageResponse?[1] != 0xC0) return null; if(pageResponse[3] != 20) return null; if(pageResponse.Length != 36) return null; - Page_C0_Quantum decoded = new Page_C0_Quantum(); + Page_C0_Quantum decoded = new Page_C0_Quantum + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + ServoFirmwareChecksum = (ushort)((pageResponse[4] << 8) + pageResponse[5]), + ServoEEPROMChecksum = (ushort)((pageResponse[6] << 8) + pageResponse[7]), + ReadWriteFirmwareChecksum = + (uint)((pageResponse[8] << 24) + (pageResponse[9] << 16) + (pageResponse[10] << 8) + + pageResponse[11]), + ReadWriteFirmwareBuildData = new byte[24] + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.ServoFirmwareChecksum = (ushort)((pageResponse[4] << 8) + pageResponse[5]); - decoded.ServoEEPROMChecksum = (ushort)((pageResponse[6] << 8) + pageResponse[7]); - decoded.ReadWriteFirmwareChecksum = (uint)((pageResponse[8] << 24) + (pageResponse[9] << 16) + - (pageResponse[10] << 8) + pageResponse[11]); - decoded.ReadWriteFirmwareBuildData = new byte[24]; Array.Copy(pageResponse, 12, decoded.ReadWriteFirmwareBuildData, 0, 24); return decoded; @@ -1565,16 +1564,16 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse.Length != 96) return null; - Page_C0_C1_Certance decoded = new Page_C0_C1_Certance(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.Component = new byte[26]; - decoded.Version = new byte[19]; - decoded.Date = new byte[24]; - decoded.Variant = new byte[23]; + Page_C0_C1_Certance decoded = new Page_C0_C1_Certance + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + Component = new byte[26], + Version = new byte[19], + Date = new byte[24], + Variant = new byte[23] + }; Array.Copy(pageResponse, 4, decoded.Component, 0, 26); Array.Copy(pageResponse, 30, decoded.Version, 0, 19); @@ -1644,13 +1643,14 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse.Length != 16) return null; - Page_C2_C3_C4_C5_C6_Certance decoded = new Page_C2_C3_C4_C5_C6_Certance(); + Page_C2_C3_C4_C5_C6_Certance decoded = new Page_C2_C3_C4_C5_C6_Certance + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + SerialNumber = new byte[12] + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.SerialNumber = new byte[12]; Array.Copy(pageResponse, 4, decoded.SerialNumber, 0, 12); return decoded; @@ -1789,41 +1789,38 @@ namespace DiscImageChef.Decoders.SCSI public static Page_DF_Certance? DecodePage_DF_Certance(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xDF) return null; + if(pageResponse?[1] != 0xDF) return null; if(pageResponse[3] != 60) return null; if(pageResponse.Length != 64) return null; - Page_DF_Certance decoded = new Page_DF_Certance(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.CmdFwd = (byte)((pageResponse[5] & 0xC0) >> 5); - decoded.Alerts |= (pageResponse[5] & 0x20) == 0x20; - decoded.NoRemov |= (pageResponse[5] & 0x08) == 0x08; - decoded.UnitRsvd |= (pageResponse[5] & 0x04) == 0x04; - decoded.Clean |= (pageResponse[5] & 0x01) == 0x01; - decoded.Threaded |= (pageResponse[6] & 0x10) == 0x10; - decoded.Lun1Cmd |= (pageResponse[6] & 0x08) == 0x08; - decoded.AutoloadMode = (byte)(pageResponse[6] & 0x07); - decoded.CartridgeType = pageResponse[8]; - decoded.CartridgeFormat = pageResponse[9]; - decoded.CartridgeCapacity = (ushort)((pageResponse[10] << 8) + pageResponse[11] + 4); - decoded.PortATransportType = pageResponse[12]; - decoded.PortASelectionID = pageResponse[15]; - decoded.OperatingHours = (uint)((pageResponse[20] << 24) + (pageResponse[21] << 16) + - (pageResponse[22] << 8) + pageResponse[23]); + Page_DF_Certance decoded = new Page_DF_Certance + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + CmdFwd = (byte)((pageResponse[5] & 0xC0) >> 5), + Alerts = (pageResponse[5] & 0x20) == 0x20, + NoRemov = (pageResponse[5] & 0x08) == 0x08, + UnitRsvd = (pageResponse[5] & 0x04) == 0x04, + Clean = (pageResponse[5] & 0x01) == 0x01, + Threaded = (pageResponse[6] & 0x10) == 0x10, + Lun1Cmd = (pageResponse[6] & 0x08) == 0x08, + AutoloadMode = (byte)(pageResponse[6] & 0x07), + CartridgeType = pageResponse[8], + CartridgeFormat = pageResponse[9], + CartridgeCapacity = (ushort)((pageResponse[10] << 8) + pageResponse[11] + 4), + PortATransportType = pageResponse[12], + PortASelectionID = pageResponse[15], + OperatingHours = (uint)((pageResponse[20] << 24) + (pageResponse[21] << 16) + (pageResponse[22] << 8) + + pageResponse[23]), + CartridgeSerialNumber = new byte[32] + }; byte[] buf = new byte[8]; Array.Copy(pageResponse, 24, buf, 0, 8); decoded.InitiatorID = BitConverter.ToUInt64(buf.Reverse().ToArray(), 0); - - decoded.CartridgeSerialNumber = new byte[32]; Array.Copy(pageResponse, 32, decoded.CartridgeSerialNumber, 0, 32); return decoded; @@ -1984,22 +1981,22 @@ namespace DiscImageChef.Decoders.SCSI public static Page_C0_IBM? DecodePage_C0_IBM(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xC0) return null; + if(pageResponse?[1] != 0xC0) return null; if(pageResponse[3] != 39) return null; if(pageResponse.Length != 43) return null; - Page_C0_IBM decoded = new Page_C0_IBM(); + Page_C0_IBM decoded = new Page_C0_IBM + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + CodeName = new byte[12], + Date = new byte[8] + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - decoded.CodeName = new byte[12]; - decoded.Date = new byte[8]; Array.Copy(pageResponse, 4, decoded.CodeName, 0, 12); Array.Copy(pageResponse, 23, decoded.Date, 0, 8); @@ -2057,22 +2054,20 @@ namespace DiscImageChef.Decoders.SCSI public static Page_C1_IBM? DecodePage_C1_IBM(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xC1) return null; + if(pageResponse?[1] != 0xC1) return null; if(pageResponse[3] != 24) return null; if(pageResponse.Length != 28) return null; - Page_C1_IBM decoded = new Page_C1_IBM(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - - decoded.ManufacturingSerial = new byte[12]; - decoded.ReportedSerial = new byte[12]; + Page_C1_IBM decoded = new Page_C1_IBM + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + ManufacturingSerial = new byte[12], + ReportedSerial = new byte[12] + }; Array.Copy(pageResponse, 4, decoded.ManufacturingSerial, 0, 12); Array.Copy(pageResponse, 16, decoded.ReportedSerial, 0, 12); @@ -2132,22 +2127,20 @@ namespace DiscImageChef.Decoders.SCSI public static Page_B0? DecodePage_B0(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xB0) return null; + if(pageResponse?[1] != 0xB0) return null; if((pageResponse[2] << 8) + pageResponse[3] + 4 != pageResponse.Length) return null; if(pageResponse.Length < 5) return null; - Page_B0 decoded = new Page_B0(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4); - - decoded.TSMC = (pageResponse[4] & 0x02) == 0x02; - decoded.WORM = (pageResponse[4] & 0x01) == 0x01; + Page_B0 decoded = new Page_B0 + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (ushort)((pageResponse[2] << 8) + pageResponse[3] + 4), + TSMC = (pageResponse[4] & 0x02) == 0x02, + WORM = (pageResponse[4] & 0x01) == 0x01 + }; return decoded; } @@ -2176,9 +2169,7 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xB1: Manufacturer-assigned Serial Number page public static string DecodePageB1(byte[] page) { - if(page == null) return null; - - if(page[1] != 0xB1) return null; + if(page?[1] != 0xB1) return null; if(page.Length != page[3] + 4) return null; @@ -2193,9 +2184,7 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xB2: TapeAlert Supported Flags page public static ulong DecodePageB2(byte[] page) { - if(page == null) return 0; - - if(page[1] != 0xB2) return 0; + if(page?[1] != 0xB2) return 0; if(page.Length != 12) return 0; @@ -2210,9 +2199,7 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xB3: Automation Device Serial Number page public static string DecodePageB3(byte[] page) { - if(page == null) return null; - - if(page[1] != 0xB3) return null; + if(page?[1] != 0xB3) return null; if(page.Length != page[3] + 4) return null; @@ -2227,9 +2214,7 @@ namespace DiscImageChef.Decoders.SCSI #region EVPD Page 0xB4: Data Transfer Device Element Address page public static string DecodePageB4(byte[] page) { - if(page == null) return null; - - if(page[1] != 0xB3) return null; + if(page?[1] != 0xB3) return null; if(page.Length != page[3] + 4) return null; @@ -2280,12 +2265,13 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse.Length < 4) return null; - Page_C0_to_C5_HP decoded = new Page_C0_to_C5_HP(); - - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - decoded.PageCode = pageResponse[1]; + Page_C0_to_C5_HP decoded = new Page_C0_to_C5_HP + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + PageCode = pageResponse[1] + }; if(pageResponse[3] == 92 && pageResponse.Length >= 96) { @@ -2305,24 +2291,20 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse[4] != pageResponse[3] - 1) return null; List array = new List(); - string fwRegExStr = - "Firmware Rev\\s+=\\s+(?\\d+\\.\\d+)\\s+Build date\\s+=\\s+(?(\\w|\\d|\\s*.)*)\\s*$"; - string fwcRegExStr = "FW_CONF\\s+=\\s+(?0x[0-9A-Fa-f]{8})\\s*$"; - string servoRegExStr = "Servo\\s+Rev\\s+=\\s+(?\\d+\\.\\d+)\\s*$"; + const string fwRegExStr = @"Firmware Rev\s+=\s+(?\d+\.\d+)\s+Build date\s+=\s+(?(\w|\d|\s*.)*)\s*$"; + const string fwcRegExStr = @"FW_CONF\s+=\s+(?0x[0-9A-Fa-f]{8})\s*$"; + const string servoRegExStr = @"Servo\s+Rev\s+=\s+(?\d+\.\d+)\s*$"; Regex fwRegEx = new Regex(fwRegExStr); Regex fwcRegEx = new Regex(fwcRegExStr); Regex servoRegEx = new Regex(servoRegExStr); - Match fwMatch; - Match fwcMatch; - Match servoMatch; for(int pos = 5; pos < pageResponse.Length; pos++) if(pageResponse[pos] == 0x00) { string str = StringHandlers.CToString(array.ToArray()); - fwMatch = fwRegEx.Match(str); - fwcMatch = fwcRegEx.Match(str); - servoMatch = servoRegEx.Match(str); + Match fwMatch = fwRegEx.Match(str); + Match fwcMatch = fwcRegEx.Match(str); + Match servoMatch = servoRegEx.Match(str); if(str.ToLowerInvariant().StartsWith("copyright", StringComparison.Ordinal)) decoded.Copyright = Encoding.ASCII.GetBytes(str); @@ -2426,24 +2408,24 @@ namespace DiscImageChef.Decoders.SCSI public static Page_C0_Seagate? DecodePage_C0_Seagate(byte[] pageResponse) { - if(pageResponse == null) return null; - - if(pageResponse[1] != 0xC0) return null; + if(pageResponse?[1] != 0xC0) return null; if(pageResponse[3] != 12) return null; if(pageResponse.Length != 16) return null; - Page_C0_Seagate decoded = new Page_C0_Seagate(); + Page_C0_Seagate decoded = new Page_C0_Seagate + { + PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5), + PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F), + PageLength = (byte)(pageResponse[3] + 4), + PageCode = pageResponse[1], + ControllerFirmware = new byte[4], + BootFirmware = new byte[4], + ServoFirmware = new byte[4] + }; - decoded.PeripheralQualifier = (PeripheralQualifiers)((pageResponse[0] & 0xE0) >> 5); - decoded.PeripheralDeviceType = (PeripheralDeviceTypes)(pageResponse[0] & 0x1F); - decoded.PageLength = (byte)(pageResponse[3] + 4); - decoded.PageCode = pageResponse[1]; - decoded.ControllerFirmware = new byte[4]; - decoded.BootFirmware = new byte[4]; - decoded.ServoFirmware = new byte[4]; Array.Copy(pageResponse, 4, decoded.ControllerFirmware, 0, 4); Array.Copy(pageResponse, 8, decoded.BootFirmware, 0, 4); diff --git a/DiscImageChef.Decoders/SCSI/Enums.cs b/DiscImageChef.Decoders/SCSI/Enums.cs index 225ae4cc..e2b7b246 100644 --- a/DiscImageChef.Decoders/SCSI/Enums.cs +++ b/DiscImageChef.Decoders/SCSI/Enums.cs @@ -30,6 +30,8 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.SCSI { public enum PeripheralQualifiers : byte @@ -56,6 +58,7 @@ namespace DiscImageChef.Decoders.SCSI VendorMask = 0x04 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum PeripheralDeviceTypes : byte { /// @@ -152,6 +155,7 @@ namespace DiscImageChef.Decoders.SCSI UnknownDevice = 0x1F } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ANSIVersions : byte { /// @@ -184,6 +188,7 @@ namespace DiscImageChef.Decoders.SCSI ANSI2008Version = 0x06 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ECMAVersions : byte { /// @@ -196,6 +201,7 @@ namespace DiscImageChef.Decoders.SCSI ECMA111 = 0x01 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ISOVersions : byte { /// @@ -208,6 +214,7 @@ namespace DiscImageChef.Decoders.SCSI ISO1995Version = 0x02 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum SPIClocking : byte { /// @@ -228,6 +235,7 @@ namespace DiscImageChef.Decoders.SCSI STandDT = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum TGPSValues : byte { /// @@ -248,6 +256,7 @@ namespace DiscImageChef.Decoders.SCSI Both = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ProtocolIdentifiers : byte { /// @@ -304,6 +313,7 @@ namespace DiscImageChef.Decoders.SCSI NoProtocol = 15 } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ScsiDefinitions : byte { Current = 0, diff --git a/DiscImageChef.Decoders/SCSI/Inquiry.cs b/DiscImageChef.Decoders/SCSI/Inquiry.cs index 805a2a85..4beb2b6d 100644 --- a/DiscImageChef.Decoders/SCSI/Inquiry.cs +++ b/DiscImageChef.Decoders/SCSI/Inquiry.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using DiscImageChef.Console; @@ -48,6 +49,9 @@ namespace DiscImageChef.Decoders.SCSI /// RFC 7144 /// ECMA-111 /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Inquiry { #region Public methods diff --git a/DiscImageChef.Decoders/SCSI/MMC/AACS.cs b/DiscImageChef.Decoders/SCSI/MMC/AACS.cs index 1b93a7b7..f5c7dfa4 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/AACS.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/AACS.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class AACS { public struct AACSVolumeIdentifier @@ -463,8 +468,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC StringBuilder sb = new StringBuilder(); if(response.MaxLBAExtents == 0) - if(response.DataLength > 2) sb.AppendLine("Drive can store 256 LBA Extents"); - else sb.AppendLine("Drive cannot store LBA Extents"); + sb.AppendLine(response.DataLength > 2 + ? "Drive can store 256 LBA Extents" + : "Drive cannot store LBA Extents"); else sb.AppendFormat("Drive can store {0} LBA Extents", response.MaxLBAExtents).AppendLine(); for(int i = 0; i < response.Extents.Length; i++) diff --git a/DiscImageChef.Decoders/SCSI/MMC/CPRM.cs b/DiscImageChef.Decoders/SCSI/MMC/CPRM.cs index db291bb5..a07b3d05 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/CPRM.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/CPRM.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class CPRM { public struct CPRMMediaKeyBlock diff --git a/DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs b/DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs index 2bcd1ec1..6de866fc 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/DiscInformation.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DiscInformation { public struct StandardDiscInformation @@ -279,8 +284,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC if((response[2] & 0xE0) != 0) return null; - StandardDiscInformation decoded = new StandardDiscInformation(); - decoded.DataLength = (ushort)((response[0] << 8) + response[1]); + StandardDiscInformation decoded = + new StandardDiscInformation {DataLength = (ushort)((response[0] << 8) + response[1])}; if(decoded.DataLength + 2 != response.Length) return null; @@ -417,8 +422,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC (decoded.LastPossibleLeadOutStartLBA & 0xFF00) >> 8, decoded.LastPossibleLeadOutStartLBA & 0xFF).AppendLine(); - if(decoded.URU) sb.AppendLine("Disc is defined for unrestricted use"); - else sb.AppendLine("Disc is defined for restricted use"); + sb.AppendLine(decoded.URU ? "Disc is defined for unrestricted use" : "Disc is defined for restricted use"); if(decoded.DID_V) sb.AppendFormat("Disc ID: {0:X6}", decoded.DiscIdentification & 0x00FFFFFF).AppendLine(); if(decoded.DBC_V) sb.AppendFormat("Disc barcode: {0:X16}", decoded.DiscBarcode).AppendLine(); @@ -440,8 +444,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC if((response[2] & 0xE0) != 0x20) return null; - TrackResourcesInformation decoded = new TrackResourcesInformation(); - decoded.DataLength = (ushort)((response[0] << 8) + response[1]); + TrackResourcesInformation decoded = + new TrackResourcesInformation {DataLength = (ushort)((response[0] << 8) + response[1])}; if(decoded.DataLength + 2 != response.Length) return null; @@ -479,8 +483,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC if((response[2] & 0xE0) != 0x40) return null; - POWResourcesInformation decoded = new POWResourcesInformation(); - decoded.DataLength = (ushort)((response[0] << 8) + response[1]); + POWResourcesInformation decoded = + new POWResourcesInformation {DataLength = (ushort)((response[0] << 8) + response[1])}; if(decoded.DataLength + 2 != response.Length) return null; diff --git a/DiscImageChef.Decoders/SCSI/MMC/Enums.cs b/DiscImageChef.Decoders/SCSI/MMC/Enums.cs index 28fce67f..94c5448a 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/Enums.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/Enums.cs @@ -30,8 +30,12 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.SCSI.MMC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public enum FormatLayerTypeCodes : ushort { CDLayer = 0x0008, @@ -40,6 +44,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC HDDVDLayer = 0x0050 } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public enum SessionStatusCodes : byte { Empty = 0x00, @@ -48,6 +54,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC Complete = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public enum DiscStatusCodes : byte { Empty = 0x00, @@ -56,6 +64,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC Others = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public enum BGFormatStatusCodes : byte { NoFormattable = 0x00, @@ -64,6 +74,8 @@ namespace DiscImageChef.Decoders.SCSI.MMC FormatComplete = 0x03 } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] public enum DiscTypeCodes : byte { /// diff --git a/DiscImageChef.Decoders/SCSI/MMC/Features.cs b/DiscImageChef.Decoders/SCSI/MMC/Features.cs index 462e2c4d..db3c5152 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/Features.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/Features.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text; // ReSharper disable MemberCanBePrivate.Global @@ -41,6 +42,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// MMC Feature enumeration /// + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum FeatureNumber : ushort { /// @@ -285,6 +287,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// MMC Profile enumeration /// + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum ProfileNumber : ushort { /// @@ -445,6 +448,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC Unconforming = 0xFFFF } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum PhysicalInterfaces : uint { /// @@ -489,6 +493,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC Vendor = 0xFFFF } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Profile { public ProfileNumber Number; @@ -498,6 +505,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Profile List Feature (0000h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0000 { /// @@ -521,6 +531,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Core Feature (0001h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0001 { /// @@ -552,6 +565,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Morphing Feature (0002h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0002 { /// @@ -580,6 +596,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Removable Medium Feature (0003h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0003 { /// @@ -623,6 +642,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Write Protect Feature (0004h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0004 { /// @@ -658,6 +680,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Random Readable Feature (0010h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0010 { /// @@ -689,6 +714,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Multi-Read Feature (001Dh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_001D { /// @@ -708,6 +736,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD Read Feature (001Eh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_001E { /// @@ -739,6 +770,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD Read Feature (001Fh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_001F { /// @@ -770,6 +804,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Random Writable Feature (0020h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0020 { /// @@ -805,6 +842,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Incremental Streaming Writable Feature (0021h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0021 { /// @@ -844,6 +884,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Sector Erasable Feature (0022h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0022 { /// @@ -863,6 +906,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Formattable Feature (0023h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0023 { /// @@ -906,6 +952,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Hardware Defect Management Feature (0024h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0024 { /// @@ -929,6 +978,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Write Once Feature (0025h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0025 { /// @@ -960,6 +1012,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Restricted Overwrite Feature (0026h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0026 { /// @@ -979,6 +1034,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD-RW CAV Write Feature (0027h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0027 { /// @@ -998,6 +1056,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// MRW Feature (0028h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0028 { /// @@ -1029,6 +1090,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Enhanced Defect Reporting Feature (0029h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0029 { /// @@ -1060,6 +1124,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD+RW Feature (002Ah) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002A { /// @@ -1091,6 +1158,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD+R Feature (002Bh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002B { /// @@ -1114,6 +1184,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Rigid Restricted Overwrite Feature (002Ch) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002C { /// @@ -1149,6 +1222,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD Track at Once Feature (002Dh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002D { /// @@ -1196,6 +1272,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD Mastering (Session at Once) Feature (002Eh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002E { /// @@ -1247,6 +1326,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD-R/-RW Write Feature (002Fh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_002F { /// @@ -1282,6 +1364,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Double Density CD Read Feature (0030h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0030 { /// @@ -1301,6 +1386,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Double Density CD-R Write Feature (0031h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0031 { /// @@ -1324,6 +1412,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Double Density CD-RW Write Feature (0032h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0032 { /// @@ -1351,6 +1442,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Layer Jump Recording Feature (0033h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0033 { /// @@ -1371,6 +1465,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Stop Long Operation Feature (0035h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0035 { /// @@ -1390,6 +1487,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD-RW Media Write Support Feature (0037h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0037 { /// @@ -1413,6 +1513,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// BD-R Pseudo-Overwrite (POW) Feature (0038h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0038 { /// @@ -1432,6 +1535,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD+RW Dual Layer Feature (003Ah) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_003A { /// @@ -1463,6 +1569,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD+R Dual Layer Feature (003Bh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_003B { /// @@ -1494,6 +1603,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// BD Read Feature (0040h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0040 { /// @@ -1545,6 +1657,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// BD Write Feature (0041h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0041 { /// @@ -1588,6 +1703,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// TSR Feature (0042h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0042 { /// @@ -1607,6 +1725,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// HD DVD Read Feature (0050h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0050 { /// @@ -1634,6 +1755,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// HD DVD Write Feature (0051h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0051 { /// @@ -1661,6 +1785,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Hybrid Disc Feature (0080h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0080 { /// @@ -1684,6 +1811,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Power Management Feature (0100h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0100 { /// @@ -1703,6 +1833,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// S.M.A.R.T. Feature (0101h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0101 { /// @@ -1726,6 +1859,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Embedded Changer Feature (0102h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0102 { /// @@ -1757,6 +1893,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// CD Audio External Play Feature (0103h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0103 { /// @@ -1792,6 +1931,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Microcode Upgrade Feature (0104h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0104 { /// @@ -1815,6 +1957,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Time-Out Feature (0105h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0105 { /// @@ -1842,6 +1987,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD-CSS Feature (0106h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0106 { /// @@ -1865,6 +2013,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Real Time Streaming Feature (0107h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0107 { /// @@ -1908,6 +2059,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Drive serial number (0108h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0108 { /// @@ -1931,6 +2085,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Media Serial Number Feature (0109h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0109 { /// @@ -1950,6 +2107,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Disc Control Blocks Feature (010Ah) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_010A { /// @@ -1970,6 +2130,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD CPRM Feature (010Bh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_010B { /// @@ -1993,6 +2156,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// Firmware Information Feature (010Ch) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_010C { /// @@ -2019,6 +2185,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// AACS Feature (010Dh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_010D { /// @@ -2070,6 +2239,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// DVD CSS Managed Recording Feature (010Eh) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_010E { /// @@ -2093,6 +2265,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// SecurDisc Feature (0113h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0113 { /// @@ -2112,6 +2287,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// OSSC Feature (0142h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0142 { /// @@ -2144,6 +2322,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// /// VCPS Feature (0110h) /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct Feature_0110 { /// @@ -2184,8 +2365,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC List listProfiles = new List(); while(offset < feature.Length) { - Profile prof = new Profile(); - prof.Number = (ProfileNumber)((feature[offset] << 8) + feature[offset + 1]); + Profile prof = new Profile {Number = (ProfileNumber)((feature[offset] << 8) + feature[offset + 1])}; prof.Current |= (feature[offset + 2] & 0x01) == 0x01; listProfiles.Add(prof); offset += 4; @@ -3861,8 +4041,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.AppendLine("MMC Morphing:"); - if(ftr.Async) sb.AppendLine("\tDrive supports polling and asynchronous GET EVENT STATUS NOTIFICATION"); - else sb.AppendLine("\tDrive supports only polling GET EVENT STATUS NOTIFICATION"); + sb.AppendLine(ftr.Async + ? "\tDrive supports polling and asynchronous GET EVENT STATUS NOTIFICATION" + : "\tDrive supports only polling GET EVENT STATUS NOTIFICATION"); if(ftr.OCEvent) sb.AppendLine("\tDrive supports operational change request / notification class events"); @@ -4159,8 +4340,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.AppendLine("MMC Enhanced Defect Reporting Feature:"); - if(ftr.DRTDM) sb.AppendLine("\tDrive supports DRT-DM mode"); - else sb.AppendLine("\tDrive supports Persistent-DM mode"); + sb.AppendLine(ftr.DRTDM ? "\tDrive supports DRT-DM mode" : "\tDrive supports Persistent-DM mode"); if(ftr.DBICacheZones > 0) sb.AppendFormat("\tDrive has {0} DBI cache zones", ftr.DBICacheZones).AppendLine(); @@ -4181,8 +4361,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.Append("Drive can read and write DVD+RW"); if(ftr.Current) sb.AppendLine(" (current)"); else sb.AppendLine(); - if(ftr.CloseOnly) sb.AppendLine("\tDrive supports only the read compatibility stop"); - else sb.AppendLine("\tDrive supports both forms of background format stopping"); + sb.AppendLine(ftr.CloseOnly + ? "\tDrive supports only the read compatibility stop" + : "\tDrive supports both forms of background format stopping"); if(ftr.QuickStart) sb.AppendLine("\tDrive can do a quick start formatting"); } else @@ -4226,8 +4407,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC StringBuilder sb = new StringBuilder(); sb.Append("MMC Rigid Restricted Overwrite"); - if(ftr.Current) sb.AppendLine(" (current):"); - else sb.AppendLine(":"); + sb.AppendLine(ftr.Current ? " (current):" : ":"); if(ftr.Blank) sb.AppendLine("\tDrive supports the BLANK command"); if(ftr.Intermediate) @@ -4423,8 +4603,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.Append("Drive can read and write DVD+RW DL"); if(ftr.Current) sb.AppendLine(" (current)"); else sb.AppendLine(); - if(ftr.CloseOnly) sb.AppendLine("\tDrive supports only the read compatibility stop"); - else sb.AppendLine("\tDrive supports both forms of background format stopping"); + sb.AppendLine(ftr.CloseOnly + ? "\tDrive supports only the read compatibility stop" + : "\tDrive supports both forms of background format stopping"); if(ftr.QuickStart) sb.AppendLine("\tDrive can do a quick start formatting"); } else @@ -4468,8 +4649,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC StringBuilder sb = new StringBuilder(); sb.Append("MMC BD Read"); - if(ftr.Current) sb.AppendLine(" (current):"); - else sb.AppendLine(":"); + sb.AppendLine(ftr.Current ? " (current):" : ":"); if(ftr.OldROM) sb.AppendLine("\tDrive can read BD-ROM pre-1.0"); if(ftr.ROM) sb.AppendLine("\tDrive can read BD-ROM Ver.1"); @@ -4492,8 +4672,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC StringBuilder sb = new StringBuilder(); sb.Append("MMC BD Write"); - if(ftr.Current) sb.AppendLine(" (current):"); - else sb.AppendLine(":"); + sb.AppendLine(ftr.Current ? " (current):" : ":"); if(ftr.OldR) sb.AppendLine("\tDrive can write BD-R pre-1.0"); if(ftr.R) sb.AppendLine("\tDrive can write BD-R Ver.1"); @@ -4712,7 +4891,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC if(ftr.DCBs == null) return sb.ToString(); - foreach(uint DCB in ftr.DCBs) sb.AppendFormat("Drive supports DCB {0:X8}h", DCB).AppendLine(); + foreach(uint dcb in ftr.DCBs) sb.AppendFormat("Drive supports DCB {0:X8}h", dcb).AppendLine(); return sb.ToString(); } @@ -4738,35 +4917,32 @@ namespace DiscImageChef.Decoders.SCSI.MMC Feature_010C ftr = feature.Value; StringBuilder sb = new StringBuilder(); - string syear, smonth, sday, shour, sminute, ssecond; - byte[] temp; - - temp = new byte[4]; + byte[] temp = new byte[4]; temp[0] = (byte)((ftr.Century & 0xFF00) >> 8); temp[1] = (byte)(ftr.Century & 0xFF); temp[2] = (byte)((ftr.Year & 0xFF00) >> 8); temp[3] = (byte)(ftr.Year & 0xFF); - syear = Encoding.ASCII.GetString(temp); + string syear = Encoding.ASCII.GetString(temp); temp = new byte[2]; temp[0] = (byte)((ftr.Month & 0xFF00) >> 8); temp[1] = (byte)(ftr.Month & 0xFF); - smonth = Encoding.ASCII.GetString(temp); + string smonth = Encoding.ASCII.GetString(temp); temp = new byte[2]; temp[0] = (byte)((ftr.Day & 0xFF00) >> 8); temp[1] = (byte)(ftr.Day & 0xFF); - sday = Encoding.ASCII.GetString(temp); + string sday = Encoding.ASCII.GetString(temp); temp = new byte[2]; temp[0] = (byte)((ftr.Hour & 0xFF00) >> 8); temp[1] = (byte)(ftr.Hour & 0xFF); - shour = Encoding.ASCII.GetString(temp); + string shour = Encoding.ASCII.GetString(temp); temp = new byte[2]; temp[0] = (byte)((ftr.Minute & 0xFF00) >> 8); temp[1] = (byte)(ftr.Minute & 0xFF); - sminute = Encoding.ASCII.GetString(temp); + string sminute = Encoding.ASCII.GetString(temp); temp = new byte[2]; temp[0] = (byte)((ftr.Second & 0xFF00) >> 8); temp[1] = (byte)(ftr.Second & 0xFF); - ssecond = Encoding.ASCII.GetString(temp); + string ssecond = Encoding.ASCII.GetString(temp); try { @@ -4776,7 +4952,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC sb.AppendFormat("Drive firmware is dated {0}", fwDate).AppendLine(); } #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch { } + catch + { + // ignored + } #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body return sb.ToString(); @@ -4834,8 +5013,7 @@ namespace DiscImageChef.Decoders.SCSI.MMC Feature_0110 ftr = feature.Value; StringBuilder sb = new StringBuilder(); - if(ftr.Current) sb.AppendLine("Drive and currently inserted media support VCPS"); - else sb.AppendLine("Drive supports VCPS"); + sb.AppendLine(ftr.Current ? "Drive and currently inserted media support VCPS" : "Drive supports VCPS"); return sb.ToString(); } @@ -4847,8 +5025,9 @@ namespace DiscImageChef.Decoders.SCSI.MMC Feature_0113 ftr = feature.Value; StringBuilder sb = new StringBuilder(); - if(ftr.Current) sb.AppendLine("Drive and currently inserted media support SecurDisc"); - else sb.AppendLine("Drive supports SecurDisc"); + sb.AppendLine(ftr.Current + ? "Drive and currently inserted media support SecurDisc" + : "Drive supports SecurDisc"); return sb.ToString(); } @@ -5165,12 +5344,18 @@ namespace DiscImageChef.Decoders.SCSI.MMC return Prettify_0142(Decode_0142(feature)); } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct FeatureDescriptor { public ushort Code; public byte[] Data; } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct SeparatedFeatures { public uint DataLength; @@ -5180,17 +5365,21 @@ namespace DiscImageChef.Decoders.SCSI.MMC public static SeparatedFeatures Separate(byte[] response) { - SeparatedFeatures dec = new SeparatedFeatures(); - dec.DataLength = (uint)((response[0] << 24) + (response[1] << 16) + (response[2] << 8) + response[4]); - dec.CurrentProfile = (ushort)((response[6] << 8) + response[7]); + SeparatedFeatures dec = new SeparatedFeatures + { + DataLength = (uint)((response[0] << 24) + (response[1] << 16) + (response[2] << 8) + response[4]), + CurrentProfile = (ushort)((response[6] << 8) + response[7]) + }; uint offset = 8; List descLst = new List(); while(offset + 4 < response.Length) { - FeatureDescriptor desc = new FeatureDescriptor(); - desc.Code = (ushort)((response[offset + 0] << 8) + response[offset + 1]); - desc.Data = new byte[response[offset + 3] + 4]; + FeatureDescriptor desc = new FeatureDescriptor + { + Code = (ushort)((response[offset + 0] << 8) + response[offset + 1]), + Data = new byte[response[offset + 3] + 4] + }; if(desc.Data.Length + offset > response.Length) desc.Data = new byte[response.Length - offset]; Array.Copy(response, offset, desc.Data, 0, desc.Data.Length); offset += (uint)desc.Data.Length; diff --git a/DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs b/DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs index 227001d0..633e54f2 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/Hybrid.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class Hybrid { public struct RecognizedFormatLayers diff --git a/DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs b/DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs index ad1362cd..0ac4b2ff 100644 --- a/DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs +++ b/DiscImageChef.Decoders/SCSI/MMC/WriteProtect.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.MMC @@ -50,6 +51,10 @@ namespace DiscImageChef.Decoders.SCSI.MMC /// T10/1675-D revision 4 /// T10/1836-D revision 2g /// + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class WriteProtect { public struct WriteProtectionStatus diff --git a/DiscImageChef.Decoders/SCSI/Modes/00_SFF.cs b/DiscImageChef.Decoders/SCSI/Modes/00_SFF.cs index fde4894d..0610196f 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/00_SFF.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/00_SFF.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x00: Drive Operation Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/01.cs b/DiscImageChef.Decoders/SCSI/Modes/01.cs index f54424c6..af79ce50 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/01.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/01.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x01: Read-write error recovery page diff --git a/DiscImageChef.Decoders/SCSI/Modes/01_MMC.cs b/DiscImageChef.Decoders/SCSI/Modes/01_MMC.cs index affb08ca..8aa632ab 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/01_MMC.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/01_MMC.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x01: Read error recovery page for MultiMedia Devices diff --git a/DiscImageChef.Decoders/SCSI/Modes/02.cs b/DiscImageChef.Decoders/SCSI/Modes/02.cs index 94ae2bbc..ae058124 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/02.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/02.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x02: Disconnect-reconnect page diff --git a/DiscImageChef.Decoders/SCSI/Modes/03.cs b/DiscImageChef.Decoders/SCSI/Modes/03.cs index f88b289c..bb241cee 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/03.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/03.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x03: Format device page diff --git a/DiscImageChef.Decoders/SCSI/Modes/04.cs b/DiscImageChef.Decoders/SCSI/Modes/04.cs index bb7edbb0..6a654b7c 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/04.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/04.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x04: Rigid disk drive geometry page diff --git a/DiscImageChef.Decoders/SCSI/Modes/05.cs b/DiscImageChef.Decoders/SCSI/Modes/05.cs index 6d0e9e1c..f81a9d97 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/05.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/05.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x05: Flexible disk page @@ -263,18 +267,15 @@ namespace DiscImageChef.Decoders.SCSI break; case 1: sb.Append("\tPin 34 indicates drive is ready when active "); - if((page.Pin34 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low"); break; case 2: sb.Append("\tPin 34 indicates disk has changed when active "); - if((page.Pin34 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low"); break; default: sb.AppendFormat("\tPin 34 indicates unknown function {0} when active ", page.Pin34 & 0x07); - if((page.Pin34 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin34 & 0x08) == 0x08 ? "high" : "low"); break; } @@ -285,23 +286,19 @@ namespace DiscImageChef.Decoders.SCSI break; case 1: sb.Append("\tPin 4 indicates drive is in use when active "); - if((page.Pin4 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low"); break; case 2: sb.Append("\tPin 4 indicates eject when active "); - if((page.Pin4 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low"); break; case 3: sb.Append("\tPin 4 indicates head load when active "); - if((page.Pin4 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low"); break; default: sb.AppendFormat("\tPin 4 indicates unknown function {0} when active ", page.Pin4 & 0x07); - if((page.Pin4 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin4 & 0x08) == 0x08 ? "high" : "low"); break; } @@ -312,8 +309,7 @@ namespace DiscImageChef.Decoders.SCSI break; default: sb.AppendFormat("\tPin 2 indicates unknown function {0} when active ", page.Pin2 & 0x07); - if((page.Pin2 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin2 & 0x08) == 0x08 ? "high" : "low"); break; } @@ -324,13 +320,11 @@ namespace DiscImageChef.Decoders.SCSI break; case 1: sb.Append("\tPin 1 indicates disk change reset when active "); - if((page.Pin1 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin1 & 0x08) == 0x08 ? "high" : "low"); break; default: sb.AppendFormat("\tPin 1 indicates unknown function {0} when active ", page.Pin1 & 0x07); - if((page.Pin1 & 0x08) == 0x08) sb.Append("high"); - else sb.Append("low"); + sb.Append((page.Pin1 & 0x08) == 0x08 ? "high" : "low"); break; } diff --git a/DiscImageChef.Decoders/SCSI/Modes/06.cs b/DiscImageChef.Decoders/SCSI/Modes/06.cs index 1dcc5c00..51f443f8 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/06.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/06.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x06: Optical memory page diff --git a/DiscImageChef.Decoders/SCSI/Modes/07.cs b/DiscImageChef.Decoders/SCSI/Modes/07.cs index efba1ae2..cf0c172b 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/07.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/07.cs @@ -30,10 +30,15 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static partial class Modes { #region Mode Page 0x07: Verify error recovery page diff --git a/DiscImageChef.Decoders/SCSI/Modes/07_MMC.cs b/DiscImageChef.Decoders/SCSI/Modes/07_MMC.cs index 50268973..48bc9295 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/07_MMC.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/07_MMC.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x07: Verify error recovery page for MultiMedia Devices diff --git a/DiscImageChef.Decoders/SCSI/Modes/08.cs b/DiscImageChef.Decoders/SCSI/Modes/08.cs index ae73cbd5..3141c593 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/08.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/08.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x08: Caching page diff --git a/DiscImageChef.Decoders/SCSI/Modes/0A.cs b/DiscImageChef.Decoders/SCSI/Modes/0A.cs index 20323f31..6eec37c5 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/0A.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/0A.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x0A: Control mode page @@ -391,9 +395,7 @@ namespace DiscImageChef.Decoders.SCSI public static ModePage_0A_S01? DecodeModePage_0A_S01(byte[] pageResponse) { - if(pageResponse == null) return null; - - if((pageResponse[0] & 0x40) != 0x40) return null; + if((pageResponse?[0] & 0x40) != 0x40) return null; if((pageResponse[0] & 0x3F) != 0x0A) return null; diff --git a/DiscImageChef.Decoders/SCSI/Modes/0B.cs b/DiscImageChef.Decoders/SCSI/Modes/0B.cs index 491e68bc..63f6a759 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/0B.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/0B.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x0B: Medium types supported page diff --git a/DiscImageChef.Decoders/SCSI/Modes/0D.cs b/DiscImageChef.Decoders/SCSI/Modes/0D.cs index 545b374a..3dc0fe32 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/0D.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/0D.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x0D: CD-ROM parameteres page diff --git a/DiscImageChef.Decoders/SCSI/Modes/0E.cs b/DiscImageChef.Decoders/SCSI/Modes/0E.cs index d698c8ff..0a21ad75 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/0E.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/0E.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x0E: CD-ROM audio control parameters page @@ -147,8 +151,9 @@ namespace DiscImageChef.Decoders.SCSI sb.AppendLine("SCSI CD-ROM audio control parameters page:"); if(page.PS) sb.AppendLine("\tParameters can be saved"); - if(page.Immed) sb.AppendLine("\tDrive will return from playback command immediately"); - else sb.AppendLine("\tDrive will return from playback command when playback ends"); + sb.AppendLine(page.Immed + ? "\tDrive will return from playback command immediately" + : "\tDrive will return from playback command when playback ends"); if(page.SOTC) sb.AppendLine("\tDrive will stop playback on track end"); if(page.APRVal) diff --git a/DiscImageChef.Decoders/SCSI/Modes/0F.cs b/DiscImageChef.Decoders/SCSI/Modes/0F.cs index a86344ef..aa1d5cbb 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/0F.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/0F.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x0F: Data compression page diff --git a/DiscImageChef.Decoders/SCSI/Modes/10.cs b/DiscImageChef.Decoders/SCSI/Modes/10.cs index b450a628..84bbc111 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/10.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/10.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x10: XOR control mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/10_SSC.cs b/DiscImageChef.Decoders/SCSI/Modes/10_SSC.cs index 12ebb3a7..b730188b 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/10_SSC.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/10_SSC.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x10: Device configuration page @@ -237,8 +241,9 @@ namespace DiscImageChef.Decoders.SCSI if(page.DBR) { sb.AppendLine("\tDrive supports recovering data from buffer"); - if(page.RBO) sb.AppendLine("\tRecovered buffer data comes in LIFO order"); - else sb.AppendLine("\tRecovered buffer data comes in FIFO order"); + sb.AppendLine(page.RBO + ? "\tRecovered buffer data comes in LIFO order" + : "\tRecovered buffer data comes in FIFO order"); } if(page.BIS) sb.AppendLine("\tMedium supports block IDs"); if(page.RSmk) sb.AppendLine("\tDrive reports setmarks"); @@ -313,8 +318,9 @@ namespace DiscImageChef.Decoders.SCSI if(page.PRMWP) sb.AppendLine("\tPermanent write protect is enabled"); if(page.BAML) - if(page.BAM) sb.AppendLine("\tDrive operates using explicit address mode"); - else sb.AppendLine("\tDrive operates using implicit address mode"); + sb.AppendLine(page.BAM + ? "\tDrive operates using explicit address mode" + : "\tDrive operates using implicit address mode"); switch(page.RewindOnReset) { diff --git a/DiscImageChef.Decoders/SCSI/Modes/11.cs b/DiscImageChef.Decoders/SCSI/Modes/11.cs index 42638bcc..a918b298 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/11.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/11.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x11: Medium partition page (1) diff --git a/DiscImageChef.Decoders/SCSI/Modes/12_13_14.cs b/DiscImageChef.Decoders/SCSI/Modes/12_13_14.cs index 8cc211b7..25183d81 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/12_13_14.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/12_13_14.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Pages 0x12, 0x13, 0x14: Medium partition page (2-4) diff --git a/DiscImageChef.Decoders/SCSI/Modes/1A.cs b/DiscImageChef.Decoders/SCSI/Modes/1A.cs index 69dd53da..796ccfef 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/1A.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/1A.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x1A: Power condition page @@ -219,9 +223,7 @@ namespace DiscImageChef.Decoders.SCSI public static ModePage_1A_S01? DecodeModePage_1A_S01(byte[] pageResponse) { - if(pageResponse == null) return null; - - if((pageResponse[0] & 0x40) != 0x40) return null; + if((pageResponse?[0] & 0x40) != 0x40) return null; if((pageResponse[0] & 0x3F) != 0x1A) return null; diff --git a/DiscImageChef.Decoders/SCSI/Modes/1B.cs b/DiscImageChef.Decoders/SCSI/Modes/1B.cs index 9a7f02eb..75f1a46e 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/1B.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/1B.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x1B: Removable Block Access Capabilities page diff --git a/DiscImageChef.Decoders/SCSI/Modes/1C.cs b/DiscImageChef.Decoders/SCSI/Modes/1C.cs index 80e93494..5ef6239b 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/1C.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/1C.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x1C: Informational exceptions control page @@ -247,9 +251,7 @@ namespace DiscImageChef.Decoders.SCSI public static ModePage_1C_S01? DecodeModePage_1C_S01(byte[] pageResponse) { - if(pageResponse == null) return null; - - if((pageResponse[0] & 0x40) != 0x40) return null; + if((pageResponse?[0] & 0x40) != 0x40) return null; if((pageResponse[0] & 0x3F) != 0x1C) return null; diff --git a/DiscImageChef.Decoders/SCSI/Modes/1C_SFF.cs b/DiscImageChef.Decoders/SCSI/Modes/1C_SFF.cs index 8cee682c..5ac84b2f 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/1C_SFF.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/1C_SFF.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x1C: Timer & Protect page diff --git a/DiscImageChef.Decoders/SCSI/Modes/1D.cs b/DiscImageChef.Decoders/SCSI/Modes/1D.cs index 72a69bba..d2b87b75 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/1D.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/1D.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Mode Page 0x1D: Medium Configuration Mode Page diff --git a/DiscImageChef.Decoders/SCSI/Modes/21_Certance.cs b/DiscImageChef.Decoders/SCSI/Modes/21_Certance.cs index e11d9316..695d190a 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/21_Certance.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/21_Certance.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Certance Mode Page 0x21: Drive Capabilities Control Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/22_Certance.cs b/DiscImageChef.Decoders/SCSI/Modes/22_Certance.cs index bcd7b549..ea02cf21 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/22_Certance.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/22_Certance.cs @@ -30,10 +30,15 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static partial class Modes { #region Certance Mode Page 0x22: Interface Control Mode Page @@ -124,8 +129,9 @@ namespace DiscImageChef.Decoders.SCSI break; } - if(page.StopBits) sb.AppendLine("Library interface transmits 2 stop bits per byte"); - else sb.AppendLine("Library interface transmits 1 stop bits per byte"); + sb.AppendLine(page.StopBits + ? "Library interface transmits 2 stop bits per byte" + : "Library interface transmits 1 stop bits per byte"); switch(page.CmdFwd) { @@ -160,11 +166,11 @@ namespace DiscImageChef.Decoders.SCSI .AppendLine(); sb.AppendFormat("\tDrive jumpers choose SCSI ID {0}", page.JumperedSelectionID).AppendLine(); - if(page.PortAEnabled) sb.AppendLine("\tSCSI port is enabled"); - else sb.AppendLine("\tSCSI port is disabled"); + sb.AppendLine(page.PortAEnabled ? "\tSCSI port is enabled" : "\tSCSI port is disabled"); - if(page.PortAEnabledOnPower) sb.AppendLine("\tSCSI port will be enabled on next power up"); - else sb.AppendLine("\tSCSI port will be disabled on next power up"); + sb.AppendLine(page.PortAEnabledOnPower + ? "\tSCSI port will be enabled on next power up" + : "\tSCSI port will be disabled on next power up"); return sb.ToString(); } diff --git a/DiscImageChef.Decoders/SCSI/Modes/24_IBM.cs b/DiscImageChef.Decoders/SCSI/Modes/24_IBM.cs index 683a0c4e..f57a35a2 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/24_IBM.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/24_IBM.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region IBM Mode Page 0x24: Drive Capabilities Control Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/2A.cs b/DiscImageChef.Decoders/SCSI/Modes/2A.cs index 8ea416d5..7c32372e 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/2A.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/2A.cs @@ -30,11 +30,16 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static partial class Modes { #region Mode Page 0x2A: CD-ROM capabilities page @@ -279,11 +284,11 @@ namespace DiscImageChef.Decoders.SCSI for(int i = 0; i < descriptors; i++) { - decoded.WriteSpeedPerformanceDescriptors[i] = new ModePage_2A_WriteDescriptor(); - decoded.WriteSpeedPerformanceDescriptors[i].RotationControl = - (byte)(pageResponse[1 + 32 + i * 4] & 0x07); - decoded.WriteSpeedPerformanceDescriptors[i].WriteSpeed = - (ushort)((pageResponse[2 + 32 + i * 4] << 8) + pageResponse[3 + 32 + i * 4]); + decoded.WriteSpeedPerformanceDescriptors[i] = new ModePage_2A_WriteDescriptor + { + RotationControl = (byte)(pageResponse[1 + 32 + i * 4] & 0x07), + WriteSpeed = (ushort)((pageResponse[2 + 32 + i * 4] << 8) + pageResponse[3 + 32 + i * 4]) + }; } return decoded; @@ -345,14 +350,15 @@ namespace DiscImageChef.Decoders.SCSI if(page.PreventJumper) { sb.AppendLine("\tDrive power ups locked"); - if(page.LockState) sb.AppendLine("\tDrive is locked, media cannot be ejected or inserted"); - else sb.AppendLine("\tDrive is not locked, media can be ejected and inserted"); + sb.AppendLine(page.LockState + ? "\tDrive is locked, media cannot be ejected or inserted" + : "\tDrive is not locked, media can be ejected and inserted"); } else { - if(page.LockState) - sb.AppendLine("\tDrive is locked, media cannot be ejected, but if empty, can be inserted"); - else sb.AppendLine("\tDrive is not locked, media can be ejected and inserted"); + sb.AppendLine(page.LockState + ? "\tDrive is locked, media cannot be ejected, but if empty, can be inserted" + : "\tDrive is not locked, media can be ejected and inserted"); } if(page.Eject) sb.AppendLine("\tDrive can eject media"); @@ -369,23 +375,19 @@ namespace DiscImageChef.Decoders.SCSI if(page.ReadCDR) { - if(page.WriteCDR) sb.AppendLine("\tDrive can read and write CD-R"); - else sb.AppendLine("\tDrive can read CD-R"); + sb.AppendLine(page.WriteCDR ? "\tDrive can read and write CD-R" : "\tDrive can read CD-R"); if(page.Method2) sb.AppendLine("\tDrive supports reading CD-R packet media"); } if(page.ReadCDRW) - if(page.WriteCDRW) sb.AppendLine("\tDrive can read and write CD-RW"); - else sb.AppendLine("\tDrive can read CD-RW"); + sb.AppendLine(page.WriteCDRW ? "\tDrive can read and write CD-RW" : "\tDrive can read CD-RW"); if(page.ReadDVDROM) sb.AppendLine("\tDrive can read DVD-ROM"); if(page.ReadDVDR) - if(page.WriteDVDR) sb.AppendLine("\tDrive can read and write DVD-R"); - else sb.AppendLine("\tDrive can read DVD-R"); + sb.AppendLine(page.WriteDVDR ? "\tDrive can read and write DVD-R" : "\tDrive can read DVD-R"); if(page.ReadDVDRAM) - if(page.WriteDVDRAM) sb.AppendLine("\tDrive can read and write DVD-RAM"); - else sb.AppendLine("\tDrive can read DVD-RAM"); + sb.AppendLine(page.WriteDVDRAM ? "\tDrive can read and write DVD-RAM" : "\tDrive can read DVD-RAM"); if(page.Composite) sb.AppendLine("\tDrive can deliver a composite audio and video data stream"); if(page.DigitalPort1) sb.AppendLine("\tDrive supports IEC-958 digital output on port 1"); diff --git a/DiscImageChef.Decoders/SCSI/Modes/2F_IBM.cs b/DiscImageChef.Decoders/SCSI/Modes/2F_IBM.cs index 1d83c5ef..7116c8f0 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/2F_IBM.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/2F_IBM.cs @@ -30,10 +30,15 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] public static partial class Modes { #region IBM Mode Page 0x2F: Behaviour Configuration Mode page @@ -66,22 +71,20 @@ namespace DiscImageChef.Decoders.SCSI if(pageResponse.Length < 8) return null; - IBM_ModePage_2F decoded = new IBM_ModePage_2F(); - - decoded.PS |= (pageResponse[0] & 0x80) == 0x80; - decoded.FenceBehaviour = pageResponse[2]; - decoded.CleanBehaviour = pageResponse[3]; - decoded.WORMEmulation = pageResponse[4]; - decoded.SenseDataBehaviour = pageResponse[5]; - decoded.CCDM |= (pageResponse[6] & 0x04) == 0x04; - decoded.DDEOR |= (pageResponse[6] & 0x02) == 0x02; - decoded.CLNCHK |= (pageResponse[6] & 0x01) == 0x01; - decoded.FirmwareUpdateBehaviour = pageResponse[7]; - decoded.UOE_C = (byte)((pageResponse[8] & 0x30) >> 4); - decoded.UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2); - decoded.UOE_F = (byte)(pageResponse[8] & 0x03); - - return decoded; + return new IBM_ModePage_2F + { + PS = (pageResponse[0] & 0x80) == 0x80, + FenceBehaviour = pageResponse[2], + CleanBehaviour = pageResponse[3], + WORMEmulation = pageResponse[4], + SenseDataBehaviour = pageResponse[5], + CCDM = (pageResponse[6] & 0x04) == 0x04, + DDEOR = (pageResponse[6] & 0x02) == 0x02, + CLNCHK = (pageResponse[6] & 0x01) == 0x01, + FirmwareUpdateBehaviour = pageResponse[7], + UOE_C = (byte)((pageResponse[8] & 0x30) >> 4), + UOE_F = (byte)((pageResponse[8] & 0x0C) >> 2) + }; } public static string PrettifyIBMModePage_2F(byte[] pageResponse) diff --git a/DiscImageChef.Decoders/SCSI/Modes/30_Apple.cs b/DiscImageChef.Decoders/SCSI/Modes/30_Apple.cs index cd71298c..802eb6d0 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/30_Apple.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/30_Apple.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Linq; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region Apple Mode Page 0x30: Apple OEM String diff --git a/DiscImageChef.Decoders/SCSI/Modes/3B_HP.cs b/DiscImageChef.Decoders/SCSI/Modes/3B_HP.cs index 83a11283..1a5ffc39 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3B_HP.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3B_HP.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region HP Mode Page 0x3B: Serial Number Override Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/3C_HP.cs b/DiscImageChef.Decoders/SCSI/Modes/3C_HP.cs index 2d15f9b1..5bf307ea 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3C_HP.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3C_HP.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region HP Mode Page 0x3C: Device Time Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/3D_HP.cs b/DiscImageChef.Decoders/SCSI/Modes/3D_HP.cs index 24291cb7..03722579 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3D_HP.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3D_HP.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region HP Mode Page 0x3D: Extended Reset Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/3D_IBM.cs b/DiscImageChef.Decoders/SCSI/Modes/3D_IBM.cs index 4a722e12..a1dce041 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3D_IBM.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3D_IBM.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region IBM Mode Page 0x3D: Behaviour Configuration Mode page diff --git a/DiscImageChef.Decoders/SCSI/Modes/3E_Fujitsu.cs b/DiscImageChef.Decoders/SCSI/Modes/3E_Fujitsu.cs index 93cce901..90db5652 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3E_Fujitsu.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3E_Fujitsu.cs @@ -31,10 +31,15 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static partial class Modes { #region Fujitsu Mode Page 0x3E: Verify Control page diff --git a/DiscImageChef.Decoders/SCSI/Modes/3E_HP.cs b/DiscImageChef.Decoders/SCSI/Modes/3E_HP.cs index da5c7743..3b6bad1a 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/3E_HP.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/3E_HP.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { #region HP Mode Page 0x3E: CD-ROM Emulation/Disaster Recovery Mode page @@ -82,8 +86,7 @@ namespace DiscImageChef.Decoders.SCSI if(page.PS) sb.AppendLine("\tParameters can be saved"); - if(page.CDmode) sb.AppendLine("\tDrive is emulating a CD-ROM drive"); - else sb.AppendLine("\tDrive is not emulating a CD-ROM drive"); + sb.AppendLine(page.CDmode ? "\tDrive is emulating a CD-ROM drive" : "\tDrive is not emulating a CD-ROM drive"); if(page.NonAuto) sb.AppendLine("\tDrive will not exit emulation automatically"); return sb.ToString(); diff --git a/DiscImageChef.Decoders/SCSI/Modes/Headers.cs b/DiscImageChef.Decoders/SCSI/Modes/Headers.cs index 5f66c9fc..aa65b94c 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/Headers.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/Headers.cs @@ -30,10 +30,14 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { public static string GetMediumTypeDescription(MediumTypes type) diff --git a/DiscImageChef.Decoders/SCSI/Modes/Mode10.cs b/DiscImageChef.Decoders/SCSI/Modes/Mode10.cs index d2d255af..0ad5137a 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/Mode10.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/Mode10.cs @@ -32,10 +32,14 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { public static ModeHeader? DecodeModeHeader10(byte[] modeResponse, PeripheralDeviceTypes deviceType) @@ -50,8 +54,7 @@ namespace DiscImageChef.Decoders.SCSI if(modeResponse.Length < modeLength) return null; - ModeHeader header = new ModeHeader(); - header.MediumType = (MediumTypes)modeResponse[2]; + ModeHeader header = new ModeHeader {MediumType = (MediumTypes)modeResponse[2]}; bool longLBA = (modeResponse[4] & 0x01) == 0x01; @@ -61,8 +64,7 @@ namespace DiscImageChef.Decoders.SCSI header.BlockDescriptors = new BlockDescriptor[blockDescLength / 16]; for(int i = 0; i < header.BlockDescriptors.Length; i++) { - header.BlockDescriptors[i] = new BlockDescriptor(); - header.BlockDescriptors[i].Density = DensityType.Default; + header.BlockDescriptors[i] = new BlockDescriptor {Density = DensityType.Default}; byte[] temp = new byte[8]; temp[0] = modeResponse[7 + i * 16 + 8]; temp[1] = modeResponse[6 + i * 16 + 8]; @@ -134,8 +136,7 @@ namespace DiscImageChef.Decoders.SCSI ModeHeader? hdr = DecodeModeHeader10(modeResponse, deviceType); if(!hdr.HasValue) return null; - DecodedMode decoded = new DecodedMode(); - decoded.Header = hdr.Value; + DecodedMode decoded = new DecodedMode {Header = hdr.Value}; bool longlba = (modeResponse[4] & 0x01) == 0x01; int offset; int blkDrLength = 0; @@ -199,18 +200,12 @@ namespace DiscImageChef.Decoders.SCSI return decoded; } - public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType) - { - return EncodeModeHeader10(header, deviceType, false); - } - - public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, bool longLBA) + public static byte[] EncodeModeHeader10(ModeHeader header, PeripheralDeviceTypes deviceType, bool longLBA = false) { byte[] hdr; if(header.BlockDescriptors != null) - if(longLBA) hdr = new byte[8 + header.BlockDescriptors.Length * 16]; - else hdr = new byte[8 + header.BlockDescriptors.Length * 8]; + hdr = longLBA ? new byte[8 + header.BlockDescriptors.Length * 16] : new byte[8 + header.BlockDescriptors.Length * 8]; else hdr = new byte[8]; hdr[2] = (byte)header.MediumType; diff --git a/DiscImageChef.Decoders/SCSI/Modes/Mode6.cs b/DiscImageChef.Decoders/SCSI/Modes/Mode6.cs index f532d037..387ed3f7 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/Mode6.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/Mode6.cs @@ -32,10 +32,14 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { public static ModeHeader? DecodeModeHeader6(byte[] modeResponse, PeripheralDeviceTypes deviceType) @@ -43,8 +47,7 @@ namespace DiscImageChef.Decoders.SCSI if(modeResponse == null || modeResponse.Length < 4 || modeResponse.Length < modeResponse[0] + 1) return null; - ModeHeader header = new ModeHeader(); - header.MediumType = (MediumTypes)modeResponse[1]; + ModeHeader header = new ModeHeader {MediumType = (MediumTypes)modeResponse[1]}; if(modeResponse[3] > 0) { @@ -94,8 +97,7 @@ namespace DiscImageChef.Decoders.SCSI ModeHeader? hdr = DecodeModeHeader6(modeResponse, deviceType); if(!hdr.HasValue) return null; - DecodedMode decoded = new DecodedMode(); - decoded.Header = hdr.Value; + DecodedMode decoded = new DecodedMode {Header = hdr.Value}; int blkDrLength = 0; if(decoded.Header.BlockDescriptors != null) blkDrLength = decoded.Header.BlockDescriptors.Length; @@ -158,10 +160,7 @@ namespace DiscImageChef.Decoders.SCSI public static byte[] EncodeModeHeader6(ModeHeader header, PeripheralDeviceTypes deviceType) { - byte[] hdr; - - if(header.BlockDescriptors != null) hdr = new byte[4 + header.BlockDescriptors.Length * 8]; - else hdr = new byte[4]; + byte[] hdr = header.BlockDescriptors != null ? new byte[4 + header.BlockDescriptors.Length * 8] : new byte[4]; hdr[1] = (byte)header.MediumType; diff --git a/DiscImageChef.Decoders/SCSI/Modes/Structs.cs b/DiscImageChef.Decoders/SCSI/Modes/Structs.cs index dc918a3d..966055c9 100644 --- a/DiscImageChef.Decoders/SCSI/Modes/Structs.cs +++ b/DiscImageChef.Decoders/SCSI/Modes/Structs.cs @@ -30,8 +30,13 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static partial class Modes { public struct BlockDescriptor diff --git a/DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs b/DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs index 2f391d71..b712ec13 100644 --- a/DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs +++ b/DiscImageChef.Decoders/SCSI/SSC/BlockLimits.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.SSC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class BlockLimits { public struct BlockLimitsData @@ -55,17 +59,14 @@ namespace DiscImageChef.Decoders.SCSI.SSC public static BlockLimitsData? Decode(byte[] response) { - if(response == null) return null; + if(response?.Length != 6) return null; - if(response.Length != 6) return null; - - BlockLimitsData dec = new BlockLimitsData(); - - dec.granularity = (byte)(response[0] & 0x1F); - dec.maxBlockLen = (uint)((response[1] << 16) + (response[2] << 8) + response[3]); - dec.minBlockLen = (ushort)((response[4] << 8) + response[5]); - - return dec; + return new BlockLimitsData + { + granularity = (byte)(response[0] & 0x1F), + maxBlockLen = (uint)((response[1] << 16) + (response[2] << 8) + response[3]), + minBlockLen = (ushort)((response[4] << 8) + response[5]) + }; } public static string Prettify(BlockLimitsData? decoded) diff --git a/DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs b/DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs index 09b69167..ce03cd8a 100644 --- a/DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs +++ b/DiscImageChef.Decoders/SCSI/SSC/DensitySupport.cs @@ -32,10 +32,15 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SCSI.SSC { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DensitySupport { public struct DensitySupportHeader @@ -99,26 +104,26 @@ namespace DiscImageChef.Decoders.SCSI.SSC List descriptors = new List(); int offset = 4; - byte[] tmp; while(offset < response.Length) { - DensitySupportDescriptor descriptor = new DensitySupportDescriptor(); - descriptor.primaryCode = response[offset + 0]; - descriptor.secondaryCode = response[offset + 1]; - descriptor.writable |= (response[offset + 2] & 0x80) == 0x80; - descriptor.duplicate |= (response[offset + 2] & 0x40) == 0x40; - descriptor.defaultDensity |= (response[offset + 2] & 0x20) == 0x20; - descriptor.reserved = (byte)((response[offset + 2] & 0x1E) >> 1); - descriptor.lenvalid |= (response[offset + 2] & 0x01) == 0x01; - descriptor.len = (ushort)((response[offset + 3] << 8) + response[offset + 4]); - descriptor.bpmm = - (uint)((response[offset + 5] << 16) + (response[offset + 6] << 8) + response[offset + 7]); - descriptor.width = (ushort)((response[offset + 8] << 8) + response[offset + 9]); - descriptor.tracks = (ushort)((response[offset + 10] << 8) + response[offset + 11]); - descriptor.capacity = (uint)((response[offset + 12] << 24) + (response[offset + 13] << 16) + - (response[offset + 14] << 8) + response[offset + 15]); - tmp = new byte[8]; + DensitySupportDescriptor descriptor = new DensitySupportDescriptor + { + primaryCode = response[offset + 0], + secondaryCode = response[offset + 1], + writable = (response[offset + 2] & 0x80) == 0x80, + duplicate = (response[offset + 2] & 0x40) == 0x40, + defaultDensity = (response[offset + 2] & 0x20) == 0x20, + reserved = (byte)((response[offset + 2] & 0x1E) >> 1), + lenvalid = (response[offset + 2] & 0x01) == 0x01, + len = (ushort)((response[offset + 3] << 8) + response[offset + 4]), + bpmm = (uint)((response[offset + 5] << 16) + (response[offset + 6] << 8) + response[offset + 7]), + width = (ushort)((response[offset + 8] << 8) + response[offset + 9]), + tracks = (ushort)((response[offset + 10] << 8) + response[offset + 11]), + capacity = (uint)((response[offset + 12] << 24) + (response[offset + 13] << 16) + + (response[offset + 14] << 8) + response[offset + 15]) + }; + byte[] tmp = new byte[8]; Array.Copy(response, offset + 16, tmp, 0, 8); descriptor.organization = StringHandlers.CToString(tmp).Trim(); tmp = new byte[8]; @@ -134,10 +139,12 @@ namespace DiscImageChef.Decoders.SCSI.SSC descriptors.Add(descriptor); } - DensitySupportHeader decoded = new DensitySupportHeader(); - decoded.length = responseLen; - decoded.reserved = (ushort)((response[2] << 8) + response[3] + 2); - decoded.descriptors = descriptors.ToArray(); + DensitySupportHeader decoded = new DensitySupportHeader + { + length = responseLen, + reserved = (ushort)((response[2] << 8) + response[3] + 2), + descriptors = descriptors.ToArray() + }; return decoded; } @@ -187,14 +194,15 @@ namespace DiscImageChef.Decoders.SCSI.SSC List descriptors = new List(); int offset = 4; - byte[] tmp; while(offset < response.Length) { - MediaTypeSupportDescriptor descriptor = new MediaTypeSupportDescriptor(); - descriptor.mediumType = response[offset + 0]; - descriptor.reserved1 = response[offset + 1]; - descriptor.len = (ushort)((response[offset + 2] << 8) + response[offset + 3]); + MediaTypeSupportDescriptor descriptor = new MediaTypeSupportDescriptor + { + mediumType = response[offset + 0], + reserved1 = response[offset + 1], + len = (ushort)((response[offset + 2] << 8) + response[offset + 3]) + }; if(descriptor.len != 52) return null; descriptor.numberOfCodes = response[offset + 4]; @@ -204,7 +212,7 @@ namespace DiscImageChef.Decoders.SCSI.SSC descriptor.length = (ushort)((response[offset + 16] << 8) + response[offset + 17]); descriptor.reserved1 = response[offset + 18]; descriptor.reserved1 = response[offset + 19]; - tmp = new byte[8]; + byte[] tmp = new byte[8]; Array.Copy(response, offset + 20, tmp, 0, 8); descriptor.organization = StringHandlers.CToString(tmp).Trim(); tmp = new byte[8]; @@ -219,10 +227,12 @@ namespace DiscImageChef.Decoders.SCSI.SSC descriptors.Add(descriptor); } - MediaTypeSupportHeader decoded = new MediaTypeSupportHeader(); - decoded.length = responseLen; - decoded.reserved = (ushort)((response[2] << 8) + response[3] + 2); - decoded.descriptors = descriptors.ToArray(); + MediaTypeSupportHeader decoded = new MediaTypeSupportHeader + { + length = responseLen, + reserved = (ushort)((response[2] << 8) + response[3] + 2), + descriptors = descriptors.ToArray() + }; return decoded; } diff --git a/DiscImageChef.Decoders/SCSI/Sense.cs b/DiscImageChef.Decoders/SCSI/Sense.cs index ac0c90bc..fe174ab0 100644 --- a/DiscImageChef.Decoders/SCSI/Sense.cs +++ b/DiscImageChef.Decoders/SCSI/Sense.cs @@ -32,6 +32,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Decoders.ATA; @@ -48,6 +49,9 @@ namespace DiscImageChef.Decoders.SCSI Unknown } + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] + [SuppressMessage("ReSharper", "InconsistentNaming")] public struct StandardSense { /// @@ -140,6 +144,11 @@ namespace DiscImageChef.Decoders.SCSI Completed = 0xF } + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct FixedSense { /// @@ -195,6 +204,9 @@ namespace DiscImageChef.Decoders.SCSI public byte[] AdditionalSense; } + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct DescriptorSense { /// @@ -216,6 +228,9 @@ namespace DiscImageChef.Decoders.SCSI public Dictionary Descriptors; } + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public struct AnotherProgressIndicationSenseDescriptor { public SenseKeys SenseKey; @@ -224,6 +239,7 @@ namespace DiscImageChef.Decoders.SCSI public ushort Progress; } + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Sense { /// @@ -265,8 +281,7 @@ namespace DiscImageChef.Decoders.SCSI public static FixedSense? DecodeFixed(byte[] sense) { - string foo; - return DecodeFixed(sense, out foo); + return DecodeFixed(sense, out _); } public static FixedSense? DecodeFixed(byte[] sense, out string senseDescription) @@ -276,16 +291,17 @@ namespace DiscImageChef.Decoders.SCSI if(sense.Length < 8) return null; - FixedSense decoded = new FixedSense(); - - decoded.InformationValid |= (sense[0] & 0x80) == 0x80; - decoded.SegmentNumber = sense[1]; - decoded.Filemark |= (sense[2] & 0x80) == 0x80; - decoded.EOM |= (sense[2] & 0x40) == 0x40; - decoded.ILI |= (sense[2] & 0x20) == 0x20; - decoded.SenseKey = (SenseKeys)(sense[2] & 0x0F); - decoded.Information = (uint)((sense[3] << 24) + (sense[4] << 16) + (sense[5] << 8) + sense[6]); - decoded.AdditionalLength = sense[7]; + FixedSense decoded = new FixedSense + { + InformationValid = (sense[0] & 0x80) == 0x80, + SegmentNumber = sense[1], + Filemark = (sense[2] & 0x80) == 0x80, + EOM = (sense[2] & 0x40) == 0x40, + ILI = (sense[2] & 0x20) == 0x20, + SenseKey = (SenseKeys)(sense[2] & 0x0F), + Information = (uint)((sense[3] << 24) + (sense[4] << 16) + (sense[5] << 8) + sense[6]), + AdditionalLength = sense[7] + }; if(sense.Length >= 12) decoded.CommandSpecific = (uint)((sense[8] << 24) + (sense[9] << 16) + (sense[10] << 8) + sense[11]); @@ -311,8 +327,7 @@ namespace DiscImageChef.Decoders.SCSI public static DescriptorSense? DecodeDescriptor(byte[] sense) { - string foo; - return DecodeDescriptor(sense, out foo); + return DecodeDescriptor(sense, out _); } public static DescriptorSense? DecodeDescriptor(byte[] sense, out string senseDescription) @@ -323,13 +338,15 @@ namespace DiscImageChef.Decoders.SCSI if(sense.Length < 8) return null; - DescriptorSense decoded = new DescriptorSense(); + DescriptorSense decoded = new DescriptorSense + { + SenseKey = (SenseKeys)(sense[1] & 0x0F), + ASC = sense[2], + ASCQ = sense[3], + Overflow = (sense[4] & 0x80) == 0x80, + Descriptors = new Dictionary() + }; - decoded.SenseKey = (SenseKeys)(sense[1] & 0x0F); - decoded.ASC = sense[2]; - decoded.ASCQ = sense[3]; - decoded.Overflow |= (sense[4] & 0x80) == 0x80; - decoded.Descriptors = new Dictionary(); senseDescription = GetSenseDescription(decoded.ASC, decoded.ASCQ); int offset = 8; @@ -402,8 +419,9 @@ namespace DiscImageChef.Decoders.SCSI { case SenseKeys.IllegalRequest: { - if((decoded.SenseKeySpecific & 0x400000) == 0x400000) sb.AppendLine("Illegal field in CDB"); - else sb.AppendLine("Illegal field in data parameters"); + sb.AppendLine((decoded.SenseKeySpecific & 0x400000) == 0x400000 + ? "Illegal field in CDB" + : "Illegal field in data parameters"); if((decoded.SenseKeySpecific & 0x200000) == 0x200000) sb.AppendFormat("Invalid value in bit {0} in field {1} of CDB", @@ -533,14 +551,13 @@ namespace DiscImageChef.Decoders.SCSI { if(descriptor.Length != 8 || descriptor[0] != 0x0A) return null; - AnotherProgressIndicationSenseDescriptor decoded = new AnotherProgressIndicationSenseDescriptor(); - - decoded.SenseKey = (SenseKeys)descriptor[2]; - decoded.ASC = descriptor[3]; - decoded.ASCQ = descriptor[4]; - decoded.Progress = (ushort)((descriptor[6] << 8) + descriptor[7]); - - return decoded; + return new AnotherProgressIndicationSenseDescriptor + { + SenseKey = (SenseKeys)descriptor[2], + ASC = descriptor[3], + ASCQ = descriptor[4], + Progress = (ushort)((descriptor[6] << 8) + descriptor[7]) + }; } public static void DecodeDescriptor04(byte[] descriptor) @@ -568,19 +585,18 @@ namespace DiscImageChef.Decoders.SCSI throw new NotImplementedException("Check OSD"); } - public static AtaErrorRegistersLBA48 DecodeDescriptor09(byte[] descriptor) + public static AtaErrorRegistersLba48 DecodeDescriptor09(byte[] descriptor) { - AtaErrorRegistersLBA48 errorRegisters = new AtaErrorRegistersLBA48(); - - errorRegisters.error = descriptor[3]; - errorRegisters.sectorCount = (ushort)((descriptor[4] << 8) + descriptor[5]); - errorRegisters.lbaLow = (ushort)((descriptor[6] << 8) + descriptor[7]); - errorRegisters.lbaMid = (ushort)((descriptor[8] << 8) + descriptor[9]); - errorRegisters.lbaHigh = (ushort)((descriptor[10] << 8) + descriptor[11]); - errorRegisters.deviceHead = descriptor[12]; - errorRegisters.status = descriptor[13]; - - return errorRegisters; + return new AtaErrorRegistersLba48 + { + Error = descriptor[3], + SectorCount = (ushort)((descriptor[4] << 8) + descriptor[5]), + LbaLow = (ushort)((descriptor[6] << 8) + descriptor[7]), + LbaMid = (ushort)((descriptor[8] << 8) + descriptor[9]), + LbaHigh = (ushort)((descriptor[10] << 8) + descriptor[11]), + DeviceHead = descriptor[12], + Status = descriptor[13] + }; } public static void DecodeDescriptor0B(byte[] descriptor) @@ -626,6 +642,7 @@ namespace DiscImageChef.Decoders.SCSI } } + [SuppressMessage("ReSharper", "InconsistentNaming")] public static string GetSenseDescription(byte ASC, byte ASCQ) { switch(ASC) diff --git a/DiscImageChef.Decoders/SCSI/Types.cs b/DiscImageChef.Decoders/SCSI/Types.cs index c22ca28e..32fcddd7 100644 --- a/DiscImageChef.Decoders/SCSI/Types.cs +++ b/DiscImageChef.Decoders/SCSI/Types.cs @@ -30,8 +30,11 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System.Diagnostics.CodeAnalysis; + namespace DiscImageChef.Decoders.SCSI { + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum MediumTypes : byte { Default = 0x00, @@ -585,6 +588,7 @@ namespace DiscImageChef.Decoders.SCSI #endregion Medium Types found in vendor documents } + [SuppressMessage("ReSharper", "InconsistentNaming")] public enum DensityType : byte { Default = 0x00, diff --git a/DiscImageChef.Decoders/SCSI/VendorString.cs b/DiscImageChef.Decoders/SCSI/VendorString.cs index 0e5aecff..8b063957 100644 --- a/DiscImageChef.Decoders/SCSI/VendorString.cs +++ b/DiscImageChef.Decoders/SCSI/VendorString.cs @@ -34,9 +34,9 @@ namespace DiscImageChef.Decoders.SCSI { public static class VendorString { - public static string Prettify(string SCSIVendorString) + public static string Prettify(string scsiVendorString) { - switch(SCSIVendorString) + switch(scsiVendorString) { case "0B4C": return "MOOSIK Ltd."; case "13FE": return "PHISON"; @@ -836,7 +836,7 @@ namespace DiscImageChef.Decoders.SCSI case "ZETTA": return "Zetta Systems, Inc."; case "ZTE": return "ZTE Corporation"; case "ZVAULT": return "Zetavault"; - default: return SCSIVendorString; + default: return scsiVendorString; } } } diff --git a/DiscImageChef.Decoders/SecureDigital/CID.cs b/DiscImageChef.Decoders/SecureDigital/CID.cs index d00ba5ea..257e441b 100644 --- a/DiscImageChef.Decoders/SecureDigital/CID.cs +++ b/DiscImageChef.Decoders/SecureDigital/CID.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SecureDigital { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class CID { public byte Manufacturer; @@ -46,18 +50,18 @@ namespace DiscImageChef.Decoders.SecureDigital public byte CRC; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static CID DecodeCID(uint[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; + if(response?.Length != 4) return null; byte[] data = new byte[16]; - byte[] tmp; - tmp = BitConverter.GetBytes(response[0]); + byte[] tmp = BitConverter.GetBytes(response[0]); Array.Copy(tmp, 0, data, 0, 4); tmp = BitConverter.GetBytes(response[1]); Array.Copy(tmp, 0, data, 4, 4); @@ -71,24 +75,22 @@ namespace DiscImageChef.Decoders.SecureDigital public static CID DecodeCID(byte[] response) { - if(response == null) return null; + if(response?.Length != 16) return null; - if(response.Length != 16) return null; - - byte[] tmp; - - CID cid = new CID(); - cid.Manufacturer = response[0]; - tmp = new byte[2]; + CID cid = new CID + { + Manufacturer = response[0], + ProductRevision = response[8], + ProductSerialNumber = BitConverter.ToUInt32(response, 9), + ManufacturingDate = (ushort)(((response[13] & 0x0F) << 4) + response[14]), + CRC = (byte)((response[15] & 0xFE) >> 1) + }; + byte[] tmp = new byte[2]; Array.Copy(response, 1, tmp, 0, 2); cid.ApplicationID = StringHandlers.CToString(tmp); tmp = new byte[5]; Array.Copy(response, 3, tmp, 0, 5); cid.ProductName = StringHandlers.CToString(tmp); - cid.ProductRevision = response[8]; - cid.ProductSerialNumber = BitConverter.ToUInt32(response, 9); - cid.ManufacturingDate = (ushort)(((response[13] & 0x0F) << 4) + response[14]); - cid.CRC = (byte)((response[15] & 0xFE) >> 1); return cid; } diff --git a/DiscImageChef.Decoders/SecureDigital/CSD.cs b/DiscImageChef.Decoders/SecureDigital/CSD.cs index 076643bf..e4f9e004 100644 --- a/DiscImageChef.Decoders/SecureDigital/CSD.cs +++ b/DiscImageChef.Decoders/SecureDigital/CSD.cs @@ -31,10 +31,14 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SecureDigital { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public class CSD { public byte Structure; @@ -68,18 +72,17 @@ namespace DiscImageChef.Decoders.SecureDigital public byte CRC; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static CSD DecodeCSD(uint[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; + if(response?.Length != 4) return null; byte[] data = new byte[16]; - byte[] tmp; - tmp = BitConverter.GetBytes(response[0]); + byte[] tmp = BitConverter.GetBytes(response[0]); Array.Copy(tmp, 0, data, 0, 4); tmp = BitConverter.GetBytes(response[1]); Array.Copy(tmp, 0, data, 4, 4); @@ -93,22 +96,35 @@ namespace DiscImageChef.Decoders.SecureDigital public static CSD DecodeCSD(byte[] response) { - if(response == null) return null; + if(response?.Length != 16) return null; - if(response.Length != 16) return null; + CSD csd = new CSD + { + Structure = (byte)((response[0] & 0xC0) >> 6), + TAAC = response[1], + NSAC = response[2], + Speed = response[3], + Classes = (ushort)((response[4] << 4) + ((response[5] & 0xF0) >> 4)), + ReadBlockLength = (byte)(response[5] & 0x0F), + ReadsPartialBlocks = (response[6] & 0x80) == 0x80, + WriteMisalignment = (response[6] & 0x40) == 0x40, + ReadMisalignment = (response[6] & 0x20) == 0x20, + DSRImplemented = (response[6] & 0x10) == 0x10, + EraseBlockEnable = (response[10] & 0x40) == 0x40, + EraseSectorSize = (byte)(((response[10] & 0x3F) << 1) + ((response[11] & 0x80) >> 7)), + WriteProtectGroupSize = (byte)(response[11] & 0x7F), + WriteProtectGroupEnable = (response[12] & 0x80) == 0x80, + WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2), + WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6)), + WritesPartialBlocks = (response[13] & 0x20) == 0x20, + FileFormatGroup = (response[14] & 0x80) == 0x80, + Copy = (response[14] & 0x40) == 0x40, + PermanentWriteProtect = (response[14] & 0x20) == 0x20, + TemporaryWriteProtect = (response[14] & 0x10) == 0x10, + FileFormat = (byte)((response[14] & 0x0C) >> 2), + CRC = (byte)((response[15] & 0xFE) >> 1) + }; - CSD csd = new CSD(); - - csd.Structure = (byte)((response[0] & 0xC0) >> 6); - csd.TAAC = response[1]; - csd.NSAC = response[2]; - csd.Speed = response[3]; - csd.Classes = (ushort)((response[4] << 4) + ((response[5] & 0xF0) >> 4)); - csd.ReadBlockLength = (byte)(response[5] & 0x0F); - csd.ReadsPartialBlocks = (response[6] & 0x80) == 0x80; - csd.WriteMisalignment = (response[6] & 0x40) == 0x40; - csd.ReadMisalignment = (response[6] & 0x20) == 0x20; - csd.DSRImplemented = (response[6] & 0x10) == 0x10; if(csd.Structure == 0) { csd.Size = (ushort)(((response[6] & 0x03) << 10) + (response[7] << 2) + ((response[8] & 0xC0) >> 6)); @@ -119,19 +135,6 @@ namespace DiscImageChef.Decoders.SecureDigital csd.SizeMultiplier = (byte)(((response[9] & 0x03) << 1) + ((response[10] & 0x80) >> 7)); } else csd.Size = (uint)(((response[7] & 0x3F) << 16) + (response[8] << 8) + response[9]); - csd.EraseBlockEnable = (response[10] & 0x40) == 0x40; - csd.EraseSectorSize = (byte)(((response[10] & 0x3F) << 1) + ((response[11] & 0x80) >> 7)); - csd.WriteProtectGroupSize = (byte)(response[11] & 0x7F); - csd.WriteProtectGroupEnable = (response[12] & 0x80) == 0x80; - csd.WriteSpeedFactor = (byte)((response[12] & 0x1C) >> 2); - csd.WriteBlockLength = (byte)(((response[12] & 0x03) << 2) + ((response[13] & 0xC0) >> 6)); - csd.WritesPartialBlocks = (response[13] & 0x20) == 0x20; - csd.FileFormatGroup = (response[14] & 0x80) == 0x80; - csd.Copy = (response[14] & 0x40) == 0x40; - csd.PermanentWriteProtect = (response[14] & 0x20) == 0x20; - csd.TemporaryWriteProtect = (response[14] & 0x10) == 0x10; - csd.FileFormat = (byte)((response[14] & 0x0C) >> 2); - csd.CRC = (byte)((response[15] & 0xFE) >> 1); return csd; } diff --git a/DiscImageChef.Decoders/SecureDigital/OCR.cs b/DiscImageChef.Decoders/SecureDigital/OCR.cs index c1f9fc08..2c387dfc 100644 --- a/DiscImageChef.Decoders/SecureDigital/OCR.cs +++ b/DiscImageChef.Decoders/SecureDigital/OCR.cs @@ -31,10 +31,16 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SecureDigital { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "UnassignedField.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class OCR { public bool PowerUp; @@ -53,37 +59,34 @@ namespace DiscImageChef.Decoders.SecureDigital public bool LowPower; } - public partial class Decoders + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + public static partial class Decoders { public static OCR DecodeOCR(uint response) { - OCR ocr = new OCR(); - - ocr.PowerUp = (response & 0x80000000) == 0x80000000; - ocr.CCS = (response & 0x40000000) == 0x40000000; - ocr.PowerUp = (response & 0x20000000) == 0x20000000; - ocr.OneEight = (response & 0x01000000) == 0x01000000; - ocr.ThreeFive = (response & 0x00800000) == 0x00800000; - ocr.ThreeFour = (response & 0x00400000) == 0x00400000; - ocr.ThreeThree = (response & 0x00200000) == 0x00200000; - ocr.ThreeTwo = (response & 0x00100000) == 0x00100000; - ocr.ThreeOne = (response & 0x00080000) == 0x00080000; - ocr.ThreeZero = (response & 0x00040000) == 0x00040000; - ocr.TwoNine = (response & 0x00020000) == 0x00020000; - ocr.TwoEight = (response & 0x00010000) == 0x00010000; - ocr.TwoSeven = (response & 0x00008000) == 0x00008000; - ocr.LowPower = (response & 0x00000080) == 0x00000080; - - return ocr; + return new OCR + { + PowerUp = (response & 0x80000000) == 0x80000000, + CCS = (response & 0x40000000) == 0x40000000, + UHS = (response & 0x20000000) == 0x20000000, + OneEight = (response & 0x01000000) == 0x01000000, + ThreeFive = (response & 0x00800000) == 0x00800000, + ThreeFour = (response & 0x00400000) == 0x00400000, + ThreeThree = (response & 0x00200000) == 0x00200000, + ThreeTwo = (response & 0x00100000) == 0x00100000, + ThreeOne = (response & 0x00080000) == 0x00080000, + ThreeZero = (response & 0x00040000) == 0x00040000, + TwoNine = (response & 0x00020000) == 0x00020000, + TwoEight = (response & 0x00010000) == 0x00010000, + TwoSeven = (response & 0x00008000) == 0x00008000, + LowPower = (response & 0x00000080) == 0x00000080 + }; } public static OCR DecodeOCR(byte[] response) { - if(response == null) return null; - - if(response.Length != 4) return null; - - return DecodeOCR(BitConverter.ToUInt32(response, 0)); + return response?.Length != 4 ? null : DecodeOCR(BitConverter.ToUInt32(response, 0)); } public static string PrettifyOCR(OCR ocr) diff --git a/DiscImageChef.Decoders/SecureDigital/SCR.cs b/DiscImageChef.Decoders/SecureDigital/SCR.cs index 35f27241..5e9b38a3 100644 --- a/DiscImageChef.Decoders/SecureDigital/SCR.cs +++ b/DiscImageChef.Decoders/SecureDigital/SCR.cs @@ -31,10 +31,15 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.SecureDigital { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public class SCR { public byte Structure; @@ -50,18 +55,17 @@ namespace DiscImageChef.Decoders.SecureDigital public byte[] ManufacturerReserved; } - public partial class Decoders + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "InconsistentNaming")] + public static partial class Decoders { public static SCR DecodeSCR(uint[] response) { - if(response == null) return null; - - if(response.Length != 2) return null; + if(response?.Length != 2) return null; byte[] data = new byte[8]; - byte[] tmp; - tmp = BitConverter.GetBytes(response[0]); + byte[] tmp = BitConverter.GetBytes(response[0]); Array.Copy(tmp, 0, data, 0, 4); tmp = BitConverter.GetBytes(response[1]); Array.Copy(tmp, 0, data, 4, 4); @@ -71,22 +75,22 @@ namespace DiscImageChef.Decoders.SecureDigital public static SCR DecodeSCR(byte[] response) { - if(response == null) return null; + if(response?.Length != 8) return null; - if(response.Length != 8) return null; - - SCR scr = new SCR(); - scr.Structure = (byte)((response[0] & 0xF0) >> 4); - scr.Spec = (byte)(response[0] & 0x0F); - scr.DataStatusAfterErase = (response[1] & 0x80) == 0x80; - scr.Security = (byte)((response[1] & 0x70) >> 4); - scr.BusWidth = (byte)(response[1] & 0x0F); - scr.Spec3 = (response[2] & 0x80) == 0x80; - scr.ExtendedSecurity = (byte)((response[2] & 0x78) >> 3); - scr.Spec4 = (response[2] & 0x04) == 0x04; - scr.SpecX = (byte)(((response[2] & 0x03) << 2) + ((response[3] & 0xC0) >> 6)); - scr.CommandSupport = (byte)(response[3] & 0x0F); - scr.ManufacturerReserved = new byte[4]; + SCR scr = new SCR + { + Structure = (byte)((response[0] & 0xF0) >> 4), + Spec = (byte)(response[0] & 0x0F), + DataStatusAfterErase = (response[1] & 0x80) == 0x80, + Security = (byte)((response[1] & 0x70) >> 4), + BusWidth = (byte)(response[1] & 0x0F), + Spec3 = (response[2] & 0x80) == 0x80, + ExtendedSecurity = (byte)((response[2] & 0x78) >> 3), + Spec4 = (response[2] & 0x04) == 0x04, + SpecX = (byte)(((response[2] & 0x03) << 2) + ((response[3] & 0xC0) >> 6)), + CommandSupport = (byte)(response[3] & 0x0F), + ManufacturerReserved = new byte[4] + }; Array.Copy(response, 4, scr.ManufacturerReserved, 0, 4); return scr; diff --git a/DiscImageChef.Decoders/SecureDigital/VendorString.cs b/DiscImageChef.Decoders/SecureDigital/VendorString.cs index 3938a5eb..545e0f53 100644 --- a/DiscImageChef.Decoders/SecureDigital/VendorString.cs +++ b/DiscImageChef.Decoders/SecureDigital/VendorString.cs @@ -34,12 +34,12 @@ namespace DiscImageChef.Decoders.SecureDigital { public static class VendorString { - public static string Prettify(byte SDVendorID) + public static string Prettify(byte sdVendorId) { - switch(SDVendorID) + switch(sdVendorId) { case 0xAA: return "QEMU"; - default: return $"Unknown manufacturer ID 0x{SDVendorID:X2}"; + default: return $"Unknown manufacturer ID 0x{sdVendorId:X2}"; } } } diff --git a/DiscImageChef.Decoders/Sega/CD.cs b/DiscImageChef.Decoders/Sega/CD.cs index 758914f4..fc6f7531 100644 --- a/DiscImageChef.Decoders/Sega/CD.cs +++ b/DiscImageChef.Decoders/Sega/CD.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.InteropServices; using System.Text; @@ -38,6 +39,9 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Sega { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class CD { // TODO: Check if it is big or little endian @@ -114,10 +118,9 @@ namespace DiscImageChef.Decoders.Sega if(ipbin_sector.Length < 512) return null; - IPBin ipbin; IntPtr ptr = Marshal.AllocHGlobal(512); Marshal.Copy(ipbin_sector, 0, ptr, 512); - ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); + IPBin ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); Marshal.FreeHGlobal(ptr); DicConsole.DebugWriteLine("ISO9660 plugin", "segacd_ipbin.volume_name = \"{0}\"", @@ -186,7 +189,8 @@ namespace DiscImageChef.Decoders.Sega provider); } #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body - catch { } + catch { // ignored + } #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body } diff --git a/DiscImageChef.Decoders/Sega/Dreamcast.cs b/DiscImageChef.Decoders/Sega/Dreamcast.cs index 646d2c19..163faa44 100644 --- a/DiscImageChef.Decoders/Sega/Dreamcast.cs +++ b/DiscImageChef.Decoders/Sega/Dreamcast.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.InteropServices; using System.Text; @@ -38,6 +39,9 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Sega { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Dreamcast { [StructLayout(LayoutKind.Sequential, Pack = 1)] @@ -91,10 +95,9 @@ namespace DiscImageChef.Decoders.Sega if(ipbin_sector.Length < 512) return null; - IPBin ipbin; IntPtr ptr = Marshal.AllocHGlobal(512); Marshal.Copy(ipbin_sector, 0, ptr, 512); - ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); + IPBin ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); Marshal.FreeHGlobal(ptr); DicConsole.DebugWriteLine("ISO9660 plugin", "dreamcast_ipbin.maker_id = \"{0}\"", diff --git a/DiscImageChef.Decoders/Sega/Saturn.cs b/DiscImageChef.Decoders/Sega/Saturn.cs index 220ffd29..c7f24280 100644 --- a/DiscImageChef.Decoders/Sega/Saturn.cs +++ b/DiscImageChef.Decoders/Sega/Saturn.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Runtime.InteropServices; using System.Text; @@ -38,6 +39,9 @@ using DiscImageChef.Console; namespace DiscImageChef.Decoders.Sega { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] public static class Saturn { [StructLayout(LayoutKind.Sequential, Pack = 1)] @@ -77,10 +81,9 @@ namespace DiscImageChef.Decoders.Sega if(ipbin_sector.Length < 512) return null; - IPBin ipbin; IntPtr ptr = Marshal.AllocHGlobal(512); Marshal.Copy(ipbin_sector, 0, ptr, 512); - ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); + IPBin ipbin = (IPBin)Marshal.PtrToStructure(ptr, typeof(IPBin)); Marshal.FreeHGlobal(ptr); DicConsole.DebugWriteLine("ISO9660 plugin", "saturn_ipbin.maker_id = \"{0}\"", diff --git a/DiscImageChef.Decoders/Xbox/DMI.cs b/DiscImageChef.Decoders/Xbox/DMI.cs index a64dbb5c..59121ed7 100644 --- a/DiscImageChef.Decoders/Xbox/DMI.cs +++ b/DiscImageChef.Decoders/Xbox/DMI.cs @@ -31,16 +31,20 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; namespace DiscImageChef.Decoders.Xbox { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class DMI { public static bool IsXbox(byte[] dmi) { - if(dmi == null) return false; - if(dmi.Length != 2052) return false; + if(dmi?.Length != 2052) return false; // Version is 1 if(BitConverter.ToUInt32(dmi, 4) != 1) return false; @@ -54,15 +58,12 @@ namespace DiscImageChef.Decoders.Xbox long timestamp = BitConverter.ToInt64(dmi, 20); // Game cannot exist before the Xbox - if(timestamp < 0x1BD164833DFC000) return false; - - return true; + return timestamp >= 0x1BD164833DFC000; } public static bool IsXbox360(byte[] dmi) { - if(dmi == null) return false; - if(dmi.Length != 2052) return false; + if(dmi?.Length != 2052) return false; uint signature = BitConverter.ToUInt32(dmi, 0x7EC); @@ -155,14 +156,15 @@ namespace DiscImageChef.Decoders.Xbox bool isXbox = IsXbox(response); if(!isXbox) return null; - XboxDMI dmi = new XboxDMI(); + XboxDMI dmi = new XboxDMI + { + DataLength = (ushort)((response[0] << 8) + response[1]), + Reserved1 = response[2], + Reserved2 = response[3], + Version = BitConverter.ToUInt32(response, 4), + Timestamp = BitConverter.ToInt64(response, 20) + }; - dmi.DataLength = (ushort)((response[0] << 8) + response[1]); - dmi.Reserved1 = response[2]; - dmi.Reserved2 = response[3]; - - dmi.Version = BitConverter.ToUInt32(response, 4); - dmi.Timestamp = BitConverter.ToInt64(response, 20); byte[] tmp = new byte[8]; Array.Copy(response, 12, tmp, 0, 8); dmi.CatalogNumber = StringHandlers.CToString(tmp); @@ -175,23 +177,22 @@ namespace DiscImageChef.Decoders.Xbox bool isX360 = IsXbox360(response); if(!isX360) return null; - Xbox360DMI dmi = new Xbox360DMI(); + Xbox360DMI dmi = new Xbox360DMI + { + DataLength = (ushort)((response[0] << 8) + response[1]), + Reserved1 = response[2], + Reserved2 = response[3], + Version = BitConverter.ToUInt32(response, 4), + Timestamp = BitConverter.ToInt64(response, 20), + MediaID = new byte[16] + }; - dmi.DataLength = (ushort)((response[0] << 8) + response[1]); - dmi.Reserved1 = response[2]; - dmi.Reserved2 = response[3]; - - dmi.Version = BitConverter.ToUInt32(response, 4); - dmi.Timestamp = BitConverter.ToInt64(response, 20); - dmi.MediaID = new byte[16]; Array.Copy(response, 36, dmi.MediaID, 0, 16); byte[] tmp = new byte[16]; Array.Copy(response, 68, tmp, 0, 16); dmi.CatalogNumber = StringHandlers.CToString(tmp); - if(dmi.CatalogNumber == null || dmi.CatalogNumber.Length < 13) return null; - - return dmi; + return dmi.CatalogNumber == null || dmi.CatalogNumber.Length < 13 ? (Xbox360DMI?)null : dmi; } public static string PrettifyXbox(XboxDMI? dmi) diff --git a/DiscImageChef.Decoders/Xbox/SS.cs b/DiscImageChef.Decoders/Xbox/SS.cs index 62393399..c66a38af 100644 --- a/DiscImageChef.Decoders/Xbox/SS.cs +++ b/DiscImageChef.Decoders/Xbox/SS.cs @@ -31,11 +31,16 @@ // ****************************************************************************/ using System; +using System.Diagnostics.CodeAnalysis; using System.Text; using DiscImageChef.Decoders.DVD; namespace DiscImageChef.Decoders.Xbox { + [SuppressMessage("ReSharper", "InconsistentNaming")] + [SuppressMessage("ReSharper", "MemberCanBeInternal")] + [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")] + [SuppressMessage("ReSharper", "NotAccessedField.Global")] public static class SS { public struct SecuritySector @@ -221,82 +226,92 @@ namespace DiscImageChef.Decoders.Xbox if(response.Length < 2048) return null; - SecuritySector ss = new SecuritySector(); + SecuritySector ss = new SecuritySector + { + DiskCategory = (DiskCategory)((response[0] & 0xF0) >> 4), + PartVersion = (byte)(response[0] & 0x0F), + DiscSize = (DVDSize)((response[1] & 0xF0) >> 4), + MaximumRate = (MaximumRateField)(response[1] & 0x0F), + Reserved3 = (response[2] & 0x80) == 0x80, + Layers = (byte)((response[2] & 0x60) >> 5), + TrackPath = (response[2] & 0x08) == 0x08, + LayerType = (LayerTypeFieldMask)(response[2] & 0x07), + LinearDensity = (LinearDensityField)((response[3] & 0xF0) >> 4), + TrackDensity = (TrackDensityField)(response[3] & 0x0F), + DataAreaStartPSN = (uint)((response[4] << 24) + (response[5] << 16) + (response[6] << 8) + response[7]), + DataAreaEndPSN = (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]), + Layer0EndPSN = (uint)((response[12] << 24) + (response[13] << 16) + (response[14] << 8) + response[15]), + Unknown1 = response[27], + Unknown2 = new byte[28], + Unknown3 = new byte[436], + Unknown4 = new byte[4], + Unknown5 = new byte[43], + ChallengeTableVersion = response[768], + NoChallengeEntries = response[769], + ChallengeEntries = new ChallengeEntry[23], + Unknown6 = response[1023], + Unknown7 = new byte[48], + Unknown8 = new byte[16], + Unknown9 = new byte[16], + Unknown10 = new byte[303], + Unknown11 = new byte[104], + Extents = new SecuritySectorExtent[23], + ExtentsCopy = new SecuritySectorExtent[23] + }; - // Common - ss.DiskCategory = (DiskCategory)((response[0] & 0xF0) >> 4); - ss.PartVersion = (byte)(response[0] & 0x0F); - ss.DiscSize = (DVDSize)((response[1] & 0xF0) >> 4); - ss.MaximumRate = (MaximumRateField)(response[1] & 0x0F); - ss.Reserved3 |= (response[2] & 0x80) == 0x80; - ss.Layers = (byte)((response[2] & 0x60) >> 5); - ss.TrackPath |= (response[2] & 0x08) == 0x08; - ss.LayerType = (LayerTypeFieldMask)(response[2] & 0x07); - ss.LinearDensity = (LinearDensityField)((response[3] & 0xF0) >> 4); - ss.TrackDensity = (TrackDensityField)(response[3] & 0x0F); - ss.DataAreaStartPSN = (uint)((response[4] << 24) + (response[5] << 16) + (response[6] << 8) + response[7]); - ss.DataAreaEndPSN = (uint)((response[8] << 24) + (response[9] << 16) + (response[10] << 8) + response[11]); - ss.Layer0EndPSN = (uint)((response[12] << 24) + (response[13] << 16) + (response[14] << 8) + response[15]); - - ss.Unknown1 = response[27]; - ss.Unknown2 = new byte[28]; Array.Copy(response, 256, ss.Unknown2, 0, 28); - ss.Unknown3 = new byte[436]; Array.Copy(response, 284, ss.Unknown3, 0, 436); - ss.Unknown4 = new byte[4]; Array.Copy(response, 720, ss.Unknown4, 0, 4); - ss.Unknown5 = new byte[43]; Array.Copy(response, 724, ss.Unknown5, 0, 43); - ss.ChallengeTableVersion = response[768]; - ss.NoChallengeEntries = response[769]; - ss.ChallengeEntries = new ChallengeEntry[23]; + for(int i = 0; i < 23; i++) { - ss.ChallengeEntries[i] = new ChallengeEntry(); - ss.ChallengeEntries[i].Level = response[770 + i * 11 + 0]; - ss.ChallengeEntries[i].ChallengeId = response[770 + i * 11 + 1]; - ss.ChallengeEntries[i].ChallengeValue = - (uint)((response[770 + i * 11 + 2] << 24) + (response[770 + i * 11 + 3] << 16) + - (response[770 + i * 11 + 4] << 8) + response[770 + i * 11 + 5]); - ss.ChallengeEntries[i].ResponseModifier = response[770 + i * 11 + 6]; - ss.ChallengeEntries[i].ResponseValue = - (uint)((response[770 + i * 11 + 7] << 24) + (response[770 + i * 11 + 8] << 16) + - (response[770 + i * 11 + 9] << 8) + response[770 + i * 11 + 10]); + ss.ChallengeEntries[i] = new ChallengeEntry + { + Level = response[770 + i * 11 + 0], + ChallengeId = response[770 + i * 11 + 1], + ChallengeValue = + (uint)((response[770 + i * 11 + 2] << 24) + (response[770 + i * 11 + 3] << 16) + + (response[770 + i * 11 + 4] << 8) + response[770 + i * 11 + 5]), + ResponseModifier = response[770 + i * 11 + 6], + ResponseValue = (uint)((response[770 + i * 11 + 7] << 24) + (response[770 + i * 11 + 8] << 16) + + (response[770 + i * 11 + 9] << 8) + response[770 + i * 11 + 10]) + }; } - ss.Unknown6 = response[1023]; - ss.Unknown7 = new byte[48]; Array.Copy(response, 1052, ss.Unknown7, 0, 48); - ss.Unknown8 = new byte[16]; Array.Copy(response, 1120, ss.Unknown8, 0, 16); - ss.Unknown9 = new byte[16]; Array.Copy(response, 1180, ss.Unknown9, 0, 16); - ss.Unknown10 = new byte[303]; Array.Copy(response, 1208, ss.Unknown10, 0, 303); - ss.Unknown11 = new byte[104]; Array.Copy(response, 1528, ss.Unknown11, 0, 104); - ss.Extents = new SecuritySectorExtent[23]; for(int i = 0; i < 23; i++) { - ss.Extents[i] = new SecuritySectorExtent(); - ss.Extents[i].Unknown = (uint)((response[1633 + i * 9 + 0] << 16) + (response[1633 + i * 9 + 1] << 8) + - response[1633 + i * 9 + 2]); - ss.Extents[i].StartPSN = (uint)((response[1633 + i * 9 + 3] << 16) + (response[1633 + i * 9 + 4] << 8) + - response[1633 + i * 9 + 5]); - ss.Extents[i].EndPSN = (uint)((response[1633 + i * 9 + 6] << 16) + (response[1633 + i * 9 + 7] << 8) + - response[1633 + i * 9 + 8]); + ss.Extents[i] = new SecuritySectorExtent + { + Unknown = + (uint)((response[1633 + i * 9 + 0] << 16) + (response[1633 + i * 9 + 1] << 8) + + response[1633 + i * 9 + 2]), + StartPSN = + (uint)((response[1633 + i * 9 + 3] << 16) + (response[1633 + i * 9 + 4] << 8) + + response[1633 + i * 9 + 5]), + EndPSN = (uint)((response[1633 + i * 9 + 6] << 16) + (response[1633 + i * 9 + 7] << 8) + + response[1633 + i * 9 + 8]) + }; } - ss.ExtentsCopy = new SecuritySectorExtent[23]; for(int i = 0; i < 23; i++) { - ss.ExtentsCopy[i] = new SecuritySectorExtent(); - ss.ExtentsCopy[i].Unknown = (uint)((response[1840 + i * 9 + 0] << 16) + - (response[1840 + i * 9 + 1] << 8) + response[1840 + i * 9 + 2]); - ss.ExtentsCopy[i].StartPSN = (uint)((response[1840 + i * 9 + 3] << 16) + - (response[1840 + i * 9 + 4] << 8) + response[1840 + i * 9 + 5]); - ss.ExtentsCopy[i].EndPSN = (uint)((response[1840 + i * 9 + 6] << 16) + - (response[1840 + i * 9 + 7] << 8) + response[1840 + i * 9 + 8]); + ss.ExtentsCopy[i] = new SecuritySectorExtent + { + Unknown = + (uint)((response[1840 + i * 9 + 0] << 16) + (response[1840 + i * 9 + 1] << 8) + + response[1840 + i * 9 + 2]), + StartPSN = + (uint)((response[1840 + i * 9 + 3] << 16) + (response[1840 + i * 9 + 4] << 8) + + response[1840 + i * 9 + 5]), + EndPSN = (uint)((response[1840 + i * 9 + 6] << 16) + (response[1840 + i * 9 + 7] << 8) + + response[1840 + i * 9 + 8]) + }; } return ss; @@ -323,7 +338,7 @@ namespace DiscImageChef.Decoders.Xbox break; } - string categorySentence = "Disc is a {0} {1} version {2}"; + const string categorySentence = "Disc is a {0} {1} version {2}"; switch(decoded.DiskCategory) { diff --git a/DiscImageChef.Devices/Command.cs b/DiscImageChef.Devices/Command.cs index 3ab18d7a..dbce0564 100644 --- a/DiscImageChef.Devices/Command.cs +++ b/DiscImageChef.Devices/Command.cs @@ -158,7 +158,7 @@ namespace DiscImageChef.Devices } } - internal static int SendAtaCommand(object fd, AtaRegistersCHS registers, out AtaErrorRegistersCHS errorRegisters, + internal static int SendAtaCommand(object fd, AtaRegistersChs registers, out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -168,8 +168,8 @@ namespace DiscImageChef.Devices timeout, transferBlocks, out duration, out sense); } - internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersCHS registers, - out AtaErrorRegistersCHS errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersChs registers, + out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -205,8 +205,8 @@ namespace DiscImageChef.Devices } } - internal static int SendAtaCommand(object fd, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(object fd, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -216,8 +216,8 @@ namespace DiscImageChef.Devices timeout, transferBlocks, out duration, out sense); } - internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -253,8 +253,8 @@ namespace DiscImageChef.Devices } } - internal static int SendAtaCommand(object fd, AtaRegistersLBA48 registers, - out AtaErrorRegistersLBA48 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(object fd, AtaRegistersLba48 registers, + out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -264,8 +264,8 @@ namespace DiscImageChef.Devices timeout, transferBlocks, out duration, out sense); } - internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersLBA48 registers, - out AtaErrorRegistersLBA48 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(PlatformID ptId, object fd, AtaRegistersLba48 registers, + out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { diff --git a/DiscImageChef.Devices/Device/AtaCommands/Ata28.cs b/DiscImageChef.Devices/Device/AtaCommands/Ata28.cs index af8c12a7..cd385d79 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/Ata28.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/Ata28.cs @@ -37,14 +37,14 @@ namespace DiscImageChef.Devices { public partial class Device { - public bool ReadBuffer(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool ReadBuffer(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.ReadBuffer; + registers.Command = (byte)AtaCommands.ReadBuffer; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -56,14 +56,14 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadBufferDma(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool ReadBufferDma(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.ReadBufferDma; + registers.Command = (byte)AtaCommands.ReadBufferDma; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.Dma, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, out sense); @@ -74,28 +74,28 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint lba, byte count, + public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint lba, byte count, uint timeout, out double duration) { return ReadDma(out buffer, out statusRegisters, true, lba, count, timeout, out duration); } - public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, bool retry, uint lba, + public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, bool retry, uint lba, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadDmaRetry; - else registers.command = (byte)AtaCommands.ReadDma; - registers.sectorCount = count; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + if(retry) registers.Command = (byte)AtaCommands.ReadDmaRetry; + else registers.Command = (byte)AtaCommands.ReadDma; + registers.SectorCount = count; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.Dma, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, out sense); @@ -106,21 +106,21 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint lba, byte count, + public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint lba, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.ReadMultiple; - registers.sectorCount = count; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadMultiple; + registers.SectorCount = count; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -132,29 +132,29 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadNativeMaxAddress(out uint lba, out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool ReadNativeMaxAddress(out uint lba, out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { lba = 0; byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.ReadNativeMaxAddress; - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadNativeMaxAddress; + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, out sense); Error = LastError != 0; - if((statusRegisters.status & 0x23) == 0) + if((statusRegisters.Status & 0x23) == 0) { - lba += (uint)(statusRegisters.deviceHead & 0xF); + lba += (uint)(statusRegisters.DeviceHead & 0xF); lba *= 0x1000000; - lba += (uint)(statusRegisters.lbaHigh << 16); - lba += (uint)(statusRegisters.lbaMid << 8); - lba += statusRegisters.lbaLow; + lba += (uint)(statusRegisters.LbaHigh << 16); + lba += (uint)(statusRegisters.LbaMid << 8); + lba += statusRegisters.LbaLow; } DicConsole.DebugWriteLine("ATA Device", "READ NATIVE MAX ADDRESS took {0} ms.", duration); @@ -162,28 +162,28 @@ namespace DiscImageChef.Devices return sense; } - public bool Read(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint lba, byte count, + public bool Read(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint lba, byte count, uint timeout, out double duration) { return Read(out buffer, out statusRegisters, true, lba, count, timeout, out duration); } - public bool Read(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, bool retry, uint lba, + public bool Read(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, bool retry, uint lba, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadRetry; - else registers.command = (byte)AtaCommands.Read; - registers.sectorCount = count; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + if(retry) registers.Command = (byte)AtaCommands.ReadRetry; + else registers.Command = (byte)AtaCommands.Read; + registers.SectorCount = count; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -195,27 +195,27 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadLong(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint lba, uint blockSize, + public bool ReadLong(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint lba, uint blockSize, uint timeout, out double duration) { return ReadLong(out buffer, out statusRegisters, true, lba, blockSize, timeout, out duration); } - public bool ReadLong(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, bool retry, uint lba, + public bool ReadLong(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, bool retry, uint lba, uint blockSize, uint timeout, out double duration) { buffer = new byte[blockSize]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadLongRetry; - else registers.command = (byte)AtaCommands.ReadLong; - registers.sectorCount = 1; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + if(retry) registers.Command = (byte)AtaCommands.ReadLongRetry; + else registers.Command = (byte)AtaCommands.ReadLong; + registers.SectorCount = 1; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -227,18 +227,18 @@ namespace DiscImageChef.Devices return sense; } - public bool Seek(out AtaErrorRegistersLBA28 statusRegisters, uint lba, uint timeout, out double duration) + public bool Seek(out AtaErrorRegistersLba28 statusRegisters, uint lba, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Seek; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.Seek; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, diff --git a/DiscImageChef.Devices/Device/AtaCommands/Ata48.cs b/DiscImageChef.Devices/Device/AtaCommands/Ata48.cs index ea0287e7..953118e3 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/Ata48.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/Ata48.cs @@ -37,28 +37,28 @@ namespace DiscImageChef.Devices { public partial class Device { - public bool GetNativeMaxAddressExt(out ulong lba, out AtaErrorRegistersLBA48 statusRegisters, uint timeout, + public bool GetNativeMaxAddressExt(out ulong lba, out AtaErrorRegistersLba48 statusRegisters, uint timeout, out double duration) { lba = 0; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; byte[] buffer = new byte[0]; - registers.command = (byte)AtaCommands.NativeMaxAddress; - registers.feature = 0x0000; + registers.Command = (byte)AtaCommands.NativeMaxAddress; + registers.Feature = 0x0000; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, out sense); Error = LastError != 0; - if((statusRegisters.status & 0x23) == 0) + if((statusRegisters.Status & 0x23) == 0) { - lba = statusRegisters.lbaHigh; + lba = statusRegisters.LbaHigh; lba *= 0x100000000; - lba += (ulong)(statusRegisters.lbaMid << 16); - lba += statusRegisters.lbaLow; + lba += (ulong)(statusRegisters.LbaMid << 16); + lba += statusRegisters.LbaLow; } DicConsole.DebugWriteLine("ATA Device", "GET NATIVE MAX ADDRESS EXT took {0} ms.", duration); @@ -66,20 +66,20 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLBA48 statusRegisters, ulong lba, ushort count, + public bool ReadDma(out byte[] buffer, out AtaErrorRegistersLba48 statusRegisters, ulong lba, ushort count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 65536]; else buffer = new byte[512 * count]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadDmaExt; - registers.sectorCount = count; - registers.lbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); - registers.lbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); - registers.lbaLow = (ushort)((lba & 0xFFFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadDmaExt; + registers.SectorCount = count; + registers.LbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); + registers.LbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); + registers.LbaLow = (ushort)((lba & 0xFFFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.Dma, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, out sense); @@ -90,18 +90,18 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadLog(out byte[] buffer, out AtaErrorRegistersLBA48 statusRegisters, byte logAddress, + public bool ReadLog(out byte[] buffer, out AtaErrorRegistersLba48 statusRegisters, byte logAddress, ushort pageNumber, ushort count, uint timeout, out double duration) { buffer = new byte[512 * count]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadLogExt; - registers.sectorCount = count; - registers.lbaLow = (ushort)((pageNumber & 0xFF) * 0x100); - registers.lbaLow += logAddress; - registers.lbaHigh = (ushort)((pageNumber & 0xFF00) / 0x100); + registers.Command = (byte)AtaCommands.ReadLogExt; + registers.SectorCount = count; + registers.LbaLow = (ushort)((pageNumber & 0xFF) * 0x100); + registers.LbaLow += logAddress; + registers.LbaHigh = (ushort)((pageNumber & 0xFF00) / 0x100); LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -113,18 +113,18 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadLogDma(out byte[] buffer, out AtaErrorRegistersLBA48 statusRegisters, byte logAddress, + public bool ReadLogDma(out byte[] buffer, out AtaErrorRegistersLba48 statusRegisters, byte logAddress, ushort pageNumber, ushort count, uint timeout, out double duration) { buffer = new byte[512 * count]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadLogDmaExt; - registers.sectorCount = count; - registers.lbaLow = (ushort)((pageNumber & 0xFF) * 0x100); - registers.lbaLow += logAddress; - registers.lbaHigh = (ushort)((pageNumber & 0xFF00) / 0x100); + registers.Command = (byte)AtaCommands.ReadLogDmaExt; + registers.SectorCount = count; + registers.LbaLow = (ushort)((pageNumber & 0xFF) * 0x100); + registers.LbaLow += logAddress; + registers.LbaHigh = (ushort)((pageNumber & 0xFF00) / 0x100); LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.Dma, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, out sense); @@ -135,20 +135,20 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersLBA48 statusRegisters, ulong lba, ushort count, + public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersLba48 statusRegisters, ulong lba, ushort count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 65536]; else buffer = new byte[512 * count]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadMultipleExt; - registers.sectorCount = count; - registers.lbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); - registers.lbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); - registers.lbaLow = (ushort)((lba & 0xFFFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadMultipleExt; + registers.SectorCount = count; + registers.LbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); + registers.LbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); + registers.LbaLow = (ushort)((lba & 0xFFFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -160,28 +160,28 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadNativeMaxAddress(out ulong lba, out AtaErrorRegistersLBA48 statusRegisters, uint timeout, + public bool ReadNativeMaxAddress(out ulong lba, out AtaErrorRegistersLba48 statusRegisters, uint timeout, out double duration) { lba = 0; byte[] buffer = new byte[0]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadNativeMaxAddressExt; - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadNativeMaxAddressExt; + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, out sense); Error = LastError != 0; - if((statusRegisters.status & 0x23) == 0) + if((statusRegisters.Status & 0x23) == 0) { - lba = statusRegisters.lbaHigh; + lba = statusRegisters.LbaHigh; lba *= 0x100000000; - lba += (ulong)(statusRegisters.lbaMid << 16); - lba += statusRegisters.lbaLow; + lba += (ulong)(statusRegisters.LbaMid << 16); + lba += statusRegisters.LbaLow; } DicConsole.DebugWriteLine("ATA Device", "READ NATIVE MAX ADDRESS EXT took {0} ms.", duration); @@ -189,20 +189,20 @@ namespace DiscImageChef.Devices return sense; } - public bool Read(out byte[] buffer, out AtaErrorRegistersLBA48 statusRegisters, ulong lba, ushort count, + public bool Read(out byte[] buffer, out AtaErrorRegistersLba48 statusRegisters, ulong lba, ushort count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 65536]; else buffer = new byte[512 * count]; - AtaRegistersLBA48 registers = new AtaRegistersLBA48(); + AtaRegistersLba48 registers = new AtaRegistersLba48(); bool sense; - registers.command = (byte)AtaCommands.ReadExt; - registers.sectorCount = count; - registers.lbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); - registers.lbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); - registers.lbaLow = (ushort)((lba & 0xFFFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.ReadExt; + registers.SectorCount = count; + registers.LbaHigh = (ushort)((lba & 0xFFFF00000000) / 0x100000000); + registers.LbaMid = (ushort)((lba & 0xFFFF0000) / 0x10000); + registers.LbaLow = (ushort)((lba & 0xFFFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, diff --git a/DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs b/DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs index d01e00cf..d9d27454 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/AtaCHS.cs @@ -43,7 +43,7 @@ namespace DiscImageChef.Devices /// true if the command failed and contains the error registers. /// Buffer. /// Status registers. - public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters) + public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters) { return AtaIdentify(out buffer, out statusRegisters, Timeout); } @@ -55,7 +55,7 @@ namespace DiscImageChef.Devices /// Buffer. /// Status registers. /// Duration. - public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, out double duration) + public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, out double duration) { return AtaIdentify(out buffer, out statusRegisters, Timeout, out duration); } @@ -67,7 +67,7 @@ namespace DiscImageChef.Devices /// Buffer. /// Status registers. /// Timeout. - public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, uint timeout) + public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, uint timeout) { double duration; return AtaIdentify(out buffer, out statusRegisters, timeout, out duration); @@ -81,14 +81,14 @@ namespace DiscImageChef.Devices /// Status registers. /// Timeout. /// Duration. - public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, uint timeout, + public bool AtaIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.IdentifyDevice; + registers.Command = (byte)AtaCommands.IdentifyDevice; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -100,27 +100,27 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadDma(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, ushort cylinder, byte head, + public bool ReadDma(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, byte count, uint timeout, out double duration) { return ReadDma(out buffer, out statusRegisters, true, cylinder, head, sector, count, timeout, out duration); } - public bool ReadDma(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, bool retry, ushort cylinder, + public bool ReadDma(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, bool retry, ushort cylinder, byte head, byte sector, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadDmaRetry; - else registers.command = (byte)AtaCommands.ReadDma; - registers.sectorCount = count; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.deviceHead = (byte)(head & 0x0F); - registers.sector = sector; + if(retry) registers.Command = (byte)AtaCommands.ReadDmaRetry; + else registers.Command = (byte)AtaCommands.ReadDma; + registers.SectorCount = count; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.DeviceHead = (byte)(head & 0x0F); + registers.Sector = sector; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.Dma, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, out sense); @@ -131,20 +131,20 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, ushort cylinder, + public bool ReadMultiple(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.ReadMultiple; - registers.sectorCount = count; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.deviceHead = (byte)(head & 0x0F); - registers.sector = sector; + registers.Command = (byte)AtaCommands.ReadMultiple; + registers.SectorCount = count; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.DeviceHead = (byte)(head & 0x0F); + registers.Sector = sector; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -156,27 +156,27 @@ namespace DiscImageChef.Devices return sense; } - public bool Read(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, ushort cylinder, byte head, + public bool Read(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, byte count, uint timeout, out double duration) { return Read(out buffer, out statusRegisters, true, cylinder, head, sector, count, timeout, out duration); } - public bool Read(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, bool retry, ushort cylinder, + public bool Read(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, bool retry, ushort cylinder, byte head, byte sector, byte count, uint timeout, out double duration) { if(count == 0) buffer = new byte[512 * 256]; else buffer = new byte[512 * count]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadRetry; - else registers.command = (byte)AtaCommands.Read; - registers.sectorCount = count; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.deviceHead = (byte)(head & 0x0F); - registers.sector = sector; + if(retry) registers.Command = (byte)AtaCommands.ReadRetry; + else registers.Command = (byte)AtaCommands.Read; + registers.SectorCount = count; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.DeviceHead = (byte)(head & 0x0F); + registers.Sector = sector; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -188,27 +188,27 @@ namespace DiscImageChef.Devices return sense; } - public bool ReadLong(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, ushort cylinder, byte head, + public bool ReadLong(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, uint blockSize, uint timeout, out double duration) { return ReadLong(out buffer, out statusRegisters, true, cylinder, head, sector, blockSize, timeout, out duration); } - public bool ReadLong(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, bool retry, ushort cylinder, + public bool ReadLong(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, bool retry, ushort cylinder, byte head, byte sector, uint blockSize, uint timeout, out double duration) { buffer = new byte[blockSize]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - if(retry) registers.command = (byte)AtaCommands.ReadLongRetry; - else registers.command = (byte)AtaCommands.ReadLong; - registers.sectorCount = 1; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.deviceHead = (byte)(head & 0x0F); - registers.sector = sector; + if(retry) registers.Command = (byte)AtaCommands.ReadLongRetry; + else registers.Command = (byte)AtaCommands.ReadLong; + registers.SectorCount = 1; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.DeviceHead = (byte)(head & 0x0F); + registers.Sector = sector; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.SectorCount, ref buffer, timeout, true, out duration, @@ -220,18 +220,18 @@ namespace DiscImageChef.Devices return sense; } - public bool Seek(out AtaErrorRegistersCHS statusRegisters, ushort cylinder, byte head, byte sector, + public bool Seek(out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.Seek; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.deviceHead = (byte)(head & 0x0F); - registers.sector = sector; + registers.Command = (byte)AtaCommands.Seek; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.DeviceHead = (byte)(head & 0x0F); + registers.Sector = sector; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, true, out duration, diff --git a/DiscImageChef.Devices/Device/AtaCommands/Atapi.cs b/DiscImageChef.Devices/Device/AtaCommands/Atapi.cs index 463b7056..7a32b0f1 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/Atapi.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/Atapi.cs @@ -43,7 +43,7 @@ namespace DiscImageChef.Devices /// true if the command failed and contains the error registers. /// Buffer. /// Status registers. - public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters) + public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters) { return AtapiIdentify(out buffer, out statusRegisters, Timeout); } @@ -55,7 +55,7 @@ namespace DiscImageChef.Devices /// Buffer. /// Status registers. /// Duration. - public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, out double duration) + public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, out double duration) { return AtapiIdentify(out buffer, out statusRegisters, Timeout, out duration); } @@ -67,7 +67,7 @@ namespace DiscImageChef.Devices /// Buffer. /// Status registers. /// Timeout. - public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, uint timeout) + public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, uint timeout) { double duration; return AtapiIdentify(out buffer, out statusRegisters, timeout, out duration); @@ -81,14 +81,14 @@ namespace DiscImageChef.Devices /// Status registers. /// Timeout. /// Duration. - public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, uint timeout, + public bool AtapiIdentify(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.IdentifyPacketDevice; + registers.Command = (byte)AtaCommands.IdentifyPacketDevice; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, diff --git a/DiscImageChef.Devices/Device/AtaCommands/Cfa.cs b/DiscImageChef.Devices/Device/AtaCommands/Cfa.cs index bf0b5ca3..e35295d5 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/Cfa.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/Cfa.cs @@ -37,19 +37,19 @@ namespace DiscImageChef.Devices { public partial class Device { - public bool TranslateSector(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint lba, + public bool TranslateSector(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint lba, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.TranslateSector; - registers.deviceHead = (byte)((lba & 0xF000000) / 0x1000000); - registers.lbaHigh = (byte)((lba & 0xFF0000) / 0x10000); - registers.lbaMid = (byte)((lba & 0xFF00) / 0x100); - registers.lbaLow = (byte)((lba & 0xFF) / 0x1); - registers.deviceHead += 0x40; + registers.Command = (byte)AtaCommands.TranslateSector; + registers.DeviceHead = (byte)((lba & 0xF000000) / 0x1000000); + registers.LbaHigh = (byte)((lba & 0xFF0000) / 0x10000); + registers.LbaMid = (byte)((lba & 0xFF00) / 0x100); + registers.LbaLow = (byte)((lba & 0xFF) / 0x1); + registers.DeviceHead += 0x40; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -61,18 +61,18 @@ namespace DiscImageChef.Devices return sense; } - public bool TranslateSector(out byte[] buffer, out AtaErrorRegistersCHS statusRegisters, ushort cylinder, + public bool TranslateSector(out byte[] buffer, out AtaErrorRegistersChs statusRegisters, ushort cylinder, byte head, byte sector, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.TranslateSector; - registers.cylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); - registers.cylinderLow = (byte)((cylinder & 0xFF) / 0x1); - registers.sector = sector; - registers.deviceHead = (byte)(head & 0x0F); + registers.Command = (byte)AtaCommands.TranslateSector; + registers.CylinderHigh = (byte)((cylinder & 0xFF00) / 0x100); + registers.CylinderLow = (byte)((cylinder & 0xFF) / 0x1); + registers.Sector = sector; + registers.DeviceHead = (byte)(head & 0x0F); LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -84,21 +84,21 @@ namespace DiscImageChef.Devices return sense; } - public bool RequestExtendedErrorCode(out byte errorCode, out AtaErrorRegistersLBA28 statusRegisters, + public bool RequestExtendedErrorCode(out byte errorCode, out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.RequestSense; + registers.Command = (byte)AtaCommands.RequestSense; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, out sense); Error = LastError != 0; - errorCode = statusRegisters.error; + errorCode = statusRegisters.Error; DicConsole.DebugWriteLine("ATA Device", "CFA REQUEST EXTENDED ERROR CODE took {0} ms.", duration); diff --git a/DiscImageChef.Devices/Device/AtaCommands/MCPT.cs b/DiscImageChef.Devices/Device/AtaCommands/MCPT.cs index ebc0c803..4e9f4ae2 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/MCPT.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/MCPT.cs @@ -37,27 +37,27 @@ namespace DiscImageChef.Devices { public partial class Device { - public bool EnableMediaCardPassThrough(out AtaErrorRegistersCHS statusRegisters, uint timeout, + public bool EnableMediaCardPassThrough(out AtaErrorRegistersChs statusRegisters, uint timeout, out double duration) { return CheckMediaCardType(1, out statusRegisters, timeout, out duration); } - public bool DisableMediaCardPassThrough(out AtaErrorRegistersCHS statusRegisters, uint timeout, + public bool DisableMediaCardPassThrough(out AtaErrorRegistersChs statusRegisters, uint timeout, out double duration) { return CheckMediaCardType(0, out statusRegisters, timeout, out duration); } - public bool CheckMediaCardType(byte feature, out AtaErrorRegistersCHS statusRegisters, uint timeout, + public bool CheckMediaCardType(byte feature, out AtaErrorRegistersChs statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersCHS registers = new AtaRegistersCHS(); + AtaRegistersChs registers = new AtaRegistersChs(); bool sense; - registers.command = (byte)AtaCommands.CheckMediaCardType; - registers.feature = feature; + registers.Command = (byte)AtaCommands.CheckMediaCardType; + registers.Feature = feature; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, diff --git a/DiscImageChef.Devices/Device/AtaCommands/Smart.cs b/DiscImageChef.Devices/Device/AtaCommands/Smart.cs index 9fcd6b0f..22775b64 100644 --- a/DiscImageChef.Devices/Device/AtaCommands/Smart.cs +++ b/DiscImageChef.Devices/Device/AtaCommands/Smart.cs @@ -37,16 +37,16 @@ namespace DiscImageChef.Devices { public partial class Device { - public bool SmartDisable(out AtaErrorRegistersLBA28 statusRegisters, uint timeout, out double duration) + public bool SmartDisable(out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.Disable; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.Disable; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -58,18 +58,18 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartEnableAttributeAutosave(out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool SmartEnableAttributeAutosave(out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.EnableDisableAttributeAutosave; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; - registers.sectorCount = 0xF1; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.EnableDisableAttributeAutosave; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; + registers.SectorCount = 0xF1; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -81,17 +81,17 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartDisableAttributeAutosave(out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool SmartDisableAttributeAutosave(out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.EnableDisableAttributeAutosave; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.EnableDisableAttributeAutosave; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -103,16 +103,16 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartEnable(out AtaErrorRegistersLBA28 statusRegisters, uint timeout, out double duration) + public bool SmartEnable(out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.Enable; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.Enable; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -124,18 +124,18 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartExecuteOffLineImmediate(out AtaErrorRegistersLBA28 statusRegisters, byte subcommand, + public bool SmartExecuteOffLineImmediate(out AtaErrorRegistersLba28 statusRegisters, byte subcommand, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.ExecuteOfflineImmediate; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; - registers.lbaLow = subcommand; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.ExecuteOfflineImmediate; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; + registers.LbaLow = subcommand; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -147,17 +147,17 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartReadData(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, uint timeout, + public bool SmartReadData(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.ReadData; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.ReadData; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -169,18 +169,18 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartReadLog(out byte[] buffer, out AtaErrorRegistersLBA28 statusRegisters, byte logAddress, + public bool SmartReadLog(out byte[] buffer, out AtaErrorRegistersLba28 statusRegisters, byte logAddress, uint timeout, out double duration) { buffer = new byte[512]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.ReadLog; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; - registers.lbaLow = logAddress; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.ReadLog; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; + registers.LbaLow = logAddress; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.PioIn, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, @@ -192,16 +192,16 @@ namespace DiscImageChef.Devices return sense; } - public bool SmartReturnStatus(out AtaErrorRegistersLBA28 statusRegisters, uint timeout, out double duration) + public bool SmartReturnStatus(out AtaErrorRegistersLba28 statusRegisters, uint timeout, out double duration) { byte[] buffer = new byte[0]; - AtaRegistersLBA28 registers = new AtaRegistersLBA28(); + AtaRegistersLba28 registers = new AtaRegistersLba28(); bool sense; - registers.command = (byte)AtaCommands.Smart; - registers.feature = (byte)AtaSmartSubCommands.ReturnStatus; - registers.lbaHigh = 0xC2; - registers.lbaMid = 0x4F; + registers.Command = (byte)AtaCommands.Smart; + registers.Feature = (byte)AtaSmartSubCommands.ReturnStatus; + registers.LbaHigh = 0xC2; + registers.LbaMid = 0x4F; LastError = SendAtaCommand(registers, out statusRegisters, AtaProtocol.NonData, AtaTransferRegister.NoTransfer, ref buffer, timeout, false, out duration, diff --git a/DiscImageChef.Devices/Device/Commands.cs b/DiscImageChef.Devices/Device/Commands.cs index 69970303..b969d248 100644 --- a/DiscImageChef.Devices/Device/Commands.cs +++ b/DiscImageChef.Devices/Device/Commands.cs @@ -68,7 +68,7 @@ namespace DiscImageChef.Devices /// If set to true, transfer is indicated in blocks, otherwise, it is indicated in bytes. /// Time it took to execute the command in milliseconds /// True if ATA/ATAPI command returned non-OK status - public int SendAtaCommand(AtaRegistersCHS registers, out AtaErrorRegistersCHS errorRegisters, + public int SendAtaCommand(AtaRegistersChs registers, out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -89,7 +89,7 @@ namespace DiscImageChef.Devices /// If set to true, transfer is indicated in blocks, otherwise, it is indicated in bytes. /// Time it took to execute the command in milliseconds /// True if ATA/ATAPI command returned non-OK status - public int SendAtaCommand(AtaRegistersLBA28 registers, out AtaErrorRegistersLBA28 errorRegisters, + public int SendAtaCommand(AtaRegistersLba28 registers, out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { @@ -110,7 +110,7 @@ namespace DiscImageChef.Devices /// If set to true, transfer is indicated in blocks, otherwise, it is indicated in bytes. /// Time it took to execute the command in milliseconds /// True if ATA/ATAPI command returned non-OK status - public int SendAtaCommand(AtaRegistersLBA48 registers, out AtaErrorRegistersLBA48 errorRegisters, + public int SendAtaCommand(AtaRegistersLba48 registers, out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { diff --git a/DiscImageChef.Devices/Device/Constructor.cs b/DiscImageChef.Devices/Device/Constructor.cs index c5ec5ccb..6d0e5db9 100644 --- a/DiscImageChef.Devices/Device/Constructor.cs +++ b/DiscImageChef.Devices/Device/Constructor.cs @@ -125,7 +125,7 @@ namespace DiscImageChef.Devices Type = DeviceType.Unknown; ScsiType = PeripheralDeviceTypes.UnknownDevice; - AtaErrorRegistersCHS errorRegisters; + AtaErrorRegistersChs errorRegisters; byte[] ataBuf; byte[] senseBuf; diff --git a/DiscImageChef.Devices/FreeBSD/Command.cs b/DiscImageChef.Devices/FreeBSD/Command.cs index bf25a69e..36d29180 100644 --- a/DiscImageChef.Devices/FreeBSD/Command.cs +++ b/DiscImageChef.Devices/FreeBSD/Command.cs @@ -271,13 +271,13 @@ namespace DiscImageChef.Devices.FreeBSD } } - internal static int SendAtaCommand(IntPtr dev, AtaRegistersCHS registers, - out AtaErrorRegistersCHS errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(IntPtr dev, AtaRegistersChs registers, + out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersCHS(); + errorRegisters = new AtaErrorRegistersChs(); if(buffer == null) return -1; @@ -307,13 +307,13 @@ namespace DiscImageChef.Devices.FreeBSD break; } - ataio.cmd.command = registers.command; - ataio.cmd.lba_high = registers.cylinderHigh; - ataio.cmd.lba_mid = registers.cylinderLow; - ataio.cmd.device = (byte)(0x40 | registers.deviceHead); - ataio.cmd.features = registers.feature; - ataio.cmd.sector_count = registers.sectorCount; - ataio.cmd.lba_low = registers.sector; + ataio.cmd.command = registers.Command; + ataio.cmd.lba_high = registers.CylinderHigh; + ataio.cmd.lba_mid = registers.CylinderLow; + ataio.cmd.device = (byte)(0x40 | registers.DeviceHead); + ataio.cmd.features = registers.Feature; + ataio.cmd.sector_count = registers.SectorCount; + ataio.cmd.lba_low = registers.Sector; Marshal.Copy(buffer, 0, ataio.data_ptr, buffer.Length); Marshal.StructureToPtr(ataio, ccbPtr, false); @@ -336,13 +336,13 @@ namespace DiscImageChef.Devices.FreeBSD if((ataio.ccb_h.status & CamStatus.CamStatusMask) == CamStatus.CamAtaStatusError) sense = true; - errorRegisters.cylinderHigh = ataio.res.lba_high; - errorRegisters.cylinderLow = ataio.res.lba_mid; - errorRegisters.deviceHead = ataio.res.device; - errorRegisters.error = ataio.res.error; - errorRegisters.sector = ataio.res.lba_low; - errorRegisters.sectorCount = ataio.res.sector_count; - errorRegisters.status = ataio.res.status; + errorRegisters.CylinderHigh = ataio.res.lba_high; + errorRegisters.CylinderLow = ataio.res.lba_mid; + errorRegisters.DeviceHead = ataio.res.device; + errorRegisters.Error = ataio.res.error; + errorRegisters.Sector = ataio.res.lba_low; + errorRegisters.SectorCount = ataio.res.sector_count; + errorRegisters.Status = ataio.res.status; buffer = new byte[ataio.dxfer_len]; @@ -352,18 +352,18 @@ namespace DiscImageChef.Devices.FreeBSD Marshal.FreeHGlobal(ataio.data_ptr); cam_freeccb(ccbPtr); - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0 || error != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0 || error != 0; return error; } - internal static int SendAtaCommand(IntPtr dev, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(IntPtr dev, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA28(); + errorRegisters = new AtaErrorRegistersLba28(); if(buffer == null) return -1; @@ -393,13 +393,13 @@ namespace DiscImageChef.Devices.FreeBSD break; } - ataio.cmd.command = registers.command; - ataio.cmd.lba_high = registers.lbaHigh; - ataio.cmd.lba_mid = registers.lbaMid; - ataio.cmd.device = (byte)(0x40 | registers.deviceHead); - ataio.cmd.features = registers.feature; - ataio.cmd.sector_count = registers.sectorCount; - ataio.cmd.lba_low = registers.lbaLow; + ataio.cmd.command = registers.Command; + ataio.cmd.lba_high = registers.LbaHigh; + ataio.cmd.lba_mid = registers.LbaMid; + ataio.cmd.device = (byte)(0x40 | registers.DeviceHead); + ataio.cmd.features = registers.Feature; + ataio.cmd.sector_count = registers.SectorCount; + ataio.cmd.lba_low = registers.LbaLow; Marshal.Copy(buffer, 0, ataio.data_ptr, buffer.Length); Marshal.StructureToPtr(ataio, ccbPtr, false); @@ -422,13 +422,13 @@ namespace DiscImageChef.Devices.FreeBSD if((ataio.ccb_h.status & CamStatus.CamStatusMask) == CamStatus.CamAtaStatusError) sense = true; - errorRegisters.lbaHigh = ataio.res.lba_high; - errorRegisters.lbaMid = ataio.res.lba_mid; - errorRegisters.deviceHead = ataio.res.device; - errorRegisters.error = ataio.res.error; - errorRegisters.lbaLow = ataio.res.lba_low; - errorRegisters.sectorCount = ataio.res.sector_count; - errorRegisters.status = ataio.res.status; + errorRegisters.LbaHigh = ataio.res.lba_high; + errorRegisters.LbaMid = ataio.res.lba_mid; + errorRegisters.DeviceHead = ataio.res.device; + errorRegisters.Error = ataio.res.error; + errorRegisters.LbaLow = ataio.res.lba_low; + errorRegisters.SectorCount = ataio.res.sector_count; + errorRegisters.Status = ataio.res.status; buffer = new byte[ataio.dxfer_len]; @@ -438,18 +438,18 @@ namespace DiscImageChef.Devices.FreeBSD Marshal.FreeHGlobal(ataio.data_ptr); cam_freeccb(ccbPtr); - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0 || error != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0 || error != 0; return error; } - internal static int SendAtaCommand(IntPtr dev, AtaRegistersLBA48 registers, - out AtaErrorRegistersLBA48 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(IntPtr dev, AtaRegistersLba48 registers, + out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA48(); + errorRegisters = new AtaErrorRegistersLba48(); // 48-bit ATA CAM commands can crash FreeBSD < 9.2-RELEASE if(Environment.Version.Major == 9 && Environment.Version.Minor < 2 || @@ -483,18 +483,18 @@ namespace DiscImageChef.Devices.FreeBSD break; } - ataio.cmd.lba_high_exp = (byte)((registers.lbaHigh & 0xFF00) >> 8); - ataio.cmd.lba_mid_exp = (byte)((registers.lbaMid & 0xFF00) >> 8); - ataio.cmd.features_exp = (byte)((registers.feature & 0xFF00) >> 8); - ataio.cmd.sector_count_exp = (byte)((registers.sectorCount & 0xFF00) >> 8); - ataio.cmd.lba_low_exp = (byte)((registers.lbaLow & 0xFF00) >> 8); - ataio.cmd.lba_high = (byte)(registers.lbaHigh & 0xFF); - ataio.cmd.lba_mid = (byte)(registers.lbaMid & 0xFF); - ataio.cmd.features = (byte)(registers.feature & 0xFF); - ataio.cmd.sector_count = (byte)(registers.sectorCount & 0xFF); - ataio.cmd.lba_low = (byte)(registers.lbaLow & 0xFF); - ataio.cmd.command = registers.command; - ataio.cmd.device = (byte)(0x40 | registers.deviceHead); + ataio.cmd.lba_high_exp = (byte)((registers.LbaHigh & 0xFF00) >> 8); + ataio.cmd.lba_mid_exp = (byte)((registers.LbaMid & 0xFF00) >> 8); + ataio.cmd.features_exp = (byte)((registers.Feature & 0xFF00) >> 8); + ataio.cmd.sector_count_exp = (byte)((registers.SectorCount & 0xFF00) >> 8); + ataio.cmd.lba_low_exp = (byte)((registers.LbaLow & 0xFF00) >> 8); + ataio.cmd.lba_high = (byte)(registers.LbaHigh & 0xFF); + ataio.cmd.lba_mid = (byte)(registers.LbaMid & 0xFF); + ataio.cmd.features = (byte)(registers.Feature & 0xFF); + ataio.cmd.sector_count = (byte)(registers.SectorCount & 0xFF); + ataio.cmd.lba_low = (byte)(registers.LbaLow & 0xFF); + ataio.cmd.command = registers.Command; + ataio.cmd.device = (byte)(0x40 | registers.DeviceHead); Marshal.Copy(buffer, 0, ataio.data_ptr, buffer.Length); Marshal.StructureToPtr(ataio, ccbPtr, false); @@ -517,13 +517,13 @@ namespace DiscImageChef.Devices.FreeBSD if((ataio.ccb_h.status & CamStatus.CamStatusMask) == CamStatus.CamAtaStatusError) sense = true; - errorRegisters.sectorCount = (ushort)((ataio.res.sector_count_exp << 8) + ataio.res.sector_count); - errorRegisters.lbaLow = (ushort)((ataio.res.lba_low_exp << 8) + ataio.res.lba_low); - errorRegisters.lbaMid = (ushort)((ataio.res.lba_mid_exp << 8) + ataio.res.lba_mid); - errorRegisters.lbaHigh = (ushort)((ataio.res.lba_high_exp << 8) + ataio.res.lba_high); - errorRegisters.deviceHead = ataio.res.device; - errorRegisters.error = ataio.res.error; - errorRegisters.status = ataio.res.status; + errorRegisters.SectorCount = (ushort)((ataio.res.sector_count_exp << 8) + ataio.res.sector_count); + errorRegisters.LbaLow = (ushort)((ataio.res.lba_low_exp << 8) + ataio.res.lba_low); + errorRegisters.LbaMid = (ushort)((ataio.res.lba_mid_exp << 8) + ataio.res.lba_mid); + errorRegisters.LbaHigh = (ushort)((ataio.res.lba_high_exp << 8) + ataio.res.lba_high); + errorRegisters.DeviceHead = ataio.res.device; + errorRegisters.Error = ataio.res.error; + errorRegisters.Status = ataio.res.status; buffer = new byte[ataio.dxfer_len]; @@ -533,7 +533,7 @@ namespace DiscImageChef.Devices.FreeBSD Marshal.FreeHGlobal(ataio.data_ptr); cam_freeccb(ccbPtr); - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0 || error != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0 || error != 0; return error; } diff --git a/DiscImageChef.Devices/Linux/Command.cs b/DiscImageChef.Devices/Linux/Command.cs index 95b8020b..a0f249f0 100644 --- a/DiscImageChef.Devices/Linux/Command.cs +++ b/DiscImageChef.Devices/Linux/Command.cs @@ -120,14 +120,14 @@ namespace DiscImageChef.Devices.Linux } } - internal static int SendAtaCommand(int fd, AtaRegistersCHS registers, out AtaErrorRegistersCHS errorRegisters, + internal static int SendAtaCommand(int fd, AtaRegistersChs registers, out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersCHS(); + errorRegisters = new AtaErrorRegistersChs(); if(buffer == null) return -1; @@ -154,13 +154,13 @@ namespace DiscImageChef.Devices.Linux //cdb[2] |= 0x20; - cdb[4] = registers.feature; - cdb[6] = registers.sectorCount; - cdb[8] = registers.sector; - cdb[10] = registers.cylinderLow; - cdb[12] = registers.cylinderHigh; - cdb[13] = registers.deviceHead; - cdb[14] = registers.command; + cdb[4] = registers.Feature; + cdb[6] = registers.SectorCount; + cdb[8] = registers.Sector; + cdb[10] = registers.CylinderLow; + cdb[12] = registers.CylinderHigh; + cdb[13] = registers.DeviceHead; + cdb[14] = registers.Command; byte[] senseBuffer; int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout, @@ -168,28 +168,28 @@ namespace DiscImageChef.Devices.Linux if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error; - errorRegisters.error = senseBuffer[11]; + errorRegisters.Error = senseBuffer[11]; - errorRegisters.sectorCount = senseBuffer[13]; - errorRegisters.sector = senseBuffer[15]; - errorRegisters.cylinderLow = senseBuffer[17]; - errorRegisters.cylinderHigh = senseBuffer[19]; - errorRegisters.deviceHead = senseBuffer[20]; - errorRegisters.status = senseBuffer[21]; + errorRegisters.SectorCount = senseBuffer[13]; + errorRegisters.Sector = senseBuffer[15]; + errorRegisters.CylinderLow = senseBuffer[17]; + errorRegisters.CylinderHigh = senseBuffer[19]; + errorRegisters.DeviceHead = senseBuffer[20]; + errorRegisters.Status = senseBuffer[21]; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendAtaCommand(int fd, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(int fd, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA28(); + errorRegisters = new AtaErrorRegistersLba28(); if(buffer == null) return -1; @@ -216,13 +216,13 @@ namespace DiscImageChef.Devices.Linux cdb[2] |= 0x20; - cdb[4] = registers.feature; - cdb[6] = registers.sectorCount; - cdb[8] = registers.lbaLow; - cdb[10] = registers.lbaMid; - cdb[12] = registers.lbaHigh; - cdb[13] = registers.deviceHead; - cdb[14] = registers.command; + cdb[4] = registers.Feature; + cdb[6] = registers.SectorCount; + cdb[8] = registers.LbaLow; + cdb[10] = registers.LbaMid; + cdb[12] = registers.LbaHigh; + cdb[13] = registers.DeviceHead; + cdb[14] = registers.Command; byte[] senseBuffer; int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout, @@ -230,28 +230,28 @@ namespace DiscImageChef.Devices.Linux if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error; - errorRegisters.error = senseBuffer[11]; + errorRegisters.Error = senseBuffer[11]; - errorRegisters.sectorCount = senseBuffer[13]; - errorRegisters.lbaLow = senseBuffer[15]; - errorRegisters.lbaMid = senseBuffer[17]; - errorRegisters.lbaHigh = senseBuffer[19]; - errorRegisters.deviceHead = senseBuffer[20]; - errorRegisters.status = senseBuffer[21]; + errorRegisters.SectorCount = senseBuffer[13]; + errorRegisters.LbaLow = senseBuffer[15]; + errorRegisters.LbaMid = senseBuffer[17]; + errorRegisters.LbaHigh = senseBuffer[19]; + errorRegisters.DeviceHead = senseBuffer[20]; + errorRegisters.Status = senseBuffer[21]; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendAtaCommand(int fd, AtaRegistersLBA48 registers, - out AtaErrorRegistersLBA48 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(int fd, AtaRegistersLba48 registers, + out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, AtaTransferRegister transferRegister, ref byte[] buffer, uint timeout, bool transferBlocks, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA48(); + errorRegisters = new AtaErrorRegistersLba48(); if(buffer == null) return -1; @@ -279,18 +279,18 @@ namespace DiscImageChef.Devices.Linux cdb[2] |= 0x20; - cdb[3] = (byte)((registers.feature & 0xFF00) >> 8); - cdb[4] = (byte)(registers.feature & 0xFF); - cdb[5] = (byte)((registers.sectorCount & 0xFF00) >> 8); - cdb[6] = (byte)(registers.sectorCount & 0xFF); - cdb[7] = (byte)((registers.lbaLow & 0xFF00) >> 8); - cdb[8] = (byte)(registers.lbaLow & 0xFF); - cdb[9] = (byte)((registers.lbaMid & 0xFF00) >> 8); - cdb[10] = (byte)(registers.lbaMid & 0xFF); - cdb[11] = (byte)((registers.lbaHigh & 0xFF00) >> 8); - cdb[12] = (byte)(registers.lbaHigh & 0xFF); - cdb[13] = registers.deviceHead; - cdb[14] = registers.command; + cdb[3] = (byte)((registers.Feature & 0xFF00) >> 8); + cdb[4] = (byte)(registers.Feature & 0xFF); + cdb[5] = (byte)((registers.SectorCount & 0xFF00) >> 8); + cdb[6] = (byte)(registers.SectorCount & 0xFF); + cdb[7] = (byte)((registers.LbaLow & 0xFF00) >> 8); + cdb[8] = (byte)(registers.LbaLow & 0xFF); + cdb[9] = (byte)((registers.LbaMid & 0xFF00) >> 8); + cdb[10] = (byte)(registers.LbaMid & 0xFF); + cdb[11] = (byte)((registers.LbaHigh & 0xFF00) >> 8); + cdb[12] = (byte)(registers.LbaHigh & 0xFF); + cdb[13] = registers.DeviceHead; + cdb[14] = registers.Command; byte[] senseBuffer; int error = SendScsiCommand(fd, cdb, ref buffer, out senseBuffer, timeout, @@ -298,16 +298,16 @@ namespace DiscImageChef.Devices.Linux if(senseBuffer.Length < 22 || senseBuffer[8] != 0x09 && senseBuffer[9] != 0x0C) return error; - errorRegisters.error = senseBuffer[11]; + errorRegisters.Error = senseBuffer[11]; - errorRegisters.sectorCount = (ushort)((senseBuffer[12] << 8) + senseBuffer[13]); - errorRegisters.lbaLow = (ushort)((senseBuffer[14] << 8) + senseBuffer[15]); - errorRegisters.lbaMid = (ushort)((senseBuffer[16] << 8) + senseBuffer[17]); - errorRegisters.lbaHigh = (ushort)((senseBuffer[18] << 8) + senseBuffer[19]); - errorRegisters.deviceHead = senseBuffer[20]; - errorRegisters.status = senseBuffer[21]; + errorRegisters.SectorCount = (ushort)((senseBuffer[12] << 8) + senseBuffer[13]); + errorRegisters.LbaLow = (ushort)((senseBuffer[14] << 8) + senseBuffer[15]); + errorRegisters.LbaMid = (ushort)((senseBuffer[16] << 8) + senseBuffer[17]); + errorRegisters.LbaHigh = (ushort)((senseBuffer[18] << 8) + senseBuffer[19]); + errorRegisters.DeviceHead = senseBuffer[20]; + errorRegisters.Status = senseBuffer[21]; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; sense |= error != 0; diff --git a/DiscImageChef.Devices/Windows/Command.cs b/DiscImageChef.Devices/Windows/Command.cs index 59e96541..8cf064c6 100644 --- a/DiscImageChef.Devices/Windows/Command.cs +++ b/DiscImageChef.Devices/Windows/Command.cs @@ -104,13 +104,13 @@ namespace DiscImageChef.Devices.Windows return error; } - internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersCHS registers, - out AtaErrorRegistersCHS errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersChs registers, + out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersCHS(); + errorRegisters = new AtaErrorRegistersChs(); if(buffer == null) return -1; @@ -127,13 +127,13 @@ namespace DiscImageChef.Devices.Windows PreviousTaskFile = new AtaTaskFile(), CurrentTaskFile = new AtaTaskFile { - Command = registers.command, - CylinderHigh = registers.cylinderHigh, - CylinderLow = registers.cylinderLow, - DeviceHead = registers.deviceHead, - Features = registers.feature, - SectorCount = registers.sectorCount, - SectorNumber = registers.sector + Command = registers.Command, + CylinderHigh = registers.CylinderHigh, + CylinderLow = registers.CylinderLow, + DeviceHead = registers.DeviceHead, + Features = registers.Feature, + SectorCount = registers.SectorCount, + SectorNumber = registers.Sector } }, dataBuffer = new byte[64 * 512] @@ -180,27 +180,27 @@ namespace DiscImageChef.Devices.Windows duration = (end - start).TotalMilliseconds; - errorRegisters.command = aptdBuf.aptd.CurrentTaskFile.Command; - errorRegisters.cylinderHigh = aptdBuf.aptd.CurrentTaskFile.CylinderHigh; - errorRegisters.cylinderLow = aptdBuf.aptd.CurrentTaskFile.CylinderLow; - errorRegisters.deviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; - errorRegisters.error = aptdBuf.aptd.CurrentTaskFile.Error; - errorRegisters.sector = aptdBuf.aptd.CurrentTaskFile.SectorNumber; - errorRegisters.sectorCount = aptdBuf.aptd.CurrentTaskFile.SectorCount; - errorRegisters.status = aptdBuf.aptd.CurrentTaskFile.Status; + errorRegisters.Command = aptdBuf.aptd.CurrentTaskFile.Command; + errorRegisters.CylinderHigh = aptdBuf.aptd.CurrentTaskFile.CylinderHigh; + errorRegisters.CylinderLow = aptdBuf.aptd.CurrentTaskFile.CylinderLow; + errorRegisters.DeviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; + errorRegisters.Error = aptdBuf.aptd.CurrentTaskFile.Error; + errorRegisters.Sector = aptdBuf.aptd.CurrentTaskFile.SectorNumber; + errorRegisters.SectorCount = aptdBuf.aptd.CurrentTaskFile.SectorCount; + errorRegisters.Status = aptdBuf.aptd.CurrentTaskFile.Status; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA28(); + errorRegisters = new AtaErrorRegistersLba28(); if(buffer == null) return -1; @@ -217,13 +217,13 @@ namespace DiscImageChef.Devices.Windows PreviousTaskFile = new AtaTaskFile(), CurrentTaskFile = new AtaTaskFile { - Command = registers.command, - CylinderHigh = registers.lbaHigh, - CylinderLow = registers.lbaMid, - DeviceHead = registers.deviceHead, - Features = registers.feature, - SectorCount = registers.sectorCount, - SectorNumber = registers.lbaLow + Command = registers.Command, + CylinderHigh = registers.LbaHigh, + CylinderLow = registers.LbaMid, + DeviceHead = registers.DeviceHead, + Features = registers.Feature, + SectorCount = registers.SectorCount, + SectorNumber = registers.LbaLow } }, dataBuffer = new byte[64 * 512] @@ -270,27 +270,27 @@ namespace DiscImageChef.Devices.Windows duration = (end - start).TotalMilliseconds; - errorRegisters.command = aptdBuf.aptd.CurrentTaskFile.Command; - errorRegisters.lbaHigh = aptdBuf.aptd.CurrentTaskFile.CylinderHigh; - errorRegisters.lbaMid = aptdBuf.aptd.CurrentTaskFile.CylinderLow; - errorRegisters.deviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; - errorRegisters.error = aptdBuf.aptd.CurrentTaskFile.Error; - errorRegisters.lbaLow = aptdBuf.aptd.CurrentTaskFile.SectorNumber; - errorRegisters.sectorCount = aptdBuf.aptd.CurrentTaskFile.SectorCount; - errorRegisters.status = aptdBuf.aptd.CurrentTaskFile.Status; + errorRegisters.Command = aptdBuf.aptd.CurrentTaskFile.Command; + errorRegisters.LbaHigh = aptdBuf.aptd.CurrentTaskFile.CylinderHigh; + errorRegisters.LbaMid = aptdBuf.aptd.CurrentTaskFile.CylinderLow; + errorRegisters.DeviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; + errorRegisters.Error = aptdBuf.aptd.CurrentTaskFile.Error; + errorRegisters.LbaLow = aptdBuf.aptd.CurrentTaskFile.SectorNumber; + errorRegisters.SectorCount = aptdBuf.aptd.CurrentTaskFile.SectorCount; + errorRegisters.Status = aptdBuf.aptd.CurrentTaskFile.Status; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersLBA48 registers, - out AtaErrorRegistersLBA48 errorRegisters, AtaProtocol protocol, + internal static int SendAtaCommand(SafeFileHandle fd, AtaRegistersLba48 registers, + out AtaErrorRegistersLba48 errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA48(); + errorRegisters = new AtaErrorRegistersLba48(); if(buffer == null) return -1; @@ -307,21 +307,21 @@ namespace DiscImageChef.Devices.Windows PreviousTaskFile = new AtaTaskFile { - CylinderHigh = (byte)((registers.lbaHigh & 0xFF00) >> 8), - CylinderLow = (byte)((registers.lbaMid & 0xFF00) >> 8), - Features = (byte)((registers.feature & 0xFF00) >> 8), - SectorCount = (byte)((registers.sectorCount & 0xFF00) >> 8), - SectorNumber = (byte)((registers.lbaLow & 0xFF00) >> 8) + CylinderHigh = (byte)((registers.LbaHigh & 0xFF00) >> 8), + CylinderLow = (byte)((registers.LbaMid & 0xFF00) >> 8), + Features = (byte)((registers.Feature & 0xFF00) >> 8), + SectorCount = (byte)((registers.SectorCount & 0xFF00) >> 8), + SectorNumber = (byte)((registers.LbaLow & 0xFF00) >> 8) }, CurrentTaskFile = new AtaTaskFile { - Command = registers.command, - CylinderHigh = (byte)(registers.lbaHigh & 0xFF), - CylinderLow = (byte)(registers.lbaMid & 0xFF), - DeviceHead = registers.deviceHead, - Features = (byte)(registers.feature & 0xFF), - SectorCount = (byte)(registers.sectorCount & 0xFF), - SectorNumber = (byte)(registers.lbaLow & 0xFF) + Command = registers.Command, + CylinderHigh = (byte)(registers.LbaHigh & 0xFF), + CylinderLow = (byte)(registers.LbaMid & 0xFF), + DeviceHead = registers.DeviceHead, + Features = (byte)(registers.Feature & 0xFF), + SectorCount = (byte)(registers.SectorCount & 0xFF), + SectorNumber = (byte)(registers.LbaLow & 0xFF) } }, dataBuffer = new byte[64 * 512] @@ -368,31 +368,31 @@ namespace DiscImageChef.Devices.Windows duration = (end - start).TotalMilliseconds; - errorRegisters.sectorCount = (ushort)((aptdBuf.aptd.PreviousTaskFile.SectorCount << 8) + + errorRegisters.SectorCount = (ushort)((aptdBuf.aptd.PreviousTaskFile.SectorCount << 8) + aptdBuf.aptd.CurrentTaskFile.SectorCount); - errorRegisters.lbaLow = (ushort)((aptdBuf.aptd.PreviousTaskFile.SectorNumber << 8) + + errorRegisters.LbaLow = (ushort)((aptdBuf.aptd.PreviousTaskFile.SectorNumber << 8) + aptdBuf.aptd.CurrentTaskFile.SectorNumber); - errorRegisters.lbaMid = (ushort)((aptdBuf.aptd.PreviousTaskFile.CylinderLow << 8) + + errorRegisters.LbaMid = (ushort)((aptdBuf.aptd.PreviousTaskFile.CylinderLow << 8) + aptdBuf.aptd.CurrentTaskFile.CylinderLow); - errorRegisters.lbaHigh = (ushort)((aptdBuf.aptd.PreviousTaskFile.CylinderHigh << 8) + + errorRegisters.LbaHigh = (ushort)((aptdBuf.aptd.PreviousTaskFile.CylinderHigh << 8) + aptdBuf.aptd.CurrentTaskFile.CylinderHigh); - errorRegisters.command = aptdBuf.aptd.CurrentTaskFile.Command; - errorRegisters.deviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; - errorRegisters.error = aptdBuf.aptd.CurrentTaskFile.Error; - errorRegisters.status = aptdBuf.aptd.CurrentTaskFile.Status; + errorRegisters.Command = aptdBuf.aptd.CurrentTaskFile.Command; + errorRegisters.DeviceHead = aptdBuf.aptd.CurrentTaskFile.DeviceHead; + errorRegisters.Error = aptdBuf.aptd.CurrentTaskFile.Error; + errorRegisters.Status = aptdBuf.aptd.CurrentTaskFile.Status; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendIdeCommand(SafeFileHandle fd, AtaRegistersCHS registers, - out AtaErrorRegistersCHS errorRegisters, AtaProtocol protocol, + internal static int SendIdeCommand(SafeFileHandle fd, AtaRegistersChs registers, + out AtaErrorRegistersChs errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersCHS(); + errorRegisters = new AtaErrorRegistersChs(); if(buffer == null || buffer.Length > 512) return -1; @@ -400,13 +400,13 @@ namespace DiscImageChef.Devices.Windows { CurrentTaskFile = new AtaTaskFile { - Command = registers.command, - CylinderHigh = registers.cylinderHigh, - CylinderLow = registers.cylinderLow, - DeviceHead = registers.deviceHead, - Features = registers.feature, - SectorCount = registers.sectorCount, - SectorNumber = registers.sector + Command = registers.Command, + CylinderHigh = registers.CylinderHigh, + CylinderLow = registers.CylinderLow, + DeviceHead = registers.DeviceHead, + Features = registers.Feature, + SectorCount = registers.SectorCount, + SectorNumber = registers.Sector }, DataBufferSize = 512, DataBuffer = new byte[512] @@ -430,27 +430,27 @@ namespace DiscImageChef.Devices.Windows duration = (end - start).TotalMilliseconds; - errorRegisters.command = iptd.CurrentTaskFile.Command; - errorRegisters.cylinderHigh = iptd.CurrentTaskFile.CylinderHigh; - errorRegisters.cylinderLow = iptd.CurrentTaskFile.CylinderLow; - errorRegisters.deviceHead = iptd.CurrentTaskFile.DeviceHead; - errorRegisters.error = iptd.CurrentTaskFile.Error; - errorRegisters.sector = iptd.CurrentTaskFile.SectorNumber; - errorRegisters.sectorCount = iptd.CurrentTaskFile.SectorCount; - errorRegisters.status = iptd.CurrentTaskFile.Status; + errorRegisters.Command = iptd.CurrentTaskFile.Command; + errorRegisters.CylinderHigh = iptd.CurrentTaskFile.CylinderHigh; + errorRegisters.CylinderLow = iptd.CurrentTaskFile.CylinderLow; + errorRegisters.DeviceHead = iptd.CurrentTaskFile.DeviceHead; + errorRegisters.Error = iptd.CurrentTaskFile.Error; + errorRegisters.Sector = iptd.CurrentTaskFile.SectorNumber; + errorRegisters.SectorCount = iptd.CurrentTaskFile.SectorCount; + errorRegisters.Status = iptd.CurrentTaskFile.Status; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } - internal static int SendIdeCommand(SafeFileHandle fd, AtaRegistersLBA28 registers, - out AtaErrorRegistersLBA28 errorRegisters, AtaProtocol protocol, + internal static int SendIdeCommand(SafeFileHandle fd, AtaRegistersLba28 registers, + out AtaErrorRegistersLba28 errorRegisters, AtaProtocol protocol, ref byte[] buffer, uint timeout, out double duration, out bool sense) { duration = 0; sense = false; - errorRegisters = new AtaErrorRegistersLBA28(); + errorRegisters = new AtaErrorRegistersLba28(); if(buffer == null) return -1; @@ -460,13 +460,13 @@ namespace DiscImageChef.Devices.Windows { CurrentTaskFile = new AtaTaskFile { - Command = registers.command, - CylinderHigh = registers.lbaHigh, - CylinderLow = registers.lbaMid, - DeviceHead = registers.deviceHead, - Features = registers.feature, - SectorCount = registers.sectorCount, - SectorNumber = registers.lbaLow + Command = registers.Command, + CylinderHigh = registers.LbaHigh, + CylinderLow = registers.LbaMid, + DeviceHead = registers.DeviceHead, + Features = registers.Feature, + SectorCount = registers.SectorCount, + SectorNumber = registers.LbaLow }, DataBufferSize = 512, DataBuffer = new byte[512] @@ -490,16 +490,16 @@ namespace DiscImageChef.Devices.Windows duration = (end - start).TotalMilliseconds; - errorRegisters.command = iptd.CurrentTaskFile.Command; - errorRegisters.lbaHigh = iptd.CurrentTaskFile.CylinderHigh; - errorRegisters.lbaMid = iptd.CurrentTaskFile.CylinderLow; - errorRegisters.deviceHead = iptd.CurrentTaskFile.DeviceHead; - errorRegisters.error = iptd.CurrentTaskFile.Error; - errorRegisters.lbaLow = iptd.CurrentTaskFile.SectorNumber; - errorRegisters.sectorCount = iptd.CurrentTaskFile.SectorCount; - errorRegisters.status = iptd.CurrentTaskFile.Status; + errorRegisters.Command = iptd.CurrentTaskFile.Command; + errorRegisters.LbaHigh = iptd.CurrentTaskFile.CylinderHigh; + errorRegisters.LbaMid = iptd.CurrentTaskFile.CylinderLow; + errorRegisters.DeviceHead = iptd.CurrentTaskFile.DeviceHead; + errorRegisters.Error = iptd.CurrentTaskFile.Error; + errorRegisters.LbaLow = iptd.CurrentTaskFile.SectorNumber; + errorRegisters.SectorCount = iptd.CurrentTaskFile.SectorCount; + errorRegisters.Status = iptd.CurrentTaskFile.Status; - sense = errorRegisters.error != 0 || (errorRegisters.status & 0xA5) != 0; + sense = errorRegisters.Error != 0 || (errorRegisters.Status & 0xA5) != 0; return error; } diff --git a/DiscImageChef.DiscImages/CloneCD.cs b/DiscImageChef.DiscImages/CloneCD.cs index 4844d20d..52996736 100644 --- a/DiscImageChef.DiscImages/CloneCD.cs +++ b/DiscImageChef.DiscImages/CloneCD.cs @@ -554,8 +554,8 @@ namespace DiscImageChef.DiscImages currentTrack.TrackSession = descriptor.SessionNumber; // Need to check exact data type later - if((TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrack || - (TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrackIncremental) + if((TocControl)(descriptor.CONTROL & 0x0D) == TocControl.DataTrack || + (TocControl)(descriptor.CONTROL & 0x0D) == TocControl.DataTrackIncremental) currentTrack.TrackType = TrackType.Data; else currentTrack.TrackType = TrackType.Audio; diff --git a/DiscImageChef.Filesystems/LisaFS/Dir.cs b/DiscImageChef.Filesystems/LisaFS/Dir.cs index c6ca08e0..33568a0a 100644 --- a/DiscImageChef.Filesystems/LisaFS/Dir.cs +++ b/DiscImageChef.Filesystems/LisaFS/Dir.cs @@ -171,7 +171,7 @@ namespace DiscImageChef.Filesystems.LisaFS LisaTag.PriamTag catTag; DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out catTag); - if(catTag.fileID != FILEID_CATALOG || catTag.relPage != 0) continue; + if(catTag.FileId != FILEID_CATALOG || catTag.RelPage != 0) continue; firstCatalogBlock = device.ReadSectors(i, 4); break; @@ -190,7 +190,7 @@ namespace DiscImageChef.Filesystems.LisaFS DecodeTag(device.ReadSectorTag(prevCatalogPointer + mddf.mddf_block + volumePrefix, SectorTagType.AppleSectorTag), out prevTag); - if(prevTag.fileID != FILEID_CATALOG) return Errno.InvalidArgument; + if(prevTag.FileId != FILEID_CATALOG) return Errno.InvalidArgument; firstCatalogBlock = device.ReadSectors(prevCatalogPointer + mddf.mddf_block + volumePrefix, 4); prevCatalogPointer = BigEndianBitConverter.ToUInt32(firstCatalogBlock, 0x7F6); @@ -209,7 +209,7 @@ namespace DiscImageChef.Filesystems.LisaFS DecodeTag(device.ReadSectorTag(nextCatalogPointer + mddf.mddf_block + volumePrefix, SectorTagType.AppleSectorTag), out nextTag); - if(nextTag.fileID != FILEID_CATALOG) return Errno.InvalidArgument; + if(nextTag.FileId != FILEID_CATALOG) return Errno.InvalidArgument; byte[] nextCatalogBlock = device.ReadSectors(nextCatalogPointer + mddf.mddf_block + volumePrefix, 4); nextCatalogPointer = BigEndianBitConverter.ToUInt32(nextCatalogBlock, 0x7FA); diff --git a/DiscImageChef.Filesystems/LisaFS/Extent.cs b/DiscImageChef.Filesystems/LisaFS/Extent.cs index db441acb..2d41844f 100644 --- a/DiscImageChef.Filesystems/LisaFS/Extent.cs +++ b/DiscImageChef.Filesystems/LisaFS/Extent.cs @@ -85,7 +85,7 @@ namespace DiscImageChef.Filesystems.LisaFS for(ulong i = 0; i < device.ImageInfo.Sectors; i++) { DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out extTag); - if(extTag.fileID != fileId * -1) continue; + if(extTag.FileId != fileId * -1) continue; ptr = i; found = true; @@ -98,7 +98,7 @@ namespace DiscImageChef.Filesystems.LisaFS // Checks that the sector tag indicates its the Extents File we are searching for DecodeTag(device.ReadSectorTag(ptr, SectorTagType.AppleSectorTag), out extTag); - if(extTag.fileID != (short)(-1 * fileId)) return Errno.NoSuchFile; + if(extTag.FileId != (short)(-1 * fileId)) return Errno.NoSuchFile; byte[] sector; diff --git a/DiscImageChef.Filesystems/LisaFS/File.cs b/DiscImageChef.Filesystems/LisaFS/File.cs index 1cf787ad..d292b51d 100644 --- a/DiscImageChef.Filesystems/LisaFS/File.cs +++ b/DiscImageChef.Filesystems/LisaFS/File.cs @@ -195,7 +195,7 @@ namespace DiscImageChef.Filesystems.LisaFS { DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out sysTag); - if(sysTag.fileID == fileId) count++; + if(sysTag.FileId == fileId) count++; } if(count == 0) return Errno.NoSuchFile; @@ -208,7 +208,7 @@ namespace DiscImageChef.Filesystems.LisaFS { DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out sysTag); - if(sysTag.fileID != fileId) continue; + if(sysTag.FileId != fileId) continue; byte[] sector; @@ -216,9 +216,9 @@ namespace DiscImageChef.Filesystems.LisaFS else sector = device.ReadSectorTag(i, SectorTagType.AppleSectorTag); // Relative block for $Loader starts at $Boot block - if(sysTag.fileID == FILEID_LOADER_SIGNED) sysTag.relPage--; + if(sysTag.FileId == FILEID_LOADER_SIGNED) sysTag.RelPage--; - Array.Copy(sector, 0, buf, sector.Length * sysTag.relPage, sector.Length); + Array.Copy(sector, 0, buf, sector.Length * sysTag.RelPage, sector.Length); } if(!tags) systemFileCache.Add(fileId, buf); diff --git a/DiscImageChef.Filesystems/LisaFS/Info.cs b/DiscImageChef.Filesystems/LisaFS/Info.cs index 1172db66..c4de61fc 100644 --- a/DiscImageChef.Filesystems/LisaFS/Info.cs +++ b/DiscImageChef.Filesystems/LisaFS/Info.cs @@ -64,11 +64,11 @@ namespace DiscImageChef.Filesystems.LisaFS LisaTag.PriamTag searchTag; DecodeTag(imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSectorTag), out searchTag); - DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.fileID); + DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.FileId); - if(before_mddf == -1 && searchTag.fileID == FILEID_LOADER_SIGNED) before_mddf = i - 1; + if(before_mddf == -1 && searchTag.FileId == FILEID_LOADER_SIGNED) before_mddf = i - 1; - if(searchTag.fileID != FILEID_MDDF) continue; + if(searchTag.FileId != FILEID_MDDF) continue; byte[] sector = imagePlugin.ReadSector((ulong)i); MDDF info_mddf = new MDDF(); @@ -142,11 +142,11 @@ namespace DiscImageChef.Filesystems.LisaFS LisaTag.PriamTag searchTag; DecodeTag(imagePlugin.ReadSectorTag((ulong)i, SectorTagType.AppleSectorTag), out searchTag); - DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.fileID); + DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.FileId); - if(before_mddf == -1 && searchTag.fileID == FILEID_LOADER_SIGNED) before_mddf = i - 1; + if(before_mddf == -1 && searchTag.FileId == FILEID_LOADER_SIGNED) before_mddf = i - 1; - if(searchTag.fileID != FILEID_MDDF) continue; + if(searchTag.FileId != FILEID_MDDF) continue; byte[] sector = imagePlugin.ReadSector((ulong)i); MDDF info_mddf = new MDDF(); diff --git a/DiscImageChef.Filesystems/LisaFS/Super.cs b/DiscImageChef.Filesystems/LisaFS/Super.cs index 9fe734dc..b5608e28 100644 --- a/DiscImageChef.Filesystems/LisaFS/Super.cs +++ b/DiscImageChef.Filesystems/LisaFS/Super.cs @@ -85,12 +85,12 @@ namespace DiscImageChef.Filesystems.LisaFS LisaTag.PriamTag searchTag; DecodeTag(device.ReadSectorTag(i, SectorTagType.AppleSectorTag), out searchTag); - DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.fileID); + DicConsole.DebugWriteLine("LisaFS plugin", "Sector {0}, file ID 0x{1:X4}", i, searchTag.FileId); - if(volumePrefix == device.ImageInfo.Sectors && searchTag.fileID == FILEID_LOADER_SIGNED) + if(volumePrefix == device.ImageInfo.Sectors && searchTag.FileId == FILEID_LOADER_SIGNED) volumePrefix = i - 1; - if(searchTag.fileID != FILEID_MDDF) continue; + if(searchTag.FileId != FILEID_MDDF) continue; devTagSize = device.ReadSectorTag(i, SectorTagType.AppleSectorTag).Length; diff --git a/DiscImageChef.Tests.Devices/ATA/Ata28.cs b/DiscImageChef.Tests.Devices/ATA/Ata28.cs index e756e57f..5840e558 100644 --- a/DiscImageChef.Tests.Devices/ATA/Ata28.cs +++ b/DiscImageChef.Tests.Devices/ATA/Ata28.cs @@ -113,7 +113,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.ReadBuffer(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + bool sense = dev.ReadBuffer(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -178,7 +178,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.ReadBufferDma(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + bool sense = dev.ReadBufferDma(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -307,7 +307,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, retries, lba, count, + bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, retries, lba, count, dev.Timeout, out double duration); menu: @@ -429,7 +429,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadLong(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, retries, lba, + bool sense = dev.ReadLong(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, retries, lba, blockSize, dev.Timeout, out double duration); menu: @@ -560,7 +560,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, lba, count, + bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, lba, count, dev.Timeout, out double duration); menu: @@ -627,7 +627,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.ReadNativeMaxAddress(out uint lba, out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + bool sense = dev.ReadNativeMaxAddress(out uint lba, out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -744,7 +744,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, retries, lba, count, + bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, retries, lba, count, dev.Timeout, out double duration); menu: @@ -864,7 +864,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.Seek(out AtaErrorRegistersLBA28 errorRegisters, lba, dev.Timeout, out double duration); + bool sense = dev.Seek(out AtaErrorRegistersLba28 errorRegisters, lba, dev.Timeout, out double duration); menu: DicConsole.WriteLine("Device: {0}", devPath); diff --git a/DiscImageChef.Tests.Devices/ATA/Ata48.cs b/DiscImageChef.Tests.Devices/ATA/Ata48.cs index 218c1826..c3467e51 100644 --- a/DiscImageChef.Tests.Devices/ATA/Ata48.cs +++ b/DiscImageChef.Tests.Devices/ATA/Ata48.cs @@ -97,7 +97,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.GetNativeMaxAddressExt(out ulong lba, out AtaErrorRegistersLBA48 errorRegisters, + bool sense = dev.GetNativeMaxAddressExt(out ulong lba, out AtaErrorRegistersLba48 errorRegisters, dev.Timeout, out double duration); menu: @@ -214,7 +214,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersLBA48 errorRegisters, lba, count, + bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersLba48 errorRegisters, lba, count, dev.Timeout, out double duration); menu: @@ -350,7 +350,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadLog(out byte[] buffer, out AtaErrorRegistersLBA48 errorRegisters, address, page, count, + bool sense = dev.ReadLog(out byte[] buffer, out AtaErrorRegistersLba48 errorRegisters, address, page, count, dev.Timeout, out double duration); menu: @@ -486,7 +486,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadLogDma(out byte[] buffer, out AtaErrorRegistersLBA48 errorRegisters, address, page, + bool sense = dev.ReadLogDma(out byte[] buffer, out AtaErrorRegistersLba48 errorRegisters, address, page, count, dev.Timeout, out double duration); menu: @@ -617,7 +617,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersLBA48 errorRegisters, lba, count, + bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersLba48 errorRegisters, lba, count, dev.Timeout, out double duration); menu: @@ -684,7 +684,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.ReadNativeMaxAddress(out ulong lba, out AtaErrorRegistersLBA48 errorRegisters, dev.Timeout, + bool sense = dev.ReadNativeMaxAddress(out ulong lba, out AtaErrorRegistersLba48 errorRegisters, dev.Timeout, out double duration); menu: @@ -801,7 +801,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersLBA48 errorRegisters, lba, count, dev.Timeout, + bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersLba48 errorRegisters, lba, count, dev.Timeout, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/ATA/AtaCHS.cs b/DiscImageChef.Tests.Devices/ATA/AtaCHS.cs index 934dd803..0ca84e7b 100644 --- a/DiscImageChef.Tests.Devices/ATA/AtaCHS.cs +++ b/DiscImageChef.Tests.Devices/ATA/AtaCHS.cs @@ -105,7 +105,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.AtaIdentify(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, + bool sense = dev.AtaIdentify(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, out double duration); menu: @@ -267,7 +267,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, retries, cylinder, + bool sense = dev.ReadDma(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, retries, cylinder, head, sector, count, dev.Timeout, out double duration); menu: @@ -420,7 +420,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadLong(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, retries, cylinder, + bool sense = dev.ReadLong(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, retries, cylinder, head, sector, blockSize, dev.Timeout, out double duration); menu: @@ -573,7 +573,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, cylinder, head, + bool sense = dev.ReadMultiple(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, cylinder, head, sector, count, dev.Timeout, out double duration); menu: @@ -726,7 +726,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, retries, cylinder, head, + bool sense = dev.Read(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, retries, cylinder, head, sector, count, dev.Timeout, out double duration); menu: @@ -867,7 +867,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.Seek(out AtaErrorRegistersCHS errorRegisters, cylinder, head, sector, dev.Timeout, + bool sense = dev.Seek(out AtaErrorRegistersChs errorRegisters, cylinder, head, sector, dev.Timeout, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/ATA/Atapi.cs b/DiscImageChef.Tests.Devices/ATA/Atapi.cs index e6812fb4..74e67fda 100644 --- a/DiscImageChef.Tests.Devices/ATA/Atapi.cs +++ b/DiscImageChef.Tests.Devices/ATA/Atapi.cs @@ -73,7 +73,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.AtapiIdentify(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, + bool sense = dev.AtapiIdentify(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/ATA/Cfa.cs b/DiscImageChef.Tests.Devices/ATA/Cfa.cs index 62b530ee..e38b7ef0 100644 --- a/DiscImageChef.Tests.Devices/ATA/Cfa.cs +++ b/DiscImageChef.Tests.Devices/ATA/Cfa.cs @@ -81,7 +81,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.RequestExtendedErrorCode(out byte errorCode, out AtaErrorRegistersLBA28 errorRegisters, + bool sense = dev.RequestExtendedErrorCode(out byte errorCode, out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -208,7 +208,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.TranslateSector(out byte[] buffer, out AtaErrorRegistersCHS errorRegisters, cylinder, head, + bool sense = dev.TranslateSector(out byte[] buffer, out AtaErrorRegistersChs errorRegisters, cylinder, head, sector, dev.Timeout, out double duration); menu: @@ -328,7 +328,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.TranslateSector(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, lba, + bool sense = dev.TranslateSector(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, lba, dev.Timeout, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/ATA/MCPT.cs b/DiscImageChef.Tests.Devices/ATA/MCPT.cs index 80e8b378..44cea8cc 100644 --- a/DiscImageChef.Tests.Devices/ATA/MCPT.cs +++ b/DiscImageChef.Tests.Devices/ATA/MCPT.cs @@ -118,7 +118,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.CheckMediaCardType(feature, out AtaErrorRegistersCHS errorRegisters, dev.Timeout, + bool sense = dev.CheckMediaCardType(feature, out AtaErrorRegistersChs errorRegisters, dev.Timeout, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/ATA/Smart.cs b/DiscImageChef.Tests.Devices/ATA/Smart.cs index 198001f1..b7179301 100644 --- a/DiscImageChef.Tests.Devices/ATA/Smart.cs +++ b/DiscImageChef.Tests.Devices/ATA/Smart.cs @@ -102,7 +102,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); bool sense = - dev.SmartDisableAttributeAutosave(out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + dev.SmartDisableAttributeAutosave(out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -145,7 +145,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.SmartDisable(out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, out double duration); + bool sense = dev.SmartDisable(out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: DicConsole.WriteLine("Device: {0}", devPath); @@ -188,7 +188,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); bool sense = - dev.SmartEnableAttributeAutosave(out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + dev.SmartEnableAttributeAutosave(out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -231,7 +231,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.SmartEnable(out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, out double duration); + bool sense = dev.SmartEnable(out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: DicConsole.WriteLine("Device: {0}", devPath); @@ -318,7 +318,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.SmartExecuteOffLineImmediate(out AtaErrorRegistersLBA28 errorRegisters, subcommand, + bool sense = dev.SmartExecuteOffLineImmediate(out AtaErrorRegistersLba28 errorRegisters, subcommand, dev.Timeout, out double duration); menu: @@ -363,7 +363,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.SmartReadData(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + bool sense = dev.SmartReadData(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: @@ -473,7 +473,7 @@ namespace DiscImageChef.Tests.Devices.ATA start: System.Console.Clear(); - bool sense = dev.SmartReadLog(out byte[] buffer, out AtaErrorRegistersLBA28 errorRegisters, address, + bool sense = dev.SmartReadLog(out byte[] buffer, out AtaErrorRegistersLba28 errorRegisters, address, dev.Timeout, out double duration); menu: @@ -540,7 +540,7 @@ namespace DiscImageChef.Tests.Devices.ATA { start: System.Console.Clear(); - bool sense = dev.SmartReturnStatus(out AtaErrorRegistersLBA28 errorRegisters, dev.Timeout, + bool sense = dev.SmartReturnStatus(out AtaErrorRegistersLba28 errorRegisters, dev.Timeout, out double duration); menu: diff --git a/DiscImageChef.Tests.Devices/DecodeATARegisters.cs b/DiscImageChef.Tests.Devices/DecodeATARegisters.cs index 7ab65db0..f9b702d1 100644 --- a/DiscImageChef.Tests.Devices/DecodeATARegisters.cs +++ b/DiscImageChef.Tests.Devices/DecodeATARegisters.cs @@ -66,52 +66,52 @@ namespace DiscImageChef.Tests.Devices return ret; } - public static string DecodeATARegisters(AtaErrorRegistersCHS registers) + public static string DecodeATARegisters(AtaErrorRegistersChs registers) { StringBuilder sb = new StringBuilder(); - sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.status)).AppendLine(); - sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.error)).AppendLine(); - sb.AppendFormat("Device: {0}", (registers.deviceHead >> 4) & 0x01).AppendLine(); - sb.AppendFormat("Cylinder: {0}", registers.cylinderHigh << (8 + registers.cylinderLow)).AppendLine(); - sb.AppendFormat("Head: {0}", registers.deviceHead & 0xF).AppendLine(); - sb.AppendFormat("Sector: {0}", registers.sector).AppendLine(); - sb.AppendFormat("Count: {0}", registers.sectorCount).AppendLine(); - sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.deviceHead & 0x40)).AppendLine(); - sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x80)).AppendLine(); - sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x20)).AppendLine(); + sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.Status)).AppendLine(); + sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.Error)).AppendLine(); + sb.AppendFormat("Device: {0}", (registers.DeviceHead >> 4) & 0x01).AppendLine(); + sb.AppendFormat("Cylinder: {0}", registers.CylinderHigh << (8 + registers.CylinderLow)).AppendLine(); + sb.AppendFormat("Head: {0}", registers.DeviceHead & 0xF).AppendLine(); + sb.AppendFormat("Sector: {0}", registers.Sector).AppendLine(); + sb.AppendFormat("Count: {0}", registers.SectorCount).AppendLine(); + sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x40)).AppendLine(); + sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x80)).AppendLine(); + sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x20)).AppendLine(); return sb.ToString(); } - public static string DecodeATARegisters(AtaErrorRegistersLBA28 registers) + public static string DecodeATARegisters(AtaErrorRegistersLba28 registers) { StringBuilder sb = new StringBuilder(); - sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.status)).AppendLine(); - sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.error)).AppendLine(); - sb.AppendFormat("Device: {0}", (registers.deviceHead >> 4) & 0x01).AppendLine(); + sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.Status)).AppendLine(); + sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.Error)).AppendLine(); + sb.AppendFormat("Device: {0}", (registers.DeviceHead >> 4) & 0x01).AppendLine(); sb.AppendFormat("LBA: {0}", - ((registers.deviceHead & 0xF) << 24) + (registers.lbaHigh << 16) + (registers.lbaMid << 8) + - registers.lbaLow); - sb.AppendFormat("Count: {0}", registers.sectorCount).AppendLine(); - sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.deviceHead & 0x40)).AppendLine(); - sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x80)).AppendLine(); - sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x20)).AppendLine(); + ((registers.DeviceHead & 0xF) << 24) + (registers.LbaHigh << 16) + (registers.LbaMid << 8) + + registers.LbaLow); + sb.AppendFormat("Count: {0}", registers.SectorCount).AppendLine(); + sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x40)).AppendLine(); + sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x80)).AppendLine(); + sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x20)).AppendLine(); return sb.ToString(); } - public static string DecodeATARegisters(AtaErrorRegistersLBA48 registers) + public static string DecodeATARegisters(AtaErrorRegistersLba48 registers) { StringBuilder sb = new StringBuilder(); - sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.status)).AppendLine(); - sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.error)).AppendLine(); - sb.AppendFormat("Device: {0}", (registers.deviceHead >> 4) & 0x01).AppendLine(); + sb.AppendFormat("Status: {0}", DecodeATAStatus(registers.Status)).AppendLine(); + sb.AppendFormat("Error: {0}", DecodeATAStatus(registers.Error)).AppendLine(); + sb.AppendFormat("Device: {0}", (registers.DeviceHead >> 4) & 0x01).AppendLine(); sb.AppendFormat("LBA: {0}", - (ulong)(registers.deviceHead & 0xF) * 0x100000000000 + - registers.lbaHigh * (ulong)0x100000000L + (ulong)(registers.lbaMid << 16) + - registers.lbaLow); - sb.AppendFormat("Count: {0}", registers.sectorCount).AppendLine(); - sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.deviceHead & 0x40)).AppendLine(); - sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x80)).AppendLine(); - sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.deviceHead & 0x20)).AppendLine(); + (ulong)(registers.DeviceHead & 0xF) * 0x100000000000 + + registers.LbaHigh * (ulong)0x100000000L + (ulong)(registers.LbaMid << 16) + + registers.LbaLow); + sb.AppendFormat("Count: {0}", registers.SectorCount).AppendLine(); + sb.AppendFormat("LBA?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x40)).AppendLine(); + sb.AppendFormat("Bit 7 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x80)).AppendLine(); + sb.AppendFormat("Bit 5 set?: {0}", Convert.ToBoolean(registers.DeviceHead & 0x20)).AppendLine(); return sb.ToString(); } } diff --git a/DiscImageChef/Commands/DeviceInfo.cs b/DiscImageChef/Commands/DeviceInfo.cs index 75b43922..70166462 100644 --- a/DiscImageChef/Commands/DeviceInfo.cs +++ b/DiscImageChef/Commands/DeviceInfo.cs @@ -161,22 +161,22 @@ namespace DiscImageChef.Commands { case DeviceType.ATA: { - bool sense = dev.AtaIdentify(out byte[] ataBuf, out AtaErrorRegistersCHS errorRegisters); + bool sense = dev.AtaIdentify(out byte[] ataBuf, out AtaErrorRegistersChs errorRegisters); if(sense) { - DicConsole.DebugWriteLine("Device-Info command", "STATUS = 0x{0:X2}", errorRegisters.status); - DicConsole.DebugWriteLine("Device-Info command", "ERROR = 0x{0:X2}", errorRegisters.error); + DicConsole.DebugWriteLine("Device-Info command", "STATUS = 0x{0:X2}", errorRegisters.Status); + DicConsole.DebugWriteLine("Device-Info command", "ERROR = 0x{0:X2}", errorRegisters.Error); DicConsole.DebugWriteLine("Device-Info command", "NSECTOR = 0x{0:X2}", - errorRegisters.sectorCount); - DicConsole.DebugWriteLine("Device-Info command", "SECTOR = 0x{0:X2}", errorRegisters.sector); + errorRegisters.SectorCount); + DicConsole.DebugWriteLine("Device-Info command", "SECTOR = 0x{0:X2}", errorRegisters.Sector); DicConsole.DebugWriteLine("Device-Info command", "CYLHIGH = 0x{0:X2}", - errorRegisters.cylinderHigh); + errorRegisters.CylinderHigh); DicConsole.DebugWriteLine("Device-Info command", "CYLLOW = 0x{0:X2}", - errorRegisters.cylinderLow); + errorRegisters.CylinderLow); DicConsole.DebugWriteLine("Device-Info command", "DEVICE = 0x{0:X2}", - errorRegisters.deviceHead); - DicConsole.DebugWriteLine("Device-Info command", "COMMAND = 0x{0:X2}", errorRegisters.command); + errorRegisters.DeviceHead); + DicConsole.DebugWriteLine("Device-Info command", "COMMAND = 0x{0:X2}", errorRegisters.Command); DicConsole.DebugWriteLine("Device-Info command", "Error code = {0}", dev.LastError); break; } @@ -188,10 +188,10 @@ namespace DiscImageChef.Commands dev.EnableMediaCardPassThrough(out errorRegisters, dev.Timeout, out _); - if(errorRegisters.sector == 0xAA && errorRegisters.sectorCount == 0x55) + if(errorRegisters.Sector == 0xAA && errorRegisters.SectorCount == 0x55) { DicConsole.WriteLine("Device supports the Media Card Pass Through Command Set"); - switch(errorRegisters.deviceHead & 0x7) + switch(errorRegisters.DeviceHead & 0x7) { case 0: DicConsole.WriteLine("Device reports incorrect media card type"); @@ -210,15 +210,15 @@ namespace DiscImageChef.Commands break; default: DicConsole.WriteLine("Device contains unknown media card type {0}", - errorRegisters.deviceHead & 0x07); + errorRegisters.DeviceHead & 0x07); break; } - if((errorRegisters.deviceHead & 0x08) == 0x08) + if((errorRegisters.DeviceHead & 0x08) == 0x08) DicConsole.WriteLine("Media card is write protected"); ushort specificData = - (ushort)(errorRegisters.cylinderHigh * 0x100 + errorRegisters.cylinderLow); + (ushort)(errorRegisters.CylinderHigh * 0x100 + errorRegisters.CylinderLow); if(specificData != 0) DicConsole.WriteLine("Card specific data: 0x{0:X4}", specificData); } @@ -226,22 +226,22 @@ namespace DiscImageChef.Commands } case DeviceType.ATAPI: { - bool sense = dev.AtapiIdentify(out byte[] ataBuf, out AtaErrorRegistersCHS errorRegisters); + bool sense = dev.AtapiIdentify(out byte[] ataBuf, out AtaErrorRegistersChs errorRegisters); if(sense) { - DicConsole.DebugWriteLine("Device-Info command", "STATUS = 0x{0:X2}", errorRegisters.status); - DicConsole.DebugWriteLine("Device-Info command", "ERROR = 0x{0:X2}", errorRegisters.error); + DicConsole.DebugWriteLine("Device-Info command", "STATUS = 0x{0:X2}", errorRegisters.Status); + DicConsole.DebugWriteLine("Device-Info command", "ERROR = 0x{0:X2}", errorRegisters.Error); DicConsole.DebugWriteLine("Device-Info command", "NSECTOR = 0x{0:X2}", - errorRegisters.sectorCount); - DicConsole.DebugWriteLine("Device-Info command", "SECTOR = 0x{0:X2}", errorRegisters.sector); + errorRegisters.SectorCount); + DicConsole.DebugWriteLine("Device-Info command", "SECTOR = 0x{0:X2}", errorRegisters.Sector); DicConsole.DebugWriteLine("Device-Info command", "CYLHIGH = 0x{0:X2}", - errorRegisters.cylinderHigh); + errorRegisters.CylinderHigh); DicConsole.DebugWriteLine("Device-Info command", "CYLLOW = 0x{0:X2}", - errorRegisters.cylinderLow); + errorRegisters.CylinderLow); DicConsole.DebugWriteLine("Device-Info command", "DEVICE = 0x{0:X2}", - errorRegisters.deviceHead); - DicConsole.DebugWriteLine("Device-Info command", "COMMAND = 0x{0:X2}", errorRegisters.command); + errorRegisters.DeviceHead); + DicConsole.DebugWriteLine("Device-Info command", "COMMAND = 0x{0:X2}", errorRegisters.Command); DicConsole.DebugWriteLine("Device-Info command", "Error code = {0}", dev.LastError); break; } diff --git a/DiscImageChef/Commands/MediaInfo.cs b/DiscImageChef/Commands/MediaInfo.cs index ed399036..eafe87ef 100644 --- a/DiscImageChef/Commands/MediaInfo.cs +++ b/DiscImageChef/Commands/MediaInfo.cs @@ -1127,15 +1127,15 @@ namespace DiscImageChef.Commands foreach(TOC.CDTOCTrackDataDescriptor track in toc.Value.TrackDescriptors) { if(track.TrackNumber == 1 && - ((TOC_CONTROL)(track.CONTROL & 0x0D) == - TOC_CONTROL.DataTrack || - (TOC_CONTROL)(track.CONTROL & 0x0D) == - TOC_CONTROL.DataTrackIncremental)) allFirstSessionTracksAreAudio &= firstTrackLastSession != 1; + ((TocControl)(track.CONTROL & 0x0D) == + TocControl.DataTrack || + (TocControl)(track.CONTROL & 0x0D) == + TocControl.DataTrackIncremental)) allFirstSessionTracksAreAudio &= firstTrackLastSession != 1; - if((TOC_CONTROL)(track.CONTROL & 0x0D) == - TOC_CONTROL.DataTrack || - (TOC_CONTROL)(track.CONTROL & 0x0D) == - TOC_CONTROL.DataTrackIncremental) + if((TocControl)(track.CONTROL & 0x0D) == + TocControl.DataTrack || + (TocControl)(track.CONTROL & 0x0D) == + TocControl.DataTrackIncremental) { hasDataTrack = true; allFirstSessionTracksAreAudio &= track.TrackNumber >= firstTrackLastSession;