        -- Lexmark International
        --
        --
        -- filename: LEXMARK-SETTINGS-DEFINITION.mib
        -- $Revision: 1.0 $
        -- $Date: 2014/mm/dd

LEXMARK-SETTINGS-DEFINITION DEFINITIONS ::= BEGIN

IMPORTS
    lexmarkModules
        FROM LEXMARK-ROOT-MIB
    settingsDefinition, settingsMIBCompliances, settingsMIBGroups
        FROM LEXMARK-SETTINGS-MIB
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    Integer32, MODULE-IDENTITY, OBJECT-TYPE
        FROM SNMPv2-SMI
    DisplayString, TEXTUAL-CONVENTION
        FROM SNMPv2-TC;

settingsDefinitionMibModule MODULE-IDENTITY 
    LAST-UPDATED "201403161242Z"
    ORGANIZATION "Lexmark International, Inc."
    CONTACT-INFO "Contact your local support team or service provider."
    DESCRIPTION
        "The MIB defines the device settings definition permitting retrieval of
         the complete definition of the setting to permit usage/presentation by
         a remote tool.

         Copyright (C) 2014 Lexmark International, Inc."
    REVISION    "201403161242Z"
    DESCRIPTION
         "This is a description"
    ::= { lexmarkModules 3 } 

settingsQuery        OBJECT IDENTIFIER ::= {settingsDefinition 7 }

-- Textual Conventions used by this MIB

SettingsReservedTC ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION
        "Reserved"
    SYNTAX      INTEGER {
                    reserved(0),
                    reserved2(1)
                }

SettingsGroupTC ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
       "Group settings category."
    SYNTAX        INTEGER{
                   ftp(1),
                   copy(2),
                   email(3),
                   network(4),
                   usb(5),
                   color(6),
                   device(7),
                   ports(8),
                   auth(9),
                   audit(10),
                   scan(11),
                   scanHw(12),
                   paper(13),
                   scanQuality(14),
                   output(15),
                   input(16),
                   alerts(17),
                   engine(18),
                   cartridge(19),
                   fax(20),
                   faxMedia(21),
                   faxQuality(22),
                   printHw(23),
                   lexconnect(24),
                   securityGen(25),
                   usage(26),
                   esf(27),
                   pageLayout(28),
                   photo(29),
                   print(30),
                   printMedia(31),
                   supplies(32),
                   ui(33),
                   secureNet(34),
                   servers(35),
                   adapters(36),
                   interfaces(37),
                   pcl(38),
                   debug(39),
                   ps(40),
                   ppds(41),
                   finisher(42),
                   ocr(43),
                   accessibility(44),
                   csf(45),
                   logging(46),
                   internal(47),
                   undefined(50)
                  }

-- Primary top level table definition

npaIdTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NpaIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of settings NPA IDs that have been returned."
    ::= { settingsDefinition 1 }

npaIdEntry OBJECT-TYPE
    SYNTAX      NpaIdEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the npaIdTable."
    INDEX   { npaIdIndex }
    ::= { npaIdTable 1 }

NpaIdEntry ::= SEQUENCE {
    npaIdIndex       Integer32
    --   This might be only the column in this table
}

npaIdIndex OBJECT-TYPE        -- Index definition
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this settingsDefinition entry index."
    ::= { npaIdEntry  1 }

-- Setting Attribute Table

settingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table defining the setting attributes that are dependent only on the
         selected NPA ID index value.   This information will permit usage and
         presentation of these settings by a remote tool."
    ::= { settingsDefinition 2 }

settingEntry OBJECT-TYPE
    SYNTAX      SettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a setting attribute definition."
    INDEX   { npaIdIndex }
    ::= { settingTable 1 }

SettingEntry ::= SEQUENCE {
    settingName     DisplayString, -- setting public name
    settingVccId    DisplayString, -- VCC Name
    settingGroup    SettingsGroupTC,
    settingAccess   INTEGER, -- Enumeration ro, rw, wo
    settingReboot       INTEGER, -- Enumeration
    settingDescription  DisplayString,
    settingNpaId        Integer32,
    settingIdValue      Integer32,
    settingIdStringName      DisplayString,
    settingIdLocalizedString DisplayString,
    settingType              Integer32
     }

settingName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Setting 'public name' definition.  This is for tool usage and
        comparison of the setting definition to previous access methods."
    ::= { settingEntry  1 }

settingVccId OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "VCC setting Name if it exists.   "
    ::= { settingEntry  2}

settingGroup OBJECT-TYPE
    SYNTAX      SettingsGroupTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Settings Group Identifier allows the remote tool to logically
        group settings into categories if desired."
    ::= { settingEntry  3}

settingAccess OBJECT-TYPE
    SYNTAX      INTEGER {
                   readOnly(1),
                   readWrite(2),
                   writeOnly(3)
                   }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the access level (RO, RW, or W)"
    ::= { settingEntry  4}

settingReboot OBJECT-TYPE
    SYNTAX      INTEGER {
                     null(0),
                     trigger(1),
                     required(2)
                     }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Integer  that indicates whether a reboot is required for
         activation or whether a change triggers a reboot"
    ::= { settingEntry  5}

settingDescription OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Setting description string"
    ::= { settingEntry  6}

settingNpaId OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "NPA ID value that is used for the index in an accessible field."
    ::= { settingEntry  7}

settingIdValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ID for the Setting Name, permitting identification of the display
        string assigned to this setting..  For future use."
    ::= { settingEntry  8}

settingIdStringName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The text string associated with the settingIdValue.   For future use."
    ::= { settingEntry  9}

settingIdLocalizedString OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The localized text string associated with the settingIdValue, using
        the language selection specified in the LEXMARK-SETTINGS-CONTROL MIB.
        For future use."
    ::= { settingEntry  10}

settingType OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Specifies the type of this setting and must be looked at as a bit field. The first 3 bits are used to determine whether the Integer, String or Octet setting entries in the settingValueTable are to be used for return of the current and default values for this setting. 

         Additional bits are used to determine whether the setting is indexed, a password, an integer range and/or enumeration, boolean, and signed/unsigned (applies to non-boolean integers).

         If the setting returns an integer result, then the 'settingCurrentValueIfInteger'  and 'settingFactoryDefaultIfInteger' entries will contain the current and default values.   If the setting returns a string result, then the 'settingCurrentValueIfString' and 'settingFactoryDefaultIfString' entries will contain the current and default values. If the setting returns an octet result, then the 'settingCurrentValueIfOctet' and 'settingFactoryDefaultIfOctet' entries will contain the current and default values.

         settingType will be defined as:

         Bit 0,1,2 - Define the variable type
                 - Value 0 = Unknown
                 - Value 1 = Integer
                 - Value 2 = String
                 - Value 3 = Octet
                 - Values 4-7 = Reserved

         Bit 3 = Range 
         Bit 4 = Enumeration
         Bit 5 = Indexed
         Bit 6 = Boolean
         Bit 7 = Password
         Bit 8 = Signed
         Bit 9 = Ip Address (v4)
         Bit 10 = Ip Address (v6)
         Bits 11-31 = Reserved
         "

    ::= { settingEntry  11}

-- Setting Value Table

settingValueTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SettingValueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table defining the current and default values for the setting.  The
         settingValueIndex is only used for settings that are indexed, storing
         multiple values associated with one setting name.  Most settings are
         not indexed and return a single scalar result (settingValueIndex=1)."
    ::= { settingsDefinition 3 }

settingValueEntry OBJECT-TYPE
    SYNTAX      SettingValueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a setting attribute definition."
    INDEX   { npaIdIndex, settingValueIndex }
    ::= { settingValueTable 1 }

SettingValueEntry ::= SEQUENCE {
    settingValueIndex Integer32,
    settingNpaIndex    Integer32,
    settingCurrentValueIfInteger  Integer32,
    settingCurrentValueIfString  OCTET STRING,
    settingCurrentValueIfOctet   OCTET STRING,
    settingFactoryDefaultIfInteger    Integer32,
    settingFactoryDefaultIfString  OCTET STRING,
    settingFactoryDefaultIfOctet OCTET STRING
    }

settingValueIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to indicate the row of this table."
    ::= { settingValueEntry 1 }

settingNpaIndex OBJECT-TYPE -- Index definition
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "For settings which have a single value associated with them (non-indexed) this will have a value of 0. 
        For settings which have more than one value associated with them (indexed), the first indexed entry will 
        have a value of 0. Each succeeding indexed entry will return the value of the previous indexed entry 
        incremented by one (1)."
        
    ::= { settingValueEntry 2 }

settingCurrentValueIfInteger OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns an integer result.
         Otherwise, this column will not be returned ."
    ::= { settingValueEntry  3}

settingCurrentValueIfString OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns a string result.
         Otherwise, this column will not be returned ."
    ::= { settingValueEntry  4}

settingCurrentValueIfOctet OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns an octet result.   
         Otherwise, this column will not be returned ."
    ::= { settingValueEntry  5}

settingFactoryDefaultIfInteger OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting  if the setting returns an integer result.
         Otherwise, this column will not be returned. "
    ::= { settingValueEntry  6}

settingFactoryDefaultIfString OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting if the setting returns a string result.
         Otherwise, this column will not be returned. "
    ::= { settingValueEntry  7}

settingFactoryDefaultIfOctet OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting if the setting returns an octet result.   
         Otherwise, this column will not be returned. "
    ::= { settingValueEntry  8}

-- Value Range Table
valueRangeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ValueRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of value ranges for a setting which returns an integer result. 

        NOTE: If the 'signed' bit of settingType (in the settingTable) is 1 for the given setting, then clients must interpret valueRangeMin, valueRangeMax and valueRangeIncrement as signed integers. Otherwise, clients must interpret these as unsigned integers."
    ::= { settingsDefinition 4 }

valueRangeEntry OBJECT-TYPE
    SYNTAX      ValueRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the valueRangeTable."
    INDEX   { npaIdIndex, settingValueIndex}
    ::= { valueRangeTable 1 }

ValueRangeEntry ::= SEQUENCE {
    valueRangeMin       Integer32,
    valueRangeMax       Integer32,
    valueRangeIncrement Integer32,
    valueRangeDecimalPlaces Integer32

}

valueRangeMin OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Minimum value."
    ::= { valueRangeEntry  1 }

valueRangeMax OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Max value."
    ::= { valueRangeEntry  2 }

valueRangeIncrement OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "How much a value increments."
    ::= { valueRangeEntry  3 }

valueRangeDecimalPlaces OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "How many decimal places do I have?"
    ::= { valueRangeEntry  4 }

-- enumValuesTable

enumValuesTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF EnumValuesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of enumeration values."
    ::= { settingsDefinition 5 }

enumValuesEntry OBJECT-TYPE
    SYNTAX      EnumValuesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the EnumValuesTable."
    INDEX   { npaIdIndex, settingValueIndex, enumValuesIndex }
    ::= { enumValuesTable 1 }

EnumValuesEntry ::= SEQUENCE {
    enumValuesIndex             Integer32,
    enumValuesValueIfInt        Integer32,
    enumValuesName              DisplayString,
    enumValuesTextIdValue       Integer32,
    enumValuesTextIdString      DisplayString,
    enumValuesTextIdLocalized   DisplayString,
    enumValuesValueIfString     DisplayString
}

enumValuesIndex OBJECT-TYPE        -- Index definition
    SYNTAX      Integer32 (1..256)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this enumValuesEntry
         index."
    ::= { enumValuesEntry  1 }

enumValuesValueIfInt OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Integer enum value. This column is not returned if the setting is a string enumeration."
    ::= { enumValuesEntry  2 }

enumValuesName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "String setting value name that is derived from the VCC value name."
    ::= { enumValuesEntry  3 }

enumValuesTextIdValue  OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "raw integer giving Text-ID value for the enum. For
         potential future usage.  Note:  if value is 0, then use
         enumTextIdLocalized string."
    ::= { enumValuesEntry  4 }

enumValuesTextIdString OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Text-ID identifier string for the enum. For potential
         future usage.   Note:  if value is null, then use
         enumTextIdLocalized string."
    ::= { enumValuesEntry  5 }

enumValuesTextIdLocalized OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Localized Text-ID string for the enum. For potential future
         usage"
    ::= { enumValuesEntry  6 }

enumValuesValueIfString OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "String enumeration value. This column is not returned if the setting is an integer enumeration."
    ::= { enumValuesEntry  7 }

-- LimitsTable

limitsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF LimitsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of limits that is utilized when the setting value
        returned is a string or octet."
    ::= { settingsDefinition 6 }

limitsEntry OBJECT-TYPE
    SYNTAX      LimitsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the limitsTable."
    INDEX   { npaIdIndex, settingValueIndex}
    ::= { limitsTable 1 }

LimitsEntry ::= SEQUENCE {
    limitsMaxLength   Integer32,
    limitsMinLength   Integer32,
    regularExpression DisplayString
}

limitsMaxLength OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum length of a string or octet in bytes."
    ::= { limitsEntry  1 }

limitsMinLength OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The minimum length of a string or octet in bytes."
    ::= { limitsEntry  2 }

regularExpression OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The specific textual syntax that this setting needs to conform to."
    ::= { limitsEntry  3 }

-- settingsQuery Branch
queryId OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "An NPA ID from the npaIdTable.  Tables in the settingsQuery branch
         will only be populated with the information specified by this NPA ID."
    ::= { settingsQuery 1 }

-- Query Setting Attribute Table

querySettingTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QuerySettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table defining the setting attributes that are dependent only on the
         selected NPA ID index value.   This information will permit usage and
         presentation of these settings by a remote tool."
    ::= { settingsQuery 2 }

querySettingEntry OBJECT-TYPE
    SYNTAX      QuerySettingEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a setting attribute definition."
    INDEX   { npaIdIndex }
    ::= { querySettingTable 1 }

QuerySettingEntry ::= SEQUENCE {
    querySettingName     DisplayString, -- setting public name
    querySettingVccId    DisplayString, -- VCC Name
    querySettingGroup    SettingsGroupTC,       -- Settings Group Identifier
    querySettingAccess   INTEGER,       -- Enumeration ro, rw, wo
    querySettingReboot       INTEGER,   -- Enumeration
    querySettingDescription  DisplayString,
    querySettingNpaId        Integer32,
    querySettingIdValue      Integer32,
    querySettingIdStringName      DisplayString,
    querySettingIdLocalizedString DisplayString,
    querySettingType              Integer32
     }

querySettingName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Setting 'public name' definition.  This is for tool usage and
        comparison of the setting definition to previous access methods."
    ::= { querySettingEntry  1 }

querySettingVccId OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "VCC setting Name if it exists.   "
    ::= { querySettingEntry  2}

querySettingGroup OBJECT-TYPE
    SYNTAX      SettingsGroupTC
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Settings Group Identifier allows the remote tool to logically
        group settings into categories if desired."
    ::= { querySettingEntry  3}

querySettingAccess OBJECT-TYPE
    SYNTAX      INTEGER {
                   readOnly(1),
                   readWrite(2),
                   writeOnly(3)
                   }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the access level (RO, RW, or W)"
    ::= { querySettingEntry  4}

querySettingReboot OBJECT-TYPE
    SYNTAX      INTEGER {
                     null(0),
                     trigger(1),
                     required(2)
                     }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Integer  that indicates whether a reboot is required for
         activation or whether a change triggers a reboot"
    ::= { querySettingEntry  5}

querySettingDescription OBJECT-TYPE
    SYNTAX      DisplayString (SIZE(0..128))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Setting description string"
    ::= { querySettingEntry  6}

querySettingNpaId OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "NPA ID value that is used for the index in an accessible field."
    ::= { querySettingEntry  7}

querySettingIdValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ID for the Setting Name, permitting identification of the display
        string assigned to this setting..  For future use."
    ::= { querySettingEntry  8}

querySettingIdStringName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The text string associated with the settingIdValue.   For future use."
    ::= { querySettingEntry  9}

querySettingIdLocalizedString OBJECT-TYPE
    SYNTAX DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The localized text string associated with the querySettingIdValue, using
        the language selection specified in the LEXMARK-SETTINGS-CONTROL MIB.
        For future use."
    ::= { querySettingEntry  10}

querySettingType OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
         "Specifies the type of this setting and must be looked at as a bit field. The first 3 bits are used to determine whether the Integer, String or Octet setting entries in the settingValueTable are to be used for return of the current and default values for this setting. 

         Additional bits are used to determine whether the setting is indexed, a password, an integer range and/or enumeration, boolean, and signed/unsigned (applies to non-boolean integers).

         If the setting returns an integer result, then the 'settingCurrentValueIfInteger'  and 'settingFactoryDefaultIfInteger' entries will contain the current and default values.   If the setting returns a string result, then the 'settingCurrentValueIfString' and 'settingFactoryDefaultIfString' entries will contain the current and default values. If the setting returns an octet result, then the 'settingCurrentValueIfOctet' and 'settingFactoryDefaultIfOctet' entries will contain the current and default values.

         querySettingType will be defined as:

         Bit 0,1,2 - Define the variable type
                 - Value 0 = Unknown
                 - Value 1 = Integer
                 - Value 2 = String
                 - Value 3 = Octet
                 - Values 4-7 = Reserved

         Bit 3 = Range 
         Bit 4 = Enumeration
         Bit 5 = Indexed
         Bit 6 = Boolean
         Bit 7 = Password
         Bit 8 = Signed
         Bit 9 = Ip Address (v4)
         Bit 10 = Ip Address (v6)
         Bits 11-31 = Reserved
         "
    ::= { querySettingEntry  11}

-- Setting Value Table

querySettingValueTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QuerySettingValueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table defining the current and default values for the setting.  The
         querySettingIndex is only used for settings that are indexed, storing
         multiple values associated with one setting name.  Most settings are
         not indexed and return a single scalar result (settingValueIndex=1)."
    ::= { settingsQuery 3 }

querySettingValueEntry OBJECT-TYPE
    SYNTAX      QuerySettingValueEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing a setting attribute definition."
    INDEX   { npaIdIndex, querySettingValueIndex }
    ::= { querySettingValueTable 1 }

QuerySettingValueEntry ::= SEQUENCE {
    querySettingValueIndex  Integer32,
    querySettingNpaIndex    Integer32,
    querySettingCurValIfInt  Integer32,
    querySettingCurrentValueIfString  OCTET STRING,
    querySettingCurValIfOctet  OCTET STRING,
    querySettingFactDefIfInt    Integer32,
    querySettingFactDefIfString  OCTET STRING,
    querySettingFactDefIfOctet  OCTET STRING
    }

querySettingValueIndex OBJECT-TYPE        -- Index definition
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this querySettingEntry index.  "
    ::= { querySettingValueEntry  1 }

querySettingNpaIndex OBJECT-TYPE        -- Index definition
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "For settings which have a single value associated with them (non-indexed) this will have a value of 0. 
        For settings which have more than one value associated with them (indexed), the first indexed entry will 
        have a value of 0. Each succeeding indexed entry will return the value of the previous indexed entry 
        incremented by one (1)."
    ::= { querySettingValueEntry  2 }

querySettingCurValIfInt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns an integer result.
         Otherwise, this column will not be returned ."
    ::= { querySettingValueEntry  3}

querySettingCurrentValueIfString OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns a string result.
         Otherwise, this column will not be returned ."
    ::= { querySettingValueEntry  4}

querySettingCurValIfOctet OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Current value for the setting if the setting returns an octet result.   
         Otherwise, this column will not be returned. "
    ::= { querySettingValueEntry  5}


querySettingFactDefIfInt OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting  if the setting returns an integer result.
         Otherwise, this column will not be returned. "
    ::= { querySettingValueEntry  6}

querySettingFactDefIfString OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting if the setting returns a string result.   
         Otherwise, this column will not be returned. "
    ::= { querySettingValueEntry  7}

querySettingFactDefIfOctet OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Factory Default Value for the setting if the setting returns an octet result.
         Otherwise, this column will not be returned."
    ::= { querySettingValueEntry  8}


-- Query Value Range Table
queryValueRangeTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QueryValueRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of value ranges for a setting which returns an integer result. 

        NOTE: If the 'signed' bit of settingType (in the settingTable) is 1 for the given setting, then clients must interpret valueRangeMin, valueRangeMax and valueRangeIncrement as signed integers. Otherwise, clients must interpret these as unsigned integers."
    ::= { settingsQuery 4 }

queryValueRangeEntry OBJECT-TYPE
    SYNTAX      QueryValueRangeEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the queryValueRangeTable."
    INDEX   { npaIdIndex, querySettingValueIndex}
    ::= { queryValueRangeTable 1 }

QueryValueRangeEntry ::= SEQUENCE {
    queryValueRangeMin       Integer32,
    queryValueRangeMax       Integer32,
    queryValueRangeIncrement Integer32,
    queryValueRangeDecimalPlaces Integer32

}

queryValueRangeMin OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Minimum value."
    ::= { queryValueRangeEntry  1 }

queryValueRangeMax OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Max value."
    ::= { queryValueRangeEntry  2 }

queryValueRangeIncrement OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "How much a value increments."
    ::= { queryValueRangeEntry  3 }

queryValueRangeDecimalPlaces OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "How many decimal places do I have?"
    ::= { queryValueRangeEntry  4 }

-- queryEnumValuesTable

queryEnumValuesTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QueryEnumValuesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of enumeration values."
    ::= { settingsQuery 5 }

queryEnumValuesEntry OBJECT-TYPE
    SYNTAX      QueryEnumValuesEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the EnumValuesTable."
    INDEX   { npaIdIndex, querySettingValueIndex, queryEnumValuesIndex }
    ::= { queryEnumValuesTable 1 }

QueryEnumValuesEntry ::= SEQUENCE {
    queryEnumValuesIndex             Integer32,
    queryEnumValuesValueIfInt        Integer32,
    queryEnumValuesName              DisplayString,
    queryEnumValuesTextIdValue       Integer32,
    queryEnumValuesTextIdString      DisplayString,
    queryEnumValuesTextIdLocalized   DisplayString,
    queryEnumValuesValueIfString     DisplayString
}

queryEnumValuesIndex OBJECT-TYPE        -- Index definition
    SYNTAX      Integer32 (1..256)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value used to identify this queryEnumValuesEntry
         index."
    ::= { queryEnumValuesEntry  1 }

queryEnumValuesValueIfInt OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Integer enum value. This column is not returned if the setting is a string enumeration"
    ::= { queryEnumValuesEntry  2 }

queryEnumValuesName  OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "String setting value name that is derived from the VCC value name."
    ::= { queryEnumValuesEntry  3 }

queryEnumValuesTextIdValue  OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "raw integer giving Text-ID value for the enum. For
         potential future usage.  Note:  if value is 0, then use
         enumTextIdLocalized string."
    ::= { queryEnumValuesEntry  4 }

queryEnumValuesTextIdString OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Text-ID identifier string for the enum. For potential
         future usage.   Note:  if value is null, then use
         enumTextIdLocalized string."
    ::= { queryEnumValuesEntry  5 }

queryEnumValuesTextIdLocalized OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Localized Text-ID string for the enum. For potential future
         usage"
    ::= { queryEnumValuesEntry  6 }

queryEnumValuesValueIfString OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "String enumeration value. This column is not returned if the setting is an integer enumeration"
    ::= { queryEnumValuesEntry  7 }

-- QueryLimitsTable

queryLimitsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QueryLimitsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table of limits that is utilized when the setting value
        returned is a String or Octet."
    ::= { settingsQuery 6 }

queryLimitsEntry OBJECT-TYPE
    SYNTAX      QueryLimitsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry of the limitsTable."
    INDEX   { npaIdIndex, querySettingValueIndex}
    ::= { queryLimitsTable 1 }

QueryLimitsEntry ::= SEQUENCE {
    queryLimitsMaxLength   Integer32,
    queryLimitsMinLength   Integer32,
    queryRegularExpression DisplayString
}

queryLimitsMaxLength OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The maximum length of a string or octet in bytes."
    ::= { queryLimitsEntry  1 }

queryLimitsMinLength OBJECT-TYPE
    SYNTAX      Integer32 (1..65535)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The minimum length of a string or octet in bytes."
    ::= { queryLimitsEntry  2 }

queryRegularExpression OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The specific textual syntax that this setting needs to conform to."
    ::= { queryLimitsEntry  3 }

-- Groups

definitionGroup OBJECT-GROUP
    OBJECTS     {npaIdIndex,
                 settingName,
                 settingVccId,
                 settingGroup,
                 settingAccess,
                 settingReboot,
                 settingDescription,
                 settingNpaId,
                 settingIdValue,
                 settingIdStringName,
                 settingIdLocalizedString,
                 settingType,
                 settingNpaIndex,
                 settingCurrentValueIfInteger,
                 settingCurrentValueIfString,
                 settingCurrentValueIfOctet,
                 settingFactoryDefaultIfInteger,
                 settingFactoryDefaultIfString,
                 settingFactoryDefaultIfOctet,
                 valueRangeMin,
                 valueRangeMax,
                 valueRangeIncrement,
                 valueRangeDecimalPlaces,
                 enumValuesValueIfInt,
                 enumValuesName,
                 enumValuesTextIdValue,
                 enumValuesTextIdString,
                 enumValuesTextIdLocalized,
                 enumValuesValueIfString,
                 limitsMaxLength,
                 limitsMinLength,
                 regularExpression,
                 queryId,
                 querySettingName,
                 querySettingVccId,
                 querySettingGroup,
                 querySettingAccess,
                 querySettingReboot,
                 querySettingDescription,
                 querySettingNpaId,
                 querySettingIdValue,
                 querySettingIdStringName,
                 querySettingIdLocalizedString,
                 querySettingType,
                 querySettingNpaIndex,
                 querySettingCurValIfInt,
                 querySettingCurrentValueIfString,
                 querySettingCurValIfOctet,
                 querySettingFactDefIfInt,
                 querySettingFactDefIfString,
                 querySettingFactDefIfOctet,
                 queryValueRangeMin,
                 queryValueRangeMax,
                 queryValueRangeIncrement,
                 queryValueRangeDecimalPlaces,
                 queryEnumValuesValueIfInt,
                 queryEnumValuesName,
                 queryEnumValuesTextIdValue,
                 queryEnumValuesTextIdString,
                 queryEnumValuesTextIdLocalized,
                 queryEnumValuesValueIfString,
                 queryLimitsMaxLength,
                 queryLimitsMinLength,
                 queryRegularExpression
                }
    STATUS      current
    DESCRIPTION
        "The Definition Group."
    ::= { settingsMIBGroups 3 }

-- Compliance Statements

definitionMIBCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The requirements for conformance to the LEXMARK-SETTINGS-CONTROL MIB."

    MODULE      -- this module

        MANDATORY-GROUPS        { definitionGroup }

        GROUP   definitionGroup
        DESCRIPTION
              "The Definition Group
               Implementation of this group is mandatory"

    ::= { settingsMIBCompliances 2 }

END -- end of the LEXMARK-SETTINGS-DEFINITION


