Files

1702 lines
62 KiB
C#

// /***************************************************************************
// Aaru Data Preservation Suite
// ----------------------------------------------------------------------------
//
// Filename : FromSsc.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// Component : Aaru common types.
//
// --[ License ] --------------------------------------------------------------
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// ----------------------------------------------------------------------------
// Copyright © 2011-2025 Natalia Portillo
// ****************************************************************************/
using System;
using Aaru.Logging;
namespace Aaru.CommonTypes;
public static partial class MediaTypeFromDevice
{
/// <summary>Gets the media type from an SCSI Streaming Commands compliant device</summary>
/// <param name="vendor">Vendor string</param>
/// <param name="model">Model string</param>
/// <param name="mediumType">Medium type from MODE SENSE</param>
/// <param name="densityCode">Density code from MODE SENSE</param>
/// <returns>Media type</returns>
public static MediaType GetFromSsc(string vendor, string model, byte mediumType, byte densityCode)
{
switch(mediumType)
{
case 0x00:
switch(densityCode)
{
case 0x04:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_QIC11,
mediumType,
densityCode);
return MediaType.QIC11;
case 0x05:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_QIC24,
mediumType,
densityCode);
return MediaType.QIC24;
case 0x09:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3490,
mediumType,
densityCode);
return MediaType.IBM3490;
case 0x0F:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_QIC120,
mediumType,
densityCode);
return MediaType.QIC120;
case 0x10:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_QIC150,
mediumType,
densityCode);
return MediaType.QIC150;
case 0x13:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS,
mediumType,
densityCode);
return MediaType.DDS1;
case 0x24:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS2,
mediumType,
densityCode);
return MediaType.DDS2;
case 0x25:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS3,
mediumType,
densityCode);
return MediaType.DDS3;
case 0x26:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS4,
mediumType,
densityCode);
return MediaType.DDS4;
case 0x28:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3490E,
mediumType,
densityCode);
return MediaType.IBM3490E;
case 0x40:
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO_ult,
mediumType,
densityCode);
return MediaType.LTO;
}
if(model.StartsWith("sdz", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_SAIT,
mediumType,
densityCode);
return MediaType.SAIT1;
}
break;
case 0x41:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO2_ult,
mediumType,
densityCode);
return MediaType.LTO2;
}
break;
}
case 0x42:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO2_ult,
mediumType,
densityCode);
return MediaType.LTO2;
}
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T9840A,
mediumType,
densityCode);
return MediaType.T9840A;
}
break;
}
case 0x43:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T9940A,
mediumType,
densityCode);
return MediaType.T9940A;
}
break;
}
case 0x44:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO3,
mediumType,
densityCode);
return MediaType.LTO3;
}
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T9940B,
mediumType,
densityCode);
return MediaType.T9940B;
}
break;
}
case 0x45:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T9940C,
mediumType,
densityCode);
return MediaType.T9840C;
}
break;
}
case 0x46:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO4,
mediumType,
densityCode);
return MediaType.LTO4;
}
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T9840D,
mediumType,
densityCode);
return MediaType.T9840D;
}
break;
}
case 0x4A:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T10000A,
mediumType,
densityCode);
return MediaType.T10000A;
}
break;
}
case 0x4B:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T10000B,
mediumType,
densityCode);
return MediaType.T10000B;
}
break;
}
case 0x4C:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T10000C,
mediumType,
densityCode);
return MediaType.T10000C;
}
break;
}
case 0x4D:
{
if(vendor.Equals("stk", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_T10000D,
mediumType,
densityCode);
return MediaType.T10000D;
}
break;
}
case 0x58:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO5,
mediumType,
densityCode);
return MediaType.LTO5;
}
break;
}
// Used by some HP drives for all generations
case 0x8C:
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS,
mediumType,
densityCode);
return MediaType.DDS1;
}
}
break;
case 0x01:
{
switch(densityCode)
{
case 0x44:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO3,
mediumType,
densityCode);
return MediaType.LTO3WORM;
}
break;
}
case 0x46:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO4,
mediumType,
densityCode);
return MediaType.LTO4WORM;
}
break;
}
case 0x58:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO5,
mediumType,
densityCode);
return MediaType.LTO5WORM;
}
break;
}
}
}
break;
case 0x18:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO_ult,
mediumType,
densityCode);
return MediaType.LTO;
}
break;
}
case 0x40:
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO,
mediumType,
densityCode);
return MediaType.LTO;
}
}
}
break;
case 0x28:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO2_ult,
mediumType,
densityCode);
return MediaType.LTO2;
}
break;
}
case 0x42:
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO2,
mediumType,
densityCode);
return MediaType.LTO2;
}
}
}
break;
case 0x33:
{
switch(densityCode)
{
case 0x00:
case 0x25:
{
if(model.StartsWith("dat", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS3_dat,
mediumType,
densityCode);
return MediaType.DDS3;
}
break;
}
}
}
break;
case 0x34:
{
switch(densityCode)
{
case 0x00:
case 0x26:
{
if(model.StartsWith("dat", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS4_alt,
mediumType,
densityCode);
return MediaType.DDS4;
}
break;
}
}
}
break;
case 0x35:
{
switch(densityCode)
{
case 0x00:
case 0x47:
{
if(model.StartsWith("dat", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DAT72_dat,
mediumType,
densityCode);
return MediaType.DAT72;
}
break;
}
}
}
break;
case 0x38:
{
switch(densityCode)
{
case 0x00:
case 0x44:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO3,
mediumType,
densityCode);
return MediaType.LTO3;
}
break;
}
}
}
break;
case 0x3C:
{
switch(densityCode)
{
case 0x00:
case 0x44:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO3,
mediumType,
densityCode);
return MediaType.LTO3WORM;
}
break;
}
}
}
break;
case 0x48:
{
switch(densityCode)
{
case 0x00:
case 0x46:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO4,
mediumType,
densityCode);
return MediaType.LTO4;
}
break;
}
}
}
break;
case 0x4C:
{
switch(densityCode)
{
case 0x00:
case 0x46:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO4,
mediumType,
densityCode);
return MediaType.LTO4WORM;
}
break;
}
}
}
break;
case 0x50:
{
switch(densityCode)
{
case 0x00:
case 0x24:
{
if(model.StartsWith("dat", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DDS2_dat,
mediumType,
densityCode);
return MediaType.DDS2;
}
break;
}
}
}
break;
case 0x58:
{
switch(densityCode)
{
case 0x00:
case 0x58:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO5,
mediumType,
densityCode);
return MediaType.LTO5;
}
break;
}
}
}
break;
case 0x5C:
{
switch(densityCode)
{
case 0x00:
case 0x58:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO5,
mediumType,
densityCode);
return MediaType.LTO5WORM;
}
break;
}
}
}
break;
case 0x68:
{
switch(densityCode)
{
case 0x00:
case 0x5A:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO6_ult,
mediumType,
densityCode);
return MediaType.LTO6;
}
break;
}
}
}
break;
case 0x6C:
{
switch(densityCode)
{
case 0x00:
case 0x5A:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO6_ult,
mediumType,
densityCode);
return MediaType.LTO6WORM;
}
break;
}
}
}
break;
case 0x78:
{
switch(densityCode)
{
case 0x00:
case 0x5C:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_LTO7_ult,
mediumType,
densityCode);
return MediaType.LTO7;
}
break;
}
}
}
break;
case 0x7C:
{
switch(densityCode)
{
case 0x00:
case 0x5C:
{
if(model.StartsWith("ult", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_WORM_LTO7_ult,
mediumType,
densityCode);
return MediaType.LTO7WORM;
}
break;
}
}
}
break;
case 0x81:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_15m,
mediumType,
densityCode);
return MediaType.Exatape15m;
}
if(vendor.Equals("ibm", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3592,
mediumType,
densityCode);
return MediaType.IBM3592;
}
if(model.StartsWith("vxa", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_VXA,
mediumType,
densityCode);
return MediaType.VXA1;
}
break;
}
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_15m,
mediumType,
densityCode);
return MediaType.Exatape15m;
}
break;
}
case 0x29:
case 0x2A:
{
if(vendor.Equals("ibm", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3592,
mediumType,
densityCode);
return MediaType.IBM3592;
}
break;
}
case 0x80:
{
if(model.StartsWith("vxa", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_VXA,
mediumType,
densityCode);
return MediaType.VXA1;
}
break;
}
}
}
break;
case 0x82:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_28m,
mediumType,
densityCode);
return MediaType.Exatape28m;
}
if(vendor.Equals("ibm", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3592,
mediumType,
densityCode);
return MediaType.IBM3592;
}
break;
}
case 0x0A:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_CompactTape,
mediumType,
densityCode);
return MediaType.CompactTapeI;
}
break;
}
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_28m,
mediumType,
densityCode);
return MediaType.Exatape28m;
}
break;
}
case 0x16:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_CompactTapeII,
mediumType,
densityCode);
return MediaType.CompactTapeII;
}
break;
}
case 0x29:
case 0x2A:
{
if(vendor.Equals("ibm", StringComparison.InvariantCultureIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_IBM3592,
mediumType,
densityCode);
return MediaType.IBM3592;
}
break;
}
case 0x81:
{
if(model.StartsWith("vxa", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_VXA2,
mediumType,
densityCode);
return MediaType.VXA2;
}
break;
}
case 0x82:
{
if(model.StartsWith("vxa", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_VXA3,
mediumType,
densityCode);
return MediaType.VXA3;
}
break;
}
}
}
break;
case 0x83:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_54m,
mediumType,
densityCode);
return MediaType.Exatape54m;
}
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIII,
mediumType,
densityCode);
return MediaType.DLTtapeIII;
}
break;
}
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_54m,
mediumType,
densityCode);
return MediaType.Exatape54m;
}
break;
}
case 0x17:
case 0x18:
case 0x19:
case 0x80:
case 0x81:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIII,
mediumType,
densityCode);
return MediaType.DLTtapeIII;
}
break;
}
}
}
break;
case 0x84:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_80m,
mediumType,
densityCode);
return MediaType.Exatape80m;
}
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIIIxt,
mediumType,
densityCode);
return MediaType.DLTtapeIIIxt;
}
break;
}
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_80m,
mediumType,
densityCode);
return MediaType.Exatape80m;
}
break;
}
case 0x19:
case 0x80:
case 0x81:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIIIxt,
mediumType,
densityCode);
return MediaType.DLTtapeIIIxt;
}
break;
}
}
}
break;
case 0x85:
{
switch(densityCode)
{
case 0x00:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_106m,
mediumType,
densityCode);
return MediaType.Exatape106m;
}
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIV,
mediumType,
densityCode);
return MediaType.DLTtapeIV;
}
if(model.StartsWith("stt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Travan5_stt,
mediumType,
densityCode);
return MediaType.Travan5;
}
break;
}
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_106m,
mediumType,
densityCode);
return MediaType.Exatape106m;
}
break;
}
case 0x1A:
case 0x1B:
case 0x40:
case 0x41:
case 0x82:
case 0x83:
case 0x84:
case 0x85:
case 0x86:
case 0x87:
case 0x88:
case 0x89:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_DLTtapeIV,
mediumType,
densityCode);
return MediaType.DLTtapeIV;
}
break;
}
case 0x46:
{
if(model.StartsWith("stt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Travan5_stt,
mediumType,
densityCode);
return MediaType.Travan5;
}
break;
}
}
}
break;
case 0x86:
{
switch(densityCode)
{
case 0x00:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_160m,
mediumType,
densityCode);
return MediaType.Exatape160mXL;
}
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_SDLT,
mediumType,
densityCode);
return MediaType.SDLT1;
}
break;
}
case 0x8C:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_160m,
mediumType,
densityCode);
return MediaType.Exatape160mXL;
}
break;
}
case 0x91:
case 0x92:
case 0x93:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_SDLT,
mediumType,
densityCode);
return MediaType.SDLT1;
}
break;
}
}
}
break;
case 0x87:
{
switch(densityCode)
{
case 0x00:
case 0x4A:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_SDLT2,
mediumType,
densityCode);
return MediaType.SDLT2;
}
break;
}
}
}
break;
case 0x90:
{
switch(densityCode)
{
case 0x00:
case 0x50:
case 0x98:
case 0x99:
{
if(model.StartsWith("dlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("sdlt", StringComparison.OrdinalIgnoreCase) ||
model.StartsWith("superdlt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_VStape,
mediumType,
densityCode);
return MediaType.VStapeI;
}
break;
}
}
}
break;
case 0x95:
{
if(model.StartsWith("stt", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Travan7,
mediumType,
densityCode);
return MediaType.Travan7;
}
}
break;
case 0xB6:
{
switch(densityCode)
{
case 0x45:
// HP Colorado tapes have a different capacity but return same density code at least in Seagate drives
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Travan4,
mediumType,
densityCode);
return MediaType.Travan4;
}
}
break;
case 0xB7:
{
switch(densityCode)
{
case 0x47:
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Travan5,
mediumType,
densityCode);
return MediaType.Travan5;
}
}
break;
case 0xC1:
{
switch(densityCode)
{
case 0x00:
case 0x14:
case 0x15:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_22m,
mediumType,
densityCode);
return MediaType.Exatape22m;
}
break;
}
}
}
break;
case 0xC2:
{
switch(densityCode)
{
case 0x00:
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_40m,
mediumType,
densityCode);
return MediaType.Exatape40m;
}
break;
}
}
}
break;
case 0xC3:
{
switch(densityCode)
{
case 0x00:
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_76m,
mediumType,
densityCode);
return MediaType.Exatape76m;
}
break;
}
}
}
break;
case 0xC4:
{
switch(densityCode)
{
case 0x00:
case 0x14:
case 0x15:
case 0x27:
case 0x8C:
case 0x90:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_112m,
mediumType,
densityCode);
return MediaType.Exatape112m;
}
break;
}
}
}
break;
case 0xD1:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_22m_AME,
mediumType,
densityCode);
return MediaType.Exatape22mAME;
}
break;
}
}
}
break;
case 0xD2:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_170m,
mediumType,
densityCode);
return MediaType.Exatape170m;
}
break;
}
}
}
break;
case 0xD3:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_125m,
mediumType,
densityCode);
return MediaType.Exatape125m;
}
break;
}
}
}
break;
case 0xD4:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_45m,
mediumType,
densityCode);
return MediaType.Exatape45m;
}
break;
}
}
}
break;
case 0xD5:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_225m,
mediumType,
densityCode);
return MediaType.Exatape225m;
}
break;
}
}
}
break;
case 0xD6:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_150m,
mediumType,
densityCode);
return MediaType.Exatape150m;
}
break;
}
}
}
break;
case 0xD7:
{
switch(densityCode)
{
case 0x00:
case 0x27:
case 0x28:
{
if(model.StartsWith("exb", StringComparison.OrdinalIgnoreCase))
{
AaruLogging.Debug(MODULE_NAME,
Localization.SCSI_Media_Type_Description_Exatape_75m,
mediumType,
densityCode);
return MediaType.Exatape75m;
}
break;
}
}
}
break;
}
return MediaType.Unknown;
}
}