Corrected MMC/SD fields.

This commit is contained in:
2017-09-29 14:43:59 +01:00
parent f6e126faa5
commit 0c3eeaa43e
3 changed files with 94 additions and 25 deletions

View File

@@ -82,8 +82,6 @@ namespace DiscImageChef.Core.Devices.Dumping
BlockMedia = new BlockMediaType[] { new BlockMediaType() } BlockMedia = new BlockMediaType[] { new BlockMediaType() }
}; };
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
uint blocksToRead = 128; uint blocksToRead = 128;
uint blockSize = 512; uint blockSize = 512;
ulong blocks = 0; ulong blocks = 0;
@@ -134,6 +132,8 @@ namespace DiscImageChef.Core.Devices.Dumping
sense = dev.ReadOCR(out ocr, out response, timeout, out duration); sense = dev.ReadOCR(out ocr, out response, timeout, out duration);
if(sense) if(sense)
ocr = null; ocr = null;
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
} }
else if(dev.Type == DeviceType.SecureDigital) else if(dev.Type == DeviceType.SecureDigital)
{ {
@@ -158,68 +158,82 @@ namespace DiscImageChef.Core.Devices.Dumping
sense = dev.ReadSCR(out scr, out response, timeout, out duration); sense = dev.ReadSCR(out scr, out response, timeout, out duration);
if(sense) if(sense)
scr = null; scr = null;
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
} }
sense = dev.ReadCID(out cid, out response, timeout, out duration); sense = dev.ReadCID(out cid, out response, timeout, out duration);
if(sense) if(sense)
cid = null; cid = null;
// TODO: MultiMediaCard should be different DumpType cidDump = null;
DumpType csdDump = null;
DumpType ocrDump = null;
if(cid != null) if(cid != null)
{ {
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType cidDump = new DumpType
{ {
Image = outputPrefix + ".cid.bin", Image = outputPrefix + ".cid.bin",
Size = cid.Length, Size = cid.Length,
Checksums = Checksum.GetChecksums(cid).ToArray() Checksums = Checksum.GetChecksums(cid).ToArray()
}; };
DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.CID.Image, cid); DataFile.WriteTo("MMC/SecureDigital Dump", cidDump.Image, cid);
}; };
if(csd != null) if(csd != null)
{ {
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType csdDump = new DumpType
{ {
Image = outputPrefix + ".csd.bin", Image = outputPrefix + ".csd.bin",
Size = csd.Length, Size = csd.Length,
Checksums = Checksum.GetChecksums(csd).ToArray() Checksums = Checksum.GetChecksums(csd).ToArray()
}; };
DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.CSD.Image, csd); DataFile.WriteTo("MMC/SecureDigital Dump", csdDump.Image, csd);
}; };
if(ecsd != null) if(ecsd != null)
{ {
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType
{ {
Image = outputPrefix + ".ecsd.bin", Image = outputPrefix + ".ecsd.bin",
Size = ecsd.Length, Size = ecsd.Length,
Checksums = Checksum.GetChecksums(ecsd).ToArray() Checksums = Checksum.GetChecksums(ecsd).ToArray()
}; };
DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Image, ecsd); DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD.Image, ecsd);
}; };
if(ocr != null) if(ocr != null)
{ {
// TODO: Add to metadata.xml ocrDump = new DumpType
/*sidecar.BlockMedia[0].SecureDigital.OCR = new DumpType
{ {
Image = outputPrefix + ".ocr.bin", Image = outputPrefix + ".ocr.bin",
Size = ocr.Length, Size = ocr.Length,
Checksums = Checksum.GetChecksums(ocr).ToArray() Checksums = Checksum.GetChecksums(ocr).ToArray()
}; };
DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.OCR.Image, ocr);*/ DataFile.WriteTo("MMC/SecureDigital Dump", ocrDump.Image, ocr);
DataFile.WriteTo("MMC/SecureDigital Dump", outputPrefix + ".ocr.bin", ocr);
}; };
if(scr != null) if(scr != null)
{ {
// TODO: Add to metadata.xml sidecar.BlockMedia[0].SecureDigital.SCR = new DumpType
/*sidecar.BlockMedia[0].SecureDigital.SCR = new DumpType
{ {
Image = outputPrefix + ".scr.bin", Image = outputPrefix + ".scr.bin",
Size = scr.Length, Size = scr.Length,
Checksums = Checksum.GetChecksums(scr).ToArray() Checksums = Checksum.GetChecksums(scr).ToArray()
}; };
DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.SCR.Image, scr);*/ DataFile.WriteTo("MMC/SecureDigital Dump", sidecar.BlockMedia[0].SecureDigital.SCR.Image, scr);
DataFile.WriteTo("MMC/SecureDigital Dump", outputPrefix + ".scr.bin", scr);
}; };
if(dev.Type == DeviceType.MMC)
{
sidecar.BlockMedia[0].MultiMediaCard.CID = cidDump;
sidecar.BlockMedia[0].MultiMediaCard.CSD = csdDump;
sidecar.BlockMedia[0].MultiMediaCard.OCR = ocrDump;
}
else if(dev.Type == DeviceType.SecureDigital)
{
sidecar.BlockMedia[0].SecureDigital.CID = cidDump;
sidecar.BlockMedia[0].SecureDigital.CSD = csdDump;
sidecar.BlockMedia[0].SecureDigital.OCR = ocrDump;
}
DateTime start; DateTime start;
DateTime end; DateTime end;
double totalDuration = 0; double totalDuration = 0;

View File

@@ -175,13 +175,58 @@ namespace DiscImageChef.Core
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
}; };
break; break;
case MediaTagType.SD_ExtendedCSD: case MediaTagType.SD_SCR:
if(sidecar.BlockMedia[0].SecureDigital == null) if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType(); sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType sidecar.BlockMedia[0].SecureDigital.SCR = new DumpType
{ {
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray(), Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_SCR)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length Size = image.ReadDiskTag(MediaTagType.SD_SCR).Length
};
break;
case MediaTagType.SD_OCR:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.OCR = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_OCR)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_OCR).Length
};
break;
case MediaTagType.MMC_CID:
if(sidecar.BlockMedia[0].MultiMediaCard == null)
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
sidecar.BlockMedia[0].MultiMediaCard.CID = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_CID).Length
};
break;
case MediaTagType.MMC_CSD:
if(sidecar.BlockMedia[0].MultiMediaCard == null)
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
sidecar.BlockMedia[0].MultiMediaCard.CSD = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
};
break;
case MediaTagType.MMC_OCR:
if(sidecar.BlockMedia[0].MultiMediaCard == null)
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
sidecar.BlockMedia[0].MultiMediaCard.OCR = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_OCR)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.SD_OCR).Length
};
break;
case MediaTagType.MMC_ExtendedCSD:
if(sidecar.BlockMedia[0].MultiMediaCard == null)
sidecar.BlockMedia[0].MultiMediaCard = new MultiMediaCardType();
sidecar.BlockMedia[0].MultiMediaCard.ExtendedCSD = new DumpType
{
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD)).ToArray(),
Size = image.ReadDiskTag(MediaTagType.MMC_ExtendedCSD).Length
}; };
break; break;
} }

View File

@@ -676,12 +676,22 @@ namespace DiscImageChef.ImagePlugins
ATAPI_IDENTIFY, ATAPI_IDENTIFY,
/// <summary>PCMCIA/CardBus Card Information Structure</summary> /// <summary>PCMCIA/CardBus Card Information Structure</summary>
PCMCIA_CIS, PCMCIA_CIS,
/// <summary>SecureDigital / MMC CID</summary> /// <summary>SecureDigital CID</summary>
SD_CID, SD_CID,
/// <summary>SecureDigital / MMC CSD</summary> /// <summary>SecureDigital CSD</summary>
SD_CSD, SD_CSD,
/// <summary>SecureDigital Extended CSD</summary> /// <summary>SecureDigital SCR</summary>
SD_ExtendedCSD, SD_SCR,
/// <summary>SecureDigital OCR</summary>
SD_OCR,
/// <summary>MultiMediaCard CID</summary>
MMC_CID,
/// <summary>MultiMediaCard CSD</summary>
MMC_CSD,
/// <summary>MultiMediaCard OCR</summary>
MMC_OCR,
/// <summary>MultiMediaCard Extended CSD</summary>
MMC_ExtendedCSD,
/// <summary>Xbox Security Sector</summary> /// <summary>Xbox Security Sector</summary>
Xbox_SecuritySector Xbox_SecuritySector
}; };