// /*************************************************************************** // Aaru Data Preservation Suite // ---------------------------------------------------------------------------- // // Filename : Symbian.cs // Author(s) : Natalia Portillo // // Component : Symbian plugin. // // --[ Description ] ---------------------------------------------------------- // // Identifies Symbian installer (.sis) packages and shows information. // // --[ License ] -------------------------------------------------------------- // // This library is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; either version 2.1 of the // License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, see . // // ---------------------------------------------------------------------------- // Copyright © 2011-2025 Natalia Portillo // ****************************************************************************/ using System; using System.Diagnostics.CodeAnalysis; namespace Aaru.Archives; [SuppressMessage("ReSharper", "UnusedMember.Local")] [SuppressMessage("ReSharper", "UnusedType.Local")] [SuppressMessage("ReSharper", "UnusedType.Global")] [SuppressMessage("ReSharper", "InconsistentNaming")] public sealed partial class Symbian { #region Nested type: Attribute enum Attribute : uint { /// /// /// Manufacturer = 0x00000000, /// /// 0x0100 = 1.00 /// ManufacturerHardwareRev = 0x00000001, /// /// 0x0100 = 1.00 /// ManufacturerSoftwareRev = 0x00000002, /// /// Manufacturer specific /// ManufacturerSoftwareBuild = 0x00000003, Model = 0x00000004, /// /// Device specific values for products as defined in epoc32\include\hal_data.h /// MachineUid = 0x00000005, /// /// /// DeviceFamily = 0x00000006, /// /// 0x0100 = 1.00 /// DeviceFamilyRev = 0x00000007, /// /// /// CPU = 0x00000008, /// /// /// CPUArch = 0x00000009, /// /// /// CPUABI = 0x0000000a, /// /// CPU clock speed / 1024, e.g. 36864=36MHz /// CPUSpeed = 0x0000000b, /// /// Tick period in microseconds /// SystemTickPeriod = 0x0000000e, /// /// Approximate speed relative to Psion Series 5 = 100 /// SystemSpeed = 0x0000000e, /// /// Total RAM size in bytes /// MemoryRAM = 0x0000000f, /// /// Free RAM size in bytes /// MemoryRAMFree = 0x00000010, /// /// Total ROM size /// MemoryROM = 0x00000011, /// /// Size of memory management unit pages /// MemoryPageSize = 0x00000012, /// /// 0=none, 1=supported /// PowerBackup = 0x00000015, /// /// 0=none, 1=keypad, 2=full, 3=both /// Keyboard = 0x00000018, /// /// Number of device specific keys /// KeyboardDeviceKeys = 0x00000019, /// /// Number of application keys /// KeyboardAppKeys = 0x0000001a, /// /// 0=none, 1=supported /// KeyboardClick = 0x0000001b, KeyboardClickVolumeMax = 0x0000001e, /// /// Screen width in pixels /// DisplayXPixels = 0x0000001f, /// /// Screen height in pixels /// DisplayYPixels = 0x00000020, /// /// Screen width in twips (1/1440 inch) /// DisplayXTwips = 0x00000021, /// /// Screen height in twips (1/1440 inch) /// DisplayYTwips = 0x00000022, /// /// 2, 4, 16, 256, 65536, etc /// DisplayColors = 0x00000023, DisplayContrastMax = 0x00000026, /// /// 0=none, 1=supported /// Backlight = 0x00000027, /// /// 0=none, 1=supported /// Pen = 0x00000029, /// /// Pen horizontal resolution /// PenX = 0x0000002a, /// /// Pen vertical resolution /// PenY = 0x0000002b, /// /// 0=no 1=yes /// PenDisplayOn = 0x0000002c, /// /// 0=none, 1=supported /// PenClick = 0x0000002d, PenClickVolumeMax = 0x00000030, /// /// 0=none, 1=supported /// Mouse = 0x00000031, /// /// Mouse horizontal resolution /// MouseX = 0x00000032, /// /// Mouse vertical resolution /// MouseY = 0x00000033, /// /// Number of mouse buttons /// MouseButtons = 0x00000037, /// /// 0=none, 1=supported /// CaseSwitch = 0x0000003a, /// /// Number of LEDs /// LEDs = 0x0000003d, /// /// 0=none, 1=supported /// IntegratedPhone = 0x0000003f, DisplayBrightnessMax = 0x00000041, KeyboardBacklightState = 0x00000042, AccessoryPower = 0x00000043, /// /// Number of supported HAL attributes /// NumHalAttributes = 0x00000059, /// /// Machine language /// Language = 0x00001000, /// /// 0=Symbian OS based install, 1=installation via a PC /// RemoteInstall = 0x00001001 } #endregion #region Nested type: ConditionalType enum ConditionalType : uint { /// /// a == b /// Equals, /// /// a != b /// Differs, /// /// a > b /// GreaterThan, /// /// a < b /// LessThan, /// /// a >= b /// GreaterOrEqualThan, /// /// a <= b /// LessOrEqualThan, /// /// a AND b /// And, /// /// a OR b /// Or, /// /// exists(filename) /// Exists, /// /// devcap(capability) /// DeviceCapability, /// /// appcap(uid, capability) /// ApplicationCapability, /// /// NOT a /// Not, /// /// String /// String, /// /// Attribute /// Attribute, /// /// Number /// Number } #endregion #region Nested type: CpuAbiCode enum CpuAbiCode { ARM4 = 0, ARMI = 1, Thumb = 2, MCORE = 3, MSVC = 4 } #endregion #region Nested type: CpuArchitecture enum CpuArchitecture { ARM4 = 0x400, ARM4T = 0x410, ARM5 = 0x500, M340 = 0x300 } #endregion #region Nested type: CpuCode enum CpuCode { ARM = 0, MCORE = 1, x86 = 2 } #endregion #region Nested type: DeviceFamilyCode enum DeviceFamilyCode { Crystal = 0, Pearl = 1, Quartz = 2 } #endregion #region Nested type: FileDetails /// /// Gives some specific details about how to handle some special files /// enum FileDetails : uint { /// /// Show the continue button and continue installing /// TextContinue = 0, /// /// Show a yes and a no button and skip next file on no /// TextSkip = 1, /// /// Show a yes and a no button and abort installation on no /// TextAbort = 2, /// /// Show a yes and a no button and abort and undo installation on no /// TextExit = 3, /// /// Run during installation /// RunInstall = 0, /// /// Run during uninstallation /// RunRemove = 1, /// /// Run during both installation and uninstallation /// RunBoth = 2, /// /// Works as a flag. Close when installation is complete. /// RunsEnd = 0x100, /// /// Works as a flag. Wait for it to close before continuing. /// RunWait = 0x200, /// /// Works as a flag. Close when installation is complete. /// OpenClose = 0x100, /// /// Works as a flag. Wait for it to close before continuing. /// OpenWait = 0x200 } #endregion #region Nested type: FileRecordType /// /// Define the file record type and therefore its structure /// enum FileRecordType : uint { /// /// Points to a single file /// SimpleFile = 0, /// /// Points to an array of files sorted by the language codes /// MultipleLanguageFiles = 1, /// /// Points to an array of option strings /// Options = 2, If = 3, ElseIf = 4, Else = 5, EndIf = 6, /// /// Found in the wild, doesn't seem to contain any data, and doesn't count like a file entry either /// Skip = 0xFFFFFFFF } #endregion #region Nested type: FileType /// /// Defines the file type /// enum FileType : uint { /// /// Standard file /// File = 0, /// /// Text file to show during installation /// FileText = 1, /// /// SIS component /// Component = 2, /// /// File to run during installation /// FileRun = 3, /// /// File does not exist in SIS, will be created when application runs /// FileNull = 4, /// /// Open file using whatever app is associated with its MIME type /// FileMime = 5 } #endregion #region Nested type: LanguageCodes [SuppressMessage("ReSharper", "InconsistentNaming")] enum LanguageCodes { Test = 0, EN, FR, GE, SP, IT, SW, DA, NO, FI, AM, SF, SG, PO, TU, IC, RU, HU, DU, BL, AU, BF, AS, NZ, IF, CS, SK, PL, SL, TC, HK, ZH, JA, TH, AF, SQ, AH, AR, HY, TL, BE, BN, BG, MY, CA, HR, CE, IE, ZA, ET, FA, CF, GD, KA, EL, CG, GU, HE, HI, IN, GA, SZ, KN, KK, KM, KO, LO, LV, LT, MK, MS, ML, MR, MO, MN, NN, BP, PA, RO, SR, SI, SO, OS, LS, SH, FS, TA, TE, BO, TI, CT, TK, UK, UR, VI, CY, ZU } #endregion #region Nested type: ManufacturerCode enum ManufacturerCode { Ericsson = 0, Motorola = 1, Nokia = 2, Panasonic = 3, Psion = 4, Intel = 5, Cogent = 6, Cirrus = 7 } #endregion #region Nested type: SymbianOptions /// /// Options /// [Flags] enum SymbianOptions : ushort { IsUnicode = 0x0001, IsDistributable = 0x0002, NoCompress = 0x0008, ShutdownApps = 0x0010 } #endregion #region Nested type: SymbianType // Types enum SymbianType : ushort { /// /// Application /// Application = 0x0000, /// /// System component (library) /// SystemComponent = 0x0001, /// /// Optional component /// OptionalComponent = 0x0002, /// /// Configures an application /// Configurator = 0x0003, /// /// Patch /// Patch = 0x0004, /// /// Upgrade /// Upgrade = 0x0005 } #endregion }