diff --git a/MediaTypeFromDevice/FromMmc.cs b/MediaTypeFromDevice/FromMmc.cs index 5532a0c..f097917 100644 --- a/MediaTypeFromDevice/FromMmc.cs +++ b/MediaTypeFromDevice/FromMmc.cs @@ -39,7 +39,8 @@ namespace Aaru.CommonTypes { public static partial class MediaTypeFromDevice { - static MediaType GetFromMmc(string model, byte mediumType, byte densityCode, ulong blocks, uint blockSize) + static MediaType GetFromMmc(string model, byte mediumType, byte densityCode, ulong blocks, uint blockSize, + bool isUsb) { switch(mediumType) { @@ -121,6 +122,14 @@ namespace Aaru.CommonTypes "SCSI medium type is {0:X2}h, setting media type to CD-RW.", mediumType); return MediaType.CDRW; + case 0x40 when isUsb: + case 0x41 when isUsb: + case 0x42 when isUsb: + AaruConsole.DebugWriteLine("Media detection", + "SCSI medium type is {0:X2}h and device is USB, setting media type to Flash Drive.", + mediumType); + + return MediaType.FlashDrive; case 0x80: if(model.ToLowerInvariant().StartsWith("ult", StringComparison.Ordinal)) switch(densityCode) diff --git a/MediaTypeFromDevice/FromScsi.cs b/MediaTypeFromDevice/FromScsi.cs index 6b4e776..508b157 100644 --- a/MediaTypeFromDevice/FromScsi.cs +++ b/MediaTypeFromDevice/FromScsi.cs @@ -47,9 +47,10 @@ namespace Aaru.CommonTypes /// The density type byte from MODE SENSE /// How many blocks are on the media /// Size in bytes of each block + /// Device is USB /// public static MediaType GetFromScsi(byte scsiPeripheralType, string vendor, string model, byte mediumType, - byte densityCode, ulong blocks, uint blockSize) + byte densityCode, ulong blocks, uint blockSize, bool isUsb) { switch(scsiPeripheralType) { @@ -74,7 +75,7 @@ namespace Aaru.CommonTypes case 0x07: return GetFromOdc(mediumType, blocks, blockSize); // MultiMedia Device - case 0x05: return GetFromMmc(model, mediumType, densityCode, blocks, blockSize); + case 0x05: return GetFromMmc(model, mediumType, densityCode, blocks, blockSize, isUsb); // MD DATA drives case 0x10 when model.StartsWith("MDM", StringComparison.Ordinal) ||