LEXMARK-MPS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    lexmark, lexmarkModules
        FROM LEXMARK-ROOT-MIB
    UnitsTC, PaperSizeTC, PaperTypeTC, AdminStatusTC, StatusTC, KeyValueTC
        FROM LEXMARK-TC-MIB
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    Counter32, Integer32, MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    DateAndTime, DisplayString, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    PrtAlertCodeTC, PrtAlertTrainingLevelTC, PrtAlertSeverityLevelTC, PrtOutputPageDeliveryOrientationTC
        FROM Printer-MIB;

mpsMibModule MODULE-IDENTITY
    LAST-UPDATED "201105171342Z"
    ORGANIZATION "Lexmark International, Inc."
    CONTACT-INFO "Contact your local support team or service provider."
    DESCRIPTION
        "The MIB module for information on devices connected through a print
        server.  Information should be provided by the devices themselves.

        Copyright (C) 2009 Lexmark International, Inc."
    REVISION    "201905021514Z"
    DESCRIPTION
        "Version 2.0.0
                       Added new values for paperGeneralCountTable:
                          clickCountPrintMono(130)
                          clickCountPrintColor(131)
                          clickCountScan(132)"
    REVISION    "201902140850Z"
    DESCRIPTION
        "Version 1.9.0
                       Added new value for paperGeneralCountTable:
                          continuousPrint(7)
                       Added new value for currentSuppliesTable:
                          currentSupplyDaysRemaining"
    REVISION    "201709200850Z"
    DESCRIPTION
        "Version 1.8.0 Modified supplyHistogramWithHistoryTable indexer."
    REVISION    "201709151530Z"
    DESCRIPTION
        "Version 1.7.0 Added new values for genCountType:
                    rawLifetimeBlackCoverage(68),
                    rawLifetimeCyanCoverage(69)
                    rawLifetimeYellowCoverage(70)
                    rawLifetimeMagentaCoverage(71)"
    REVISION    "201708181607Z"
    DESCRIPTION
        "Version 1.6.0 Added new values for SupplyTypeTC and CartridgeTypeTC"
    REVISION    "201701191632Z"
    DESCRIPTION
        "Version 1.5.0 Added column(supplyDynamicIndex) in supplyInventoryTable."
    REVISION    "201612141646Z"
    DESCRIPTION
        "Version 1.4.0 Added table supplyHistogramWithHistoryTable"
    REVISION    "201105171342Z"
    DESCRIPTION
        "Version 1.3.0 Added columns deviceAlertTrainingLevel,
        deviceAlertSeverityLevel and deviceAlertPrtCode to deviceAlertTable"
    REVISION    "201104041257Z"
    DESCRIPTION
        "Version 1.2.0 Added values printerPageCount(80) and
        modularPageCount(81) to paperGeneralCountType definition."
    REVISION    "201012222006Z"
    DESCRIPTION
        "Version 1.1.0 Added values transferUnit(16) and
        optionTransferUnit(272) to hwInventoryType definition."
    REVISION    "201012012300Z"
    DESCRIPTION
        "Version 1.0.0 of the LEXMARK-MPS-MIB"
    REVISION    "200911242040Z"
    DESCRIPTION
        "Version 0.0.1 Initial release of LEXMARK-MPS-MIB"
    ::= { lexmarkModules 4 }

mps                  OBJECT IDENTIFIER ::= { lexmark 6 }

mpsMIBAdminInfo      OBJECT IDENTIFIER ::= { mps 1 }
mpsMIBCompliances    OBJECT IDENTIFIER ::= { mpsMIBAdminInfo 1 }
mpsMIBGroups         OBJECT IDENTIFIER ::= { mpsMIBAdminInfo 2 }

device               OBJECT IDENTIFIER ::= { mps 2 }
inventory            OBJECT IDENTIFIER ::= { mps 3 }
stats                OBJECT IDENTIFIER ::= { mps 4 }
alerts               OBJECT IDENTIFIER ::= { mps 5 }
logs                 OBJECT IDENTIFIER ::= { mps 6 }
applications         OBJECT IDENTIFIER ::= { mps 7 }
outputfeature        OBJECT IDENTIFIER ::= { mps 8 }

generalStats         OBJECT IDENTIFIER ::= { stats 1 }
paperStats           OBJECT IDENTIFIER ::= { stats 2 }
scanStats            OBJECT IDENTIFIER ::= { stats 3 }
supplyStats          OBJECT IDENTIFIER ::= { stats 4 }

-- Textual Conventions used by this MIB


SupplyTypeTC ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
        "Type of supply"
    SYNTAX      INTEGER {
                    unknown(1),
                    other(2),
                    inkCartridge(3),
                    inkBottle(4),
                    inkPrinthead(5),
                    toner(6),
                    photoconductor(7),
                    transferModule(8),
                    fuser(9),
                    wastetonerBox(10),
                    staples(11),
                    holepunchBox(12),
                    tonerMicr(13),
                    photoconductorMicr(14)
                }

CartridgeTypeTC ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Type of supply cartridge.  If this integer is looked at as a
         binary number, the bottom 4 bits define general information about
         the cartridge, and higher level bits will determine if the
         cartridge is a returnProgram, refill, etc.
          - bit 0-3  - General cartridge type
          - bit 4    - Return Program cartridge
          - bit 5    - Refilled Cartridge"
    SYNTAX      INTEGER {
                    unknown (1),
                    other(2),
                    invalid(3),
                    shipWith(4),

                    standard(5),
                    highYieldStandard(6),
                    extraHighYieldStandard(7),

                    otherGenuine(8),
                    standardGenuine(9),
                    otherNonGenuine(10),
                    standardNonGenuine(11),

                    returnProgram(21),                       -- 16 + 5
                    highYieldReturnProgram(22),              -- 16 + 6
                    extraHighYieldReturnProgram(23),         -- 16 + 7
                    standardReturnProgramGenuine(24),
                    otherReturnProgramGenuine(25),
                    standardNonReturnProgram(26),
                    otherNonReturnProgram(27),

                    refilledStandard(37),                    -- 32 + 5
                    refilledHighYieldStandard(38),           -- 32 + 6
                    refilledExtraHighYieldStandard(39),      -- 32 + 7

                    refilledReturnProgram(53),               -- 16 + 32 + 5
                    refilledHighYieldReturnProgram(54),      -- 16 + 32 + 6
                    refilledExtraHighYieldReturnProgram(55)  -- 16 + 32 + 7

                }

SeverityTC ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "A list of possible alert codes.
        Definitions:
        informational   - Status messages that do not require user intervention.
                          Examples: 'Fuser Warming', 'Scanner warming'
        warning         - A condition that may effect the ability of the device
                          to function in the near future.
                          Examples: 'Toner Low', 'Tray 1 Empty'
        critical        - A condition that will keep the device from functioning
                          until it is addressed by the user or admin.  Critical
                          errors can be addressed without power cycling the
                          device.
                          Examples: 'Load Tray 1', 'Black Toner Empty'
        serviceRequired - A condition that keeps the device from functioning and
                          can not be addressed by the user or admin.
                          serviceRequired errors will require power cycling the
                          device to replace a defective part.
                          Examples: 'NVRAM failure', 'Memory Error'"
    SYNTAX      INTEGER {
                   unknown(1),
                   other(2),
                   informational(3),
                   warning(4),
                   critical(5),
                   serviceRequired(6)
                   }

AlertCodeTC ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "A list of possible alert codes."
    SYNTAX      INTEGER {
                   unknown(1),
                   other(2),
                   coverOpen(3),
                   coverClosed(4),
                   interlockOpen(5),
                   interlockClosed(6),
                   doorOpen(7),
                   doorClosed(8),
                   calibrating(9),
                   alignmentFailed(10),
                   warrantyOverrideRequired(11),
                   printHeadCarrierPathObstructed(12),
                   heldJobsMayNotBeRestored(13),
                   busy(14),
                   waiting(15),

                   subunitErrorOther(100),
                   subunitLifeAlmostOver(101),
                   subunitLifeOver(102),
                   subunitJammed(103),
                   subunitUnderTemperature(104),
                   subunitOverTemperature(105),
                   subunitInsufficientMemory(106),
                   subunitMemoryFull(107),
                   subunitNVFailure(108),
                   subunitDisabled(109),
                   subunitCommunicationError(110),

                   supplyErrorOther(200),
                   supplyOk(201),
                   supplyEarlyWarning(202),
                   supplyNearFull(203),
                   supplyFull(205),
                   supplyNearLow(206),
                   supplyLow(207),
                   supplyNearEmpty(208),
                   supplyEmpty(209),
                   supplyLifeAlmostOver(210),
                   supplyLifeOver(211),
                   supplyNearReplace(212),
                   supplyReplace(213),
                   supplyMissing(214),
                   supplyInvalid(215),
                   supplyDefective(216),
                   supplyImproperInstall(217),
                   supplyUnsupported(218),
                   supplyUncalibrated(219),

                   inputMediaErrorOther(300),
                   inputMediaTrayMissing(301),
                   inputMediaSupplyLow(302),
                   inputMediaSupplyEmpty(303),
                   inputMediaChangeRequest(304),
                   inputMediaLoadRequest(305),

                   outputMediaErrorOther(400),
                   outputMediaTrayMissing(401),
                   outputMediaNearFull(402),
                   outputMediaFull(403),
                   outputMediaEmptyRequest(404),

                   mediaPathErrorOther(500),
                   mediaPathPaperJam(501),

                   scannerErrorOther(600),
                   scannerLampWarming(601),
                   scannerLampLifeWarning(602),
                   scannerLampError(603),
                   scannerADFJam(604),
                   scannerStalled(605),
                   scannerLocked(606),
                   scannerDisabled(607),

                   faxErrorOther(700),
                   faxStorageNearFull(701),
                   faxStorageFull(702),
                   faxStorageSendNearFull(703),
                   faxStorageSendFull(704),
                   faxStorageReceiveNearFull(705),
                   faxStorageReceiveFull(706),
                   faxPhoneLineDisconnected(707),
                   faxDisabled(708),
                   faxConfigurationError(709),

                   interpreterErrorOther(800),
                   interpreterInsufficientMemory(801),
                   interpreterOutOfMemory(802),
                   interpreterComplexPage(803),
                   interpreterJobHardwareMismatch(804),
                   interpreterPrintDataExceedsMediaSize(805),

                   emailErrorOther(900),
                   emailConfigurationError(901),

                   storageErrorOther(1000),
                   storageUnformatted(1001),
                   storageFull(1002),

                   neverError(20000)
                }

-- The Lexmark Device Group

deviceMibLocalization OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of the prtLocalizationIndex in the Printer-MIB which
         corresponds to the language, country, and character set to be used for
         encoding any of the translated objects in this MIB.  This object does
         NOT change the localization of the console.  The default value for this
         object should be the language chosen by the user during the initial
         setup.  When read this object should return the current localization
         value."
     ::= { device 1 }

-- The device table

deviceTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DeviceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of the devices attached.  Because the top level implementation
         of this mib may be on a print server, it is possible to have multiple
         printers attached.  This table should list all devices being serviced
         by this print server."


    ::= { device 3 }

deviceEntry OBJECT-TYPE
    SYNTAX      DeviceEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a device."
    INDEX       { deviceIndex }
    ::= { deviceTable 1 }

DeviceEntry ::= SEQUENCE {
    deviceIndex           Integer32,
    devicePort            Integer32,
    deviceHrDeviceIndex   Integer32,
    deviceModel           SnmpAdminString,
    deviceSerialNumber    DisplayString,
    deviceMibVersion      DisplayString,
    deviceInstallDate     DateAndTime,
    deviceMibSupportLevel INTEGER,
	deviceMachineType    DisplayString,
	deviceTLI DisplayString	
}

deviceIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this device."
    ::= { deviceEntry 1 }

devicePort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of the port this device is attached to.  If this is an
         internal network adapter, the port should be 1.  Multiport ENAs
         should list an appropriate number."
    ::= { deviceEntry 2 }

deviceHrDeviceIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index in the hrDeviceTable that corresponds to this device."
    ::= { deviceEntry 3 }

deviceModel OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "UTF-8 encoded text to describe this device.  This should match the
         model name of the device."
    ::= { deviceEntry 4 }

deviceSerialNumber OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..64))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Primary serial number for this device"
    ::= { deviceEntry 5 }

deviceMibVersion OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The version of this mib supported by the device.  This will be in the
        form of x.y.z."
    ::= { deviceEntry 6 }

deviceInstallDate OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The install date of the device.  This information should be provided
         by the attached device"
    ::= { deviceEntry 7 }

deviceMibSupportLevel OBJECT-TYPE
    SYNTAX      INTEGER {
                    none(0),
                    minimum(1),
                    value(16),
                    feature(32),
                    enterprise(48)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The support level of this device.

         An attached device can support various levels of this MIB, which is
         indicated in deviceMibSupportLevel.  The device should claim the
         highest support level for which it supports EVERYTHING included in
         that level.  A device may support additional items beyond the claimed
         level, the list given is just the minimum required implementation to
         claim a given support level.

         Support Level definition:

         none:  The device referred to does not support any items in this mib

         minimum: The following items in the following table must be implemented
             paperGeneralCountTable:
                 totalPrinted (sides)
                 totalMonoPrinted (sides)
                 totalColorPrinted (sides) (only necessary if a color box)

         value:  All items in minimum plus
             genCountTable
                 porCount
             paperGeneralCountTable:
                 All applicable counts
             supplyInventoryTable
                 For all user replaceable supplies
             swInventoryTable
                 All software components listed with a minimum of
                 swInventoryName and swInventoryRevision being reported
                 only for code revs on menus page.
             currentSuppliesTable
                 For all user replaceable supplies
             deviceAlertTable
                 All critical alerts (device is down) should be listed

         feature: All items in value plus
             genCountTable
                 faxesSent (if applicable)
                 scanCount (if applicable)
             hwInventoryTable
                 All major hardware items (printEngine, installed options)
             swInventoryTable
                 All code levels including downloaded apps and solutions.
             paperSidesCount Table
                 A minimum of 9 size/type combinations must be supported
             paperSheetsCount Table
                 A minimum of 9 size/type combinations must be supported
             supplyHistoryTable
                 A minimum of the last 3 ink/toner cartridges for mono products
                 A minimum of the last 2 ink/toner cartridges of each colorant
                 type for color products.
             supplyHistogram Table
                 For all ink/toner cartridges.
             deviceAlertTable
                 All alerts should be listed.

         enterprise:  All items in feature plus
             genCountTable
                 Any applicable counts (including power counts)
             paperSidesCount Table
                 A minimum of 17 size/type combinations must be supported
             paperSheetsCount Table
                 A minimum of 17 size/type combinations must be supported
             paperNupCountTable
                 Counts should be included for all applicable nup settings
             paperJobSizeTable
                 A minimum of 5 buckets of job size should be implemented.
             scanCountTable
                 For all applicable scan types
             supplyHistoryTable
                 A minimum of the last 5 ink/toner cartridges for mono products
                 A minimum of the last 3 ink/toner cartridges of each colorant
                 type for color products."
    ::= { deviceEntry 8 }

deviceMachineType OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Displays the machine type."
    ::= { deviceEntry 9 }

deviceTLI OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Top Level Indicator of the device. Unique identifier of the printer model."
    ::= { deviceEntry 10 }


-- The Lexmark Inventory Group

-- The hwInventory table

hwInventoryTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HWInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of the hardware items associated with this device.

         If the item is tracked by the supplies tables (ie fuser), it should
         NOT be tracked here.

         Standard (built-in) options such as input trays, output bins,
         duplexers, harddrives, etc, SHOULD be included in this table.  A row
         for the basic print engine should be included as well.

         Examples:
         - All electronic cards
         - All hardware options
         - Op-Panel
         - Fax Card
         - Scanner
         - Any item that has a code version associated with it."
    ::= { inventory 1 }

hwInventoryEntry OBJECT-TYPE
    SYNTAX      HWInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a hardware item."
    INDEX       { deviceIndex, hwInventoryIndex }
    ::= { hwInventoryTable 1 }

HWInventoryEntry ::= SEQUENCE {
    hwInventoryIndex         Integer32,
    hwInventoryParentIndex   Integer32,
    hwInventoryType          INTEGER,
    hwInventoryAdminStatus   AdminStatusTC,
    hwInventoryStatus        StatusTC,
    hwInventoryPartNumber    DisplayString,
    hwInventorySerialNumber  DisplayString,
    hwInventoryDescription   SnmpAdminString,
    hwInventoryData          KeyValueTC
}

hwInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this hardware item."
    ::= { hwInventoryEntry 1 }

hwInventoryParentIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The hwInventoryIndex of the hardware device that the item in this
        row is tied to.  If there is no parent, this object should read 0.
        The base printer itself should only be used as a parent for devices
        that are integrated into it.  ie RIP card, tray one, fax card, scanner.
        Items that are options such as extra input trays, external duplexers,
        and add on output bins should rate their own row with no parent.

        Examples:
        5-bin mailbox
            The mailbox unit as a whole would be one row, with a parent of 0.
            Each of the mailboxes would be row, with the parent of each mailbox
            pointing back to the mailbox unit.
        Finisher
            The finisher as a whole would be one row, with a parent of 0.
            The options of the finsher; output bins, stapler, hole punch, would
            each merit an individual row with the finisher unit as the parent

        "
    ::= { hwInventoryEntry 2 }


hwInventoryType OBJECT-TYPE
    SYNTAX      INTEGER {
                    unknown(1),
                    other(2),
                    printEngine(3),
                    electronicCard(4),
                    duplexer(5),
                    inputTray(6),
                    outputTray(7),
                    finishingDevice(8),
                    scanner(9),
                    faxCard(10),
                    memory(11),
                    nonVolitileMemory(12),
                    keyboard(13),
                    panel(14),
                    cardSwipe(15),
                    transferUnit(16),
                    connectivityModule(17),

                    optionUnknown(257),
                    optionOther(258),
                    optionDuplexer(261),
                    optionInputTray(262),
                    optionOutputTray(263),
                    optionFinishingDevice(264),
                    optionScanner(265),
                    optionFaxCard(266),
                    optionMemory(267),
                    optionNonVolitileMemory(268),
                    optionKeyboard(269),
                    optionPanel(270),
                    optionCardSwipe(271),
                    optionTransferUnit(272)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of item row is describing.  There is base set of possible
         items types and then a set of optional bits that can describe more
         about how this item is used.
         Bitmap
          - bits 0-7 - General description
          - bit  8   - Optional hardware.  0 - built in, 1 - optional item
          "
    ::= { hwInventoryEntry 3 }

hwInventoryAdminStatus OBJECT-TYPE
    SYNTAX      AdminStatusTC
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The current administrative status for this device.  If supported by
         the device, this may be used to control the status of this hardware
         component.  If the device does not support changing the administrative
         status via snmp, the set should fail and the current admin status
         should be returned."
    ::= { hwInventoryEntry 4 }

hwInventoryStatus OBJECT-TYPE
    SYNTAX      StatusTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current status of this item."
    ::= { hwInventoryEntry 5 }

hwInventoryPartNumber OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The part number for the item.  If unknown, this string should be
         blank."
    ::= { hwInventoryEntry 6 }

hwInventorySerialNumber OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number for the item.  If unknown, this string should be
         blank."
    ::= { hwInventoryEntry 7 }

hwInventoryDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description for the item.  If unknown, this string should be
         blank.  If changing localization is supported, this description should
         be displayed in the language set in deviceMibLocalization."
    ::= { hwInventoryEntry 8 }

hwInventoryData OBJECT-TYPE
    SYNTAX      KeyValueTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A set of key=value; pairs that give additional information on this
        hardware unit."
    ::= { hwInventoryEntry 9 }


-- The suppliesTable
supplyInventoryTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SupplyInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of the supplies used by this device"
    ::= { inventory 2 }

supplyInventoryEntry OBJECT-TYPE
    SYNTAX      SupplyInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, supplyInventoryIndex }
    ::= { supplyInventoryTable 1 }

SupplyInventoryEntry ::= SEQUENCE {
    supplyInventoryIndex           Integer32,
    supplyInventoryType            SupplyTypeTC,
    supplyInventoryColorantValue   DisplayString,
    supplyInventoryDescription     SnmpAdminString,
    supplyDynamicIndex             DisplayString
}

supplyInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this supply."
    ::= { supplyInventoryEntry 1 }

supplyInventoryType OBJECT-TYPE
    SYNTAX      SupplyTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of supply as referenced in the SupplyTypeTC that this row
         is describing."
    ::= { supplyInventoryEntry 2 }

supplyInventoryColorantValue OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the color using standard string names from ISO 10175 (DPA)
         and ISO 10180 (SPDL) which are:
          other
          unknown
          white
          red
          green
          blue
          cyan
          magenta
          yellow
          black

         If a supply doesn't have a color associated with it, the value of
         'none' should be returned."
    ::= { supplyInventoryEntry 3 }

supplyInventoryDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description of this supply.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { supplyInventoryEntry 4 }


supplyDynamicIndex OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This value maps to the supply list in Settings MIB for this supply."
    ::= { supplyInventoryEntry 5 }

-- The swInventory table

swInventoryTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SWInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of the software installed on this device"
    ::= { inventory 3 }

swInventoryEntry OBJECT-TYPE
    SYNTAX      SWInventoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a software package"
    INDEX       { deviceIndex, swInventoryIndex }
    ::= { swInventoryTable 1 }

SWInventoryEntry ::= SEQUENCE {
    swInventoryIndex         Integer32,
    swInventoryParentIndex   Integer32,
    swInventoryType          INTEGER,
    swInventoryAdminStatus   AdminStatusTC,
    swInventoryStatus        StatusTC,
    swInventoryName          DisplayString,
    swInventoryRevision      DisplayString,
    swInventoryDescription   SnmpAdminString,
    swInventoryHWIndex       Integer32,
    swInventoryData          KeyValueTC
}

swInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this software item."
    ::= { swInventoryEntry 1 }

swInventoryParentIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The swInventoryIndex of the software object that the item in this
        row is tied to.  If there is no parent, this object should read 0.

        Example:
        An application framework is installed.  It should have an
        swInventoryParentIndex of 0.  If applications are installed that
        use that framework, those should have an swInventoryParentIndex that
        points to the application framework."
    ::= { swInventoryEntry 2 }

swInventoryType OBJECT-TYPE
    SYNTAX      INTEGER {
                    unknown(1),
                    other(2),
                    operatingSystem(3),
                    hardware(4),
                    application(5)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of software item this row describes."
    ::= { swInventoryEntry 3 }

swInventoryAdminStatus OBJECT-TYPE
    SYNTAX      AdminStatusTC
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The current administrative status of this software.  If supported by
         the device, this may be used to control the status of this software
         component.  If the device does not support changing the administrative
         status via snmp, the set should fail and the current admin status
         should be returned."
    ::= { swInventoryEntry 4 }

swInventoryStatus OBJECT-TYPE
    SYNTAX      StatusTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current status of this software."
    ::= { swInventoryEntry 5 }

swInventoryName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of this software item.  This should be a specific, unique
         string."
    ::= { swInventoryEntry 6 }

swInventoryRevision OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The revision of the install."
    ::= { swInventoryEntry 7 }

swInventoryDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description for the item.  If unknown, this string should be
         blank.  If changing localization is supported, this description should
         be displayed in the language set in deviceMibLocalization."
    ::= { swInventoryEntry 8 }

swInventoryHWIndex OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the hwInventoryTable that indicates the
         hardware this software is associated with.  If unknown, this should
         return 0.
         For instance, if the duplex unit has it's own firmware revision, it's
         parent would be the duplex hardware item in the hwInventoryTable."
    ::= { swInventoryEntry 9 }

swInventoryData OBJECT-TYPE
    SYNTAX      KeyValueTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A set of key=value; pairs that give additional information on this
        software unit."
    ::= { swInventoryEntry 10 }

-- Lexmark General Statistics

-- The genCount table

genCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF GenCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of general counts.  These rows are intended to count items
         and events for the device other than page usages or supply usage.
         This table should only include counters that make sense for the
         device, and are tracked for the device.  In other words, if a count
         is zero, and can never be anything other than zero, it should not
         be returned."
    ::= { generalStats 1 }

genCountEntry OBJECT-TYPE
    SYNTAX      GenCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a general counter."
    INDEX       { deviceIndex, genCountIndex }
    ::= { genCountTable 1 }

GenCountEntry ::= SEQUENCE {
    genCountIndex   Integer32,
    genCountType    INTEGER,
    genCountUnits   UnitsTC,
    genCountValue   Counter32
}

genCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the genCountTable"
    ::= { genCountEntry 1 }

genCountType OBJECT-TYPE
    SYNTAX      INTEGER {
                    porCount(1),
                    sleepCount(2),
                    hibernateCount(3),
                    printCalibrateCount(4),

                    powerOnTime(32),
                    powerActiveTime(33),
                    powerIdleTime(34),
                    powerSleepTime(35),
                    powerHibernateTime(36),
                    powerOffTime(37),
                    warmupTotalTime(38),

                    lifetimeBlackCoverage(64),
                    lifetimeCyanCoverage(65),
                    lifetimeYellowCoverage(66),
                    lifetimeMagentaCoverage(67),
                    rawLifetimeBlackCoverage(68),
                    rawLifetimeCyanCoverage(69),
                    rawLifetimeYellowCoverage(70),
                    rawLifetimeMagentaCoverage(71),

                    faxesSent(96),
                    paperJams(97),
                    scannerJams(98),
                    loadPaperPrompts(99),
                    changePaperPrompts(100),
                    coverOpens(101),
                    printerIRTime(102),
                    usbInsertions(128)

                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of item this counter is counting."

    ::= { genCountEntry 2 }

genCountUnits OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units this item is counting in"
    ::= { genCountEntry 3 }

genCountValue OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of this counter"
    ::= { genCountEntry 4 }

-- Lexmark Paper Usage Statistics


-- The paperGenCount table

paperGeneralCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PaperGeneralCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of general counts for sheets and pages printed"
    ::= { paperStats 1 }

paperGeneralCountEntry OBJECT-TYPE
    SYNTAX      PaperGeneralCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a general counter for sheets and pages printed.
         This table should only include items that make sense for this product.
         For instance, the printColor count should not be returned for mono
         products."
    INDEX       { deviceIndex, paperGeneralCountIndex }
    ::= { paperGeneralCountTable 1 }

PaperGeneralCountEntry ::= SEQUENCE {
    paperGeneralCountIndex   Integer32,
    paperGeneralCountType    INTEGER,
    paperGeneralCountUnits   UnitsTC,
    paperGeneralCountValue   Counter32
}

paperGeneralCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the paperGeneralCountTable"
    ::= { paperGeneralCountEntry 1 }

paperGeneralCountType OBJECT-TYPE
    SYNTAX      INTEGER {
                    totalPicked(1),
                    totalSafe(2),
                    totalMonoSafe(3),
                    totalColorSafe(4),
                    printNHold(5),
                    usbDirect(6),
                    continuousPrint(7),
                    printTotal(16),
                    printMono(17),
                    printColor(18),
                    copyTotal(32),
                    copyMono(33),
                    copyColor(34),
                    faxTotal(48),
                    faxMono(49),
                    faxColor(50),
                    blankTotal(64),
                    blankPrint(65),
                    blankCopy(66),
                    blankFax(67),
                    printerPageCount(80),
                    modularPageCount(81),
                    highlightColor(90),
                    businessColor(91),
                    graphicsColor(92),
                    tonerDarkness1(100),
                    tonerDarkness2(101),
                    tonerDarkness3(102),
                    tonerDarkness4(103),
                    tonerDarkness5(104),
                    tonerDarkness6(105),
                    tonerDarkness7(106),
                    tonerDarkness8(107),
                    tonerDarkness9(108),
                    tonerDarkness10(109),
                    stapleEmpty1(120),
                    stapleEmpty2(121),
                    stapleEmpty3(122),
                    clickCountPrintMono(130),
                    clickCountPrintColor(131),
                    clickCountScan(132)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of item this counter is counting."
    ::= { paperGeneralCountEntry 2 }

paperGeneralCountUnits OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units this item is counting in.  For this table
         this should always be in units of Sheets or Sides.
         For the case of continuousPrint, the unit is in feet."
    ::= { paperGeneralCountEntry 3 }

paperGeneralCountValue OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of the item this row is counting.
         For continuousPrint, the value is a whole number
         representation for a float value (1 decimal point)
         multipled by 10."
    ::= { paperGeneralCountEntry 4 }



-- The sidesCount table

paperSidesCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PaperSidesCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of sides counts for various printed size/type combinations"
    ::= { paperStats 2 }

paperSidesCountEntry OBJECT-TYPE
    SYNTAX      PaperSidesCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on the number of sides printed for
         a given size/type combination."
    INDEX       { deviceIndex, paperSidesCountIndex }
    ::= { paperSidesCountTable 1 }

PaperSidesCountEntry ::= SEQUENCE {
    paperSidesCountIndex   Integer32,
    paperSidesPaperSize    PaperSizeTC,
    paperSidesPaperType    PaperTypeTC,
    paperSidesMonoPicked   Counter32,
    paperSidesColorPicked  Counter32,
    paperSidesMonoSafe     Counter32,
    paperSidesColorSafe    Counter32
}

paperSidesCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the paperSidesCountTable"
    ::= { paperSidesCountEntry 1 }

paperSidesPaperSize OBJECT-TYPE
    SYNTAX      PaperSizeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The size of the paper "
    ::= { paperSidesCountEntry 2 }

paperSidesPaperType OBJECT-TYPE
    SYNTAX      PaperTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the paper"
    ::= { paperSidesCountEntry 3 }


paperSidesMonoPicked OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sides (impressions) of mono pages picked"
    ::= { paperSidesCountEntry 4 }

paperSidesColorPicked OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sides (impressions) of color pages picked"
    ::= { paperSidesCountEntry 5 }

paperSidesMonoSafe OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sides (impressions) of mono pages that have been
         printed and delivered into an output bin"
    ::= { paperSidesCountEntry 6 }

paperSidesColorSafe OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sides (impressions) of color pages that have been
         printed and delivered into an output bin"
    ::= { paperSidesCountEntry 7 }

-- The Sheets Count table

paperSheetsCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PaperSheetsCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of sheet (page) counts for various printed size/type
         combinations"
    ::= { paperStats 3 }

paperSheetsCountEntry OBJECT-TYPE
    SYNTAX      PaperSheetsCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on the number of sheets (pages)
         printed for a given size/type combination."
    INDEX       { deviceIndex, paperSheetsCountIndex }
    ::= { paperSheetsCountTable 1 }

PaperSheetsCountEntry ::= SEQUENCE {
    paperSheetsCountIndex  Integer32,
    paperSheetsPaperSize   PaperSizeTC,
    paperSheetsPaperType   PaperTypeTC,
    paperSheetsPicked      Counter32,
    paperSheetsSafe        Counter32
}

paperSheetsCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the paperSheetsCountTable"
    ::= { paperSheetsCountEntry 1 }

paperSheetsPaperSize OBJECT-TYPE
    SYNTAX      PaperSizeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The size of the paper "
    ::= { paperSheetsCountEntry 2 }

paperSheetsPaperType OBJECT-TYPE
    SYNTAX      PaperTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the paper"
    ::= { paperSheetsCountEntry 3 }

paperSheetsPicked OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sheets (pages) picked"
    ::= { paperSheetsCountEntry 4 }

paperSheetsSafe OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of sheets (pages) that have been printed and delivered
         into an output bin"
    ::= { paperSheetsCountEntry 5 }


-- The NupCount table

paperNupCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PaperNupCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of counts to show how many jobs have been printed with
         various multipage print (nup) settings.  This table may be sparse,
         nup values that have a count of 0 are not expected to be returned."
    ::= { paperStats 4 }

paperNupCountEntry OBJECT-TYPE
    SYNTAX      PaperNupCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on how much the printer's Nup
         feature has been used."
    INDEX       { deviceIndex, paperNupCountIndex }
    ::= { paperNupCountTable 1 }

PaperNupCountEntry ::= SEQUENCE {
    paperNupCountIndex     Integer32,
    paperNupNumber         Integer32,
    paperNupSides          Counter32,
    paperNupLogicalSides   Counter32
}

paperNupCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the paperNupCountTable"
    ::= { paperNupCountEntry 1 }

paperNupNumber OBJECT-TYPE
    SYNTAX      INTEGER {
                    off(1),
                    twoUp(2),
                    threeUp(3),
                    fourUp(4),
                    sixUp(6),
                    nineUp(9),
                    twelveUp(12),
                    sixteenUp(16)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Nup number for the jobs this row is describing.  This is the
         number of logical sides (impressions) that appear on one
         side of the printed sheet"
    ::= { paperNupCountEntry 2 }

paperNupSides OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of physical sides of paper that have been printed using
         this value of Nup"
    ::= { paperNupCountEntry 3 }

paperNupLogicalSides OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of logical sides that have been printed using
         this value of Nup.  For example, if a user prints a 3 page job using
         an Nup value of 4, the paperNupSides counter will be incremented by
         1, and paperNupLogicalSides will be incremented by 3."
    ::= { paperNupCountEntry 4 }


-- The JobSize table

paperJobSizeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PaperJobSizeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table to indicate how many jobs of different size have been printed.
         This table may be sparse.  Only job size buckets that have a
         non-zero count in them should be returned."
    ::= { paperStats 5 }

paperJobSizeEntry OBJECT-TYPE
    SYNTAX      PaperJobSizeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on how many jobs of different sizes
         have been printed."
    INDEX       { deviceIndex, paperJobSizeIndex }
    ::= { paperJobSizeTable 1 }

PaperJobSizeEntry ::= SEQUENCE {
    paperJobSizeIndex      Integer32,
    paperJobSizeMinimum    Integer32,
    paperJobSizeMaximum    Integer32,
    paperJobSizeSideCount  Counter32,
    paperJobSizeJobCount   Counter32
}

paperJobSizeIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the paperJobSizeTable"
    ::= { paperJobSizeEntry 1 }

paperJobSizeMinimum OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The minimum number of printed sides for jobs described by this row"
    ::= { paperJobSizeEntry 2 }


paperJobSizeMaximum OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum number of printed sides for jobs described by this row"
    ::= { paperJobSizeEntry 3 }

paperJobSizeSideCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of sides printed for all jobs where the number of
         sides for the job was between paperJobSizeMinimum and
         paperJobSizeMaximum (inclusive)"
    ::= { paperJobSizeEntry 4 }

paperJobSizeJobCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total number of jobs printed where the number of
         sides for the job was between paperJobSizeMinimum and
         paperJobSizeMaximum (inclusive)"
    ::= { paperJobSizeEntry 5 }



-- Lexmark Scan Statistics

-- The scanCount table

scanCountTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ScanCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of scan counts.  This table should only return counts that
         apply to this product.  For instance, fax scan counts should not
         be returned if the product doesn't support fax."
    ::= { scanStats 1 }

scanCountEntry OBJECT-TYPE
    SYNTAX      ScanCountEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, scanCountIndex }
    ::= { scanCountTable 1 }

ScanCountEntry ::= SEQUENCE {
    scanCountIndex      Integer32,
    scanCountType       Integer32,
    scanCountSize       PaperSizeTC,
    scanCountSides      Counter32,
    scanCountSheets     Counter32
}

scanCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this row in the scanCountTable"
    ::= { scanCountEntry 1 }

scanCountType OBJECT-TYPE
    SYNTAX      INTEGER {
                    copyAdf(1),
                    faxAdf(2),
                    scanToEmailAdf(3),
                    scanToNetAdf(4),
                    scanToLocalHostAdf(5),
                    scanToUsbAdf(6),
                    scanToFtpAdf(7),

                    copyFlatbed(257),           -- 256 + 1
                    faxFlatbed(258),            -- 256 + 2
                    scanToEmailFlatbed(259),    -- 256 + 3
                    scanToNetFlatbed(260),      -- 256 + 4
                    scanToLocalHostFlatbed(261), -- 256 + 5
                    scanToUsbFlatbed(262), 		-- 256 + 6
                    scanToFtpFlatbed(263), 		-- 256 + 7

                    copyDuplex(769),            -- 512 + 256 + 1
                    faxDuplex(770),             -- 512 + 256 + 2
                    scanToEmailDuplex(771),     -- 512 + 256 + 3
                    scanToNetDuplex(772),       -- 512 + 256 + 4
                    scanToLocalHostDuplex(773),  -- 512 + 256 + 5
                    scanToUsbDuplex(774),  -- 512 + 256 + 6
                    scanToFtpDuplex(775)  -- 512 + 256 + 7


                 }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Enumeration of the type of scan that is being counted.
         - bit 0-7  - Application using the scanned image
         - bit 8-9  - Type of scan
			98
			--
			00 = Simplex Adf
			01 = Simplex Flatbed
			10 = Duplex Flatbed (both sides scanned at the same time)
			11 = Duplex ADF (both sides scanned at the same time)"
    ::= { scanCountEntry 2 }

scanCountSize OBJECT-TYPE
    SYNTAX      PaperSizeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Enumeration of the size of the paper that was scanned. If the scan
         is a full glass flatbed scan, the size should be 'universal'."
    ::= { scanCountEntry 3 }

scanCountSides OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Count of the number of sides of paper that were scanned."
    ::= { scanCountEntry 4 }

scanCountSheets OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Count of the number of sheets of paper that were scanned."
    ::= { scanCountEntry 5 }

-- Lexmark Supplies Statistics

-- The currentSupplies table

currentSuppliesTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CurrentSuppliesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of the supplies currently in use"
    ::= { supplyStats 1 }

currentSuppliesEntry OBJECT-TYPE
    SYNTAX      CurrentSuppliesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, currentSupplyIndex }
    ::= { currentSuppliesTable 1 }

CurrentSuppliesEntry ::= SEQUENCE {
    currentSupplyIndex              Integer32,
    currentSupplyInventoryIndex     Integer32,
    currentSupplyType               SupplyTypeTC,
    currentSupplyColorantValue      DisplayString,
    currentSupplyDescription        SnmpAdminString,
    currentSupplySerialNumber       DisplayString,
    currentSupplyPartNumber         DisplayString,
    currentSupplyClass              Integer32,
    currentSupplyCartridgeType      CartridgeTypeTC,
    currentSupplyInstallDate        DateAndTime,
    currentSupplyPageCountAtInstall Counter32,
    currentSupplyCurrentStatus      Integer32,
    currentSupplyCapacityUnit       UnitsTC,
    currentSupplyCapacity           Integer32,
    currentSupplyFirstKnownLevel    Counter32,
    currentSupplyCurrentLevel       Counter32,
    currentSupplyUsage              Counter32,
    currentSupplyCalibrations       Counter32,
    currentSupplyCoverage           Counter32,
    currentSupplyDaysRemaining      Integer32
}

currentSupplyIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the row for a given supply in the currentSuppliesTable"
    ::= { currentSuppliesEntry 1 }

currentSupplyInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the supplyInventoryTable that corresponds to
        this supply."
    ::= { currentSuppliesEntry 2 }

currentSupplyType OBJECT-TYPE
    SYNTAX      SupplyTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of supply as referenced in the SupplyTypeTC that this row
         is describing."
    ::= { currentSuppliesEntry 3 }

currentSupplyColorantValue OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the color using standard string names from ISO 10175 (DPA)
         and ISO 10180 (SPDL) which are:
          other
          unknown
          white
          red
          green
          blue
          cyan
          magenta
          yellow
          black

         If a supply doesn't have a color associated with it, the value of
         'none' should be returned."
    ::= { currentSuppliesEntry 4 }

currentSupplyDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description of this supply.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { currentSuppliesEntry 5 }

currentSupplySerialNumber OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number (if known) of this supply.  If not known, this
         field should be blank."
    ::= { currentSuppliesEntry 6 }

currentSupplyPartNumber OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The part number (if known) of this supply.  If not known, this
         field should be blank."
    ::= { currentSuppliesEntry 7 }

currentSupplyClass OBJECT-TYPE
    SYNTAX      INTEGER { filled(1), consumed(2) }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of this supply.  Whether it is one that is consumed
         (such as toner) or filled (such as a waste box)"
    ::= { currentSuppliesEntry 8 }

currentSupplyCartridgeType OBJECT-TYPE
    SYNTAX      CartridgeTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of cartridge that this is as defined in CartridgeTypeTC.
         Supplies that are not a toner/ink cartridge should return other(2)"
    ::= { currentSuppliesEntry 9 }

currentSupplyInstallDate OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date this particular supply was installed."
    ::= { currentSuppliesEntry 10 }

currentSupplyPageCountAtInstall OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The page count of the printer when this supply was installed."
    ::= { currentSuppliesEntry 11 }


currentSupplyCurrentStatus OBJECT-TYPE
    SYNTAX      INTEGER {
                    other(1),
                    unknown(2),
                    ok(3),
                    low(4),
                    empty(5),
                    invalid(6)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The status of this supply"
    ::= { currentSuppliesEntry 12 }

currentSupplyCapacityUnit OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units used to measure the capacity of a supply"
    ::= { currentSuppliesEntry 13 }

currentSupplyCapacity OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The average expected total capacity of this supply in
         currentSupplyCapacityUnits"
    ::= { currentSuppliesEntry 14 }

currentSupplyFirstKnownLevel OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The first known supply level for this supply in
         currentSupplyCapacityUnits"
    ::= { currentSuppliesEntry 15 }

currentSupplyCurrentLevel OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The estimated amount of this supply remaining in
         currentSupplyCapacityUnits"
    ::= { currentSuppliesEntry 16 }

currentSupplyUsage OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current

    DESCRIPTION
        "The amount of this supply that has been used in
         currentSupplyCapacityUnits.  This number may give different results
         from currentSupplyCurrentLevel, as it only accounts for where the
         supply is used in creating a page.  For instance, it would account
         for pages where a certain toner color was put down.  However even
         if that color is not put down on a page, some toner may be used in
         the calibration operation (for instance) and that use would be
         only reflected in currentSupplyCurrentLevel"
    ::= { currentSuppliesEntry 17 }

currentSupplyCalibrations OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current

    DESCRIPTION
        "The number of calibration cycles that have occurred while this
         supply was installed.  Only calibration cycles involving this supply
         should be counted."
    ::= { currentSuppliesEntry 18 }

currentSupplyCoverage OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Absolute value for the coverage usage of this supply.
         Coverage is an additive amount of this supply used for all pages that
         this supply has been used for.  Supplies for which this is not
         meaningful (ie toner waste box) should return 0."
    ::= { currentSuppliesEntry 19 }

currentSupplyDaysRemaining OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Estimated days remaining of usage for this supply.
         The value for this is valid ONLY for toner cartridges supplies.
         Supplies for which this is not meaningful (ie toner waste box) should
         return -1."
    ::= { currentSuppliesEntry 20 }

-- The supplyHistory table

supplyHistoryTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SupplyHistoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of information on supplies used previously in the device"
    ::= { supplyStats 2 }

supplyHistoryEntry OBJECT-TYPE
    SYNTAX      SupplyHistoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, supplyHistoryIndex }
    ::= { supplyHistoryTable 1 }

SupplyHistoryEntry ::= SEQUENCE {
    supplyHistoryIndex           Integer32,
    supplyHistoryInventoryIndex  Integer32,
    supplyHistorySupplyType      SupplyTypeTC,
    supplyHistoryColorantValue   DisplayString,
    supplyHistoryDescription     SnmpAdminString,
    supplyHistorySerialNumber    DisplayString,
    supplyHistoryCartridgeType   CartridgeTypeTC,
    supplyHistoryInstallDate     DateAndTime,
    supplyHistoryPageCount       Counter32,
    supplyHistoryCapacityUnit    Integer32,
    supplyHistoryCapacity        Integer32,
    supplyHistoryLastLevel       Counter32,
    supplyHistoryUsage           Counter32,
    supplyHistoryCalibrations    Counter32,
    supplyHistoryCoverage        Counter32
}

supplyHistoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of the history item for a give current Supply and Device.
        Devices may report on the previous 0 or more of each of supplies in
        the currentSupplyTable"
    ::= { supplyHistoryEntry 1 }

supplyHistoryInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the supplyInventoryTable that corresponds to
        this supply."
    ::= { supplyHistoryEntry 2 }

supplyHistorySupplyType OBJECT-TYPE
    SYNTAX      SupplyTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of supply as referenced in the SupplyTypeTC that this row
         is describing."
    ::= { supplyHistoryEntry 3 }

supplyHistoryColorantValue OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the color using standard string names from ISO 10175 (DPA)
         and ISO 10180 (SPDL) which are:
          other
          unknown
          white
          red
          green
          blue
          cyan
          magenta
          yellow
          black

         If a supply doesn't have a color associated with it, the value of
         'none' should be returned."
    ::= { supplyHistoryEntry 4 }

supplyHistoryDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description of this supply.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { supplyHistoryEntry 5 }

supplyHistorySerialNumber OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number (if known) of this supply.  If not known, this
         field should be blank."
    ::= { supplyHistoryEntry 6 }

supplyHistoryCartridgeType OBJECT-TYPE
    SYNTAX      CartridgeTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of cartridge that this is as defined in CartridgeTypeTC.  Supplies that are not
         a toner/ink cartridge should return other(2)"
    ::= { supplyHistoryEntry 7 }

supplyHistoryInstallDate OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The date this supply was first installed."
    ::= { supplyHistoryEntry 8 }

supplyHistoryPageCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of page sides (impressions) that were printed while this
        supply was installed in the device."
    ::= { supplyHistoryEntry 9 }


supplyHistoryCapacityUnit OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units used to measure the capacity of a supply"
    ::= { supplyHistoryEntry 10 }

supplyHistoryCapacity OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The average expected total capacity of this supply in capacity units"
     ::= { supplyHistoryEntry 11 }

supplyHistoryLastLevel OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The last recorded level for this supply (in capacity units)"
    ::= { supplyHistoryEntry 12 }

supplyHistoryUsage OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of this supply that was used in supplyHistoryCapacityUnits"
    ::= { supplyHistoryEntry 13 }

supplyHistoryCalibrations OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of calibration cycles that have occurred while this
         supply was installed.  Only calibration cycles involving this supply
         should be counted."
    ::= { supplyHistoryEntry 14 }


supplyHistoryCoverage OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Absolute value for the coverage usage of this supply.  Coverage is an
         additive amount of this supply used for all pages that this supply has
         been used for."
    ::= { supplyHistoryEntry 15 }


-- The supplyHistogram table

supplyHistogramTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SupplyHistogramEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of information on supplies used previously in the device"
    ::= { supplyStats 3 }

supplyHistogramEntry OBJECT-TYPE
    SYNTAX      SupplyHistogramEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, supplyHistogramIndex }
    ::= { supplyHistogramTable 1 }

SupplyHistogramEntry ::= SEQUENCE {
    supplyHistogramIndex         Integer32,
    supplyHistogramInventoryIndex Integer32,
    supplyHistogramSupplyType    SupplyTypeTC,
    supplyHistogramColorantValue DisplayString,
    supplyHistogramDescription   SnmpAdminString,
    supplyHistogramCapacityUnit  UnitsTC,
    supplyHistogramCapacity      Integer32,
    supplyHistogramCount         Counter32,
    supplyHistogramCountUnits    UnitsTC
}

supplyHistogramIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this histogram row"
    ::= { supplyHistogramEntry 1 }

supplyHistogramInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the supplyInventoryTable that corresponds to
        this supply."
    ::= { supplyHistogramEntry 2 }



supplyHistogramSupplyType OBJECT-TYPE
    SYNTAX      SupplyTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of supply as referenced in the SupplyTypeTC that this row
         is describing."
    ::= { supplyHistogramEntry 3 }

supplyHistogramColorantValue OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the color using standard string names from ISO 10175 (DPA)
         and ISO 10180 (SPDL) which are:
          other
          unknown
          white
          red
          green
          blue
          cyan
          magenta
          yellow
          black

         If a supply doesn't have a color associated with it, the value of
         'none' should be returned."
    ::= { supplyHistogramEntry 4 }

supplyHistogramDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description of this supply.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { supplyHistogramEntry 5 }

supplyHistogramCapacityUnit OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units used to measure the capacity of a supply"
    ::= { supplyHistogramEntry 6 }

supplyHistogramCapacity OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The average expected total capacity of this supply in capacity units"
    ::= { supplyHistogramEntry 7 }

supplyHistogramCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of this supply that was used in supplyHistogramCountUnits
         (for the corresponding current supply).  This is intended to count
         the number of supplies of a given size that have been used over the
         life of this product."
    ::= { supplyHistogramEntry 8 }

supplyHistogramCountUnits OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units that this supply is measured in."
    ::= { supplyHistogramEntry 9 }

-- The supplyHistogramHistory table

supplyHistogramWithHistoryTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SupplyHistogramHistoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of information on supplies used previously in the device"
    ::= { supplyStats 4 }

supplyHistogramHistoryEntry OBJECT-TYPE
    SYNTAX      SupplyHistogramHistoryEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information on a supply."
    INDEX       { deviceIndex, supplyHistogramHistoryIndex, supplyHistogramHistoryCountIndex }
    ::= { supplyHistogramWithHistoryTable 1 }

SupplyHistogramHistoryEntry ::= SEQUENCE {
    supplyHistogramHistoryIndex         Integer32,
    supplyHistogramHistoryInventoryIndex Integer32,
    supplyHistogramHistoryCountIndex    Integer32,
    supplyHistogramHistorySupplyType    SupplyTypeTC,
    supplyHistogramHistoryColorantValue DisplayString,
    supplyHistogramHistoryDescription   SnmpAdminString,
    supplyHistogramHistoryCapacityUnit  UnitsTC,
    supplyHistogramHistoryCapacity      Integer32,
    supplyHistogramHistoryCount         Counter32,
    supplyHistogramHistoryCountUnits    UnitsTC
}

supplyHistogramHistoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The index of this histogram row"
    ::= { supplyHistogramHistoryEntry 1 }

supplyHistogramHistoryInventoryIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the supplyInventoryTable that corresponds to
        this supply."
    ::= { supplyHistogramHistoryEntry 2 }

supplyHistogramHistoryCountIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row in the history that corresponds to this supply."
    ::= { supplyHistogramHistoryEntry 3 }


supplyHistogramHistorySupplyType OBJECT-TYPE
    SYNTAX      SupplyTypeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of supply as referenced in the SupplyTypeTC that this row
         is describing."
    ::= { supplyHistogramHistoryEntry 4 }

supplyHistogramHistoryColorantValue OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the color using standard string names from ISO 10175 (DPA)
         and ISO 10180 (SPDL) which are:
          other
          unknown
          white
          red
          green
          blue
          cyan
          magenta
          yellow
          black

         If a supply doesn't have a color associated with it, the value of
         'none' should be returned."
    ::= { supplyHistogramHistoryEntry 5 }

supplyHistogramHistoryDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The description of this supply.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { supplyHistogramHistoryEntry 6 }

supplyHistogramHistoryCapacityUnit OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units used to measure the capacity of a supply"
    ::= { supplyHistogramHistoryEntry 7 }

supplyHistogramHistoryCapacity OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The average expected total capacity of this supply in capacity units"
    ::= { supplyHistogramHistoryEntry 8 }

supplyHistogramHistoryCount OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of this supply that was used in supplyHistogramHistoryCountUnits
         (for the corresponding current supply).  This is intended to count
         the number of supplies of a given size that have been used over the
         life of this product."
    ::= { supplyHistogramHistoryEntry 9 }

supplyHistogramHistoryCountUnits OBJECT-TYPE
    SYNTAX      UnitsTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The units that this supply is measured in."
    ::= { supplyHistogramHistoryEntry 10 }

outputOptionFeatureTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF OUTPUTOptionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of output bins and its atrributes"
    ::= { outputfeature 1 }

outputOptionEntry OBJECT-TYPE
    SYNTAX      OUTPUTOptionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information of an output bin option item."
    INDEX       { deviceIndex, outputOptionIndex }
    ::= { outputOptionFeatureTable 1 }

OUTPUTOptionEntry ::= SEQUENCE {
    outputOptionIndex           Integer32,
    outputOptionName            DisplayString,
    outputLevelSensing          INTEGER,
    outputOffsetting            INTEGER,
    outputFoldSupport           Integer32,
    outputfaceOrientation       PrtOutputPageDeliveryOrientationTC,
    outputBindingCapable        Integer32,
    outputSeparationCapable     Integer32,
    outputStitchingCapable      Integer32,
    outputPunchingCapable       Integer32
}

outputOptionIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this output option item."
    ::= { outputOptionEntry 1 }

outputOptionName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name assigned to this output bin. 
	It will return the user-defined bin name if it has been set."
    ::= { outputOptionEntry 2 }


outputLevelSensing OBJECT-TYPE
    SYNTAX      INTEGER {
                    notSupported(0),
                    supported(1)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Specifies whether levelsense is supported on this output bin."
    ::= { outputOptionEntry 3 }

outputOffsetting OBJECT-TYPE
    SYNTAX      INTEGER {
                    notSupported(0),
                    supported(1)
                    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Specifies whether offset is supported on this output bin."
    ::= { outputOptionEntry 4 }

outputFoldSupport OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Specifies the fold type of this output bin and must 
	 be looked at as a bit field. 

         outputFoldSupport will be defined as:

	 Bit 0 = Supported
         Bit 1 = Z Fold
         Bit 2 = Half Fold
         Bit 3 = Letter Fold
         Bit 4 = Signature
         Bits 5-31 = Reserved
         "
    ::= { outputOptionEntry  5}

outputfaceOrientation OBJECT-TYPE
    SYNTAX      PrtOutputPageDeliveryOrientationTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "See associated textual convention PrtOutputPageDeliveryOrientationTC"

    ::= { outputOptionEntry 6 }

outputBindingCapable OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Specifies the bind type of this output bin and must 
	 be looked at as a bit field. 

         outputBindingCapable will be defined as:

	 Bit 0 = Staple
         Bit 1 = BookStaple
         Bit 2 = Adhesive Binding
         Bit 3 = Comb Binding
         Bit 4 = Spiral Binding
         Bits 5-31 = Reserved
         "
    ::= { outputOptionEntry  7}

outputSeparationCapable OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Specifies if the output bin is separation-capable. Currently, value is always 1."
    ::= { outputOptionEntry 8 }

outputStitchingCapable OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Specifies if the output bin is stitching-capable. Currently, value is always 0."
    ::= { outputOptionEntry 9 }

outputPunchingCapable OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Specifies the punch hole mode supported by this output bin and 
	 must be looked at as a bit field. 

	 outputPunchingCapable will be defined as:

              Bit 0 = 1 hole
              Bit 1 = 2 hole
              Bit 2 = 3 hole
              Bit 3 = 4 hole
              Bit 4 = 5 hole
              Bit 5 = 6 hole
              Bit 6 = 7 hole
              Bit 7 = 8 hole
              Bits 8-31 = Reserved
         "
    ::= { outputOptionEntry  10}

-- Alerts

-- The device alerts Table

deviceAlertTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DeviceAlertEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of alerts on the devices."
    ::= { alerts 1 }

deviceAlertEntry OBJECT-TYPE
    SYNTAX      DeviceAlertEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing information about this alert."
    INDEX       { deviceIndex, deviceAlertIndex }
    ::= { deviceAlertTable 1 }

DeviceAlertEntry ::= SEQUENCE {
   deviceAlertIndex              Integer32,
   deviceAlertConfigTableNode    INTEGER,
   deviceAlertConfigTableIndex   Integer32,
   deviceAlertSeverity           SeverityTC,
   deviceAlertCode               AlertCodeTC,
   deviceAlertDescription        SnmpAdminString,
   deviceAlertData               KeyValueTC,
   deviceAlertTime               DateAndTime,
   deviceAlertSeverityLevel      PrtAlertSeverityLevelTC,
   deviceAlertTrainingLevel      PrtAlertTrainingLevelTC,
   deviceAlertPrtCode            PrtAlertCodeTC
   
}

deviceAlertIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of this alert in the alert table.  This table is expected to
         be rather dynamic, with rows added as alert conditions occur on
         devices, and then the rows being removed as alert conditions are
         cleared.  The data in this table should not persist over a POR, but
         should be reset when the printer is reset, with appropriated items
         being added back in as the printer finds them.

         While this OID is marked as read-only, it should not be returned as
         table-column, which means it should be treated as not-accessible.
         It is marked as read-only in the MIB only because many MIB compilers
         will complain about this being called not-accessible since the trap can
         return this index."
    ::= { deviceAlertEntry 1 }

deviceAlertConfigTableNode OBJECT-TYPE
    SYNTAX      INTEGER {
                    unknown(0),
                    hwInventoryTable(2),
                    supplyInventoryTable(3),
                    swInventoryTable(4)
                    }

    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The subnode of the device node that indicates the table the holds
         information about the item this alert refers to.  For instance, if
         the alert is a hardware alert, this object should hold the value of
         '2', indicating that the alert is for a member of the
         device.hwInventoryTable.  Common values of this would be
         2 -> hwInventoryTable
         3 -> supplyInventoryTable
         4 -> swInventoryTable"
    ::= { deviceAlertEntry 2 }

deviceAlertConfigTableIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The index of the row of the table indicated by
        deviceAlertConfigTableNode that corresponds to the item that this
        alert pertains to.  For instance, if a printer's fuser is the first
        item listed in the supplyInventoryTable, then
        deviceAlertConfigTableNode = 3 and deviceAlertConfigTableIndex = 1."
    ::= { deviceAlertEntry 3 }


deviceAlertSeverity OBJECT-TYPE
    SYNTAX      SeverityTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The severity of this alert"
    ::= { deviceAlertEntry 4 }


deviceAlertCode OBJECT-TYPE
    SYNTAX      AlertCodeTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An alert code to indicate what type of alert condition this row
        refers to"
    ::= { deviceAlertEntry 5 }

deviceAlertDescription OBJECT-TYPE
    SYNTAX      SnmpAdminString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A description of the alert condition.  If changing localization is
         supported, this description should be displayed in the language set in
         deviceMibLocalization."
    ::= { deviceAlertEntry 6 }

deviceAlertData OBJECT-TYPE
    SYNTAX      KeyValueTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A key=value; encoded string of information regarding this row."
    ::= { deviceAlertEntry 7 }

deviceAlertTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The time and date when this alert was added to the table."
    ::= { deviceAlertEntry 8 }

deviceAlertSeverityLevel OBJECT-TYPE
    -- This value is a type 1 enumeration
    SYNTAX     PrtAlertSeverityLevelTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
         "The level of severity of this alert table entry.  The
         printer determines the severity level assigned to each
         entry into the table."
    ::= { deviceAlertEntry 9 }

deviceAlertTrainingLevel OBJECT-TYPE
    -- This value is a type 2 enumeration
    SYNTAX     PrtAlertTrainingLevelTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "See textual convention PrtAlertTrainingLevelTC"
    ::= { deviceAlertEntry 10 }

deviceAlertPrtCode OBJECT-TYPE
    -- This value is a type 2 enumeration
    SYNTAX     PrtAlertCodeTC
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "See associated textual convention PrtAlertCodeTC"
    ::= { deviceAlertEntry 11}

-- device Trap definition

deviceV1AlertMPS OBJECT IDENTIFIER ::= { alerts 2 }
deviceV2AlertMPSPrefix OBJECT IDENTIFIER ::= { deviceV1AlertMPS 0 }

deviceV2AlertMPS NOTIFICATION-TYPE
    OBJECTS { deviceAlertIndex,
              deviceAlertConfigTableNode,
              deviceAlertConfigTableIndex,
              deviceAlertSeverity,
              deviceAlertCode,
              deviceAlertDescription,
              deviceAlertData,
              deviceAlertTime
}
    STATUS  current
    DESCRIPTION
         "This trap is sent whenever a critical or serviceRequired event is
          added to the deviceAlertTable."

    ::= { deviceV2AlertMPSPrefix 1 }


-- Note that the SNMPv2 to SNMPv1 translation rules dictate that
-- the preceding structure will result in SNMPv1 traps of the
-- following form:
--
-- deviceAlert TRAP-TYPE
--     ENTERPRISE deviceV1AlertMPS
--     VARIABLES { deviceAlertIndex,
--                 deviceAlertConfigTableNode,
--                 deviceAlertConfigTableIndex,
--                 deviceAlertSeverity
--                 deviceAlertCode,
--                 deviceAlertDescription,
--                 deviceAlertData,
--                 deviceAlertTime    }
--     DESCRIPTION
--         "This trap is sent whenever a critical or serviceRequired event is
--          added to the deviceAlertTable."
--     ::= 1
--


-- Groups

deviceGroup OBJECT-GROUP
    OBJECTS     { deviceMibLocalization,
                  devicePort,
                  deviceHrDeviceIndex,
                  deviceModel,
                  deviceSerialNumber,
                  deviceMibVersion,
                  deviceInstallDate,
                  deviceMibSupportLevel }
    STATUS      current
    DESCRIPTION
        "The Device Group."
    ::= { mpsMIBGroups 1 }

hwInventoryGroup OBJECT-GROUP
    OBJECTS     { hwInventoryParentIndex,
                  hwInventoryType,
                  hwInventoryAdminStatus,
                  hwInventoryStatus,
                  hwInventoryPartNumber,
                  hwInventorySerialNumber,
                  hwInventoryDescription,
                  hwInventoryData }
    STATUS      current
    DESCRIPTION
        "The Hardware Inventory Group."
    ::= { mpsMIBGroups 2 }

supplyInventoryGroup OBJECT-GROUP
    OBJECTS     { supplyInventoryType,
                  supplyInventoryColorantValue,
                  supplyInventoryDescription }
    STATUS      current
    DESCRIPTION
        "The supplies inventory Group."
    ::= { mpsMIBGroups 3 }

swInventoryGroup OBJECT-GROUP
    OBJECTS     { swInventoryParentIndex,
                  swInventoryType,
                  swInventoryName,
                  swInventoryRevision,
                  swInventoryAdminStatus,
                  swInventoryStatus,
                  swInventoryDescription,
                  swInventoryHWIndex,
                  swInventoryData }
    STATUS      current
    DESCRIPTION
        "The Software Inventory Group."
    ::= { mpsMIBGroups 4 }

statsGeneralCountGroup OBJECT-GROUP
    OBJECTS     { genCountType,
                  genCountUnits,
                  genCountValue }
    STATUS      current
    DESCRIPTION
        "The general scan counts and statistics group."
    ::= { mpsMIBGroups 5 }

statsPaperGeneralCountGroup OBJECT-GROUP
    OBJECTS     { paperGeneralCountType,
                  paperGeneralCountUnits,
                  paperGeneralCountValue }
    STATUS      current
    DESCRIPTION
        "The general paper usage count group."
    ::= { mpsMIBGroups 6 }

statsPaperSidesCountGroup OBJECT-GROUP
    OBJECTS     { paperSidesPaperSize,
                  paperSidesPaperType,
                  paperSidesMonoPicked,
                  paperSidesColorPicked,
                  paperSidesMonoSafe,
                  paperSidesColorSafe }
    STATUS      current
    DESCRIPTION
        "The paper sides count group."
    ::= { mpsMIBGroups 7 }

statsPaperSheetsCountGroup OBJECT-GROUP
    OBJECTS     { paperSheetsPaperSize, paperSheetsPaperType,
                  paperSheetsPicked, paperSheetsSafe }
    STATUS      current
    DESCRIPTION
        "The paper sheets count group."
    ::= { mpsMIBGroups 8 }

statsPaperNupCountGroup OBJECT-GROUP
    OBJECTS     { paperNupNumber, paperNupSides, paperNupLogicalSides }
    STATUS      current
    DESCRIPTION
        "The paper sheets count group."
    ::= { mpsMIBGroups 9 }

statsPaperJobSizeGroup OBJECT-GROUP
    OBJECTS     { paperJobSizeMinimum, paperJobSizeMaximum,
                  paperJobSizeSideCount, paperJobSizeJobCount }
    STATUS      current
    DESCRIPTION
        "The job size group."
    ::= { mpsMIBGroups 10 }


statsScanGroup OBJECT-GROUP
    OBJECTS     { scanCountType, scanCountSize, scanCountSides,
                  scanCountSheets }
    STATUS      current
    DESCRIPTION
        "The scan counts and statistics group."
    ::= { mpsMIBGroups 11 }

statsCurrentSuppliesGroup OBJECT-GROUP
    OBJECTS     { currentSupplyInventoryIndex,
                  currentSupplyType, currentSupplyColorantValue,
                  currentSupplySerialNumber, currentSupplyPartNumber,
                  currentSupplyCapacity, currentSupplyPageCountAtInstall,
                  currentSupplyCapacityUnit, currentSupplyClass,
                  currentSupplyCartridgeType, currentSupplyInstallDate,
                  currentSupplyDescription, currentSupplyCurrentLevel,
                  currentSupplyCurrentStatus,
                  currentSupplyUsage, currentSupplyCoverage,
                  currentSupplyCalibrations,
                  currentSupplyFirstKnownLevel }
    STATUS      current
    DESCRIPTION
        "The current supplies listing group"
    ::= { mpsMIBGroups 12 }

statsSupplyHistoryGroup OBJECT-GROUP
    OBJECTS     { supplyHistoryInventoryIndex,
                  supplyHistorySupplyType,
                  supplyHistoryColorantValue,
                  supplyHistoryDescription,
                  supplyHistorySerialNumber,
                  supplyHistoryCartridgeType,
                  supplyHistoryInstallDate,
                  supplyHistoryPageCount,
                  supplyHistoryCapacityUnit,
                  supplyHistoryCapacity,
                  supplyHistoryLastLevel,
                  supplyHistoryUsage,
                  supplyHistoryCalibrations,
                  supplyHistoryCoverage
                  }
    STATUS      current
    DESCRIPTION
        "The supplies history listing group"
    ::= { mpsMIBGroups 13 }

statsSupplyHistogramGroup OBJECT-GROUP
    OBJECTS     { supplyHistogramInventoryIndex,
                  supplyHistogramSupplyType,
                  supplyHistogramColorantValue,
                  supplyHistogramDescription,
                  supplyHistogramCapacityUnit,
                  supplyHistogramCapacity,
                  supplyHistogramCount,
                  supplyHistogramCountUnits }
    STATUS      current
    DESCRIPTION
        "The supplies histogram group"
    ::= { mpsMIBGroups 14 }

deviceAlertGroup OBJECT-GROUP
    OBJECTS     { deviceAlertIndex,
                  deviceAlertConfigTableNode,
                  deviceAlertConfigTableIndex,
                  deviceAlertSeverity,
                  deviceAlertCode,
                  deviceAlertDescription,
                  deviceAlertData,
                 deviceAlertTime }
    STATUS      current
    DESCRIPTION
        "The device alert group"
    ::= { mpsMIBGroups 16 }


-- Compliance Statements

mpsMIBCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The requirements for conformance to the LEXMARK mps MIB

        We expect printers to support one of four levels of support.  The
        following list shows the minimum level of support that must be
        implemented.  Additional tables may be supported at the device's
        descretion.

        Note: For tables that count sides/sheets, if duplex is not supported
        on a device it only needs to ever count sides.


        "

    MODULE      -- this module

        MANDATORY-GROUPS        { deviceGroup }

        GROUP   deviceGroup
        DESCRIPTION
              "The Device Group
               Implementation of this group is mandatory"

        GROUP   hwInventoryGroup
        DESCRIPTION
              "The hardware inventory group.
               Implementation of this group is optional, but this group should
               be implemented if the device suppports any hardware options."

        GROUP   supplyInventoryGroup
        DESCRIPTION
              "The supply inventory group.
               Implementation of this group is optional, but this group should
               be implemented if the device contains any user replaceable
               supplies."

        GROUP   swInventoryGroup
        DESCRIPTION
              "The software inventory group.
               This group is optional but should be implemented to describe
               all code revisions for a device."

        GROUP   statsGeneralCountGroup
        DESCRIPTION
              "The general counts group."

        GROUP   statsPaperGeneralCountGroup
        DESCRIPTION
              "The general paper counts group."

        GROUP   statsPaperSidesCountGroup
        DESCRIPTION
              "The paper sides count group"

        GROUP   statsPaperSheetsCountGroup
        DESCRIPTION
              "The paper sheets count group"

        GROUP   statsPaperNupCountGroup
        DESCRIPTION
              "The multipage print (nup) count group"

        GROUP   statsPaperJobSizeGroup
        DESCRIPTION
              "The job size group."

        GROUP   statsScanGroup
        DESCRIPTION
              "The scan counts and statistics group.
               This group should be implemented if the device
               supports scanning."

        GROUP   statsCurrentSuppliesGroup
        DESCRIPTION
              "The supplies counts and statistics group.
               This group should be implemented if the device
               has replacable supplies."

        GROUP   statsSupplyHistoryGroup
        DESCRIPTION
              "The supplies counts and statistics group.
               This group should be implemented if the device
               has replacable supplies."

        GROUP   statsSupplyHistogramGroup
        DESCRIPTION
              "The supplies counts and statistics group.
               This group should be implemented if the device
               has replacable supplies."

        GROUP   deviceAlertGroup
        DESCRIPTION
              "The device alertsgroup.
               This group should be implemented if the device can post any
               warnings or intervention required states."

    ::= { mpsMIBCompliances 1 }

END -- end of module LEXMARK-MPS-MIB.
