#($Revision: 1.40 $)
!SECTION: Commands
+DEVCTL = 33
 +:version (uint8)
 +:type (uint8)
 +DEVCTL_TYPE_GET = 0x01
 +DEVCTL_TYPE_SET = 0x02
 +DEVCTL_TYPE_RUN = 0x03
 +DEVCTL_TYPE_SYSCONF = 0x04 #(System config)
 +DEVCTL_TYPE_SYSCONF_GET = DEVCTL_TYPE_SYSCONF + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_SYSCONF_SET = DEVCTL_TYPE_SYSCONF + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_SYSCONF_RUN = DEVCTL_TYPE_SYSCONF + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_CONFIG  = 0x08 #(Application config)
 +DEVCTL_TYPE_CONFIG_GET  = DEVCTL_TYPE_CONFIG  + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_CONFIG_SET  = DEVCTL_TYPE_CONFIG  + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_CONFIG_RUN  = DEVCTL_TYPE_CONFIG  + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_OPMODE  = 0x0c #(Mode of operation)
 +DEVCTL_TYPE_OPMODE_GET  = DEVCTL_TYPE_OPMODE  + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_OPMODE_SET  = DEVCTL_TYPE_OPMODE  + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_OPMODE_RUN  = DEVCTL_TYPE_OPMODE  + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_UI      = 0x10 #(User Interface)
 +DEVCTL_TYPE_UI_GET  = DEVCTL_TYPE_UI + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_UI_SET  = DEVCTL_TYPE_UI + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_UI_RUN  = DEVCTL_TYPE_UI + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_POWER   = 0x14 #(Power management)
 +DEVCTL_TYPE_POWER_GET   = DEVCTL_TYPE_POWER + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_POWER_SET   = DEVCTL_TYPE_POWER + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_POWER_RUN   = DEVCTL_TYPE_POWER + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_DATA    = 0x18 #(Runtime data)
 +DEVCTL_TYPE_DATA_GET    = DEVCTL_TYPE_DATA  + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_DATA_SET    = DEVCTL_TYPE_DATA  + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_DATA_RUN    = DEVCTL_TYPE_DATA  + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_USER0   = 0xf0 #(User defined commands Assigned by DeviceVendor)
 +DEVCTL_TYPE_USER0_GET   = DEVCTL_TYPE_USER0 + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_USER0_SET   = DEVCTL_TYPE_USER0 + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_USER0_RUN   = DEVCTL_TYPE_USER0 + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_USER1   = 0xf4 #(User defined commands Assigned by DeviceVendor)
 +DEVCTL_TYPE_USER1_GET   = DEVCTL_TYPE_USER1 + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_USER1_SET   = DEVCTL_TYPE_USER1 + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_USER1_RUN   = DEVCTL_TYPE_USER1 + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_USER2   = 0xf8 #(User defined commands Assigned by DeviceVendor)
 +DEVCTL_TYPE_USER2_GET   = DEVCTL_TYPE_USER2 + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_USER2_SET   = DEVCTL_TYPE_USER2 + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_USER2_RUN   = DEVCTL_TYPE_USER2 + DEVCTL_TYPE_RUN
 +DEVCTL_TYPE_USER3   = 0xfc #(User defined commands Assigned by DeviceVendor)
 +DEVCTL_TYPE_USER3_GET   = DEVCTL_TYPE_USER3 + DEVCTL_TYPE_GET
 +DEVCTL_TYPE_USER3_SET   = DEVCTL_TYPE_USER3 + DEVCTL_TYPE_SET
 +DEVCTL_TYPE_USER3_RUN   = DEVCTL_TYPE_USER3 + DEVCTL_TYPE_RUN
 +:vendor (uint8)
 +VENDOR_ROARAUDIO = 0
 +VENDOR_BASICDEV  = 1
 +:subtype (uint8)
 +:flags (uint8)
 +:ot (uint8)
 +:(id) (uint16) #(if not UNIID or SID)
 +:data... (vardata)
+CAPS = 34
 +:version (uint8)
 +:type (uint8)
 +:flags (uint16)
 +CF_REQUEST   = 0x0001
 +CT_CAPS      = 0
 +::data... (dataarray)
 +:::captype (TODO)
 +:::... (TODO)
 +CT_STANDARDS = 1
 +::data... (dataarray)
 +:::stdvendor (uint8)
 +STDV_ROARAUDIO = 0
 +STDV_PROTO     = 1
 +STDV_RFC       = 2
 +:::standard (uint16)
 +:::stdversion (uint8)
+WAIT = 35
 +:version (TODO)
 +:flags (TODO)
 :(TODO)
+NOTIFY = 36
 #(+=structof(WAIT))
 #(Notify Types)
 +NT_PROTO = NEEDS_CONST
 +NT_SOCKET = NEEDS_CONST
 +NT_SIGNAL = NEEDS_CONST
 +NT_MSGQUEUE = NEEDS_CONST
 +NT_FLOCK = NEEDS_CONST
 +NT_FUTEX = NEEDS_CONST
+SEEK = 37
 +:version (TODO)
 +:flags (TODO)
 +:destination position (TODO)
 +:destination position whence (TODO)
 +:destination position quality (TODO)
 +:hint pos (TODO)
 +:hint whence (TODO)
 +:hint quality (TODO)
 +:seek at (TODO)
 +:seek to (TODO)
 +:seek whence (TODO)
 +SF_CONT_WHILE_SEEK = 0x01
 +SF_CONT_ON_ERROR   = 0x02
 +SF_HINT            = 0x04
 +SF_SEEK            = 0x08
 +HQ_BAD       = 0
 +HQ_BAD_NB    = 1 #(bad, not before this position)
 +HQ_NEAR      = 2
 +HQ_NEAR_NB   = 3 #(Near, not before this position)
 +HQ_GOOD      = 4
 +HQ_GOOD_NB   = 5 #(good, not before this position)
 +HQ_EXACT     = HQ_EXACT_NB #(ID 6 is skiped here)
 +HQ_EXACT_NB  = 7
 +WHENCE_BEGIN = 0
 +WHENCE_CUR   = 1
 +WHENCE_END   = 2
+CLIENTCTL = 38
 +:version (uint8)
 +:subcmd (uint8)
 +:flags (uint16)
 +:data (vardata)
 +CC_HASHTABLE = PARA_HASHTABLE
 +CC_WININFO   = PARA_WININFO
 +CC_PROPTABLE = PARA_PROPTABLE
+LOOKUP = 39
 +:version (uint8)
 +:flags (uint8)
 +:extflags (uint8)
 +:ot (uint8)
 +:ht (uint32) #(hash type)
 +:hash... (vardata)
+CONCTL = 40
 +:version (uint8)
 +:flags (uint8)
 +:session (uint8)
 +:type (uint8)
 +:stdvendor (uint8)
 +:standard (uint16)
 +:stdversion (uint8)
 +CCT_NONE       = 0 #(This is the same like a NOOP-Command)
 +CCT_CRYPTMSG   = 1 #(This request contains zero or more crypto packages according to given standard)
 +CCT_OPENSESS   = 2 #(This opens a crypto session)
 +:hash (uint32)
 +:comp (uint16)
 +COMPT_NONE  = 0
 +COMPT_ZLIB  = 1
 +COMPT_GZIP  = 2
 +COMPT_BZIP2 = 3
 +:complevel (uint8)
 +:compflags (uint8)
 +:data... (dataarray)
 +CCT_CLOSESESS  = 3 #(This closes a opend cryto session)
 +:hashlen (uint16)
 +:hash (dataarray(:hashlen))
 +:data... (dataarray)
 +CCT_SESSDATA   = 4 #(This is some kind of data used in the session)
 +:data... (dataarray)
+LIST = NEEDS_CONST
+GET_OBJ = NEEDS_CONST
+OBJCTL = NEEDS_CONST
*SERVER_INFO
 +IT_SERVER   = 1
  +:version (uint8)
  +:reserved (uint8)
  +:indexlen (uint16)
  +::reserved (uint8)
  +::type (uint8)
  +ITST_VERSION     = 0
  #(Format: Product/Version <VendorID/VendorName> (comments))
  #(Example: roard/0.4 <0/RoarAudio> (Debian build))
  +ITST_LOCATION    = 1
  #(freeform)
  +ITST_DESCRIPTION = 2
  #(freeform)
  +ITST_CONTACT     = 3
  #(Format: first ["']nick["'] last (comment) <email>/OpenPGPkey/Phone/Room)
  +ITST_UN_SYSNAME  = 4 #(uname -s)
  +ITST_UN_NODENAME = 5 #(uname -n)
  +ITST_UN_RELEASE  = 6 #(uname -r)
  +ITST_UN_MACHINE  = 7 #(uname -m)
  +ITST_SERIAL      = 8
  +ITST_ADDRESS     = 9
  +ITST_UIURL       = 10
  +ITST_HOSTID      = 11
  #(UNIX hostid in hex (%.8x), with leading zeros (8 or 16 hex-digits), This is returned by gethostid())
  +ITST_LICENSE     = 12
  #(Format: LicenseName-Version (options))
  #(Example: GPL-3.0, LGPL-2.1, LGPL-3.0 (or later))
  +ITST_BUILD       = 13
  #(Manufacturing/compiling date and worker, all times in UTC)
  #(Format: YYYY-MM-DD HH:MM:SS (worker))
  #(Example: 2011-12-01 (build cluster 3))
  +::len (uint16)
  +:strings (dataarray)
 +IT_COUNTERS = 2
  +:version (uint8)
  +:reserved (uint24)
  +:data... (dataarray)
  +::type (uint8)
  +::flags (uint8)
  +::reserved (uint16)
  +::counter (uint32)
  +CF_CURRENT = 0x01 #(Current value if set, sum if unset)
  +CF_OTTYPE  = 0x02 #(Type is a OT_* type if set, or other if unset)
 +IT_LISTEN   = 3
  +:version (uint8)
  +:reserved (uint24)
  +:listensocks... (dataarray)
  +::id (uint16)
  +::flags (uint8)
  +::socktype (uint8)
  +::proto (uint16)
  +::byteorder (uint16)
  +::dir (uint32)
  +::auinfo (packed-audioinfo) #(4*4*8 = 128bit)
  +::addrlen (uint16)
  +::addr (padded-string(:addrlen))
  +LF_HAVEDIR = 0x01
  +LF_HAVEAI  = 0x02
*[GS]ET_STREAM_PARA
 *PARA_INFO
  +STREAMSTATE_ERROR    = 5 #(Stream is in some error condition, parent client should close or kick it)
  +STREAMSTATE_NEEDSEEK = 6 #(like Error but stream can become usable again if you do a seek)
 *PARA_FLAGS
  +FLAG_SINGLESINK = 0x00040000
  +TOGGLE_FLAG     = 2
  +NOOP_FLAG       = 3
  +PROTECT_FLAG    = 0x8000 #(flag to mark flags in changed by this protected)
 +PARA_HASHTABLE  = 6   #(GTN, UUID, ...)
  +:htsettertype (uint32)
  +:htsettersize (uint16)
  +:htsetterdata (vardata)
  +:hashtable... (dataarray)
  +::httype (uint32)
  +::htsize (uint16)
  +::htfunction (uint16)
  +::htdata (vardata)
  +HT_NONE       = 0
  +HT_MD5        = 1
  +HT_SHA1       = 2
  +HT_RIPEMD160  = 3
  +HT_MD2        = 5
  +HT_TIGER      = 6
  +HT_HAVAL      = 7
  +HT_SHA256     = 8
  +HT_SHA384     = 9
  +HT_SHA512     = 10
  +HT_SHA224     = 11
  +HT_MD4        = 301
  +HT_CRC32      = 302 #(ISO 3309, ITU-T V.42, IEEE 802.3)
  +HT_RFC1510    = 303 #(HT_CRC32 as modified by RFC 1510)
  +HT_RFC2440    = 304 #(poly=0x1864CFBL, init=0xB704CEL, OpenPGP)
  +HT_WHIRLPOOL  = 305
  +HT_UUID       = 70000
#(GTN is the Global Track Number as used by for example the RoarAudio PlayList Daemon (rpld))
#(It is a creator-runtime-unique number to identify the object.)
  +HT_GTN8       = 70001
  +HT_GTN16      = 70002
  +HT_GTN32      = 70004 #("Short Global Track Number")
  +HT_GTN64      = 70008 #("Long  Global Track Number")
  +HT_CLIENTID   = 71000 + OT_CLIENT   = 71001
  +HT_STREAMID   = 71000 + OT_STREAM   = 71002
  +HT_SOURCEID   = 71000 + OT_SOURCE   = 71003
  +HT_SAMPLEID   = 71000 + OT_SAMPLE   = 71004
  +HT_MIXERID    = 71000 + OT_MIXER    = 71005
  +HT_BRIDGEID   = 71000 + OT_BRIDGE   = 71006
  +HT_LISTENID   = 71000 + OT_LISTEN   = 71007
  +HT_ACTIONID   = 71000 + OT_ACTION   = 71008
  +HT_MSGQUEUEID = 71000 + OT_MSGQUEUE = 71009
  +HT_MSGBUSID   = 71000 + OT_MSGBUS   = 71010
#(Next are article and book numers. They may be ued with HF_DISK and HF_WORK)
  +HT_GTIN8      = 72001
  +HT_GTIN13     = 72002
  +HT_ISBN10     = 72003
  +HT_ISBN13     = HT_GTIN13 #(ISBN-13 and GTIN/EAN-13 are the same)
  +HT_ADLER32    = 73001 #(RFC1950)
  +HF_NONE       =  0 #(This entry does not have anything to do with the object...)
  +HF_OBJECT     =  1 #(This is an entry for exacltly this object)
  +HF_PARENT     =  2 #(This is the parent object)
  +HF_LOGIC      =  3 #(This is a logic group of this object)
  +HF_PERMANENT  =  4 #(This can be used to acces exactly this object with a premanent address)
  +HF_DEVICE     =  5 #(The device this is on or the device itself if this is a device)
  +HF_DISK       =  6 #(The disk this is on, if this is a disk the same as HF_DEVICE)
  +HF_SONG       =  7 #(This identifys the Song. This may for example be used with Tantalos)
  +HF_APP        =  8 #(The application, device or other source generating this object)
  +HF_FILE       =  9 #(The source file for this object)
  +HF_ARTIST     = 10 #(This identifies any kind of artist/composer/interpret, to be used with Tantalos)
  +HF_WORK       = 11 #(This identifies any kind of work/album/compilation, to be used with Tantalos)
 +PARA_WININFO   = 7
  +:wsystype (uint8)
  +:socktype (uint8)
  +:display (uint8)
  +:screen (uint8)
  +:addrlen (uint16)
  +:addr (padded-string(:addrlen))
  +:wins (dataarray)
  +::window (uint32)
 +PARA_PROPTABLE = 8
  :(TODO)
 +PARA_LTM       = 9
 +PARA_USAGE     = 10 #(Used by RAUM)
 +PARA_RADIO     = 11 #(Used by RDTCS)
*KICK,...
 +OT_OUTPUT   =  5
 +OT_MIXER    =  6
 +OT_BRIDGE   =  7
 +OT_LISTEN   =  8
 +OT_ACTION   =  9
 +OT_MSGQUEUE = 10 #(Message queue, message is gone as soon as one client took it)
 +OT_MSGBUS   = 11 #(Message bus, message is gone as soon as all listening clients got it)
*ATTACH
 *ATTACH_SOURCE
  :(TODO)
 *ATTACH_OUTPUT
  :(TODO)
 +ATTACH_MIXER    = 4
  :(TODO)
 +ATTACH_BRIDGE   = 5
  :(TODO)
*SET_VOL
 +SET_VOL_MS       = 3
 +SET_VOL_UNMAPPED = 4 #(like roarctls mono/stereo...)
*AUTHCTL = GET_ACL
*ACLCTL  = SET_ACL
-GET_ACL #(reasignmened)
-SET_ACL #(reasignmened)
+SHIFT_DATA   = 40  #(get data from a stream)
+RAUM_PICTURE = 202 #(Used by RAUM to store pictures)
+RAUM_SYNC    = 203 #(Used by RAUM for raw seeking)
!SECTIONEND
!SECTION: Codecs
+AUTLAW_LE  = 0x31
+AUTLAW_BE  = 0x32
+AUTLAW     = AUTLAW_BE
+MUUTLAW_LE = 0x35
+MUUTLAW_BE = 0x36
+MUUTLAW    = MUUTLAW_BE
+BRR        = 0x3c
+OGG_OPUS   = 0x18
+ROAR_OPUS  = 0x19
!SECTIONEND
!SECTION: Network
+SOCKET_TYPE_LAT_SERVICE      = 12
+SOCKET_TYPE_LAT_REVERSE_PORT = 13
!SECTIONEND
