Voice over AX.25 (VoAX)

VoAX is a very simple protocol used by TalKT to transfer voice data over packet. Syntactically it is rather equivalent to HTTP, but it is no client/server protocol and it is not session-oriented, so you can do more then one transfer with the same connection. Each transaction is preceded by a header and optionally followed by a block of raw data. The size of the data must be given in the header. If there is no size-field in the header, it will be assumed that there is no data block. Each station may send such headers/block at any time.

Specification

<transaction> =: <header> <data>
<header> =: <header-content> <cr>
<header-content> =: <identifier> : <value> <cr> (<header-content>)
<identfier> =: accept|user-info|content-type|size|callsign
<cr> =: 0x13
<data> =: binary data, size depends on "Size:" header field

Headers

Content-Type
TalKT currently knows about audio/melp, but there will be more in the future. This field is only valid, if there is a Size: header and a data block, too.
Size
If present, the header block will be followed by raw data of "size" bytes.
Accept
Should be sent with the first block. Specifies the data-types which the peer is allowed to send to this client. Seperated by commas.
User-Info
The operator's name and location, may change during one session, if connected to a conference server
Callsign
The callsign of the speaking persons, may change when connected to a conference server.

WARNING: The current implementation of TalKT is not very robust and does not respect the protocol very strictly. Please refer to the specification and urge me to correct my implementation if there are any inconsistencies.