Subject: edi-28 - first implementation
From: Kai Vehmanen (kai.vehmanen_AT_wakkanet.fi)
Date: Wed Oct 02 2002 - 01:28:33 EEST
I've just committed the first implementation of edi-28, "Extending the
EIAM command set to allow writing standalone ECI implementations", to
ecasound's CVS-tree.
1. Enabling the well-formed mode
The new log message mode can be enabled with the new
"int-output-mode-wellformed" EIAM command.
2. Syntax of well-format log messages
I've added the below documentation to Ecasound Programmer's Guide:
--cut--
By issuing the EIAM command ``int-output-mode-wellformed'',
ecasound will start printing all messages using the following
format:
<message> = <loglevel><sp><msgsize>(<genmsg> | <returnmsg>)
<loglevel> = <integer> ; loglevel number
<msgsize = <integer> ; size of content in octets
<genmsg> = <contentblock> ; generic log message
<returnmsg> = <sp><returntype><contentblock>
; EIAM return value message
<contentblock> = <crlf><content><crlf><crlf>
; actual content of the message
<returntype> = ``i'' | ``li'' | ``f'' | ``s'' | ``S'' | ``e''
; type of the return value (see ECI/EIAM docs)
<content> = *<octet> ; zero or more octets of message content
<sp> = 0x20 ; space
<octet> = 0x00-0xff ; 8bits of data
<crlf> = <cr><lf> ; new line
<cr> = 0x0d ; carriage return
<lf> = 0x0a ; line feed
<integer> = +<digit> ; one or more digits
<digit> = 0x30-0x39 ; digits 0-9
--cut--
3. Loglevel for ECI/EIAM return values
I've assigned value 256 (0x100) for the return value messages. As an
example:
--cut--
ecasound ('h' for help)> int-output-mode-wellformed
ecasound ('h' for help)> cs-is-valid
256 1 i
1
ecasound ('h' for help)> cs-selected
256 18 s
command-line-setup
--cut--
256 = loglevel for the return-type messages
1 = length of content is 1 octet
i = return value is an integer
1 = the content (boolean one, ie. cs-is-valid returned true)
<crlf> = an empty line ends the message
... and so on.
That's about it I think. Now it should be possible to write a native,
standalone ECI implementation in any language that supports launching
external apps (ie. forking) and using pipes to communicate with the
executed process.
PS If this turns out to work ok, I might also add this functionality
to the 2.x tree (-> 2.0.5 release).
-- http://www.eca.cx Audio software for Linux!
This archive was generated by hypermail 2b28 : Wed Oct 02 2002 - 01:27:43 EEST