SMP-MTA-MIB DEFINITIONS ::= BEGIN
    IMPORTS
    OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
    Integer32, Opaque, enterprises, Counter32 FROM SNMPv2-SMI
    DisplayString FROM SNMPv2-TC;

mta MODULE-IDENTITY
    LAST-UPDATED    "201510151625Z"
    ORGANIZATION    "MTA"
    CONTACT-INFO
         "email:    maksim@m-200.com"
    DESCRIPTION     "SubAgent level MIB .1.3.6.1.4.1.10052"
    REVISION        "201510151625Z"
    DESCRIPTION     "Общий объект для описание всего от MTA"
         ::= { enterprises 10052 }

ModuleIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS       current
    DESCRIPTION "Описание индекса станции."
    SYNTAX       Integer32 (1..127)

-- Раздел описание всго на станции
station OBJECT-TYPE
    SYNTAX     STATIONEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Общая информация о станции."
    ::= { mta 1 }

--PORTState OBJECT-TYPE
--    SYNTAX      INTEGER {
--                  free(0),
--                  preanswer(1),
--                  answer(2),
--                  release(3)
--            }
--
--    MAX-ACCESS  read-only
--    STATUS      current
--    DESCRIPTION "Состояние порта."
--    ::= { station 11 }

LOS OBJECT-TYPE
    SYNTAX     INTEGER { false(0),
                         true(1)
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие LOSa на потоке."
    ::= { mta 2 }

AIS OBJECT-TYPE
    SYNTAX     INTEGER { false(0),
                         true(1)
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие AISa на потоке."
    ::= { mta 3 }


RRA OBJECT-TYPE
    SYNTAX     INTEGER { false(0),
                         true(1)
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие RRAa на потоке."
    ::= { mta 4 }

linkType OBJECT-TYPE
    SYNTAX     INTEGER { LINK-INT-OK(0),    -- внутренний link ok
                         LINK-INT-ERROR(1), -- внутренний link плохой
                         LINK-EXT-OK(2),    -- внешний link хороший,
                         LINK-EXT-ERROR(3), -- внутренний link плохой
                         LINK-NONE(4),      -- выключенный link
                         LINK-BLOCK(5),     -- заблокированный link
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип аварийного линка."
    ::= { mta 5 }

stationEntry OBJECT-TYPE
    SYNTAX     MODULEEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Описание модулей"
    ::= { station 1 }

STATIONEntry ::=
    SEQUENCE {
        numberModules        Integer32 --Количество модулей в системе
    }

numberModules OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество модулей на станции"
    ::= { stationEntry 1 }

-- Раздел описывающий таблицу модулей
moduleTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MODULEEntry
    
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица модулей."
    ::= { stationEntry 2 }

moduleEntry OBJECT-TYPE
    SYNTAX     MODULEEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Описание модулей в станции."
    INDEX   { moduleIndex }
    ::= { moduleTable 1 }

MODULEEntry ::=
    SEQUENCE {
        moduleIndex    ModuleIndex
    }

moduleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Номер модуля в станции."
    ::= { moduleEntry 1 }

-- Раздел описывающий таблицу модулей
moduleTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF MODULEEntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица модулей."
    ::= { stationEntry 2 }

moduleEntry OBJECT-TYPE
    SYNTAX     MODULEEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Описание модулей в станции."
    INDEX   { moduleIndex }
    ::= { moduleTable 1 }

MODULEEntry ::=
    SEQUENCE {
        moduleIndex    ModuleIndex,   --Номер модуля
        moduleType     moduleModule,  -- Тип модуля
        amountSLOT     amountSLOT,    -- Количество слотов
        amountPCM      amountPCM,     -- Количетсво pcmов
        amountAIR      amountAIR,     -- Количетсво airпортов
        name           name           -- имя модуля
    }

moduleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Номер модуля в станции."
    ::= { moduleEntry 1 }

moduleType OBJECT-TYPE
    SYNTAX      INTEGER {
                  none(0),
                  MAL(1),
                  MPA(2),
                  MPB(3),
                  MPC(4),
                  C415(5),
                  SS(6)
            }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип модуля."
    ::= { moduleEntry 2 }

amountSLOT OBJECT-TYPE
    SYNTAX      Integer32(1..20)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество слотов в модуле."
    ::= { moduleEntry 3 }

amountPCM OBJECT-TYPE
    SYNTAX      Integer32(1..256)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество потоков в модуле."
    ::= { moduleEntry 4 }

amountAIR OBJECT-TYPE
    SYNTAX      Integer32(1..128)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество airов в модуле."
    ::= { moduleEntry 5 }


name OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
--    DISPLAY-HINT "255a"
--    SYNTAX       OCTET STRING (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Имя модуля."
    ::= { moduleEntry 6 }

-- Раздел описывающий таблицу слотов
slotTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SLOTEntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица слотов."
    ::= { station 2 }

slotEntry OBJECT-TYPE
    SYNTAX     SLOTEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "описывает слоты на станции."
    INDEX   { moduleIndex, slotIndex }
    ::= { slotTable 1 }

SLOTEntry ::=
    SEQUENCE {
        moduleIndex        ModuleIndex,
        slotIndex          Integer32,
        slotType           slotType,
        slotPortNumbers    Integer32
    }


moduleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс модуля слота."
    ::= { slotEntry 1 }

slotIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..20)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс слота в модуле."
    ::= { slotEntry 2 }

slotType OBJECT-TYPE
    SYNTAX      INTEGER {
                  none(0),
                  a16(1),
                  c88(2),
                  c68(3),
                  a84(4),
                  i38(5),
                  v38(6),
                  a08(7),
                  c48(8),
                  c412(9),
                  a8(10),
                  c44(11),
                  c16(12),
                  c08(13)
            }

    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип слота."
    ::= { slotEntry 3 }

slotPortNumbers OBJECT-TYPE
    SYNTAX      Integer32 (1..16)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество портов на слоте."
    ::= { slotEntry 4 }


-- Раздел описывающий таблицу потоков
pcmTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PCMEntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица потоков."
    ::= { station 3 }

pcmEntry OBJECT-TYPE
    SYNTAX     PCMEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "описывает слоты на станции."
    INDEX   { moduleIndex, pcmIndex }
    ::= { pcmTable 1 }

PCMEntry ::=
    SEQUENCE {
        moduleIndex        ModuleIndex,
        pcmIndex           Integer32,
        pcmType            pcmType,
        pcmPortNumbers     Integer32,
        pcmStatus          Integer32,
        pcmLOSPresent      Integer32,
        pcmRRAPresent      Integer32,
        pcmAISPresent      Integer32,
        pcmName            pcmName
    }


moduleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс модуля потока."
    ::= { pcmEntry 1 }

pcmIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..256)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс потока в модуле."
    ::= { pcmEntry 2 }

pcmType OBJECT-TYPE
    SYNTAX      INTEGER {
                  none(0),
                  cas(1),
                  dss1(2),
                  v5an(3),
                  v5le(4),
                  v52an(5),
                  v52le(6),
                  sorm(7),
                  mtp(8),
                  permanent(9),
                  int(10),
                  ip(11),
                  sorm-reserved(12),
                  sorm-in(13),
                  sorm-out(14),
                  sorm-out-reserved(15),
                  sorm-in-reserved(16)
            }

    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип потока."
    ::= { pcmEntry 3 }

pcmPortNumbers OBJECT-TYPE
    SYNTAX      Integer32 (1..31)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество портов на потоке."
    ::= { pcmEntry 4 }

pcmName OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Имя потока."
    ::= { pcmEntry 5 }

pcmStatus OBJECT-TYPE
    SYNTAX      INTEGER { LINK-INT-OK(0),    -- внутренний link ok
                         LINK-INT-ERROR(1), -- внутренний link плохой
                         LINK-EXT-OK(2),    -- внешний link хороший,
                         LINK-EXT-ERROR(3), -- внутренний link плохой
                         LINK-NONE(4),      -- выключенный link
                         LINK-BLOCK(5),     -- заблокированный link
                         LINK-UNKNOWN(255)  -- неизвестное состояние
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Состояние потока."
    ::= { pcmEntry 6 }

pcmLOSPresent OBJECT-TYPE
    SYNTAX      INTEGER { false(0),
                         true(1),
                         unknown(255)
               }
                
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие сигнала LOS."
    ::= { pcmEntry 7 }

pcmAISPresent OBJECT-TYPE
    SYNTAX      INTEGER { false(0),
                         true(1),
                         unknown(255)
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие сигнала AIS."
    ::= { pcmEntry 8 }

pcmRRAPresent OBJECT-TYPE
    SYNTAX      INTEGER { false(0),
                         true(1),
                         unknown(255)
               }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Наличие сигнала RRA."
    ::= { pcmEntry 9 }

-- Раздел описывающий таблицу аиров
airTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF AIREntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица потоков."
    ::= { station 4 }

airEntry OBJECT-TYPE
    SYNTAX     AIREntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "описывает аиры на станции."
    INDEX   { moduleIndex, airIndex }
    ::= { airTable 1 }

AIREntry ::=
    SEQUENCE {
        moduleIndex        ModuleIndex,
        airIndex           Integer32,
        airType            airType,
        airPortNumbers        Integer32
    }

moduleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс модуля аира."
    ::= { airEntry 1 }

airIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..256)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс аира в модуле."
    ::= { airEntry 2 }

airType OBJECT-TYPE
    SYNTAX      INTEGER {
                  none(0),
                  extv52(1),
                  dss1subscriber(2),
                  isdn(3),
                  unified(4),
                  ip(8),
                  int-ip(11),
                  agent(12),
                  conf(13)
            }

    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип аира."
    ::= { airEntry 3 }

airPortNumbers OBJECT-TYPE
    SYNTAX      Integer32 (1..999)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Количество портов на аире."
    ::= { airEntry 4 }


-- Раздел описывающий порты на слоте
portTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF PORTEntry

    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Таблица портов на станции."
    ::= { station 5 }

portEntry OBJECT-TYPE
    SYNTAX     PORTEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Описывает порты в станции."
    INDEX   { portType, portModuleIndex, portITEMIndex, portPORTIndex }
    ::= { portTable 1 }

PORTEntry ::=
    SEQUENCE {
        portType              INTEGER,
        portModuleIndex       ModuleIndex,
        portITEMIndex         Integer32,
        portPORTIndex         Integer32,
        portSigType           portSLOTType,
        portState             INTEGER,
        portCallingNumber     portSLOTCallingNumber,
        portCalledNumber      portSLOTCallingNumber,
        portNumberA           portSLOTNumberA,
        portNumberB           portSLOTNumberB,
    }

portType OBJECT-TYPE
    SYNTAX      INTEGER {slot(1), pcm(2), air(3)}
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип расположения порта."
    ::= { portEntry 1 }


portModuleIndex OBJECT-TYPE
    SYNTAX      ModuleIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс модуля для порта."
    ::= { portEntry 2 }

portITEMIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..999)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс объекта для порта."
    ::= { portEntry 3 }

portPORTIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..999)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Индекс порта в объекте."
    ::= { portEntry 4 }

portSigType OBJECT-TYPE
    SYNTAX   INTEGER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Тип сигнализации порта."
    ::= { portEntry 5 }

portState OBJECT-TYPE
    SYNTAX      INTEGER {
                  free(0),
                  preanswer(1),
                  answer(2),
                  release(3)
            }

    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Состояние порта."
    ::= { portEntry 6 }

portCallingNumber  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "А номер вызова."
    ::= { portEntry  7 }

portCalledNumber  OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Б номер вызовая."
    ::= { portEntry  8 }


portNumberA OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Номер А из конфигурации."
    ::= { portEntry  9 }

portNumberB OBJECT-TYPE
    SYNTAX      DisplayString (SIZE (0..255))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Номер Б из конфигурации."
    ::= { portEntry  10 }


-- Traps
stationTraps OBJECT IDENTIFIER ::= { station 10 }

portInfoTrap TRAP-TYPE
    STATUS current
    ENTERPRISE stationTraps
    VARIABLES { 
            portModuleIndex,    --из какого модуля порт
            portType,           --где находится порт (slot, pcm, air)
            portITEMIndex,      --номер slot, pcm, air
            portPORTIndex,      --номер порта
            portState,          --состояние порта
            portCallingNumber,  --CallingNumber
            portCalledNumber    --CalledNumber
    }
    DESCRIPTION "Трап от при изменении портов"
    ::= 1

linkInfoTrap TRAP-TYPE
    STATUS current
    ENTERPRISE stationTraps
    VARIABLES { 
          portModuleIndex, -- от какого модуля
          portITEMIndex,   -- от какого потока
          LOS,             -- наличие LOS
          AIS,             -- наличие AIS
          RRA,             -- наличие RRA
          linkType        -- тип linka
    }
    DESCRIPTION "Трап от при изменении состояния потоков"
    ::= 2

END