-- *****************************************************************
-- FIRMWARE-MIB:  ME1200 Private MIB
--
--
-- ****************************************************************

ME1200-FIRMWARE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    MODULE-IDENTITY, OBJECT-TYPE
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    me1200SwitchMgmt
        FROM CISCOME1200-MIB
    ME1200DisplayString FROM ME1200-TC
    Integer32 FROM SNMPv2-SMI
    Unsigned32 FROM SNMPv2-SMI
    TruthValue FROM SNMPv2-TC
    ;

me1200FirmwareMIB MODULE-IDENTITY
    LAST-UPDATED "201412160000Z"
    ORGANIZATION
        "Cisco Systems, Inc"
    CONTACT-INFO
        "Cisco Systems, Inc
        Customer Service
        Postal: 170 W Tasman Drive
        San Jose, CA 95134
        USA
        Tel: +1 800 553-NETS
        E-mail: cs-me1200@cisco.com"
    DESCRIPTION
        "This is a private version of Firmware"
    REVISION    "201412160000Z"
    DESCRIPTION
        "Add status switch table"
    REVISION    "201402180000Z"
    DESCRIPTION
        "Do no use Unsigned32 for indexes"
    REVISION    "201401290000Z"
    DESCRIPTION
        "Locate all objects under ciscoME1200MIB"
    REVISION    "201401200000Z"
    DESCRIPTION
        "Initial version"
    ::= { me1200SwitchMgmt 28 }


ME1200StatusImageType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the type of image for status."
    SYNTAX      INTEGER { bootloader(0), activeFirmware(1), alternativeFirmware(2) }

ME1200UploadImageType ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the type of image to upload."
    SYNTAX      INTEGER { bootloader(0), firmware(1) }

ME1200UploadStatus ::= TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "This enumeration defines the status of upload operation."
    SYNTAX      INTEGER { none(0), success(1), inProgress(2), errIvalidIp(3), errTftpFailed(4), errBusy(5), errMemoryInsufficient(6), errInvalidImage(7), errWriteFlash(8), errSameImageExisted(9), errUnknownImage(10), errFlashImageNotFound(11), errFlashEntryNotFound(12), errCrc(13), errImageSize(14), errEraseFlash(15), errIncorrectImageVersion(16), errDownloadUrl(17), errInvalidUrl(18) }

me1200FirmwareMIBObjects OBJECT IDENTIFIER
    ::= { me1200FirmwareMIB 1 }

me1200FirmwareStatus OBJECT IDENTIFIER
    ::= { me1200FirmwareMIBObjects 3 }

me1200FirmwareStatusImageTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ME1200FirmwareStatusImageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "This is a table of status of images in flash."
    ::= { me1200FirmwareStatus 1 }

me1200FirmwareStatusImageEntry OBJECT-TYPE
    SYNTAX      ME1200FirmwareStatusImageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "Each entry has a set of image status."
    INDEX       { me1200FirmwareStatusImageNumber }
    ::= { me1200FirmwareStatusImageTable 1 }

ME1200FirmwareStatusImageEntry ::= SEQUENCE {
    me1200FirmwareStatusImageNumber   Integer32,
    me1200FirmwareStatusImageType     ME1200StatusImageType,
    me1200FirmwareStatusImageName     ME1200DisplayString,
    me1200FirmwareStatusImageVersion      ME1200DisplayString,
    me1200FirmwareStatusImageBuiltDate    ME1200DisplayString,
    me1200FirmwareStatusImageCodeRevision     ME1200DisplayString
}

me1200FirmwareStatusImageNumber OBJECT-TYPE
    SYNTAX      Integer32 (0..2)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "The number of image. The number starts from 0."
    ::= { me1200FirmwareStatusImageEntry 1 }

me1200FirmwareStatusImageType OBJECT-TYPE
    SYNTAX      ME1200StatusImageType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Image type of the status. bootloader(0) is for boot loader.
         activeFirmware(1) is for active (primary) firmware.
         alternativeFirmware(2) is for alternative (backup) firmware."
    ::= { me1200FirmwareStatusImageEntry 2 }

me1200FirmwareStatusImageName OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Image name."
    ::= { me1200FirmwareStatusImageEntry 3 }

me1200FirmwareStatusImageVersion OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Image version."
    ::= { me1200FirmwareStatusImageEntry 4 }

me1200FirmwareStatusImageBuiltDate OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "The built date when the image is built."
    ::= { me1200FirmwareStatusImageEntry 5 }

me1200FirmwareStatusImageCodeRevision OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..127))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "The code revesion which the image is built."
    ::= { me1200FirmwareStatusImageEntry 6 }

me1200FirmwareStatusImageUpload OBJECT IDENTIFIER
    ::= { me1200FirmwareStatus 2 }

me1200FirmwareStatusImageUploadStatus OBJECT-TYPE
    SYNTAX      ME1200UploadStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "The status indicates the status of current upload operation. It is
         updated automatically. Modifying this flag does not take any effect.
         none(0) means no upload operation. success(1) means upload operation is
         successful. inProgress(2) means current upload operation is in
         progress. errIvalidIp(3) means upload operation is failed due to
         invalid IP address. errTftpFailed(4) means upload operation is failed
         due to failed TFTP operation. errBusy(5) means upload operation is
         failed due to other upload in processing. errMemoryInsufficient(6)
         means upload operation is failed due to memory insufficient.
         errInvalidImage(7) means upload operation is failed due to invalid
         image. errWriteFlash(8) means upload operation is failed due to failed
         writing flash. errSameImageExisted(9) means upload operation is failed
         because the upload image is the same as the one in flash.
         errUnknownImage(10) means upload operation is failed because the type
         of upload image is unknown. errFlashImageNotFound(11) means upload
         operation is failed because the location in flash to upload the image
         is not found. errFlashEntryNotFound(12) means upload operation is
         failed because the corresponding entry in flash to upload the image is
         not found. errCrc(13) means upload operation is failed due to incorrect
         CRC in the upload image. errImageSize(14) means upload operation is
         failed due to invalid image size. errEraseFlash(15) means upload
         operation is failed due to failed erasing flash.
         errIncorrectImageVersion(16) means upload operation is failed due to
         incorrect version of the upload image. errDownloadUrl(17) means upload
         operation is failed due to fail to download image from URL.
         errInvalidUrl(18) means upload operation is failed due to invalid URL. "
    ::= { me1200FirmwareStatusImageUpload 1 }

me1200FirmwareStatusSwitchTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ME1200FirmwareStatusSwitchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "This is a table of status of images in switch."
    ::= { me1200FirmwareStatus 3 }

me1200FirmwareStatusSwitchEntry OBJECT-TYPE
    SYNTAX      ME1200FirmwareStatusSwitchEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "Each entry has a set of image status."
    INDEX       { me1200FirmwareStatusSwitchSwitchId }
    ::= { me1200FirmwareStatusSwitchTable 1 }

ME1200FirmwareStatusSwitchEntry ::= SEQUENCE {
    me1200FirmwareStatusSwitchSwitchId    Integer32,
    me1200FirmwareStatusSwitchChipId      ME1200DisplayString,
    me1200FirmwareStatusSwitchBoardType   ME1200DisplayString,
    me1200FirmwareStatusSwitchPortCnt     Unsigned32,
    me1200FirmwareStatusSwitchProduct     ME1200DisplayString,
    me1200FirmwareStatusSwitchVersion     ME1200DisplayString,
    me1200FirmwareStatusSwitchBuiltDate   ME1200DisplayString
}

me1200FirmwareStatusSwitchSwitchId OBJECT-TYPE
    SYNTAX      Integer32 (1..16)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION 
        "The ID of switch."
    ::= { me1200FirmwareStatusSwitchEntry 1 }

me1200FirmwareStatusSwitchChipId OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "ID of chip."
    ::= { me1200FirmwareStatusSwitchEntry 2 }

me1200FirmwareStatusSwitchBoardType OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..63))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Type of board."
    ::= { me1200FirmwareStatusSwitchEntry 3 }

me1200FirmwareStatusSwitchPortCnt OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Count of ports."
    ::= { me1200FirmwareStatusSwitchEntry 4 }

me1200FirmwareStatusSwitchProduct OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..63))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Product name."
    ::= { me1200FirmwareStatusSwitchEntry 5 }

me1200FirmwareStatusSwitchVersion OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "Image version."
    ::= { me1200FirmwareStatusSwitchEntry 6 }

me1200FirmwareStatusSwitchBuiltDate OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION 
        "The built date when the image is built."
    ::= { me1200FirmwareStatusSwitchEntry 7 }

me1200FirmwareControl OBJECT IDENTIFIER
    ::= { me1200FirmwareMIBObjects 4 }

me1200FirmwareControlGlobals OBJECT IDENTIFIER
    ::= { me1200FirmwareControl 1 }

me1200FirmwareControlGlobalsSwapFirmware OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
        "Swap firmware between active (primary) and alternative (backup).
         true(1) is to swap the firmware. false(2) is to do nothing."
    ::= { me1200FirmwareControlGlobals 1 }

me1200FirmwareControlImageUpload OBJECT IDENTIFIER
    ::= { me1200FirmwareControl 2 }

me1200FirmwareControlImageUploadDoUpload OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
        "Action to do upload image or not. true(1) is to do the upload
         operation. false(2) is to do nothing. The upload operation may need
         longer time to upload the image, so the SNMP timeout time needs to be
         modified accordingly."
    ::= { me1200FirmwareControlImageUpload 1 }

me1200FirmwareControlImageUploadImageType OBJECT-TYPE
    SYNTAX      ME1200UploadImageType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
        "Type of image to upload. bootloader(0) is to upload bootloader.
         firmware(1) is to upload application firmware."
    ::= { me1200FirmwareControlImageUpload 2 }

me1200FirmwareControlImageUploadUrl OBJECT-TYPE
    SYNTAX      ME1200DisplayString (SIZE(0..255))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION 
        "The location of image to upload. The format is
         [protocol]://[IP-address]/[file-path]."
    ::= { me1200FirmwareControlImageUpload 3 }

me1200FirmwareMIBConformance OBJECT IDENTIFIER
    ::= { me1200FirmwareMIB 2 }

me1200FirmwareMIBCompliances OBJECT IDENTIFIER
    ::= { me1200FirmwareMIBConformance 1 }

me1200FirmwareMIBGroups OBJECT IDENTIFIER
    ::= { me1200FirmwareMIBConformance 2 }

me1200FirmwareStatusImageTableInfoGroup OBJECT-GROUP
    OBJECTS     { me1200FirmwareStatusImageType, me1200FirmwareStatusImageName, 
                  me1200FirmwareStatusImageVersion, 
                  me1200FirmwareStatusImageBuiltDate, 
                  me1200FirmwareStatusImageCodeRevision }
    STATUS      current
    DESCRIPTION
        "A collection of objects suitable for bulk operations."
    ::= { me1200FirmwareMIBGroups 1 }

me1200FirmwareStatusImageUploadInfoGroup OBJECT-GROUP
    OBJECTS     { me1200FirmwareStatusImageUploadStatus }
    STATUS      current
    DESCRIPTION
        "A collection of objects suitable for bulk operations."
    ::= { me1200FirmwareMIBGroups 2 }

me1200FirmwareStatusSwitchTableInfoGroup OBJECT-GROUP
    OBJECTS     { me1200FirmwareStatusSwitchChipId, 
                  me1200FirmwareStatusSwitchBoardType, 
                  me1200FirmwareStatusSwitchPortCnt, 
                  me1200FirmwareStatusSwitchProduct, 
                  me1200FirmwareStatusSwitchVersion, 
                  me1200FirmwareStatusSwitchBuiltDate }
    STATUS      current
    DESCRIPTION
        "A collection of objects suitable for bulk operations."
    ::= { me1200FirmwareMIBGroups 3 }

me1200FirmwareControlGlobalsInfoGroup OBJECT-GROUP
    OBJECTS     { me1200FirmwareControlGlobalsSwapFirmware }
    STATUS      current
    DESCRIPTION
        "A collection of objects suitable for bulk operations."
    ::= { me1200FirmwareMIBGroups 4 }

me1200FirmwareControlImageUploadInfoGroup OBJECT-GROUP
    OBJECTS     { me1200FirmwareControlImageUploadDoUpload, 
                  me1200FirmwareControlImageUploadImageType, 
                  me1200FirmwareControlImageUploadUrl }
    STATUS      current
    DESCRIPTION
        "A collection of objects suitable for bulk operations."
    ::= { me1200FirmwareMIBGroups 5 }

me1200FirmwareMIBCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for the implementation."

    MODULE      -- this module

        MANDATORY-GROUPS        { me1200FirmwareStatusImageTableInfoGroup, 
                  me1200FirmwareStatusImageUploadInfoGroup, 
                  me1200FirmwareStatusSwitchTableInfoGroup, 
                  me1200FirmwareControlGlobalsInfoGroup, 
                  me1200FirmwareControlImageUploadInfoGroup }

    ::= { me1200FirmwareMIBCompliances 1 }

END
