diff --git a/DiscImageChef.Core/Sidecar/AudioMedia.cs b/DiscImageChef.Core/Sidecar/AudioMedia.cs index 9131873fc..4baf045f7 100644 --- a/DiscImageChef.Core/Sidecar/AudioMedia.cs +++ b/DiscImageChef.Core/Sidecar/AudioMedia.cs @@ -48,16 +48,26 @@ namespace DiscImageChef.Core // TODO: Complete it static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List imgChecksums, ref CICMMetadataType sidecar) { - sidecar.AudioMedia = new AudioMediaType[1]; - sidecar.AudioMedia[0] = new AudioMediaType(); - sidecar.AudioMedia[0].Checksums = imgChecksums.ToArray(); - sidecar.AudioMedia[0].Image = new ImageType(); - sidecar.AudioMedia[0].Image.format = image.GetImageFormat(); - sidecar.AudioMedia[0].Image.offset = 0; - sidecar.AudioMedia[0].Image.offsetSpecified = true; - sidecar.AudioMedia[0].Image.Value = Path.GetFileName(imagePath); - sidecar.AudioMedia[0].Size = fi.Length; - sidecar.AudioMedia[0].Sequence = new SequenceType(); + sidecar.AudioMedia = new [] + { + new AudioMediaType + { + Checksums = imgChecksums.ToArray(), + Image = new ImageType + { + format = image.GetImageFormat(), + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(imagePath) + }, + Size = fi.Length, + Sequence = new SequenceType + { + MediaTitle = image.GetImageName() + } + } + }; + if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) { sidecar.AudioMedia[0].Sequence.MediaSequence = image.GetMediaSequence(); @@ -68,7 +78,6 @@ namespace DiscImageChef.Core sidecar.AudioMedia[0].Sequence.MediaSequence = 1; sidecar.AudioMedia[0].Sequence.TotalMedia = 1; } - sidecar.AudioMedia[0].Sequence.MediaTitle = image.GetImageName(); } } } diff --git a/DiscImageChef.Core/Sidecar/BlockMedia.cs b/DiscImageChef.Core/Sidecar/BlockMedia.cs index e8f0d78cc..185a361e1 100644 --- a/DiscImageChef.Core/Sidecar/BlockMedia.cs +++ b/DiscImageChef.Core/Sidecar/BlockMedia.cs @@ -50,16 +50,26 @@ namespace DiscImageChef.Core { static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List imgChecksums, ref CICMMetadataType sidecar) { - sidecar.BlockMedia = new BlockMediaType[1]; - sidecar.BlockMedia[0] = new BlockMediaType(); - sidecar.BlockMedia[0].Checksums = imgChecksums.ToArray(); - sidecar.BlockMedia[0].Image = new ImageType(); - sidecar.BlockMedia[0].Image.format = image.GetImageFormat(); - sidecar.BlockMedia[0].Image.offset = 0; - sidecar.BlockMedia[0].Image.offsetSpecified = true; - sidecar.BlockMedia[0].Image.Value = Path.GetFileName(imagePath); - sidecar.BlockMedia[0].Size = fi.Length; - sidecar.BlockMedia[0].Sequence = new SequenceType(); + sidecar.BlockMedia = new[] + { + new BlockMediaType + { + Checksums = imgChecksums.ToArray(), + Image = new ImageType + { + format = image.GetImageFormat(), + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(imagePath) + }, + Size = fi.Length, + Sequence = new SequenceType + { + MediaTitle = image.GetImageName() + } + } + }; + if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) { sidecar.BlockMedia[0].Sequence.MediaSequence = image.GetMediaSequence(); @@ -70,30 +80,41 @@ namespace DiscImageChef.Core sidecar.BlockMedia[0].Sequence.MediaSequence = 1; sidecar.BlockMedia[0].Sequence.TotalMedia = 1; } - sidecar.BlockMedia[0].Sequence.MediaTitle = image.GetImageName(); foreach(MediaTagType tagType in image.ImageInfo.readableMediaTags) { switch(tagType) { case MediaTagType.ATAPI_IDENTIFY: - sidecar.BlockMedia[0].ATA = new ATAType(); - sidecar.BlockMedia[0].ATA.Identify = new DumpType(); - sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(); - sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length; + sidecar.BlockMedia[0].ATA = new ATAType + { + Identify = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length + } + }; break; case MediaTagType.ATA_IDENTIFY: - sidecar.BlockMedia[0].ATA = new ATAType(); - sidecar.BlockMedia[0].ATA.Identify = new DumpType(); - sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(); - sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length; + sidecar.BlockMedia[0].ATA = new ATAType + { + Identify = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length + } + }; break; case MediaTagType.PCMCIA_CIS: byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS); - sidecar.BlockMedia[0].PCMCIA = new PCMCIAType(); - sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType(); - sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = Checksum.GetChecksums(cis).ToArray(); - sidecar.BlockMedia[0].PCMCIA.CIS.Size = cis.Length; + sidecar.BlockMedia[0].PCMCIA = new PCMCIAType + { + CIS = new DumpType + { + Checksums = Checksum.GetChecksums(cis).ToArray(), + Size = cis.Length + } + }; Tuple[] tuples = CIS.GetTuples(cis); if(tuples != null) { @@ -127,31 +148,41 @@ namespace DiscImageChef.Core } break; case MediaTagType.SCSI_INQUIRY: - sidecar.BlockMedia[0].SCSI = new SCSIType(); - sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType(); - sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(); - sidecar.BlockMedia[0].SCSI.Inquiry.Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length; + sidecar.BlockMedia[0].SCSI = new SCSIType + { + Inquiry = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length + } + }; break; case MediaTagType.SD_CID: if(sidecar.BlockMedia[0].SecureDigital == null) sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].SecureDigital.CID = new DumpType(); - sidecar.BlockMedia[0].SecureDigital.CID.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(); - sidecar.BlockMedia[0].SecureDigital.CID.Size = image.ReadDiskTag(MediaTagType.SD_CID).Length; + sidecar.BlockMedia[0].SecureDigital.CID = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.SD_CID).Length + }; break; case MediaTagType.SD_CSD: if(sidecar.BlockMedia[0].SecureDigital == null) sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType(); - sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(); - sidecar.BlockMedia[0].SecureDigital.CSD.Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length; + sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length + }; break; case MediaTagType.SD_ExtendedCSD: if(sidecar.BlockMedia[0].SecureDigital == null) sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); - sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType(); - sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray(); - sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length; + sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length + }; break; } } @@ -198,8 +229,7 @@ namespace DiscImageChef.Core EndProgress2(); } - string dskType, dskSubType; - Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out dskType, out dskSubType); + Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out string dskType, out string dskSubType); sidecar.BlockMedia[0].DiskType = dskType; sidecar.BlockMedia[0].DiskSubType = dskSubType; Statistics.AddMedia(image.ImageInfo.mediaType, false); @@ -222,14 +252,15 @@ namespace DiscImageChef.Core sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count]; for(int i = 0; i < partitions.Count; i++) { - sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType(); - sidecar.BlockMedia[0].FileSystemInformation[i].Description = partitions[i].Description; - sidecar.BlockMedia[0].FileSystemInformation[i].EndSector = (int)(partitions[i].End); - sidecar.BlockMedia[0].FileSystemInformation[i].Name = partitions[i].Name; - sidecar.BlockMedia[0].FileSystemInformation[i].Sequence = (int)partitions[i].Sequence; - sidecar.BlockMedia[0].FileSystemInformation[i].StartSector = (int)partitions[i].Start; - sidecar.BlockMedia[0].FileSystemInformation[i].Type = partitions[i].Type; - + sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType + { + Description = partitions[i].Description, + EndSector = (int)(partitions[i].End), + Name = partitions[i].Name, + Sequence = (int)partitions[i].Sequence, + StartSector = (int)partitions[i].Start, + Type = partitions[i].Type + }; List lstFs = new List(); foreach(Filesystem _plugin in plugins.PluginsList.Values) @@ -238,8 +269,7 @@ namespace DiscImageChef.Core { if(_plugin.Identify(image, partitions[i])) { - string foo; - _plugin.GetInformation(image, partitions[i], out foo); + _plugin.GetInformation(image, partitions[i], out string foo); lstFs.Add(_plugin.XmlFSType); Statistics.AddFilesystem(_plugin.XmlFSType.Type); } @@ -258,9 +288,11 @@ namespace DiscImageChef.Core } else { - sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType(); - sidecar.BlockMedia[0].FileSystemInformation[0].StartSector = 0; - sidecar.BlockMedia[0].FileSystemInformation[0].EndSector = (int)(image.GetSectors() - 1); + sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType + { + StartSector = 0, + EndSector = (int)(image.GetSectors() - 1) + }; Partition wholePart = new Partition { diff --git a/DiscImageChef.Core/Sidecar/LinearMedia.cs b/DiscImageChef.Core/Sidecar/LinearMedia.cs index 5a97e6f37..e22de481a 100644 --- a/DiscImageChef.Core/Sidecar/LinearMedia.cs +++ b/DiscImageChef.Core/Sidecar/LinearMedia.cs @@ -48,15 +48,21 @@ namespace DiscImageChef.Core // TODO: Complete it static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List imgChecksums, ref CICMMetadataType sidecar) { - sidecar.LinearMedia = new LinearMediaType[1]; - sidecar.LinearMedia[0] = new LinearMediaType(); - sidecar.LinearMedia[0].Checksums = imgChecksums.ToArray(); - sidecar.LinearMedia[0].Image = new ImageType(); - sidecar.LinearMedia[0].Image.format = image.GetImageFormat(); - sidecar.LinearMedia[0].Image.offset = 0; - sidecar.LinearMedia[0].Image.offsetSpecified = true; - sidecar.LinearMedia[0].Image.Value = Path.GetFileName(imagePath); - sidecar.LinearMedia[0].Size = fi.Length; + sidecar.LinearMedia = new [] + { + new LinearMediaType + { + Checksums = imgChecksums.ToArray(), + Image = new ImageType + { + format = image.GetImageFormat(), + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(imagePath) + }, + Size = fi.Length + } + }; } } } diff --git a/DiscImageChef.Core/Sidecar/OpticalDisc.cs b/DiscImageChef.Core/Sidecar/OpticalDisc.cs index 9491fe886..d5c9b6051 100644 --- a/DiscImageChef.Core/Sidecar/OpticalDisc.cs +++ b/DiscImageChef.Core/Sidecar/OpticalDisc.cs @@ -49,16 +49,26 @@ namespace DiscImageChef.Core { static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List imgChecksums, ref CICMMetadataType sidecar) { - sidecar.OpticalDisc = new OpticalDiscType[1]; - sidecar.OpticalDisc[0] = new OpticalDiscType(); - sidecar.OpticalDisc[0].Checksums = imgChecksums.ToArray(); - sidecar.OpticalDisc[0].Image = new ImageType(); - sidecar.OpticalDisc[0].Image.format = image.GetImageFormat(); - sidecar.OpticalDisc[0].Image.offset = 0; - sidecar.OpticalDisc[0].Image.offsetSpecified = true; - sidecar.OpticalDisc[0].Image.Value = Path.GetFileName(imagePath); - sidecar.OpticalDisc[0].Size = fi.Length; - sidecar.OpticalDisc[0].Sequence = new SequenceType(); + sidecar.OpticalDisc = new[] + { + new OpticalDiscType + { + Checksums = imgChecksums.ToArray(), + Image = new ImageType + { + format = image.GetImageFormat(), + offset = 0, + offsetSpecified = true, + Value = Path.GetFileName(imagePath) + }, + Size = fi.Length, + Sequence = new SequenceType + { + MediaTitle = image.GetImageName() + } + } + }; + if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0) { sidecar.OpticalDisc[0].Sequence.MediaSequence = image.GetMediaSequence(); @@ -69,7 +79,6 @@ namespace DiscImageChef.Core sidecar.OpticalDisc[0].Sequence.MediaSequence = 1; sidecar.OpticalDisc[0].Sequence.TotalMedia = 1; } - sidecar.OpticalDisc[0].Sequence.MediaTitle = image.GetImageName(); MediaType dskType = image.ImageInfo.mediaType; @@ -78,9 +87,11 @@ namespace DiscImageChef.Core switch(tagType) { case MediaTagType.CD_ATIP: - sidecar.OpticalDisc[0].ATIP = new DumpType(); - sidecar.OpticalDisc[0].ATIP.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(); - sidecar.OpticalDisc[0].ATIP.Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length; + sidecar.OpticalDisc[0].ATIP = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length + }; Decoders.CD.ATIP.CDATIP? atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP)); if(atip.HasValue) { @@ -91,17 +102,25 @@ namespace DiscImageChef.Core } break; case MediaTagType.DVD_BCA: - sidecar.OpticalDisc[0].BCA = new DumpType(); - sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(); - sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length; + sidecar.OpticalDisc[0].BCA = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length + }; break; case MediaTagType.BD_BCA: - sidecar.OpticalDisc[0].BCA = new DumpType(); - sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(); - sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length; + sidecar.OpticalDisc[0].BCA = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length + }; break; case MediaTagType.DVD_CMI: - sidecar.OpticalDisc[0].CMI = new DumpType(); + sidecar.OpticalDisc[0].CMI = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length + }; Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi = Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI)); if(cmi.HasValue) { @@ -118,30 +137,33 @@ namespace DiscImageChef.Core break; } } - sidecar.OpticalDisc[0].CMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(); - sidecar.OpticalDisc[0].CMI.Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length; break; case MediaTagType.DVD_DMI: - sidecar.OpticalDisc[0].DMI = new DumpType(); - sidecar.OpticalDisc[0].DMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(); - sidecar.OpticalDisc[0].DMI.Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length; + sidecar.OpticalDisc[0].DMI = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length + }; if(Decoders.Xbox.DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI))) { dskType = MediaType.XGD; - sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); - sidecar.OpticalDisc[0].Dimensions.Diameter = 120; + sidecar.OpticalDisc[0].Dimensions = new DimensionsType { Diameter = 120 }; } else if(Decoders.Xbox.DMI.IsXbox360(image.ReadDiskTag(MediaTagType.DVD_DMI))) { dskType = MediaType.XGD2; - sidecar.OpticalDisc[0].Dimensions = new DimensionsType(); - sidecar.OpticalDisc[0].Dimensions.Diameter = 120; + sidecar.OpticalDisc[0].Dimensions = new DimensionsType + { + Diameter = 120 + }; } break; case MediaTagType.DVD_PFI: - sidecar.OpticalDisc[0].PFI = new DumpType(); - sidecar.OpticalDisc[0].PFI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(); - sidecar.OpticalDisc[0].PFI.Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length; + sidecar.OpticalDisc[0].PFI = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length + }; Decoders.DVD.PFI.PhysicalFormatInformation? pfi = Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI)); if(pfi.HasValue) { @@ -213,9 +235,11 @@ namespace DiscImageChef.Core } break; case MediaTagType.CD_PMA: - sidecar.OpticalDisc[0].PMA = new DumpType(); - sidecar.OpticalDisc[0].PMA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(); - sidecar.OpticalDisc[0].PMA.Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length; + sidecar.OpticalDisc[0].PMA = new DumpType + { + Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(), + Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length + }; break; } } @@ -281,16 +305,17 @@ namespace DiscImageChef.Core } break; } - xmlTrk.Sequence = new TrackSequenceType(); - xmlTrk.Sequence.Session = trk.TrackSession; - xmlTrk.Sequence.TrackNumber = (int)trk.TrackSequence; + xmlTrk.Sequence = new TrackSequenceType + { + Session = trk.TrackSession, + TrackNumber = (int)trk.TrackSequence + }; xmlTrk.StartSector = (long)trk.TrackStartSector; xmlTrk.EndSector = (long)trk.TrackEndSector; if(trk.Indexes != null && trk.Indexes.ContainsKey(0)) { - ulong idx0; - if(trk.Indexes.TryGetValue(0, out idx0)) + if(trk.Indexes.TryGetValue(0, out ulong idx0)) xmlTrk.StartSector = (long)idx0; } @@ -306,15 +331,18 @@ namespace DiscImageChef.Core xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector); } - xmlTrk.Image = new ImageType(); - xmlTrk.Image.Value = Path.GetFileName(trk.TrackFile); + xmlTrk.Image = new ImageType + { + Value = Path.GetFileName(trk.TrackFile), + format = trk.TrackFileType + }; + if(trk.TrackFileOffset > 0) { xmlTrk.Image.offset = (long)trk.TrackFileOffset; xmlTrk.Image.offsetSpecified = true; } - xmlTrk.Image.format = trk.TrackFileType; xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector; xmlTrk.BytesPerSector = trk.TrackBytesPerSector; @@ -370,8 +398,16 @@ namespace DiscImageChef.Core if(trk.TrackSubchannelType != TrackSubchannelType.None) { - xmlTrk.SubChannel = new SubChannelType(); - xmlTrk.SubChannel.Image = new ImageType(); + xmlTrk.SubChannel = new SubChannelType + { + Image = new ImageType + { + Value = trk.TrackSubchannelFile + }, + // TODO: Packed subchannel has different size? + Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96 + }; + switch(trk.TrackSubchannelType) { case TrackSubchannelType.Packed: @@ -393,10 +429,6 @@ namespace DiscImageChef.Core xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset; xmlTrk.SubChannel.Image.offsetSpecified = true; } - xmlTrk.SubChannel.Image.Value = trk.TrackSubchannelFile; - - // TODO: Packed subchannel has different size? - xmlTrk.SubChannel.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96; Checksum subChkWorker = new Checksum(); @@ -445,14 +477,15 @@ namespace DiscImageChef.Core xmlTrk.FileSystemInformation = new PartitionType[partitions.Count]; for(int i = 0; i < partitions.Count; i++) { - xmlTrk.FileSystemInformation[i] = new PartitionType(); - xmlTrk.FileSystemInformation[i].Description = partitions[i].Description; - xmlTrk.FileSystemInformation[i].EndSector = (int)(partitions[i].End); - xmlTrk.FileSystemInformation[i].Name = partitions[i].Name; - xmlTrk.FileSystemInformation[i].Sequence = (int)partitions[i].Sequence; - xmlTrk.FileSystemInformation[i].StartSector = (int)partitions[i].Start; - xmlTrk.FileSystemInformation[i].Type = partitions[i].Type; - + xmlTrk.FileSystemInformation[i] = new PartitionType + { + Description = partitions[i].Description, + EndSector = (int)(partitions[i].End), + Name = partitions[i].Name, + Sequence = (int)partitions[i].Sequence, + StartSector = (int)partitions[i].Start, + Type = partitions[i].Type + }; List lstFs = new List(); foreach(Filesystem _plugin in plugins.PluginsList.Values) @@ -489,10 +522,11 @@ namespace DiscImageChef.Core } else { - xmlTrk.FileSystemInformation[0] = new PartitionType(); - xmlTrk.FileSystemInformation[0].EndSector = (int)xmlTrk.EndSector; - xmlTrk.FileSystemInformation[0].StartSector = (int)xmlTrk.StartSector; - + xmlTrk.FileSystemInformation[0] = new PartitionType + { + EndSector = (int)xmlTrk.EndSector, + StartSector = (int)xmlTrk.StartSector + }; List lstFs = new List(); Partition xmlPart = new Partition @@ -552,9 +586,7 @@ namespace DiscImageChef.Core dskType = MediaType.XGD3; } - - string dscType, dscSubType; - Metadata.MediaType.MediaTypeToString(dskType, out dscType, out dscSubType); + Metadata.MediaType.MediaTypeToString(dskType, out string dscType, out string dscSubType); sidecar.OpticalDisc[0].DiscType = dscType; sidecar.OpticalDisc[0].DiscSubType = dscSubType; Statistics.AddMedia(dskType, false); @@ -564,17 +596,29 @@ namespace DiscImageChef.Core !string.IsNullOrEmpty(image.ImageInfo.driveFirmwareRevision) || !string.IsNullOrEmpty(image.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 = image.ImageInfo.sectors; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = image.ImageInfo.driveManufacturer; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = image.ImageInfo.driveModel; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = image.ImageInfo.driveFirmwareRevision; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = image.ImageInfo.driveSerialNumber; - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType(); - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Name = image.GetImageApplication(); - sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Version = image.GetImageApplicationVersion(); + sidecar.OpticalDisc[0].DumpHardwareArray = new[] + { + new DumpHardwareType + { + Extents = new[] + { + new ExtentType + { + Start = 0, + End = image.ImageInfo.sectors + } + }, + Manufacturer = image.ImageInfo.driveManufacturer, + Model = image.ImageInfo.driveModel, + Firmware = image.ImageInfo.driveFirmwareRevision, + Serial = image.ImageInfo.driveSerialNumber, + Software = new SoftwareType + { + Name = image.GetImageApplication(), + Version = image.GetImageApplicationVersion() + } + } + }; } } } diff --git a/DiscImageChef.Core/Sidecar/Sidecar.cs b/DiscImageChef.Core/Sidecar/Sidecar.cs index 33f3d609b..7b78ec0fa 100644 --- a/DiscImageChef.Core/Sidecar/Sidecar.cs +++ b/DiscImageChef.Core/Sidecar/Sidecar.cs @@ -35,11 +35,9 @@ // Copyright (C) 2011-2015 Claunia.com // ****************************************************************************/ // //$Id$ + using System.Collections.Generic; using System.IO; -using DiscImageChef.CommonTypes; -using DiscImageChef.Decoders.PCMCIA; -using DiscImageChef.Filesystems; using DiscImageChef.ImagePlugins; using Schemas;