diff --git a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs
index d3993e9ee..70642d75a 100644
--- a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs
+++ b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs
@@ -73,14 +73,9 @@ namespace DiscImageChef.Core.Devices.Dumping
/// Disc type as detected in MMC layer
internal void CompactDisc(ref MediaType dskType)
{
- DicContext
- ctx; // Master database context
-
- Device
- dbDev; // Device database entry
-
- CdOffset
- cdOffset; // Read offset from database
+ DicContext ctx; // Master database context
+ Device dbDev; // Device database entry
+ CdOffset cdOffset; // Read offset from database
bool sense; // Sense indicator
byte[] cmdBuf; // Data buffer
@@ -89,6 +84,8 @@ namespace DiscImageChef.Core.Devices.Dumping
FullTOC.CDFullTOC? toc = null; // Full CD TOC
Dictionary mediaTags = new Dictionary(); // Media tags
+ dskType = MediaType.CD;
+
if(dumpRaw)
{
dumpLog.WriteLine("Raw CD dumping not yet implemented");
@@ -148,6 +145,26 @@ namespace DiscImageChef.Core.Devices.Dumping
mediaTags.Add(MediaTagType.CD_FullTOC, tmpBuf);
}
}
+
+ // ATIP exists on blank CDs
+ dumpLog.WriteLine("Reading ATIP");
+ UpdateStatus?.Invoke("Reading ATIP");
+ sense = dev.ReadAtip(out cmdBuf, out senseBuf, dev.Timeout, out _);
+
+ if(!sense)
+ {
+ ATIP.CDATIP? atip = ATIP.Decode(cmdBuf);
+
+ if(atip.HasValue)
+ {
+ // Only CD-R and CD-RW have ATIP
+ dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
+
+ tmpBuf = new byte[cmdBuf.Length - 4];
+ Array.Copy(cmdBuf, 4, tmpBuf, 0, cmdBuf.Length - 4);
+ mediaTags.Add(MediaTagType.CD_ATIP, tmpBuf);
+ }
+ }
}
/// Dumps a compact disc
@@ -172,29 +189,8 @@ namespace DiscImageChef.Core.Devices.Dumping
byte[] senseBuf;
byte[] tmpBuf;
- dskType = MediaType.CD;
int sessions = 1;
- // ATIP exists on blank CDs
- dumpLog.WriteLine("Reading ATIP");
- UpdateStatus?.Invoke("Reading ATIP");
- sense = dev.ReadAtip(out cmdBuf, out senseBuf, dev.Timeout, out _);
-
- if(!sense)
- {
- ATIP.CDATIP? atip = ATIP.Decode(cmdBuf);
-
- if(atip.HasValue)
- {
- // Only CD-R and CD-RW have ATIP
- dskType = atip.Value.DiscType ? MediaType.CDRW : MediaType.CDR;
-
- tmpBuf = new byte[cmdBuf.Length - 4];
- Array.Copy(cmdBuf, 4, tmpBuf, 0, cmdBuf.Length - 4);
- mediaTags.Add(MediaTagType.CD_ATIP, tmpBuf);
- }
- }
-
dumpLog.WriteLine("Reading Disc Information");
UpdateStatus?.Invoke("Reading Disc Information");