-- *********************************************************************
-- CISCO-ANNOUNCEMENT-MIB.my: 
--            Media Gateway Announcement MIB file
--
-- March 2003, Yizhong Shen
--
-- Copyright (c) 2003 by Cisco Systems, Inc.
-- All rights reserved.
--
-- *********************************************************************

CISCO-ANNOUNCEMENT-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Unsigned32          FROM SNMPv2-SMI
    RowStatus           FROM SNMPv2-TC                        
    MODULE-COMPLIANCE,
    OBJECT-GROUP        FROM SNMPv2-CONF
    InetAddress, 
    InetAddressType     FROM INET-ADDRESS-MIB
    SnmpAdminString     FROM SNMP-FRAMEWORK-MIB
    cmgwIndex           FROM CISCO-MEDIA-GATEWAY-MIB
    ciscoMgmt           FROM CISCO-SMI;

ciscoAnnouncementMIB MODULE-IDENTITY
    LAST-UPDATED "200303250000Z"
    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-voice-gateway@cisco.com"

    DESCRIPTION
            "This MIB defines the objects for announcement
             system supported on media gateway.

             With announcement system setup, media gateway will
             have the capability to play pre-recorded audio files.
             The audio files can be played in either direction  
             over existing connections (calls) or towards the Time 
             Division Multiplexed (TDM) network on a TDM endpoint 
             that is terminated on the media gateway. 
            "
    REVISION "200303250000Z"
    DESCRIPTION 
             "Initial version of the MIB."

    ::= { ciscoMgmt 8888 }

ciscoAnnouncementMIBNotifs          OBJECT IDENTIFIER ::= 
                                    { ciscoAnnouncementMIB 0 }

ciscoAnnouncementMIBObjects         OBJECT IDENTIFIER ::= 
                                    { ciscoAnnouncementMIB 1}

ciscoAnnouncementMIBConformance     OBJECT IDENTIFIER  ::= 
                                    { ciscoAnnouncementMIB 2}

cannoGeneric                   OBJECT IDENTIFIER ::= 
                                    { ciscoAnnouncementMIBObjects 1 }
cannoControlConfig             OBJECT IDENTIFIER ::= 
                                    { cannoGeneric 1 }
cannoAudioFileConfig        OBJECT IDENTIFIER ::= 
                                    { cannoGeneric 2 }

-- *********************************************************************
--
-- Announcement Control Table
--
-- *********************************************************************

cannoControlTable   OBJECT-TYPE
    SYNTAX        SEQUENCE OF CannoControlEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The MIB objects in this table are used to control
         the announcement system of media gateway.
        "
    ::= { cannoControlConfig 1 }

cannoControlEntry OBJECT-TYPE
    SYNTAX         CannoControlEntry
    MAX-ACCESS     not-accessible
    STATUS         current
    DESCRIPTION
        "An entry in this table contains the control parameters of 
         the announcement system on media gateway.
        "
    INDEX { cmgwIndex }
    ::= { cannoControlTable 1 }

CannoControlEntry ::=
    SEQUENCE {
        cannoAudioFileServerName     SnmpAdminString,
        cannoDnResolution            INTEGER,
        cannoIpAddressType           InetAddressType,
        cannoIpAddress               InetAddress,
        cannoAgeTime                 Unsigned32,
        cannoSubDirPath              SnmpAdminString,
        cannoReqTimeout              Unsigned32,
        cannoMaxPermanent            Unsigned32
        }

cannoAudioFileServerName  OBJECT-TYPE
    SYNTAX           SnmpAdminString (SIZE (0..64))
    MAX-ACCESS       read-write
    STATUS           current
    DESCRIPTION
        "This object specifies the domain name of an announcement
         file server that resides in an IP network and is reachable 
         from the media gateway.
         The default value of this object is NULL string(size is 0).
         Before using any object in this table, this object should 
         be configured to non NULL.
        "
    DEFVAL { "" }
    ::= { cannoControlEntry 1 }

cannoDnResolution  OBJECT-TYPE
    SYNTAX        INTEGER{
                         internalOnly(1),
                         externalOnly(2)
                  } 
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies the domain name resolution for
         the domain name of the Announcement File server which is
         specified by the cannoAudioFileServerName object.

         If this object is set to internalOnly(1), the IP address
         associated with the file server (cannoAudioFileServerName) will
         be determined by the cannoIpAddress object. 
        "
    DEFVAL { internalOnly }
    ::= { cannoControlEntry 2 }

cannoIpAddressType  OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies the IP address type of 
         cannoIpAddress.

         This object is not applicable when cannoDnResolution
         is set to externalOnly(2).
        "
    DEFVAL { ipv4 }
    ::= { cannoControlEntry 3 }

cannoIpAddress  OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object specifies the IP address associated with the
         cannoAudioFileServerName.

         This object is not applicable when cannoDnResolution
         is set to externalOnly(2).
        "
    DEFVAL { '00000000'h }
    ::= { cannoControlEntry 4 }

cannoAgeTime         OBJECT-TYPE
    SYNTAX           Unsigned32 (0..65535)
    UNITS            "minutes"
    MAX-ACCESS       read-write
    STATUS           current
    DESCRIPTION
        "This object specifies the maximum life-span(in minutes) of 
         the dynamic announcement files in the cache.

         A dynamic announcement file starts aging as soon as it is  
         brought into the cache from the file server. When a dynamic
         file age crosses the 'cannoAgeTime' threshold, the file 
         will be removed from the cache.

         The value zero time specifies that 'cannoAgeTime' is 
         disabled.
        "
    DEFVAL { 10080 }
    ::= { cannoControlEntry 5 }

cannoSubDirPath      OBJECT-TYPE
    SYNTAX           SnmpAdminString (SIZE (0..255))
    MAX-ACCESS       read-write
    STATUS           current
    DESCRIPTION
        "This object specifies the directory path under the default  
         TFTP directory in the Announcement File server for  
         announcement files.

         The individual characters in cannoSubDirPath may be 
         alphanumeric characters, forward slashes, backward slashes, 
         periods, dashes, and underscores, but no embedded spaces.  
         The last character of cannoSubDirPath must not be a dash.
        "
    DEFVAL { "" }
    ::= { cannoControlEntry 6 }

cannoReqTimeout      OBJECT-TYPE
    SYNTAX           Unsigned32 (0..50)
    UNITS            "seconds"
    MAX-ACCESS       read-write
    STATUS           current
    DESCRIPTION
        "This object specifies the time for a play announcement 
         request to be serviced.
         The cannoReqTimeout is the time within which an 
         announcement must start playing after receiving announcement 
         request.

         If the announcement system cannot start playing the 
         announcement within cannoReqTimeout seconds since the 
         request was received, the play request will be aborted.

         The value zero time specifies that 'cannoReqTimeout' is 
         disabled. 
        "
    DEFVAL { 5 }
    ::= { cannoControlEntry 7 }

cannoMaxPermanent    OBJECT-TYPE
    SYNTAX           Unsigned32 (0..500)
    MAX-ACCESS       read-write
    STATUS           current
    DESCRIPTION
        "This object specifies the maximum number of permanent 
         announcement files that can be added to the media gateway.

         The space on media gateway cache is reserved for the
         cannoMaxPermanent number of permanent announcement files 
         and the permanent announcement files should be stored on media 
         gateway cache forever until to be deleted.

         The value zero specifies that media gateway only support 
         dynamic announcement file.
        "
    DEFVAL { 41 }
    ::= { cannoControlEntry 8 }

-- *********************************************************************
--
-- Announcement AUDIO File Table
--
-- *********************************************************************

cannoAudioFileTable   OBJECT-TYPE
    SYNTAX        SEQUENCE OF CannoAudioFileEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The MIB objects in this table contain information to
         manage audio announcement files.
        "
    ::= { cannoAudioFileConfig 1 }

cannoAudioFileEntry   OBJECT-TYPE
    SYNTAX        CannoAudioFileEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "Each entry in the cannoAudioFileTable consists of 
         management information for a specific announcement file,
         which include file descriptor, name, type, age, duration,
         number of cycles, status.
        "
    INDEX { cmgwIndex, cannoAudioFileNumber }
    ::= { cannoAudioFileTable 1 }


CannoAudioFileEntry ::=
    SEQUENCE {
        cannoAudioFileNumber          Unsigned32,
        cannoAudioFileDescr           SnmpAdminString,
        cannoAudioFileName            SnmpAdminString,
        cannoAudioFileStatus          INTEGER,
        cannoAudioFileOperStatus      INTEGER,
        cannoAudioFilePlayNoc         Unsigned32,
        cannoAudioFileDuration        Unsigned32,
        cannoAudioFileType            INTEGER,
        cannoAudioFileAge             Unsigned32,
        cannoAudioFileAdminDeletion   INTEGER,
        cannoAudioFileRowStatus       RowStatus
        }

cannoAudioFileNumber     OBJECT-TYPE
    SYNTAX           Unsigned32 (1..9999)
    MAX-ACCESS       not-accessible
    STATUS           current
    DESCRIPTION
        "A unique index to identify announcement file
         to be used in media gateway.
        "
    ::= { cannoAudioFileEntry 1 }

cannoAudioFileDescr     OBJECT-TYPE
    SYNTAX           SnmpAdminString (SIZE (0..64))
    MAX-ACCESS       read-create
    STATUS           current
    DESCRIPTION
        "A textual string containing information about the 
         audio file. 
         User can store any information to this object such as
         which customer using this audio file, usage of the 
         audio file, etc..
        "
    ::= { cannoAudioFileEntry 2 }

cannoAudioFileName         OBJECT-TYPE
    SYNTAX            SnmpAdminString (SIZE (0..64))
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This object specifies the name of a valid announcement file  
         which has been stored in cannoAudioFileTable. This file name  
         may include path or subdirectory information.

         The individual characters in this name may be alphanumeric 
         characters, forward slashes, backward slashes, periods, 
         dashes, and underscores, but no embedded spaces.  The last
         character of the name must not be a dash or a forward slash.
        "
    ::= { cannoAudioFileEntry 3 }

cannoAudioFileStatus   OBJECT-TYPE
    SYNTAX        INTEGER{
                          cached         (1),
                          loading        (2),
                          invalidFile    (3),
                          loadFailed     (4),
                          notCached      (5)
                         }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates the status of the the audio file:

         cached     (1): the file successfully downloaded to media 
                         gateway cache
                         cache is the memory on media gateway which
                         is used to store announcement files.
         loading    (2): the file in process of downloading 
         invalidFile(3): the file on Announcement File server is too 
                         large or corrupted
         loadFailed (4): timeout when trying to download the file
         notCached  (5): the file is not in cache

         Note:
           The cache is the memory on media gateway which is used to 
           store announcement files. Some of space on the cache is 
           reserved for the permanent announcement files (refer to 
           'cannoMaxPermanent'), the rest of cache is for the
           dynamic announcement files.

           The 'notCached' is applicable only for the dynamic 
           announcement files in the following cases:
           1. The dynamic file age reaches to 'cannoAgeTime', the 
              status of the file will be changed from 'cached' to 
              'notCached'.
           2. If the cache is full for the dynamic files, and if user 
              try to add a new dynamic file, the one of the dynamic 
              files on cache  will be removed by LRU algorithm. The 
              status of that file will be changed from 'cached' to 
              'notCached'.
           3. If there is no space for the dynamic files (whole cache 
              is reserved for the permanent file), the status of the 
              dynamic files is set to 'notCached'.     
         "
    ::= { cannoAudioFileEntry 4 }

cannoAudioFileOperStatus   OBJECT-TYPE
    SYNTAX        INTEGER{
                          inPlaying  (1),
                          notPlaying (2),
                          delPending (3)
                         }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates the current operational status of 
         the entry:

         inPlaying  (1): the file is in playing
         notPlaying (2): the file is not in playing 
         delPending (3): deletion is pending because the file is 
                         in playing
         "
    ::= { cannoAudioFileEntry 5 }

cannoAudioFilePlayNoc          OBJECT-TYPE
    SYNTAX            Unsigned32 (0..2147483647)
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This object specifies number of cycles the announcement file 
         is played.
         This object is used only when the Play Announcement signal 
         from the MGC does not include a 'cannoAudioFilePlayNoc' 
         parameter.
         The value zero  is used to represent an announcement that 
         continuously plays or loops.
        "
    DEFVAL { 1 }
    ::= { cannoAudioFileEntry 6 }

cannoAudioFileDuration   OBJECT-TYPE
   SYNTAX            Unsigned32 (0..4294967295)
   UNITS             "10 milliseconds"
   MAX-ACCESS        read-create
   STATUS            current

   DESCRIPTION
       "This object indicates the duration to play the
        announcement for one cycle, it is applicable only for the 
        fixed announcement play.
        This object is used only when the Play Announcement signal 
        from the MGC does not include a 'cannoAudioFileDuration' 
        parameter.

        For the fixed announcement play, the 'cannoAudioFilePlayNoc' 
        and the 'cannoAudioFileDuration' are used together to   
        determine how long the announcement is to be played.

        The value zero indicates that this is a variable announcement 
        play and only the 'cannoAudioFilePlayNoc' is used to determine 
        the play time.
       "
   DEFVAL { 0 }
    ::= { cannoAudioFileEntry 7 }

cannoAudioFileType     OBJECT-TYPE
    SYNTAX        INTEGER{
                          dynamic   (1),
                          permanent (2)
                  }
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This object specifies announcement file type.

         dynamic(1)  : Dynamic file can be removed from cache if
                       file age(cannoAudioFileAge) reaches cannoAgeTime
                       or according to LRU algorithm when cache is full 

         permanent(2): Permanent file should be stored on cache forever 
                       except to be deleted.    
                       The max number of permanent file can be stored on
                       cache is determined by cannoMaxPermanent.
        "
    DEFVAL { dynamic }
    ::= { cannoAudioFileEntry 8 }

cannoAudioFileAge         OBJECT-TYPE
    SYNTAX           Unsigned32 (0..65535)
    UNITS            "minutes"
    MAX-ACCESS       read-only
    STATUS           current
    DESCRIPTION
        "This object indicates that announcement file age in cache, it 
         is only for dynamic file.

         A dynamic announcement file starts aging as soon as it  
         is brought into the cache from the Announcement File server.
         When the 'cannoAudioFileAge' reach to 'cannoAgeTime', then
         the file will be removed from cache.

         This object is not applicable for two cases:
         (1)For the permanent files, because the the permanent files 
            should be stored on cache forever except to be deleted.
         (2)The 'cannoAgeTime' is set to zero which means the
            cannoAgeTime is infinite and 'cannoAudioFileAge' can never 
            reach the cannoAgeTime. 
        "
    ::= { cannoAudioFileEntry 9 }

cannoAudioFileAdminDeletion   OBJECT-TYPE
    SYNTAX        INTEGER{
                          gracefully  (1),
                          forcefully  (2)
                         }
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object specifies entry deletion behavior:

         gracefully(1): gateway will not stop the current announcement
                        file playing (till it completes) while deleting 
                        this entry.
         forcefully(2): gateway will immediately stop current 
                        announcement file playing while deleting this 
                        entry 
        "
    DEFVAL { gracefully }
    ::= { cannoAudioFileEntry 10 }

cannoAudioFileRowStatus        OBJECT-TYPE
    SYNTAX            RowStatus
    MAX-ACCESS        read-create
    STATUS            current
    DESCRIPTION
        "This object is used to create or delete an entry.

         The mandatory objects for creating an entry in this table:
           'cannoAudioFileName'

         The following objects are not allowed to be modified after 
         the entry to be added:
           'cannoAudioFileName'
           'cannoAudioFileType'
        "
    ::= { cannoAudioFileEntry 11 }


-- *********************************************************************
-- Conformance
-- *********************************************************************


cannoMIBCompliances     OBJECT IDENTIFIER  ::= 
                                    { ciscoAnnouncementMIBConformance 1}
cannoMIBGroups          OBJECT IDENTIFIER  ::= 
                                    { ciscoAnnouncementMIBConformance 2}

--
-- Conformance and compliance statements statements
--

cannoMIBCompliance MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
            " The compliance statement for Announcement File"
    MODULE  -- this module
        MANDATORY-GROUPS { cannoControlGroup,
                           cannoAudioFileGroup
                         }
    ::= { cannoMIBCompliances 1 }
--
-- units of conformance
--
-- MIB Groups
--

cannoControlGroup OBJECT-GROUP
         OBJECTS {
                  cannoAudioFileServerName,
                  cannoDnResolution,
                  cannoIpAddressType,
                  cannoIpAddress,
                  cannoAgeTime,
                  cannoSubDirPath,
                  cannoReqTimeout,
                  cannoMaxPermanent
                 }
    STATUS    current
    DESCRIPTION
            "This group contains objects related to announcement 
             system control on media gateway.
             "
    ::= { cannoMIBGroups 1 }

cannoAudioFileGroup OBJECT-GROUP
         OBJECTS {
                  cannoAudioFileDescr,
                  cannoAudioFileName,
                  cannoAudioFileStatus,
                  cannoAudioFileOperStatus,
                  cannoAudioFilePlayNoc,
                  cannoAudioFileDuration,
                  cannoAudioFileType,
                  cannoAudioFileAge,
                  cannoAudioFileAdminDeletion,
                  cannoAudioFileRowStatus
                 }
    STATUS    current
    DESCRIPTION
            "This group contains objects related to announcement 
             files on media gateway.
             "
    ::= { cannoMIBGroups 2 }

END
