* DiscImageChef.Decoders/CD/ATIP.cs:

Make ATIP manufacturer resolver a public method.

	* DiscImageChef.Decoders/SCSI/MMC/Features.cs:
	  Added HDBurn profiles.

	* DiscImageChef.Decoders/SCSI/Modes.cs:
	  Corrected typo.

	* DiscImageChef.DiscImages/BLU.cs:
	* DiscImageChef.DiscImages/GDI.cs:
	* DiscImageChef.DiscImages/VHD.cs:
	* DiscImageChef.DiscImages/Nero.cs:
	* DiscImageChef/Commands/Compare.cs:
	* DiscImageChef.DiscImages/CopyQM.cs:
	* DiscImageChef.DiscImages/CDRWin.cs:
	* DiscImageChef.DiscImages/CDRDAO.cs:
	* DiscImageChef.DiscImages/Apple2MG.cs:
	* DiscImageChef.DiscImages/TeleDisk.cs:
	* DiscImageChef.DiscImages/ImageInfo.cs:
	* DiscImageChef.DiscImages/Alcohol120.cs:
	* DiscImageChef.DiscImages/DiskCopy42.cs:
	* DiscImageChef.DiscImages/ZZZRawImage.cs:
	  Added field for drive firmware revision.

	* DiscImageChef.DiscImages/BlindWrite4.cs:
	  Added field for drive firmware revision.
	Change subchannel informative exception.
	Change application name and version.

	* DiscImageChef.DiscImages/ImagePlugin.cs:
	  Added subchannel types for Q only.

	* DiscImageChef/Commands/CreateSidecar.cs:
	  If drive image contains information about the dumping drive,
	  use it.
	Added subchannel types for Q only.
This commit is contained in:
2016-08-18 00:05:24 +01:00
parent c4c92a8240
commit b3924779ba
24 changed files with 452 additions and 285 deletions

View File

@@ -1,3 +1,13 @@
2016-08-18 Natalia Portillo <claunia@claunia.com>
* Commands/Compare.cs:
Added field for drive firmware revision.
* Commands/CreateSidecar.cs:
If drive image contains information about the dumping drive,
use it.
Added subchannel types for Q only.
2016-08-09 Natalia Portillo <claunia@claunia.com>
* DiscImageChef.csproj:

View File

@@ -147,6 +147,7 @@ namespace DiscImageChef.Commands
try { image1Info.driveManufacturer = input1Format.GetDriveManufacturer(); } catch { image1Info.driveManufacturer = null; }
try { image1Info.driveModel = input1Format.GetDriveModel(); } catch { image1Info.driveModel = null; }
try { image1Info.driveSerialNumber = input1Format.GetDriveSerialNumber(); } catch { image1Info.driveSerialNumber = null; }
try { image1Info.driveFirmwareRevision = input1Format.ImageInfo.driveFirmwareRevision; } catch { image1Info.driveFirmwareRevision = null; }
foreach(MediaTagType disktag in Enum.GetValues(typeof(MediaTagType)))
{
try
@@ -188,6 +189,7 @@ namespace DiscImageChef.Commands
try { image2Info.driveManufacturer = input2Format.GetDriveManufacturer(); } catch { image2Info.driveManufacturer = null; }
try { image2Info.driveModel = input2Format.GetDriveModel(); } catch { image2Info.driveModel = null; }
try { image2Info.driveSerialNumber = input2Format.GetDriveSerialNumber(); } catch { image2Info.driveSerialNumber = null; }
try { image2Info.driveFirmwareRevision = input2Format.ImageInfo.driveFirmwareRevision; } catch { image2Info.driveFirmwareRevision = null; }
foreach(MediaTagType disktag in Enum.GetValues(typeof(MediaTagType)))
{
try
@@ -226,6 +228,7 @@ namespace DiscImageChef.Commands
sb.AppendFormat("Disk sequence\t{0}\t{1}", image1Info.mediaSequence, image2Info.mediaSequence).AppendLine();
sb.AppendFormat("Last disk on sequence\t{0}\t{1}", image1Info.lastMediaSequence, image2Info.lastMediaSequence).AppendLine();
sb.AppendFormat("Drive manufacturer\t{0}\t{1}", image1Info.driveManufacturer, image2Info.driveManufacturer).AppendLine();
sb.AppendFormat("Drive firmware revision\t{0}\t{1}", image1Info.driveFirmwareRevision, image2Info.driveFirmwareRevision).AppendLine();
sb.AppendFormat("Drive model\t{0}\t{1}", image1Info.driveModel, image2Info.driveModel).AppendLine();
sb.AppendFormat("Drive serial number\t{0}\t{1}", image1Info.driveSerialNumber, image2Info.driveSerialNumber).AppendLine();
foreach(MediaTagType disktag in Enum.GetValues(typeof(MediaTagType)))
@@ -380,6 +383,12 @@ namespace DiscImageChef.Commands
if(!options.Verbose)
sb.AppendLine("Drive serial number differ");
}
if(image1Info.driveFirmwareRevision != image2Info.driveFirmwareRevision)
{
imagesDiffer = true;
if(!options.Verbose)
sb.AppendLine("Drive firmware revision differ");
}
ulong leastSectors;
if(image1Info.sectors < image2Info.sectors)

View File

@@ -453,6 +453,10 @@ namespace DiscImageChef.Commands
case TrackSubchannelType.RawInterleaved:
xmlTrk.SubChannel.Image.format = "rw_raw";
break;
case TrackSubchannelType.Q16:
case TrackSubchannelType.Q16Interleaved:
xmlTrk.SubChannel.Image.format = "q16";
break;
}
if(trk.TrackFileOffset > 0)
@@ -617,6 +621,24 @@ namespace DiscImageChef.Commands
sidecar.OpticalDisc[0].DiscSubType = dscSubType;
Core.Statistics.AddMedia(dskType, false);
if(!string.IsNullOrEmpty(_imageFormat.ImageInfo.driveManufacturer) ||
!string.IsNullOrEmpty(_imageFormat.ImageInfo.driveModel) ||
!string.IsNullOrEmpty(_imageFormat.ImageInfo.driveFirmwareRevision) ||
!string.IsNullOrEmpty(_imageFormat.ImageInfo.driveSerialNumber))
{
sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1];
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0];
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = (int)_imageFormat.ImageInfo.sectors;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = _imageFormat.ImageInfo.driveManufacturer;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = _imageFormat.ImageInfo.driveModel;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = _imageFormat.ImageInfo.driveFirmwareRevision;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = _imageFormat.ImageInfo.driveSerialNumber;
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType();
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Name = _imageFormat.GetImageApplication();
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Version = _imageFormat.GetImageApplicationVersion();
}
break;
}
case XmlMediaType.BlockMedia: