--****************************************************************************
--
-- Copyright (c) 2002-2011 Broadcom Corporation
--
-- This program is the proprietary software of Broadcom Corporation and/or
-- its licensors, and may only be used, duplicated, modified or distributed
-- pursuant to the terms and conditions of a separate, written license
-- agreement executed between you and Broadcom (an "Authorized License").
-- Except as set forth in an Authorized License, Broadcom grants no license
-- (express or implied), right to use, or waiver of any kind with respect to
-- the Software, and Broadcom expressly reserves all rights in and to the
-- Software and all intellectual property rights therein.  IF YOU HAVE NO
-- AUTHORIZED LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY,
-- AND SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE
-- SOFTWARE.  
--
-- Except as expressly set forth in the Authorized License,
--
-- 1.     This program, including its structure, sequence and organization,
-- constitutes the valuable trade secrets of Broadcom, and you shall use all
-- reasonable efforts to protect the confidentiality thereof, and to use this
-- information only in connection with your use of Broadcom integrated circuit
-- products.
--
-- 2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED
-- "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS
-- OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
-- RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL
-- IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR
-- A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET
-- ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME
-- THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE.
--
-- 3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM
-- OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
-- INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY
-- RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM
-- HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN
-- EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1,
-- WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY
-- FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED REMEDY.
--
--****************************************************************************
--    Filename: brcm-cm-engineering.mib
--    Author:   Kevin O'Neal
--    Creation Date: 22-october-2002
--
--****************************************************************************
--    Description:
--
--		private MIB for cablemodem factory
--		
--****************************************************************************
--    Revision History:
--
--****************************************************************************

BRCM-CM-ENGINEERING-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Integer32,
    Unsigned32
        FROM SNMPv2-SMI
    TruthValue, RowPointer
        FROM SNMPv2-TC
    TenthdBmV,
    TenthdB
        FROM DOCS-IF-MIB
    cableDataEngineering
        FROM BRCM-CABLEDATA-ENGINEERING-MIB
    cmDsCalOffsetIndex
        FROM BRCM-CM-FACTORY-MIB;
                
cablemodemEngineering MODULE-IDENTITY
    LAST-UPDATED "201104140000Z"
    ORGANIZATION "Broadcom Corporation"
    CONTACT-INFO
        "	BANANA-CABLEDATA
                (cableData branch of the
                Broadcom Assigned Numbers and Naming Authority)
                Broadcom Corporation

        Postal: 4385 River Green Parkway
                Duluth, GA  30096
                USA

           Tel: +1 770 232-0018

        E-mail: banana-cabledata@broadcom.com"
    DESCRIPTION
        "Broadcom proprietary MIB for management and configuration
         of cablemodem objects used in engineering and development."
    REVISION      "201104140000Z"
    DESCRIPTION
        "Added object cmDsCalPhySymbolRate." 
    REVISION      "201010200000Z"
    DESCRIPTION
        "Updated value ranges on cmDsCalTunerIndex, cmDsCalPhyTuner and 
         cmDsCalPhyTunerChannel." 
    REVISION      "200910060000Z"
    DESCRIPTION
        "Added cmEngrBpi objects.
         Removed DEFVAL from cmDsCalTunerType object to fix compiler warning." 
    REVISION      "200904030000Z"
    DESCRIPTION
        "Added object cmUsCalDiplexer."     
    REVISION      "200811030000Z"
    DESCRIPTION
        "Added objects cmDsCalPhyFrequency and cmDsCalPhyFrequencyError."
    REVISION      "200809230000Z"
    DESCRIPTION
        "Added cmDsCalTunerTable and cmDsCalPhyTable in support of systems
         which support multiple DS phys per tuner."
    REVISION      "200702050000Z"
    DESCRIPTION
        "Module description was updated. 
         Compilability issues were cleaned up: 
         - Chronological order of revision history was corrected.
         - Revision dates were updated to post-Y2K format.
         - Range restrictions were added to objects cmDsCalTunerCoefIndex, 
           cmDsCalIFCoefIndex, cmDsCalFineCoefIndex, cmDsCalEqCoefIndex, and 
           cmUsCalControlIndex."
    REVISION     "200306230000Z"
    DESCRIPTION
        "Added objects to allow dynamic population and de-population of
         the downstream and upstream calibration tables in order to provide
         more efficient RAM management when performing downstream and 
         upstream CM characterization."
    REVISION     "200304240000Z"
    DESCRIPTION
        "Added cmDsCalFrequencyError object."
    REVISION     "200301030000Z"
    DESCRIPTION
        "Added cmHwSTABW2 object."
    REVISION     "200212230000Z"
    DESCRIPTION
        "Added AGC control objects.  Ho, Ho, Ho."
    REVISION     "200212110000Z"
    DESCRIPTION
        "Added more DS cal objects to control and report the results of the
         CM DS characterization routine."
    REVISION     "200211110000Z"
    DESCRIPTION
        "Added objects for 33xx hardware control in cmEngrBase and
         populated cmEngrUpstreamCalibration."
    REVISION     "200210220000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { cableDataEngineering 2 }

-- cmEngrBase: miscellaneous control/state objects for engineering mode    
cmEngrBase OBJECT IDENTIFIER ::= { cablemodemEngineering 1 }

cmEngr33xxOpcode OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The hardware address or multibyte opcode to access in a 33xx family
         device when executing a cmEngr33xxCommand operation."
    ::= { cmEngrBase 1 }
    
cmEngr33xxData OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The data read from or to be written to a 33xx family device when 
         executing a cmEngr33xxCommand operation."
    ::= { cmEngrBase 2 }
    
cmEngr33xxCommand OBJECT-TYPE
    SYNTAX      INTEGER {
                read(0),
                write(1)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this value to read(0) will cause a read operation to be
         executed on the multibyte opcode specified in cmEngr33xxOpcode.  The 
         data read back from the operation will be presented in cmEngr33xxData.  
         Setting this value to write(1) will cause the data in cmEngr33xxData 
         to be written via the multibyte opcode specified in cmEngr33xxOpcode."
    ::= { cmEngrBase 3 }

-- cmEngrDownstreamCalibration: used to characterize a family of devices,
-- typically not necessary for manufacturing of individual units.
cmEngrDownstreamCalibration OBJECT IDENTIFIER ::= { cablemodemEngineering 2 }

--
-- Tuner Coeficient objects
--

cmDsCalZeroTunerCoefs OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to true(1) will result in all writable objects in
         the cmDsCalTunerCoefTable being set to zero.  Sets to false(2) will be
         accepted, but will not result in any action being taken.  Reading
         this object always returns false(2)."
    ::= { cmEngrDownstreamCalibration 1 }

cmDsCalNumTunerCoefs OBJECT-TYPE
    SYNTAX      Unsigned32 (1..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the number of tuner coefficients per downstream
         frequency in the cmDsCalTunerCoefTable.  Note that the total number
         of entries in this table will be the value of cmDsCalNumOffsets
         (from the BRCM-CM-FACTORY-MIB) multiplied by this value. If this value
         is changed, then the cmDsCalTunerCoefTable will be destroyed and 
         rebuilt with the new number of coefficients, but all coefficient values
         will be set to zero."
    ::= { cmEngrDownstreamCalibration 2 }

cmDsCalTunerCoefTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalTunerCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of tuner coeffiencents to be used when calculating downstream 
         power for this device."
    ::= { cmEngrDownstreamCalibration 3 }
    
cmDsCalTunerCoefEntry OBJECT-TYPE
    SYNTAX      CmDsCalTunerCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry defining a tuner coefficient for a given frequency at the
         given index for this device."
    INDEX   { cmDsCalOffsetIndex, cmDsCalTunerCoefIndex }
    ::= { cmDsCalTunerCoefTable 1 }
    
CmDsCalTunerCoefEntry ::= 
    SEQUENCE    {
                cmDsCalTunerCoefIndex         Integer32,
                cmDsCalTunerCoefFrequency     Integer32,
                cmDsCalTunerCoefValue         Unsigned32,
                cmDsCalTunerCoefCopyFrom      Integer32
    }
    
cmDsCalTunerCoefIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..128)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this tuner coefficient."
    ::= { cmDsCalTunerCoefEntry 1 }
    
cmDsCalTunerCoefFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The downstream frequency at which this instance of 
         cmDsCalTunerCoefValue applies.  This read-only object is provided here
         for convenience.  Value is identical to the value of the read-write
         object cmDsCalOffsetFrequency which may be changed in engineering
         mode if necessary.  Changes made to cmDsCalOffsetFrequency will be
         reflected here immediately."
    REFERENCE 
         "docsIfDownChannelFrequency from DOCS-IF-MIB" 
    ::= { cmDsCalTunerCoefEntry 2 }
    
cmDsCalTunerCoefValue OBJECT-TYPE
    SYNTAX      Unsigned32 (0..1000000)
    UNITS       "millionth" 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this tuner coefficient multiplied by one million.
         For example, a tuner coefficient value of 0.218369 would be
         represented as 218369.  This gives a Since tuner coefficients must 
         range in value between zero and one, this object will always have a 
         value of between zero (0.000000) and one million (1.000000).  
         Precision is 1e-6."
    ::= { cmDsCalTunerCoefEntry 3 }
    
cmDsCalTunerCoefCopyFrom OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to the value of the first element of an index of
         a row in this table will cause all coefficients for this frequency to 
         be copied from the corresponding location in the frequency pointed to
         by the index specified.  For example, if cmDsCalTunerCoefCopyFrom.1.1
         is set to 2, then cmDsCalTunerCoefValue.1.1 through 
         cmDsCalTunerCoefCopyFrom.1.n will be copied from 
         cmDsCalTunerCoefCopyFrom.2.1 through cmDsCalTunerCoefCopyFrom.2.n. 
         Reading this object will always return 0."
    ::= { cmDsCalTunerCoefEntry 4 }
    
--
-- IF (Intermediate Frequency) Coeficient objects
--

cmDsCalZeroIFCoefs OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to true(1) will result in all writable objects in
         the cmDsCalIFCoefTable being set to zero.  Sets to false(2) will be
         accepted, but will not result in any action being taken.  Reading
         this object always returns false(2)."
    ::= { cmEngrDownstreamCalibration 4 }

cmDsCalNumIFCoefs OBJECT-TYPE
    SYNTAX      Unsigned32 (1..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the number of IF coefficients per downstream
         frequency in the cmDsCalIFCoefTable.  Note that the total number
         of entries in this table will be the value of cmDsCalNumOffsets
         (from the BRCM-CM-FACTORY-MIB) multiplied by this value. If this value
         is changed, then the cmDsCalIFCoefTable will be destroyed and 
         rebuilt with the new number of coefficients, but all coefficient values
         will be set to zero."
    ::= { cmEngrDownstreamCalibration 5 }
    
cmDsCalIFCoefTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalIFCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of intermediate frequency coeffiencents to be used when 
         calculating downstream power for this device."
    ::= { cmEngrDownstreamCalibration 6 }
    
cmDsCalIFCoefEntry OBJECT-TYPE
    SYNTAX      CmDsCalIFCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry defining an IF coefficient for a given frequency at the
         given index for this device."
    INDEX   { cmDsCalOffsetIndex, cmDsCalIFCoefIndex }
    ::= { cmDsCalIFCoefTable 1 }
    
CmDsCalIFCoefEntry ::= 
    SEQUENCE    {
                cmDsCalIFCoefIndex         Integer32,
                cmDsCalIFCoefFrequency     Integer32,
                cmDsCalIFCoefValue         Integer32,
                cmDsCalIFCoefCopyFrom      Integer32
    }
    
cmDsCalIFCoefIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..128)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this IF coefficient."
    ::= { cmDsCalIFCoefEntry 1 }
    
cmDsCalIFCoefFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The downstream frequency at which this instance of 
         cmDsCalIFCoefValue applies.  This read-only object is provided here
         for convenience.  Value is identical to the value of the read-write
         object cmDsCalOffsetFrequency which may be changed in engineering
         mode if necessary.  Changes made to cmDsCalOffsetFrequency will be
         reflected here immediately."
    REFERENCE 
         "docsIfDownChannelFrequency from DOCS-IF-MIB" 
    ::= { cmDsCalIFCoefEntry 2 }
    
cmDsCalIFCoefValue OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hundred-thousandth" 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this IF coefficient multiplied by one hundred thousand.
         For example, an IF coefficent value of -2662.94 would be represented
         as -266294000.  This gives an effective range of IF coefficent values
         ranging from -21474.83647 to 21474.83647 and a precision of 1e-5"
    ::= { cmDsCalIFCoefEntry 3 }
    
cmDsCalIFCoefCopyFrom OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to the value of the first element of an index of
         a row in this table will cause all coefficients for this frequency to 
         be copied from the corresponding location in the frequency pointed to
         by the index specified.  For example, if cmDsCalIFCoefCopyFrom.1.1
         is set to 2, then cmDsCalIFCoefValue.1.1 through 
         cmDsCalIFCoefCopyFrom.1.n will be copied from 
         cmDsCalIFCoefCopyFrom.2.1 through cmDsCalIFCoefCopyFrom.2.n. 
         Reading this object will always return 0."
    ::= { cmDsCalIFCoefEntry 4 }
    
--
-- Fine Coeficient objects
--

cmDsCalZeroFineCoefs OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to true(1) will result in all writable objects in
         the cmDsCalFineCoefTable being set to zero.  Sets to false(2) will be
         accepted, but will not result in any action being taken.  Reading
         this object always returns false(2)."
    ::= { cmEngrDownstreamCalibration 7 }

cmDsCalNumFineCoefs OBJECT-TYPE
    SYNTAX      Unsigned32 (1..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the number of Fine coefficients per downstream
         frequency in the cmDsCalFineCoefTable.  Note that the total number
         of entries in this table will be the value of cmDsCalNumOffsets
         (from the BRCM-CM-FACTORY-MIB) multiplied by this value. If this value
         is changed, then the cmDsCalFineCoefTable will be destroyed and 
         rebuilt with the new number of coefficients, but all coefficient values
         will be set to zero."
    ::= { cmEngrDownstreamCalibration 8 }

cmDsCalFineCoefTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalFineCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of Fine coeffiencents to be used when calculating downstream 
         power for this device."
    ::= { cmEngrDownstreamCalibration 9 }
    
cmDsCalFineCoefEntry OBJECT-TYPE
    SYNTAX      CmDsCalFineCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry defining a Fine coefficient for a given frequency at the
         given index for this device."
    INDEX   { cmDsCalOffsetIndex, cmDsCalFineCoefIndex }
    ::= { cmDsCalFineCoefTable 1 }
    
CmDsCalFineCoefEntry ::= 
    SEQUENCE    {
                cmDsCalFineCoefIndex         Integer32,
                cmDsCalFineCoefFrequency     Integer32,
                cmDsCalFineCoefValue         Integer32,
                cmDsCalFineCoefCopyFrom      Integer32
    }
    
cmDsCalFineCoefIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..128)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this Fine coefficient."
    ::= { cmDsCalFineCoefEntry 1 }
    
cmDsCalFineCoefFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The downstream frequency at which this instance of 
         cmDsCalFineCoefValue applies.  This read-only object is provided here
         for convenience.  Value is identical to the value of the read-write
         object cmDsCalOffsetFrequency which may be changed in engineering
         mode if necessary.  Changes made to cmDsCalOffsetFrequency will be
         reflected here immediately."
    REFERENCE 
         "docsIfDownChannelFrequency from DOCS-IF-MIB" 
    ::= { cmDsCalFineCoefEntry 2 }
    
cmDsCalFineCoefValue OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "millionth" 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this fine coefficient multiplied by one million.
         For example, a fine coefficent value of 36.5494 would be represented
         as 36549400.  This gives an effective range of fine coefficent values
         ranging from -2147.483647 to 2147.483647 and a precision of 1e-6."
    ::= { cmDsCalFineCoefEntry 3 }
    
cmDsCalFineCoefCopyFrom OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to the value of the first element of an index of
         a row in this table will cause all coefficients for this frequency to 
         be copied from the corresponding location in the frequency pointed to
         by the index specified.  For example, if cmDsCalFineCoefCopyFrom.1.1
         is set to 2, then cmDsCalFineCoefValue.1.1 through 
         cmDsCalFineCoefCopyFrom.1.n will be copied from 
         cmDsCalFineCoefCopyFrom.2.1 through cmDsCalFineCoefCopyFrom.2.n. 
         Reading this object will always return 0."
    ::= { cmDsCalFineCoefEntry 4 }
    
--
-- Equalizer Coeficient objects
--

cmDsCalZeroEqCoefs OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to true(1) will result in all writable objects in
         the cmDsCalEqualizerCoefTable being set to zero.  Sets to false(2) will be
         accepted, but will not result in any action being taken.  Reading
         this object always returns false(2)."
    ::= { cmEngrDownstreamCalibration 10 }

cmDsCalNumEqCoefs OBJECT-TYPE
    SYNTAX      Unsigned32 (1..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the number of equalizer coefficients per downstream
         frequency in the cmDsCalEqualizerCoefTable.  Note that the total number
         of entries in this table will be the value of cmDsCalNumOffsets
         (from the BRCM-CM-FACTORY-MIB) multiplied by this value. If this value
         is changed, then the cmDsCalEqualizerCoefTable will be destroyed and 
         rebuilt with the new number of coefficients, but all coefficient values
         will be set to zero."
    ::= { cmEngrDownstreamCalibration 11 }

cmDsCalEqCoefTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalEqCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of equalizer coeffiencents to be used when calculating downstream 
         power for this device."
    ::= { cmEngrDownstreamCalibration 12 }
    
cmDsCalEqCoefEntry OBJECT-TYPE
    SYNTAX      CmDsCalEqCoefEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry defining a equalizer coefficient for a given frequency at the
         given index for this device."
    INDEX   { cmDsCalOffsetIndex, cmDsCalEqCoefIndex }
    ::= { cmDsCalEqCoefTable 1 }
    
CmDsCalEqCoefEntry ::= 
    SEQUENCE    {
                cmDsCalEqCoefIndex         Integer32,
                cmDsCalEqCoefFrequency     Integer32,
                cmDsCalEqCoefValue         Integer32,
                cmDsCalEqCoefCopyFrom      Integer32
    }
    
cmDsCalEqCoefIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..128)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this equalizer coefficient."
    ::= { cmDsCalEqCoefEntry 1 }
    
cmDsCalEqCoefFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The downstream frequency at which this instance of 
         cmDsCalEqCoefValue applies.  This read-only object is provided here
         for convenience.  Value is identical to the value of the read-write
         object cmDsCalOffsetFrequency which may be changed in engineering
         mode if necessary.  Changes made to cmDsCalOffsetFrequency will be
         reflected here immediately."
    REFERENCE 
         "docsIfDownChannelFrequency from DOCS-IF-MIB" 
    ::= { cmDsCalEqCoefEntry 2 }
    
cmDsCalEqCoefValue OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hundred-thousandth" 
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The value of this equalizer coefficient multiplied by one hundred 
         thousand. For example, an equalizer coefficent value of 4287.95 would 
         be represented as 428795000.  This gives an effective range of 
         equalizer coefficent values ranging from -21474.83647 to 21474.83647 
         and a precision of 1e-5."
    ::= { cmDsCalEqCoefEntry 3 }
    
cmDsCalEqCoefCopyFrom OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Setting this object to the value of the first element of an index of
         a row in this table will cause all coefficients for this frequency to 
         be copied from the corresponding location in the frequency pointed to
         by the index specified.  For example, if cmDsCalEqCoefCopyFrom.1.1 is 
         set to 2, then cmDsCalEqCoefValue.1.1 through cmDsCalEqCoefCopyFrom.1.n 
         will be copied from cmDsCalEqCoefCopyFrom.2.1 through 
         cmDsCalEqCoefCopyFrom.2.n. Reading this object will always return 0."
    ::= { cmDsCalEqCoefEntry 4 }
    
cmDsCalNumLDAIxReads OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the number of times the LDAIx registers will be read before doing 
         the power calculations.  It will average the register values."
    ::= { cmEngrDownstreamCalibration 13 }
    
cmDsCalLDAIxReadInterval OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    UNITS       "milliseconds"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the time (in milliseconds) between each read of the LDAIx 
         registers."
    ::= { cmEngrDownstreamCalibration 14 }
    
cmDsCalTunerStep OBJECT-TYPE
    SYNTAX      Unsigned32 (0..800)
    UNITS       "hundredth dBmV"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the step size (in dBmV) that was used when sampling the tuner 
         table.  This influences how the data is interpolated when calculating 
         the tuner gain part of actual power level."
    ::= { cmEngrDownstreamCalibration 15 }
    
cmDsCalMasterPowerOffset OBJECT-TYPE
    SYNTAX      Integer32 (-32700..32700)
    UNITS       "hundredth dBmV"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the master offset power value (in dBmV) for the modem.  Each 
         frequency band in the table has an offset power adjustment that is 
         applied to this value when calculating the actual power level."
    ::= { cmEngrDownstreamCalibration 16 }
    
cmDsCalCharacterizeNow OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the CM will execute its DS characterization 
         routine using the frequency specified by cmDsCalFrequency, and the 
         modulation type specified by cmDsCalModulation.  Prior to executing the 
         DS characterization routine, cmDsCalLockNow must have been set to 
         true(1) and the lock must have been successful, as indicated by 
         cmDsCalQamLocked and cmDsCalFecLocked both being true(1). The SET 
         operation will not return until the routine is complete, so the SNMP 
         manager's timeout value may need to be increased to several seconds.  
         Once the DS characterization is complete, the resulting data may be 
         read from the objects cmDsCalNormalLDAIT, cmDsCalNormalLDAIF, 
         cmDsCalNormalLDAII, cmDsCalFrozenLDAIT, cmDsCalFrozenLDAIF, 
         cmDsCalFrozenLDAII, cmDsCalFGain, cmDsCalTGain, and cmDsCalIGain.  
         Always returns false(2) when read."
    ::= { cmEngrDownstreamCalibration 17 }
    
cmDsCalNormalLDAIT OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAIT register after executing the 'normal' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 18 }
    
cmDsCalNormalLDAIF OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAIF register after executing the 'normal' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 19 }
    
cmDsCalNormalLDAII OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAII register after executing the 'normal' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 20 }
    
cmDsCalFrozenLDAIT OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAIT register after executing the 'frozen' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 21 }
    
cmDsCalFrozenLDAIF OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAIF register after executing the 'frozen' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 22 }
    
cmDsCalFrozenLDAII OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the contents of the LDAII register after executing the 'frozen' 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 23 }
    
cmDsCalFGainTap OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the value of the equalizer main tap after executing the F-Gain 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 24 }
    
cmDsCalTGainTap OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the value of the equalizer main tap after executing the T-Gain 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 25 }
    
cmDsCalIGainTap OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Shows the value of the equalizer main tap after executing the I-Gain 
         portion of the CM DS characterization routine."
    ::= { cmEngrDownstreamCalibration 26 }
    
cmDsCalFrequencyError OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the amount of frequency error in the downstream signal."
    ::= { cmEngrDownstreamCalibration 27 }
    
cmDsCalTunerCoefTablePopulate  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the downstream tuner coefficient data will be 
         loaded into the cmDsCalTunerCoefTable.  If the table is already 
         populated, it will be flushed and re-populated.  If the amount of RAM
         available on the device becomes low while populating the table, an 
         error code of RESOURCE UNAVAILABLE will be returned, and the table
         population will be incomplete.  Setting this object to false(2) will 
         flush the cmDsCalTunerCoefTable.
         
         When read, this object indicates the current state of the 
         cmDsCalTunerCoefTable.  A value of true(1) indicates that the table was
         successfully populated.  A value of false(2) indicates that the table
         is either unpopulated, or that insufficient RAM was available to 
         complete the population and that the table is incomplete."
    ::= { cmEngrDownstreamCalibration 28 }
    
cmDsCalIFCoefTablePopulate  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the downstream intermediate frequency coefficient 
         data will be loaded into the cmDsCalIFCoefTable.  If the table is 
         already populated, it will be flushed and re-populated.  If the amount 
         of RAM available on the device becomes low while populating the table, 
         an error code of RESOURCE UNAVAILABLE will be returned, and the table
         population will be incomplete.  Setting this object to false(2) will 
         flush the cmDsCalIFCoefTable.
         
         When read, this object indicates the current state of the 
         cmDsCalIFCoefTable.  A value of true(1) indicates that the table was
         successfully populated.  A value of false(2) indicates that the table
         is either unpopulated, or that insufficient RAM was available to 
         complete the population and that the table is incomplete."
    ::= { cmEngrDownstreamCalibration 29 }
    
cmDsCalFineCoefTablePopulate  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the downstream fine coefficient data will be 
         loaded into the cmDsCalFineCoefTable.  If the table is already 
         populated, it will be flushed and re-populated.  If the amount of RAM
         available on the device becomes low while populating the table, an 
         error code of RESOURCE UNAVAILABLE will be returned, and the table
         population will be incomplete.  Setting this object to false(2) will 
         flush the cmDsCalFineCoefTable.
         
         When read, this object indicates the current state of the 
         cmDsCalFineCoefTable.  A value of true(1) indicates that the table was
         successfully populated.  A value of false(2) indicates that the table
         is either unpopulated, or that insufficient RAM was available to 
         complete the population and that the table is incomplete."
    ::= { cmEngrDownstreamCalibration 30 }
    
cmDsCalEqCoefTablePopulate  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the downstream equalizer coefficient data will be 
         loaded into the cmDsCalEqCoefTable.  If the table is already 
         populated, it will be flushed and re-populated.  If the amount of RAM
         available on the device becomes low while populating the table, an 
         error code of RESOURCE UNAVAILABLE will be returned, and the table
         population will be incomplete.  Setting this object to false(2) will 
         flush the cmDsCalEqCoefTable.
         
         When read, this object indicates the current state of the 
         cmDsCalEqCoefTable.  A value of true(1) indicates that the table was
         successfully populated.  A value of false(2) indicates that the table
         is either unpopulated, or that insufficient RAM was available to 
         complete the population and that the table is incomplete."
    ::= { cmEngrDownstreamCalibration 31 }
    
cmDsCalTunerTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalTunerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table used to control all tuners present on this device."
    ::= { cmEngrDownstreamCalibration 32 }
    
cmDsCalTunerEntry OBJECT-TYPE
    SYNTAX      CmDsCalTunerEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry used to control an individual tuner."
    INDEX   { cmDsCalTunerIndex }
    ::= { cmDsCalTunerTable 1 }
    
CmDsCalTunerEntry ::= 
    SEQUENCE    {
                cmDsCalTunerIndex           Integer32,
                cmDsCalTunerType            INTEGER,
                cmDsCalTunerNumChannels     Integer32,
                cmDsCalTunerFrequency       Integer32,
                cmDsCalTunerTuneNow         TruthValue
    }
    
cmDsCalTunerIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..8)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this tuner."
    ::= { cmDsCalTunerEntry 1 }
    
cmDsCalTunerType  OBJECT-TYPE
    SYNTAX      INTEGER {
      temic473x(1),
      temic4937(2),
      celISG2000(3),
      celISG2000EU(4),
      celISG3300(5),
      celISG3300EU(6),
      celISG3300DS(7),
      celISG3300DSEU(8),
      panasonicET10(9),
      panasonicET03(10),
      alps(11),
      bcm3400(12),
      temic4706(13),
      bcm3415(14), -- not for use in North America
      alpsEU(15),
      philips1236(16),
      vendor(17),
      bcm3416(18),
      bcm3419(19),
      bcm3418(20),
      bcm3420(21),
      bcm3421(22),
      bcm3422(23),
      bcmInternal(24)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Identifies the type of this tuner."
    ::= { cmDsCalTunerEntry 2 }    
    
cmDsCalTunerNumChannels OBJECT-TYPE
    SYNTAX      Integer32 (1..5)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Identifies the maximum number of downstream channels which may be 
         tuned by this tuner in this application.  Note that the value of this
         object depends on the annex mode, because in Annex A each channel is 
         8MHz in width, whereas in Annex B each channel is 6MHz in width."
    ::= { cmDsCalTunerEntry 3 }

cmDsCalTunerFrequency  OBJECT-TYPE    
    SYNTAX      Integer32 (0..1000000000) 
    UNITS       "hertz" 
    MAX-ACCESS  read-write 
    STATUS      current 
    DESCRIPTION 
        "The center frequency to which this tuner will tune when 
         cmDsCalTunerTuneNow is set to true(1).  Note that a read of this object 
         does NOT necessarily indicate that the CM is currently tuned to the 
         indicated frequency, since the CM will not tune until 
         cmDsCalTunerTuneNow is set to true(1)." 
    REFERENCE 
        "docsIfDownChannelFrequency from DOCS-IF-MIB" 
    ::= { cmDsCalTunerEntry 4 }
    
cmDsCalTunerTuneNow OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When this object is set to true(1), the tuner will tune to the
         frequency specified by cmDsCalTunerFrequency.  Sets
         to false(2) will be rejected with an inconsistentValue error.
         taken.  When read, this object returns true(1) if the tuner is 
         currently tuned to the specified frequency, false(2) otherwise."
    ::= { cmDsCalTunerEntry 5 } 
    
cmDsCalPhyTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmDsCalPhyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A table which allows control over each individual downstream phy 
         block present on the device."
    ::= { cmEngrDownstreamCalibration 33 }
    
cmDsCalPhyEntry OBJECT-TYPE
    SYNTAX      CmDsCalPhyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry allowing control over an individual downstream phy block."
    INDEX   { cmDsCalPhyIndex }
    ::= { cmDsCalPhyTable 1 }
    
CmDsCalPhyEntry ::= 
    SEQUENCE    {
                cmDsCalPhyIndex                 Integer32,
                cmDsCalPhyTuner                 Integer32,
                cmDsCalPhyTunerChannel          Integer32,
                cmDsCalPhyModulation            INTEGER,
                cmDsCalPhyLockNow               TruthValue,
                cmDsCalPhyQamLocked             TruthValue,
                cmDsCalPhyFecLocked             TruthValue,
                cmDsCalPhySignalNoise           TenthdB,
                cmDsCalPhyPower                 TenthdBmV,
                cmDsCalPhyFrequency             Integer32,
                cmDsCalPhyFrequencyError        Integer32,
                cmDsCalPhySymbolRate            Integer32
                }
    
cmDsCalPhyIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..12)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this phy block."
    ::= { cmDsCalPhyEntry 1 }
    
cmDsCalPhyTuner OBJECT-TYPE
    SYNTAX      Integer32 (1..8)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls which tuner from the cmDsCalTunerTable this phy is mapped to."
    ::= { cmDsCalPhyEntry 2 }
    
cmDsCalPhyTunerChannel OBJECT-TYPE
    SYNTAX      Integer32 (-8..8)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls which channel of the tuner identified by cmDsCalPhyTuner is
         mapped to this phy.  Values are defined as offsets from the center 
         channel of the tuner, which is represented by a value of 0 for this 
         object.  Note that allowable values for this object are constrained
         by the value of cmDsCalTunerNumChannels for the tuner specified by
         cmDsCalPhyTuner.  A value of 0 - denoting the exact center channel -
         is only valid if cmDsCalTunerNumChannels is odd.  For even values of
         cmDsCalTunerNumChannels, locking to the exact center frequency will 
         not be possible."
    ::= { cmDsCalPhyEntry 3 }
    
cmDsCalPhyModulation OBJECT-TYPE 
     SYNTAX      INTEGER { 
         qam64(3), 
         qam256(4),
         qam1024(5)
     } 
     MAX-ACCESS  read-write 
     STATUS      current 
     DESCRIPTION 
        "The modulation type that the CM will attempt to lock under
         when cmDsCalPhyLockNow is set to true.  Note that a read of
         this object does NOT necessarily indicate that the CM is 
         currently locked under the indicated modulation, since the
         CM will not attempt to lock until cmDsCalPhyLockNow is set to
         true.  The enumerated values for this object begin at 3 for
         consistency with the docsIfDownChannelModulation values." 
     REFERENCE 
        "docsIfDownChannelModulation from DOCS-IF-MIB" 
     ::= { cmDsCalPhyEntry 4 } 
     
cmDsCalPhyLockNow OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When this object is set to true(1), the CM will attempt to lock the
         downstream phy according to the parameters specified by the values of
         cmDsCalTunerCenterFrequency, cmDsCalPhyTuner, cmDsCalPhyTunerChannel, 
         and cmDsCalPhyModulation.  Note that prior to setting this object, 
         the instance of cmDsCalTunerTuneNow corresponding to the value of 
         cmDsCalPhyTuner must have previously been set to true(1).  Sets
         of this object to false(2) will be rejected with an inconsistentValue 
         error.  When read, this object returns false(2) if no lock has been
         attempted, and true(1) if a lock has been attempted.  The success
         or failure of an attempted lock is indicated by the values of objects
         cmDsCalPhyQamLocked and cmDsCalPhyFecLocked."
    ::= { cmDsCalPhyEntry 5 }
    
cmDsCalPhyQamLocked OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates whether the last set of cmDsCalPhyLockNow to true resulted 
         in the phy acheiving QAM lock.  The value of this object is reset 
         whenever cmDsCalPhyLockNow is set to true, and its value will always 
         indicate the result of the last attempt to lock."
    ::= { cmDsCalPhyEntry 6 }
    
cmDsCalPhyFecLocked OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates whether the last set of cmDsCalPhyLockNow to true resulted 
         in the phy acheiving FEC lock.  The value of this object is reset 
         whenever cmDsCalPhyLockNow is set to true, and its value will always 
         indicate the result of the last attempt to lock."
    ::= { cmDsCalPhyEntry 7 }
    
cmDsCalPhySignalNoise OBJECT-TYPE
    SYNTAX      TenthdB
    UNITS       "TenthdB"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Signal/Noise ratio as perceived for this phy."
    REFERENCE
        "Data-Over-Cable Service Interface Specifications: Radio
         Frequency Interface Specification SP-RFIv2.0-I10-051209,
         Tables 4-1 and 4-2"
    ::= { cmDsCalPhyEntry 8 }
    
cmDsCalPhyPower OBJECT-TYPE
     SYNTAX      TenthdBmV
     UNITS       "dBmV"
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
         "The received power level for this phy."
     REFERENCE
         "Data-Over-Cable Service Interface Specifications: Radio
          Frequency Interface Specification SP-RFIv2.0-I10-051209,
          Tables 6-16, 6-17."
     ::= { cmDsCalPhyEntry 9 }
     
cmDsCalPhyFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the frequency to which this phy is locked.  The value of this
         object will reflect the frequency as calculated according to the 
         settings of cmDsCalPhyTuner and cmDsCalPhyTuner, and does not include 
         the frequency error as reported by cmDsCalPhyFrequencyError.  If 
         cmDsCalPhyLockNow has not been set to true(1) then this object will
         report a value of 0."
    ::= { cmDsCalPhyEntry 10 }
     
cmDsCalPhyFrequencyError OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "hertz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the frequency error for this phy.  The actual frequency to 
         which the phy is locked will be the sum of the value of this object
         and cmDsCalPhyFrequency.  If cmDsCalPhyLockNow has not been set to 
         true(1) then this object will report a value of 0."
    ::= { cmDsCalPhyEntry 11 }

cmDsCalPhySymbolRate OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "symbols per second"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Reports the downstream symbol rate for this phy.  If cmDsCalPhyLockNow 
         has not been set to true(1) then this object will report a value of 0."
    ::= { cmDsCalPhyEntry 12 }    
    
---
--- Upstream Calibration engineering objects
---

cmEngrUpstreamCalibration OBJECT IDENTIFIER ::= { cablemodemEngineering 3 }

cmUsCalControlStartPower  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "dBmV"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the starting power used in the 
         cmUsCalControlTable.  Changing this value will result in the size of
         the cmUsCalControlTable being altered."
    ::= { cmEngrUpstreamCalibration 1 }
    
cmUsCalControlEndPower  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "dBmV"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the ending power used in the 
         cmUsCalControlTable.  Changing this value will result in the size of
         the cmUsCalControlTable being altered."
    ::= { cmEngrUpstreamCalibration 2 }

cmUsCalControlResolution  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "hundredth dBmV"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the resolution used in the 
         cmUsCalControlTable.  Changing this value will result in the size of
         the cmUsCalControlTable being altered."
    ::= { cmEngrUpstreamCalibration 3 }

cmUsCalZeroControl  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "If set to true(1), all instances of cmUsCalControlAmpGain and
         cmUsCalControlDacAtten in the cmUsCalControlTable will be set to
         a value of zero.  When read, always returns false."
    ::= { cmEngrUpstreamCalibration 4 }

cmUsCalControlTable  OBJECT-TYPE
    SYNTAX      SEQUENCE OF CmUsCalControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of control values to be used when calculating upstream 
         power for this device."
    ::= { cmEngrUpstreamCalibration 5 }
    
cmUsCalControlEntry OBJECT-TYPE
    SYNTAX      CmUsCalControlEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry defining the control values for a given power at the given
         index for this device."
    INDEX   { cmUsCalControlIndex }
    ::= { cmUsCalControlTable 1 }
    
CmUsCalControlEntry ::= 
    SEQUENCE    {
                cmUsCalControlIndex         Integer32,
                cmUsCalControlPower         Integer32,
                cmUsCalControlAmpGain       Unsigned32,
                cmUsCalControlDacAtten      Unsigned32
    }
    
cmUsCalControlIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..128)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Identifies the instance of this pair of control values."
    ::= { cmUsCalControlEntry 1 }
    
cmUsCalControlPower  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "hundredth dBmV"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the upstream power level which is expected when the
         amp gain and DAC attenuation are programmed as indicated in this
         entry.  This value is read-only, its value depends on the values
         set in cmUsCalControlStartPower, cmUsCalControlEndPower, and
         cmUsCalControlResolution."
    ::= { cmUsCalControlEntry 2 }
    
cmUsCalControlAmpGain  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the amplifier gain setting used to produce
         an output power equal to the value of this entry's instance of
         cmUsCalControlPower."
    ::= { cmUsCalControlEntry 3 }
    
cmUsCalControlDacAtten  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the DAC attenuation setting used to produce
         an output power equal to the value of this entry's instance of
         cmUsCalControlPower."
    ::= { cmUsCalControlEntry 4 }

cmUsCalOffsetStartFreq  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "megahertz"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the starting frequency used in the 
         cmUsCalOffsetTable.  Changing this value will result in the size of
         the cmUsCalOffsetTable being altered."
    ::= { cmEngrUpstreamCalibration 6 }
    
cmUsCalOffsetEndFreq  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "megahertz"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the ending frequency used in the 
         cmUsCalOffsetTable.  Changing this value will result in the size of
         the cmUsCalOffsetTable being altered."
    ::= { cmEngrUpstreamCalibration 7 }

cmUsCalOffsetResolution  OBJECT-TYPE
    SYNTAX      Integer32 (0..255)
    UNITS       "hundredth megahertz (10 kHz)"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the resolution used in the 
         cmUsCalOffsetTable.  Changing this value will result in the size of
         the cmUsCalControlTable being altered."
    ::= { cmEngrUpstreamCalibration 8 }
    
cmUsCalBoardType  OBJECT-TYPE
    SYNTAX      INTEGER {
                genericUnknownDontCare(0),
                bcm93350AV2US(1),
                bcm93350AV3US(2),
                bcm93350CV0US(3),
                bcm93350iV1aUS(4),
                bcm93350iV1bUS(5),
                bcm93350VV1US(6),
                bcm93352VV0US(7),
                bcm93350AV2Euro(8),
                bcm93350AV3Euro(9),
                bcm93350CV0Euro(10),
                bcm93350iV1aEuro(11),
                bcm93350iV1bEuro(12),
                bcm93350VV1Euro(13),
                bcm93352VV0Euro(14),
                bcm93350CV2US(15),
                bcm93350CV2Euro(16),
                bcm93345I(17),
                bcm93345A(18)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the board revision that the tables have been calibrated for; it
         helps the app warn the user about incorrect configurations (loading a 
         table that has been calibrated for a different modem).  These values 
         are the same as those found in the HAL non-vol settings."
    DEFVAL { genericUnknownDontCare }
    ::= { cmEngrUpstreamCalibration 9 }

cmUsCalAmpType  OBJECT-TYPE
    SYNTAX      INTEGER {
                lucentATTV4910(1),
                lucentATTV4911(2),
                celISG2000(3),
                anadigicsARA5050(4),
                adi8321(5),
                maxim3510(6),
                celISG3300(7),
                adi8322(8),
                broadcomInternal(9)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Sets the upstream amp that the tables have been calibrated for; it 
         helps the app warn the user about incorrect configurations.  These 
         values are the same as those found in the HAL non-vol settings."
    DEFVAL { broadcomInternal }
    ::= { cmEngrUpstreamCalibration 10 }

cmUsCalAmpGain  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the current value of the amplifier gain, an 8
         bit hardware value."
    ::= { cmEngrUpstreamCalibration 11 }

cmUsCalDacAtten  OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the current value of the DAC attenuator, an 8
         bit hardware value."
    ::= { cmEngrUpstreamCalibration 12 }
    
cmUsCalTransmitNow  OBJECT-TYPE
    SYNTAX      INTEGER {
                cw(1),
                bits23(2)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to cw(1), the device will begin transmitting upstream in
         CW mode using the specified amp gain and DAC attenuation values.  When
         set to bits23(2), the device will begin transmitting upstream in 23 
         bit mode using the specified amp gain and DAC attenuation values."
    ::= { cmEngrUpstreamCalibration 13 }
    
cmUsCalControlTablePopulate  OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "When set to true(1), the upstream calibration control data will be 
         loaded into the cmUsCalControlTable.  If the table is already 
         populated, it will be flushed and re-populated.  If the amount of RAM
         available on the device becomes low while populating the table, an 
         error code of RESOURCE UNAVAILABLE will be returned, and the table
         population will be incomplete.  Setting this object to false(2) will 
         flush the cmUsCalControlTable.
         
         When read, this object indicates the current state of the 
         cmUsCalControlTable.  A value of true(1) indicates that the table was
         successfully populated.  A value of false(2) indicates that the table
         is either unpopulated, or that insufficient RAM was available to 
         complete the population and that the table is incomplete."
    ::= { cmEngrUpstreamCalibration 14 }
    
cmUsCalDiplexerType  OBJECT-TYPE
    SYNTAX      INTEGER {
                lowSplit(1),
                midSplit(2)
    }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Controls and reflects the diplexer type on this board.  The primary
         effect that this setting has is to control the range of frequencies
         used in upstream calibration when operating in annex B mode.  A board
         with a lowSplit diplexer will be calibrated over a frequency range of
         5..42 MHz, while a board with a midSplit diplexer will be calibrated
         over a frequency range of 5..85 MHz.  This setting does not affect the
         calibration of an annex A board, which will always have a frequency
         range of 5..65 MHz."
    DEFVAL { lowSplit }
    ::= { cmEngrUpstreamCalibration 15 }

---
--- Hardware engineering objects
---

cmEngrHardware OBJECT IDENTIFIER ::= { cablemodemEngineering 4 }    

cmHwDSAGI OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "IF AGC Control"
    ::= { cmEngrHardware 1 }
    
cmHwDSAGT OBJECT-TYPE
    SYNTAX      Unsigned32 (0..255)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "RF (Tuner) AGC Control"
    ::= { cmEngrHardware 2 }
    
cmHwSTPGA1 OBJECT-TYPE
    SYNTAX      Unsigned32 (0..16777215)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "IF PGA Control"
    ::= { cmEngrHardware 3 }
    
cmHwSTABW OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "AGC Bandwidth Control"
    ::= { cmEngrHardware 4 }
    
cmHwSTABW2 OBJECT-TYPE
    SYNTAX      Unsigned32 (0..65535)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "AGC Bandwidth Control 2"
    ::= { cmEngrHardware 5 }

---
--- BPI engineering objects
---

cmEngrBpi OBJECT IDENTIFIER ::= { cablemodemEngineering 5 }    

cmBpiTekEven  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0 | 8 | 16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the BPI Traffic Encryption Key (TEK) EVEN 
        Key. The value may be 8 bytes if DES, 16 bytes if AES, or 
        0 bytes (empty string) if not configured."
    ::= { cmEngrBpi 1 }

cmBpiTekOdd  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0 | 8 | 16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the BPI Traffic Encryption Key (TEK) ODD 
        Key. The value may be 8 bytes if DES, 16 bytes if AES, or 
        0 bytes (empty string) if not configured."
    ::= { cmEngrBpi 2 }

cmBpiCbcIvEven  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0 | 8 | 16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the BPI Cipher Block Chaining EVEN 
        Initialization Vector. The value may be 8 bytes if DES, 
        16 bytes if AES, or 0 bytes (empty string) if not configured."
    ::= { cmEngrBpi 3 }

cmBpiCbcIvOdd  OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE (0 | 8 | 16))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object returns the BPI Cipher Block Chaining ODD 
        Initialization Vector. The value may be 8 bytes if DES, 
        16 bytes if AES, or 0 bytes (empty string) if not configured."
    ::= { cmEngrBpi 4 }

END
