--  *****************************************************************
--  DLINKPRIME-CABLE-DIAG-MIB.mib : Cable Diagnostic MIB
--
--  Copyright (c) 2014 D-Link Corporation, all rights reserved.
--
--  *****************************************************************
DLINKPRIME-CABLE-DIAG-MIB DEFINITIONS ::= BEGIN

    IMPORTS
	    TEXTUAL-CONVENTION			FROM SNMPv2-TC
	    MODULE-IDENTITY,OBJECT-TYPE,
	    Integer32            		FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP
		                            FROM SNMPv2-CONF
	    ifIndex	        			FROM IF-MIB
	    dlinkPrimeCommon		    FROM DLINK-ID-REC-MIB;

        		
	dlinkPrimeCableDiagMIB MODULE-IDENTITY
		LAST-UPDATED "201404260000Z"
        ORGANIZATION "D-Link Corp."
	  	CONTACT-INFO
            "	        D-Link Corporation

             	Postal: No. 289, Sinhu 3rd Rd., Neihu District,
                   		Taipei City 114, Taiwan, R.O.C
             	Tel:     +886-2-66000123
             	E-mail: tsd@dlink.com.tw
           	"
	  	DESCRIPTION
	    	"The MIB module for determining the status of 
			the cables attached to the device."
	
        REVISION "201404260000Z"
        DESCRIPTION
            " This is the first version of this MIB file.
            "
	  	::= {dlinkPrimeCommon 1}

-- -----------------------------------------------------------------------------
    dpCableDiagNotifications    OBJECT IDENTIFIER ::= { dlinkPrimeCableDiagMIB 0 }
    dpCableDiagObjects          OBJECT IDENTIFIER ::= { dlinkPrimeCableDiagMIB 1 }
    dpCableDiagConformance      OBJECT IDENTIFIER ::= { dlinkPrimeCableDiagMIB 2 }

-- -----------------------------------------------------------------------------
-- Notifications
-- -----------------------------------------------------------------------------

-- -----------------------------------------------------------------------------
-- Objects
-- -----------------------------------------------------------------------------	  		
    dpCableDiagIfTable  OBJECT-TYPE
        SYNTAX          SEQUENCE OF DpCableDiagIfEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "A table contains a list of information about test on the device's 	
            interfaces. Note that entries will exist in this table when the 
            corresponding interface is capable to run test."            
        ::= { dpCableDiagObjects 1 }

    dpCableDiagIfEntry OBJECT-TYPE
        SYNTAX          DpCableDiagIfEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "An entry in the dpCableDiagIfTable, contains the
            testing controls on an interface."
        INDEX   { ifIndex }
        ::= { dpCableDiagIfTable 1 }

    DpCableDiagIfEntry ::=   SEQUENCE {
		dpCableDiagIfAction 	    INTEGER		
    }  
        
    dpCableDiagIfAction OBJECT-TYPE 
        SYNTAX  INTEGER {
            noOp(1),
            test(2),
            clear(3)               
        }
        MAX-ACCESS  read-write
        STATUS  current
        DESCRIPTION
            "This object control the action to be executed on the interface.            
		            
            noOp(1)  - No action is taken if this object is set to 'noOp'.
                       When read, the value 'noOp' is returned.
                        
            test(2)  - Start the test on the interface.
	            	
            clear(3) - Clear all the test results on the interface. 
                       The value of the following objects of the entry will
                       become 'other'.
                       -- dpCableDiagResultPair1Status
                       -- dpCableDiagResultPair2Status
                       -- dpCableDiagResultPair3Status  
                       -- dpCableDiagResultPair4Status 
                       The value of the following objects of the entry will
                       become -1 (unavailable)
                       -- dpCableDiagResultPair1Length
                       -- dpCableDiagResultPair2Length
                       -- dpCableDiagResultPair3Length
                       -- dpCableDiagResultPair4Length
                       The value of dpCableDiagResultStatus of the entry will
                       become 'notRun'.
            "            
        ::= { dpCableDiagIfEntry 1 }           
        
-- -----------------------------------------------------------------------------                	  		
    dpCableDiagResultTable  OBJECT-TYPE
        SYNTAX          SEQUENCE OF DpCableDiagResultEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
            "A table contains a list of interface's cable situation.
            Note that entries will exist in this table when the 
            corresponding interface is a copper Ethernet port.
            "
        ::= { dpCableDiagObjects 2 }

    dpCableDiagResultEntry OBJECT-TYPE
        SYNTAX  DpCableDiagResultEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
            "An entry in dpCableDiagResultTable contains cable situation
            of an interface."
        INDEX   { ifIndex }
        ::= { dpCableDiagResultTable 1 }

    DpCableDiagResultEntry ::=       SEQUENCE {
		dpCableDiagResultCableStatus 	  INTEGER,
		dpCableDiagResultCableLength		Integer32,
		dpCableDiagLinkStatus			INTEGER,
		dpCableDiagInterfaceType			INTEGER
    }
       
    dpCableDiagResultCableStatus OBJECT-TYPE
        SYNTAX  INTEGER {
            no_result(0),
            ok(1),
            no_cable(2),
            open(3),
            short(4),
            openshort(5),
            crosstalk(6)
        } 
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
           "The status of a pair of the cable.
             no_result(0) - The cable have not do cable daig or result have 
                          been clear.             
             ok(1)    - The pair or cable has no error.
             noCable(2) - The port does not have any cable connection to the
                        remote partner.  
             open(3)  - The cable in the error pair does not have a connection
                        at the specified position.
             short(4) - The cable in the error pair has a short problem at the
                        specified position.  
             openOrShort(5) - The PHY has no capability to distinguish between
                        open and short state.  
             crosstalk(6)- The cable in the error pair has a crosstalk problem
                        at the specified position.
            "
        ::= { dpCableDiagResultEntry 1 }
        
    dpCableDiagResultCableLength OBJECT-TYPE
        SYNTAX          Integer32
        UNITS           "meters"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "This object indicates the approximate length or length to the failure of 
            the cable. This value is in meter units.
            The special value of -1 indicates the length is unavailable."
        ::= { dpCableDiagResultEntry 2 }                         
        	        
    dpCableDiagLinkStatus OBJECT-TYPE
        SYNTAX  INTEGER {
            no_result(0),
            up(1),
            down(2)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                  "The current link operational state of the interface."
        ::= { dpCableDiagResultEntry 3 }

    dpCableDiagInterfaceType OBJECT-TYPE
        SYNTAX  INTEGER {
            no_result(0),
            type_1000BASET(1),
            type_1000BASEX(2)
        }
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
                  "The current port type of the interface."
        ::= { dpCableDiagResultEntry 4 }

-- -----------------------------------------------------------------------------
-- Conformance
-- -----------------------------------------------------------------------------
    dpCableDiagCompliances OBJECT IDENTIFIER ::= { dpCableDiagConformance 1 }
		
	dpCableDiagCompliance MODULE-COMPLIANCE
		STATUS          current
		DESCRIPTION 
			"The compliance statement for entities which implement the 
			DLINKPRIME-CABLE-DIAG-MIB."
		MODULE -- this module
		MANDATORY-GROUPS { 
		    dpCableDiagBasicGroup		    
		}					                        
	    ::= { dpCableDiagCompliances 1 }
		
	dpCableDiagGroups OBJECT IDENTIFIER ::= { dpCableDiagCompliances 2 }
		
    dpCableDiagBasicGroup OBJECT-GROUP
		OBJECTS { 
		    dpCableDiagIfAction, 
		    dpCableDiagResultCableStatus,
		    dpCableDiagResultCableLength,
		    dpCableDiagLinkStatus,
		    dpCableDiagInterfaceType
		}
		STATUS current
		DESCRIPTION 
			"This group contains the collection of objects related to  
			 configuration and information of fundamental cable diagnostics feature."						
		::= { dpCableDiagGroups 1 }

	

       
END

