mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Add workaround for device report the AccessTek/Optorite DD0203 drive.
This commit is contained in:
@@ -1429,15 +1429,22 @@ public sealed partial class DeviceReport
|
||||
|
||||
mediaTest.RWSubchannelData = buffer;
|
||||
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 11, 2448, 1,
|
||||
MmcSectorTypes.Cdda, false, false, false,
|
||||
MmcHeaderCodes.None, true, false,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
// AccessTek/Optorite DD0203 returns OK but then the firmware dies
|
||||
if(_dev.Model.StartsWith("DVD RW 4XMax", StringComparison.Ordinal))
|
||||
mediaTest.CanReadCorrectedSubchannel = false;
|
||||
else
|
||||
{
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 11, 2448, 1,
|
||||
MmcSectorTypes.Cdda, false, false, false,
|
||||
MmcHeaderCodes.None, true, false,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
|
||||
!mediaTest.CanReadCorrectedSubchannel);
|
||||
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
}
|
||||
});
|
||||
|
||||
Spectre.ProgressSingleSpinner(ctx =>
|
||||
@@ -1564,15 +1571,22 @@ public sealed partial class DeviceReport
|
||||
|
||||
mediaTest.RWSubchannelData = buffer;
|
||||
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2448, 1,
|
||||
MmcSectorTypes.AllTypes, false, false, true,
|
||||
MmcHeaderCodes.AllHeaders, true, true,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
// AccessTek/Optorite DD0203 returns OK but then the firmware dies
|
||||
if(_dev.Model.StartsWith("DVD RW 4XMax", StringComparison.Ordinal))
|
||||
mediaTest.CanReadCorrectedSubchannel = false;
|
||||
else
|
||||
{
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2448, 1,
|
||||
MmcSectorTypes.AllTypes, false, false, true,
|
||||
MmcHeaderCodes.AllHeaders, true, true,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
|
||||
!mediaTest.CanReadCorrectedSubchannel);
|
||||
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
}
|
||||
});
|
||||
|
||||
Spectre.ProgressSingleSpinner(ctx =>
|
||||
@@ -1627,19 +1641,27 @@ public sealed partial class DeviceReport
|
||||
true, MmcErrorField.C2Pointers,
|
||||
MmcSubchannel.Rw, _dev.Timeout, out _);
|
||||
|
||||
if(mediaTest.CanReadCorrectedSubchannelWithC2 == false)
|
||||
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer, out senseBuffer, 16,
|
||||
2714, 1, MmcSectorTypes.AllTypes,
|
||||
false, false, true,
|
||||
MmcHeaderCodes.AllHeaders, true, true,
|
||||
MmcErrorField.C2PointersAndBlock,
|
||||
MmcSubchannel.Rw, _dev.Timeout,
|
||||
out _);
|
||||
// AccessTek/Optorite DD0203 returns OK but then the firmware dies
|
||||
if(_dev.Model.StartsWith("DVD RW 4XMax", StringComparison.Ordinal))
|
||||
mediaTest.CanReadCorrectedSubchannel = false;
|
||||
else
|
||||
{
|
||||
if(mediaTest.CanReadCorrectedSubchannelWithC2 == false)
|
||||
mediaTest.CanReadCorrectedSubchannelWithC2 = !_dev.ReadCd(out buffer, out senseBuffer,
|
||||
16, 2714, 1,
|
||||
MmcSectorTypes.AllTypes, false,
|
||||
false, true,
|
||||
MmcHeaderCodes.AllHeaders, true,
|
||||
true,
|
||||
MmcErrorField.C2PointersAndBlock,
|
||||
MmcSubchannel.Rw, _dev.Timeout,
|
||||
out _);
|
||||
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
|
||||
!mediaTest.CanReadCorrectedSubchannelWithC2);
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
|
||||
!mediaTest.CanReadCorrectedSubchannelWithC2);
|
||||
|
||||
mediaTest.CorrectedSubchannelWithC2Data = buffer;
|
||||
mediaTest.CorrectedSubchannelWithC2Data = buffer;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1695,15 +1717,22 @@ public sealed partial class DeviceReport
|
||||
|
||||
mediaTest.RWSubchannelData = buffer;
|
||||
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2144, 1,
|
||||
MmcSectorTypes.AllTypes, false, false, false,
|
||||
MmcHeaderCodes.None, true, false,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
// AccessTek/Optorite DD0203 returns OK but then the firmware dies
|
||||
if(_dev.Model.StartsWith("DVD RW 4XMax", StringComparison.Ordinal))
|
||||
mediaTest.CanReadCorrectedSubchannel = false;
|
||||
else
|
||||
{
|
||||
mediaTest.CanReadCorrectedSubchannel = !_dev.ReadCd(out buffer, out senseBuffer, 16, 2144, 1,
|
||||
MmcSectorTypes.AllTypes, false, false,
|
||||
false, MmcHeaderCodes.None, true, false,
|
||||
MmcErrorField.None, MmcSubchannel.Rw,
|
||||
_dev.Timeout, out _);
|
||||
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}", !mediaTest.CanReadCorrectedSubchannel);
|
||||
AaruConsole.DebugWriteLine("SCSI Report", "Sense = {0}",
|
||||
!mediaTest.CanReadCorrectedSubchannel);
|
||||
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
mediaTest.CorrectedSubchannelData = buffer;
|
||||
}
|
||||
});
|
||||
|
||||
Spectre.ProgressSingleSpinner(ctx =>
|
||||
|
||||
@@ -465,6 +465,7 @@
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nuon/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Nvme/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=opticals/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Optorite/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=OSTA/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=Overmount/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=pangram/@EntryIndexedValue">True</s:Boolean>
|
||||
|
||||
Reference in New Issue
Block a user