-- extracted from draft-blevin-snmp-audio-jukebox-00.txt -- at Thu Apr 4 06:13:38 2002 AUDIO-PLAYBACK-CONTROL-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, MODULE-IDENTITY, enterprises, Unsigned32, Integer32, BITS FROM SNMPv2-SMI RowStatus, DisplayString, DateAndTime FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; -- gratefulNet OBJECT IDENTIFIER ::= { enterprises 4648 } audioPlaybackMIB MODULE-IDENTITY LAST-UPDATED "200204010000Z" -- April 1, 2002 ORGANIZATION "The Grateful Net" CONTACT-INFO "Bryan Levin E-mail: snmp1@grateful.net" DESCRIPTION "The MIB module is for defining remote audio playback (mp3, etc) from an SNMP-enabled audio jukebox device." ::= { enterprises gratefulNet(4648) 128 } -- playback capabilities (read-only) auPlaybackCapabilities OBJECT IDENTIFIER ::= { audioPlaybackMIB 1 } -- global control variables (read-write) auPlaybackScalars OBJECT IDENTIFIER ::= { audioPlaybackMIB 2 } -- all tables (read-only and read-create) auPlaybackTables OBJECT IDENTIFIER ::= { audioPlaybackMIB 3 } -- Agent Capabilities (read-only scalars) -- These are useful in determining the abilities of the audio -- jukebox's remote management interface. auHwCapabilities OBJECT-TYPE SYNTAX BITS { volume(0), bass(1), treble(2), balance(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "The hardware capabilities, expressed as a bitstring. It is advisable that the NMS check this variable before blindly setting values to the auHwCtl scalars, as not all may be fully implemented at the playback/jukebox device." ::= { auPlaybackCapabilities 1 } -- -- Global Control Scalars (read-write) -- These are useful in controlling the final output signal -- characteristics, whether the output is in digital or analog -- form. auHwCtlVolume OBJECT-TYPE SYNTAX Unsigned32 (0..100) MAX-ACCESS read-write STATUS current DESCRIPTION "The playback volume, measured in percent of fullscale. Setting to 100 will cause the output stage to run at full gain level. Setting to zero will fully mute the output stage (no sound output at all)." ::= { auPlaybackScalars 1 } auHwCtlBass OBJECT-TYPE SYNTAX Integer32 (-100..100) MAX-ACCESS read-write STATUS current DESCRIPTION "The playback Bass, measured in percent of fullscale. Setting negative values attenuates the tone (negative gain) while setting positive values increases the tone (positive gain). The value of zero yields 'flat' or no tonal correction." ::= { auPlaybackScalars 2 } auHwCtlTreble OBJECT-TYPE SYNTAX Integer32 (-100..100) MAX-ACCESS read-write STATUS current DESCRIPTION "The playback Treble, measured in percent of fullscale. Setting negative values attenuates the tone (negative gain) while setting positive values increases the tone (positive gain). The value of zero yields 'flat' or no tonal correction." ::= { auPlaybackScalars 3 } auHwCtlBalance OBJECT-TYPE SYNTAX Integer32 (-100..100) MAX-ACCESS read-write STATUS current DESCRIPTION "The playback left/right balance, measured in percent of fullscale. Setting negative values attenuates the right channel while at the same time increasing gain on the left channel. Setting the value to -100 or +100 will cause one channel to play at full volume and the other channel be set to full attenuation (ie, no volume). Setting the value of zero yields 'center' balance, or both channels driven to equal output levels." ::= { auPlaybackScalars 4 } -- Available (Stored) Music Database Table -- This table is maintained locally as a direct result of the local -- database maintainer adding, removing or changing songs in -- his/her music catalog. SNMP Access to this table is entirely -- read-only. auDbTable OBJECT-TYPE SYNTAX SEQUENCE OF AuDbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table lists all available audio files that are candidates for playback via remote SNMP control." ::= { auPlaybackTables 1 } auDbEntry OBJECT-TYPE SYNTAX AuDbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The music database table entry." INDEX { auDbIndex } ::= { auDbTable 1 } AuDbEntry ::= SEQUENCE { auDbIndex Unsigned32, auDbArtistName DisplayString, auDbAlbumId DisplayString, auDbAlbumTitle DisplayString, auDbSongTitle DisplayString, auDbAlbumSongNumber Unsigned32, auDbGenre DisplayString, auDbYear DateAndTime, auDbSongEncBitRate Unsigned32, auDbSongEncoding INTEGER, auDbSongPlayLength Unsigned32 } auDbIndex OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An integer to uniquely identify the song entry that is to be transferred to the active play list queue (auReqTable)." ::= { auDbEntry 1 } auDbArtistName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The artist name, in ASCII." ::= { auDbEntry 2 } auDbAlbumId OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The globally unique album id, following the CDDB standard. This value is represented as an ASCII string of hexadecimal characters for simplicity." ::= { auDbEntry 3 } auDbAlbumTitle OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The album name, in ASCII." ::= { auDbEntry 4 } auDbSongTitle OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The song title, in ASCII." ::= { auDbEntry 5 } auDbAlbumSongNumber OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The relative song number within an album. The first song in an album is defined to be at offset 1 (ie, this is a 1-based variable; the value of zero is undefined)." ::= { auDbEntry 6 } auDbGenre OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The genre, in ASCII." ::= { auDbEntry 7 } auDbYear OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The year the song was published." ::= { auDbEntry 8 } auDbSongEncoding OBJECT-TYPE SYNTAX INTEGER { wave(1), shorten(2), mp3vbr(3), mp3cbr(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "An enum value that maps to a standard file encoding, as used to initially create the audio file." ::= { auDbEntry 9 } auDbSongEncBitRate OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "If audio file is compressed, return the effective bit-rate as an unsigned integer (eg, 128, 160, 192, 256, 320, etc). If audio is not compressed, the value 0 should be returned." ::= { auDbEntry 10 } auDbSongPlayLength OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The realtime length of the song, measured in seconds." ::= { auDbEntry 11 } -- Audio Request Table -- This table accepts remote SNMP SET requests. Entries in this -- table are created from remote users who wish to request that -- a song in the available (stored) music database be queued up -- for playback. auReqTable OBJECT-TYPE SYNTAX SEQUENCE OF AuReqEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains entries created via remote NMSs on behalf of users wishing for specific songs to be entered into the central playback queue." ::= { auPlaybackTables 2 } auReqEntry OBJECT-TYPE SYNTAX AuReqEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The audio request entry." INDEX { auReqIndex } ::= { auReqTable 1 } AuReqEntry ::= SEQUENCE { auReqIndex Unsigned32, auReqSongId Unsigned32, auReqEntryStatus RowStatus } auReqIndex OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An arbitrary integer to uniquely identify this entry. To create an entry a management application should pick a random number." ::= { auReqEntry 1 } auReqSongId OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS read-create STATUS current DESCRIPTION "This refers to a valid song-id from the table of available songs, auMusicDbTable." ::= { auReqEntry 2 } auReqEntryStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The control variable that allows creation, modification, and deletion of entries in this table. The only valid value for this variable is createAndGo. Upon successful row creation in this table, a new row in the auQueue table will be auto-created; which represents an actual to-do playback item in a time-ordered (FIFO) queue. Rows in this table are always auto-deleted by the agent immediately after a successful row-create in the auQueue table." ::= { auReqEntry 3 } -- Playback Queue Table -- This table accepts remote SNMP SET requests. Entries in this -- table are created as a direct result of table row-creates -- in the auReq table. auQueueTable OBJECT-TYPE SYNTAX SEQUENCE OF AuQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains entries created via the local agent as a direct result of rows created in the auReq table. There will be one entry in this table for each pending song playback request." ::= { auPlaybackTables 3 } auQueueEntry OBJECT-TYPE SYNTAX AuQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The queued song entry." INDEX { auQueueIndex } ::= { auQueueTable 1 } AuQueueEntry ::= SEQUENCE { auQueueIndex Unsigned32, auQueueSongId Unsigned32, auQueueEntryStatus RowStatus } auQueueIndex OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS not-accessible STATUS current DESCRIPTION "An arbitrary integer to uniquely identify this entry. Entries in this table are auto-created by the local agent. The current song is the lowest numbered instance. Upon completion of playback of the current song, its row is auto-deleted by the local agent and the song with next lexi-ordered instance begins playback. When the maximum instance-id is reached, the instance will wrap back to the first valid id, which is defined to be 1." ::= { auQueueEntry 1 } auQueueSongId OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) MAX-ACCESS read-create STATUS current DESCRIPTION "This refers to a valid song-id from the table of available songs, auMusicDbTable." ::= { auQueueEntry 2 } auQueueEntryStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The control variable that allows creation, modification, and deletion of entries in this table. This table represents the to-do list of songs waiting to be played. Deleting rows in this table cause playback of the corresponding song to be aborted and the next one in the table to be started." ::= { auQueueEntry 3 } -- -- Conformance -- auPlaybackMIBConformance OBJECT IDENTIFIER ::= { audioPlaybackMIB 4 } auPlaybackMIBCompliances OBJECT IDENTIFIER ::= { auPlaybackMIBConformance 1 } auPlaybackMIBGroups OBJECT IDENTIFIER ::= { auPlaybackMIBConformance 2 } -- -- Compliance -- auPlaybackMIBCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for entities which implement the Audio Playback Control MIB. Implementation of this MIB is based on having too much spare time on your hands." MODULE -- this module MANDATORY-GROUPS { auHwCtlGroup, auPlaybackDbGroup, auPlaybackRequestGroup, auQueueGroup } ::= { auPlaybackMIBCompliances 1 } -- -- Units of Conformance -- auHwCtlGroup OBJECT-GROUP OBJECTS { auHwCapabilities, auHwCtlVolume, auHwCtlBass, auHwCtlTreble, auHwCtlBalance } STATUS current DESCRIPTION "Audio Hardware management." ::= { auPlaybackMIBGroups 1 } auPlaybackDbGroup OBJECT-GROUP OBJECTS { auDbArtistName, auDbAlbumId, auDbAlbumTitle, auDbSongTitle, auDbAlbumSongNumber, auDbGenre, auDbYear, auDbSongEncBitRate, auDbSongEncoding, auDbSongPlayLength } STATUS current DESCRIPTION "Audio Library management." ::= { auPlaybackMIBGroups 2 } auPlaybackRequestGroup OBJECT-GROUP OBJECTS { auReqSongId, auReqEntryStatus } STATUS current DESCRIPTION "Audio file entry to be added to playback queue." ::= { auPlaybackMIBGroups 3 } auQueueGroup OBJECT-GROUP OBJECTS { auQueueSongId, auQueueEntryStatus } STATUS current DESCRIPTION "Audio file entry currently in the to-do (play) list." ::= { auPlaybackMIBGroups 4 } END -- -- Copyright (C) The Internet Society (2002). All Rights Reserved. -- -- This document and translations of it may be copied and furnished to -- others, and derivative works that comment on or otherwise explain it -- or assist in its implementation may be prepared, copied, published -- and distributed, in whole or in part, without restriction of any -- kind, provided that the above copyright notice and this paragraph are -- included on all such copies and derivative works. However, this -- document itself may not be modified in any way, such as by removing -- the copyright notice or references to the Internet Society or other -- Internet organizations, except as needed for the purpose of -- developing Internet standards in which case the procedures for -- copyrights defined in the Internet Standards process must be -- followed, or as required to translate it into languages other than -- English. -- -- The limited permissions granted above are perpetual and will not be -- revoked by the Internet Society or its successors or assigns. -- -- This document and the information contained herein is provided on an -- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING -- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION -- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF -- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. --