-- *****************************************************************
-- Cisco Cable Diagnostic MIB
--
-- April, 2003 Lilian Jiang 
--
-- Copyright (c) 2003, 2004 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************
CISCO-CABLE-DIAG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Gauge32,
    Integer32,
    Unsigned32
        FROM SNMPv2-SMI

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF

    TruthValue,
    TimeStamp
        FROM SNMPv2-TC

    ifIndex
        FROM IF-MIB

    ciscoMgmt
        FROM CISCO-SMI
    ;

ciscoCableDiagMIB MODULE-IDENTITY
    LAST-UPDATED    "200409130000Z"
    ORGANIZATION    "Cisco Systems Inc. "
    CONTACT-INFO
        "Cisco Systems
        Customer Service

        Postal: 170 W Tasman Drive
            San Jose, CA 95134
            USA

        Tel: +1 800 553-NETS

        E-mail: cs-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "This MIB module defines objects for managing cable 
        diagnostic test capabilites supported by the Cisco devices.

        Cable diagnostic tests are tests intended to exercise 
        the functional integrity of the cable attached to a 
        physical interface.

        Examples of cable diagnostic test methods are: PRBS
        (Pesudo Random Binary Sequence), TDR (Time Domain 
        reflectometery), etc.."    
    REVISION    "200409130000Z"
    DESCRIPTION 
        "Added a new enum value indeterminate(9) in
         ccdTdrIfResultPairStatus."

    REVISION    "200401150000Z"
    DESCRIPTION
            "Initial version of this MIB module."
    ::= { ciscoMgmt 390 }

ciscoCableDiagMIBNotifs OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIB 0 }

ciscoCableDiagMIBObjects OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIB 1 }

ciscoCableDiagMIBConform OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIB 2 }

ccdPrbsObjects OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIBObjects 1 }

ccdTdrObjects OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIBObjects 2 }


--
-- PRBS Test Objects
--
ccdPrbsIfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CcdPrbsIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table containing information about PRBS (Pesudo 
        Random Binary Sequence) test on the device's 
        interfaces. An entry appears in this table for each 
        interface which is capable to run PRBS test."
    ::= { ccdPrbsObjects 1 }

ccdPrbsIfEntry OBJECT-TYPE
    SYNTAX     CcdPrbsIfEntry 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry in the ccdPrbsIfTable, containing the information
        about PRBS test on an interface."
    INDEX      { ifIndex }
    ::= { ccdPrbsIfTable 1 }

CcdPrbsIfEntry ::= SEQUENCE {
    ccdPrbsIfAction 
        INTEGER,
    ccdPrbsIfActionStatus 
        INTEGER, 
    ccdPrbsIfTestErrors
        Gauge32,
    ccdPrbsIfTestErrorsResetTime
        TimeStamp,
    ccdPrbsIfTestErrorsMaxValue
        Unsigned32
    }

ccdPrbsIfAction OBJECT-TYPE
    SYNTAX     INTEGER {
                   start(1),
                   stop(2),
                   errorReset(3),
                   running(4),
                   notRunning(5)
               }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Indicates the PRBS test action to be executed on the interface
        and whether the test is currently running or not.

        'start' -- start the PRBS test on the interface.

        'stop'  -- stop the PRBS test on the interface.

        'errorReset' -- reset the object value of
                   ccdPrbsIfTestErrors to zero on the interface.

        'running' -- the PRBS test is currently running on the
                   interface. This value is a read-only value
                   and can not be set on the interface.

        'notRunning' -- the PRBS test is currently not running
                   on the interface. This value is a read-only
                   value and can not be set on the interface."
    ::= { ccdPrbsIfEntry 1 }

ccdPrbsIfActionStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                   succeeded(1),
                   failedDueToUnknownReason(2),
                   failedDueToResourceUnavailable(3),
                   failedDueToInternalError(4),
                   failedDueToTestAlreadyStarted(5),
                   failedDueToTestAlreadyStopped(6),
                   failedDueToInterfaceDisabled(7)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the status of the last PRBS test action set on the
        interface." 
    ::= { ccdPrbsIfEntry 2 }

ccdPrbsIfTestErrors OBJECT-TYPE
    SYNTAX     Gauge32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the number of errors which occurred during the 
        current or most recent running of a test. This Gauge is reset
        to zero each time a test starts (e.g., when ccdPrbsIfAction
        is set to 'start') or each time ccdPrbsIfAction is set
        to 'errorReset' on an interface.

        If and when an instance of ccdPrbsIfTestErrors reaches its
        maximum value as indicated by the corresponding instance of
        ccdPrbsIfTestErrorsMaxValue, its value will be less or equal
        to the actual number of errors."         
    ::= { ccdPrbsIfEntry 3 }

ccdPrbsIfTestErrorsResetTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the most recent time that the corresponding 
        instance of ccdPrbsIfTestErrors is reset to zero. If the
        the corresponding instance of ccdPrbsIfTestErrors is
        never reset to zero, then the instance value for
        ccdPrbsIfTestErrorsResetTime will be zero."   
    ::= { ccdPrbsIfEntry 4 }

ccdPrbsIfTestErrorsMaxValue OBJECT-TYPE
    SYNTAX     Unsigned32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the maximum value of the corresponding instance
        of ccdPrbsIfTestErrors."
    ::= { ccdPrbsIfEntry 5 }

      
--
-- TDR Objects
-- 
ccdTdrIfTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CcdTdrIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table containing information about TDR 
        (Time Domain Reflectometery) test on the device's 
        interfaces. An entry appears in this table for each
        interface which is capable to run TDR test."
    ::= { ccdTdrObjects 1 }

ccdTdrIfEntry OBJECT-TYPE
    SYNTAX     CcdTdrIfEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry in the ccdTdrIfTable, containing the information 
        about TDR test on an interface."
    INDEX      { ifIndex }
    ::= { ccdTdrIfTable 1 }

CcdTdrIfEntry ::= SEQUENCE {
    ccdTdrIfAction
        INTEGER,
    ccdTdrIfActionStatus
        INTEGER,
    ccdTdrIfLastTestTime
        TimeStamp,
    ccdTdrIfResultValid
        TruthValue
    }

ccdTdrIfAction OBJECT-TYPE
    SYNTAX     INTEGER {
                   start(1),
                   clear(2),
                   running(3),
                   notRunning(4)   
               }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Indicates the TDR test action to be executed on the interface
        and whether the test is currently running or not.
 
        'start' -- start the TDR test on the interface.

        'clear' -- clear all the TDR test results on the interface.
                   After this action is executed on an interface,
                   the object value of ccdTdrIfResultValid for the
                   corresponding interface will be false(2).

        'running' -- the TDR test is currently running on the
                   interface. This value is a read-only value
                   and can not be set on the interface.

        'notRunning' -- the TDR test is currently not running
                   on the interface. This value is a read-only
                   value and can not be set on the interface."
    ::= { ccdTdrIfEntry 1 }

ccdTdrIfActionStatus OBJECT-TYPE
    SYNTAX     INTEGER { 
                   succeeded(1),
                   failedDueToUnknownReason(2),
                   failedDueToResourceUnavailable(3),
                   failedDueToInternalError(4),
                   failedDueToTestAlreadyRunning(5),
                   failedDueToInterfaceDisabled(6)
               }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the status of the last TDR test action set on the
        interface." 
    ::= { ccdTdrIfEntry 2 }

ccdTdrIfLastTestTime OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the timestamp when TDR test is last run 
        on the interface. If TDR test is never run on an 
        interface, then this object value will be zero."
    ::= { ccdTdrIfEntry 3 }

ccdTdrIfResultValid OBJECT-TYPE
    SYNTAX     TruthValue 
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates whether the TDR test result on the interface
        is valid for the user to retrieve or not."    
    ::= { ccdTdrIfEntry 4 }

ccdTdrIfResultTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CcdTdrIfResultEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A table containing information about TDR 
        test result on the device's interfaces. An entry 
        appears in this table for each cable pair on an interface 
        which has valid TDR test result, i.e., the value of 
        ccdTdrIfResultValid for the interface is true(1)."
    ::= { ccdTdrObjects 2 }
    
ccdTdrIfResultEntry OBJECT-TYPE
    SYNTAX     CcdTdrIfResultEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
            "An entry in the ccdTdrIfResultTable, containing 
            the information about TDR test on an interface."
    INDEX      { ifIndex, ccdTdrIfResultPairIndex } 
    ::= { ccdTdrIfResultTable 1 }
    
CcdTdrIfResultEntry ::= SEQUENCE {
    ccdTdrIfResultPairIndex
        INTEGER,
    ccdTdrIfResultPairChannel
        INTEGER,
    ccdTdrIfResultPairLength
        Integer32,
    ccdTdrIfResultPairLenAccuracy
        Integer32,
    ccdTdrIfResultPairDistToFault
        Integer32,
    ccdTdrIfResultPairDistAccuracy
        Integer32,
    ccdTdrIfResultPairLengthUnit
        INTEGER,
    ccdTdrIfResultPairStatus
        INTEGER
    }

ccdTdrIfResultPairIndex OBJECT-TYPE
    SYNTAX     INTEGER {
                         pair1to2(1),
                         pair3to6(2),
                         pair4to5(3),
                         pair7to8(4) 
               } 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The local cable pair index.

        'pair1to2' -- the pair with cable connectors 1 and 2.

        'pair3to6' -- the pair with cable connectors 3 and 6.

        'pair4to5' -- the pair with cable connectors 4 and 5.
  
        'pair7to8' -- the pair with cable connectors 7 and 8." 
    REFERENCE 
        "IEEE 802.3-2002: Sections 40.8.1"
    ::= { ccdTdrIfResultEntry 1 }

ccdTdrIfResultPairChannel OBJECT-TYPE
    SYNTAX     INTEGER {
                         other(1),
                         channelA(2),
                         channelB(3),
                         channelC(4),
                         channelD(5)
               }  
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The channels that the cable pair is connected to.

        'other' -- none of the following.

        'channelA' -- channel A.

        'channelB' -- channel B.

        'channelC' -- channel C.

        'channelD' -- channel D."
    ::= { ccdTdrIfResultEntry 2 }

ccdTdrIfResultPairLength OBJECT-TYPE
    SYNTAX     Integer32 (-1..2147483647)  
    MAX-ACCESS read-only 
    STATUS     current
    DESCRIPTION
        "The length of the cable pair. A value of -1 indicates 
        the length value is invalid. The unit of this value 
        is indicated by ccdTdrIfResultPairLengthUnit of the same 
        cable pair." 
    ::= { ccdTdrIfResultEntry 3 }

ccdTdrIfResultPairLenAccuracy OBJECT-TYPE
    SYNTAX     Integer32 (-1..2147483647)
    MAX-ACCESS read-only 
    STATUS     current
    DESCRIPTION
        "The length accuracy of the cable pair. This value 
        should be added to and deducted from the value of
        ccdTdrIfResultPairLength of the same cable pair to
        form the upper and lower range of the cable pair length.
        A value of -1 indicates the length accuracy value
        is invalid. The unit of this value is indicated by 
        ccdTdrIfResultPairLengthUnit of the same cable pair. "
    ::= { ccdTdrIfResultEntry 4 }

ccdTdrIfResultPairDistToFault OBJECT-TYPE
    SYNTAX     Integer32 (-1..2147483647)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The distance to the fault point of the cable pair. 
        A value of -1 indicates this value is invalid. 
        The unit of this value is indicated by 
        ccdTdrIfResultPairLengthUnit of the same cable pair."
    ::= { ccdTdrIfResultEntry 5 }

ccdTdrIfResultPairDistAccuracy OBJECT-TYPE
    SYNTAX     Integer32 (-1..2147483647)
    MAX-ACCESS read-only 
    STATUS     current
    DESCRIPTION
        "The accuracy of the distance to the fault point for 
        the cable pair. This value should be added to and 
        deducted from the value of ccdTdrIfResultPairDistToFault 
        of the same cable pair to form the upper and lower range 
        of the distance to fault point for the cable pair. 
        A value of -1 indicates this value is invalid. 
        The unit of this value is indicated by 
        ccdTdrIfResultPairLengthUnit of the same cable pair."
    ::= { ccdTdrIfResultEntry 6 }

ccdTdrIfResultPairLengthUnit OBJECT-TYPE
    SYNTAX     INTEGER {
                   unknown(1),
                   meter(2),
                   centimeter(3),
                   kilometer(4)
               } 
    MAX-ACCESS read-only 
    STATUS     current
    DESCRIPTION
        "The measurement unit on the length or the distance to fault
        point for the cable pair.

        'unknown' -- none of the following.

        'meter' -- the unit is meter. 

        'centimeter' -- the unit is centimeter.

        'kilometer' -- the unit is kilometer." 
    ::= { ccdTdrIfResultEntry 7 }

ccdTdrIfResultPairStatus OBJECT-TYPE
    SYNTAX     INTEGER {
                   unknown(1),
                   terminated(2),
                   notCompleted(3),
                   notSupported(4),
                   open(5),
                   shorted(6),
                   impedanceMismatch(7),
                   broken(8),
                   indeterminate(9)
               } 
    MAX-ACCESS read-only 
    STATUS     current
    DESCRIPTION
        "The status of the cable pair. 
       
        'unknown'      --  none of the  following.

        'terminated'   --  the pair is properly terminated at the 
                           remote end.
  
        'notCompleted' --  the test on this pair is not completed.

        'notSupported' --  the test on this pair is not supported.

        'open'         --  the pair is open. 

        'shorted'      --  the pair is shorted.

        'impedanceMismatch' -- the impedance of the pair is 
                               mismatched.

        'broken'       -- the pair is broken.

        'indeterminate' -- the status of the pair is indeterminate."
    ::= { ccdTdrIfResultEntry 8 }

--
-- Conformance
-- 
ciscoCableDiagMIBCompliances OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIBConform 1 }

ciscoCableDiagMIBGroups OBJECT IDENTIFIER
    ::= { ciscoCableDiagMIBConform 2 }

ciscoCableDiagMIBComplianceRev1 MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for SNMP entities that implement the
        CISCO-CABLE-DIAG-MIB." 
    MODULE -- this module
           -- no MANDATORY-GROUPS
 
        GROUP ccdPrbsGroup 
        DESCRIPTION  
            "This group is mandatory for implementations of PRBS cable
            diagnostic test."

        GROUP ccdTdrGroup
        DESCRIPTION  
            "This group is mandatory for implementations of TDR cable
            diagnostic test." 

    ::= { ciscoCableDiagMIBCompliances 1 }   

-- 
-- Units of Conformance
-- 
ccdPrbsGroup OBJECT-GROUP
    OBJECTS  {
        ccdPrbsIfAction,
        ccdPrbsIfActionStatus,
        ccdPrbsIfTestErrors,
        ccdPrbsIfTestErrorsResetTime,
        ccdPrbsIfTestErrorsMaxValue
    }
    STATUS     current
    DESCRIPTION
        "A collection of managed objects to support PRBS 
        cable diagnotic test on the interfaces of the device."
    ::= { ciscoCableDiagMIBGroups 1 }

ccdTdrGroup OBJECT-GROUP
    OBJECTS  {
        ccdTdrIfAction,
        ccdTdrIfActionStatus,
        ccdTdrIfLastTestTime,
        ccdTdrIfResultValid,
        ccdTdrIfResultPairChannel,
        ccdTdrIfResultPairLength,
        ccdTdrIfResultPairLenAccuracy,
        ccdTdrIfResultPairDistToFault,
        ccdTdrIfResultPairDistAccuracy,
        ccdTdrIfResultPairLengthUnit,
        ccdTdrIfResultPairStatus
    }
    STATUS     current
    DESCRIPTION
        "A collection of managed objects to support TDR 
        cable diagnotic test on the interfaces of the device."
    ::= { ciscoCableDiagMIBGroups 2 }

END
