AUDIOSCIENCE-DEVICEINFO-MIB DEFINITIONS ::= BEGIN

--
-- Top level objects for device monitoring and control
--

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE            FROM SNMPv2-SMI
    asiSnmpObjects, asiSnmpMIBGroups, asiSnmpMIBCompliances FROM AUDIOSCIENCE-SNMP-MIB
    TEXTUAL-CONVENTION                      FROM SNMPv2-TC
    OBJECT-GROUP, MODULE-COMPLIANCE         FROM SNMPv2-CONF
;

asiSnmpDeviceBasicInfo MODULE-IDENTITY
    LAST-UPDATED "202112020000Z"
    ORGANIZATION "www.audioscience.com"
    CONTACT-INFO "email: support@audioscience.com"
    DESCRIPTION "Top level objects for device monitoring and control"
    REVISION     "202112020000Z"
    DESCRIPTION  "First draft"
    ::= { asiSnmpObjects 1 }

--
-- top level structure
--
asiSnmpDeviceHWInfo         OBJECT IDENTIFIER ::= { asiSnmpDeviceBasicInfo 1 }
asiSnmpDeviceSWInfo         OBJECT IDENTIFIER ::= { asiSnmpDeviceBasicInfo 2 }

--
-- Helper definitions
--

AsiString ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "255t"
    STATUS      current
    DESCRIPTION "Placeholder"
    SYNTAX      OCTET STRING (SIZE(1..255))

deviceHWInfoGroup OBJECT-GROUP
    OBJECTS { manufacturerName,
              partNumberName,
              revision,
              serialNumber,
              defaultDeviceName,
              deviceName }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation and
            control of an SNMPv2 entity."
    ::= { asiSnmpMIBGroups 1 }


deviceSWInfoGroup OBJECT-GROUP
    OBJECTS { firmwareName,
              firmwareVendor,
              firmwareVersion }
    STATUS  current
    DESCRIPTION
            "A collection of objects providing basic instrumentation and
            control of an SNMPv2 entity."
    ::= { asiSnmpMIBGroups 2 }


productCompliances    MODULE-COMPLIANCE
                      STATUS     current
                      DESCRIPTION
                        "Compliance statement for the the entities in this MIB."
                      MODULE
                      MANDATORY-GROUPS {
                        deviceHWInfoGroup,
                        deviceSWInfoGroup
                      }
                      ::= { asiSnmpMIBCompliances 1 }
--
-- Basic HW Info
--

manufacturerName OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Manufacturer's name string"
    DEFVAL { "AudioScience" }
    ::= { asiSnmpDeviceHWInfo 1 }

partNumberName OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Part number string"
    DEFVAL { "ASI0000" }
    ::= { asiSnmpDeviceHWInfo 2 }

revision OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Revision string"
    DEFVAL { "A0" }
    ::= { asiSnmpDeviceHWInfo 3 }

serialNumber OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Serial number string"
    DEFVAL { "000000" }
    ::= { asiSnmpDeviceHWInfo 4 }

defaultDeviceName OBJECT-TYPE
    SYNTAX       AsiString
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION  "Default device name string"
    DEFVAL { "AudioScience ASI0000" }
    ::= { asiSnmpDeviceHWInfo 5 }

deviceName OBJECT-TYPE
    SYNTAX       AsiString
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION "Editable and persistent device name string"
    DEFVAL { "AudioScience ASI0000" }
    ::= { asiSnmpDeviceHWInfo 6 }

--
-- Basic SW Info
--

firmwareName OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Firmware name string"
    DEFVAL { "ASI Firmware" }
    ::= { asiSnmpDeviceSWInfo 1 }

firmwareVendor OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Firmware name string"
    DEFVAL { "AudioScience" }
    ::= { asiSnmpDeviceSWInfo 2 }

firmwareVersion OBJECT-TYPE
    SYNTAX      AsiString
    MAX-ACCESS   read-only
    STATUS      current
    DESCRIPTION "Firmware version string"
    DEFVAL { "0.0.0" }
    ::= { asiSnmpDeviceSWInfo 3 }

END
