Difference between revisions of "Myth Protocol"

From MythTV Official Wiki
Jump to: navigation, search
m (Reverted edit of Halcyon, changed back to last version by Gregturn)
m (keeping as a redirect for the revision history)
 
(48 intermediate revisions by 21 users not shown)
Line 1: Line 1:
[[User:WhyTey|WhyTey]] will try to start to describe the [[Myth Protocol]] here.  Any input that others might have would be most appreciated.
+
#REDIRECT [[:Category:Myth Protocol]]
 
 
I will be using the [http://winmyth.sourceforge.net/mythprotocol.html MythTV Protocol Overview] document from the [http://winmyth.sourceforge.net WinMyth] project (thanks to Ofer Achler), the MythTV source code and trial-and-error to provide the detail.
 
 
 
My aim is to start with release 0.17 of MythTV, which I believe is using [[Myth Protocol 14]], and provide complete documentation for all new versions of the protocol that may be released.
 
 
 
My plan is to use sections of the protocol to write an Java server that I can interface with for some JSP's I would like to develop.  The Java server will simply serve as a broker and convert Java RPC's into Socket calls to the [[Myth Backend]]. 
 
 
 
I know of others that would also like to be able to provide an interface to the [[Myth Backend]] to other languages/technologies so this [[Myth Protocol]] resource would/could prove useful.
 
 
 
== List of proto bumps ==
 
Note: This is merely here to hold the current protocol changes while I take my time to reverse engineer as was done with [[Myth Protocol 14]].
 
<center>
 
{| border=1 cellspacing=0 cellpadding=5
 
| MYTH_PROTO_VERSION
 
| Changeset
 
| Description
 
|-
 
| 27
 
| [http://cvs.mythtv.org/trac/changeset/8973 8973]
 
| Unification of the ChannelBase class???
 
|}
 
</center>
 
 
 
== Packet Data Format ==
 
''(This information is from reading the code and packet sniffing.  Do not take this information as a specification, as the developers may not have intended some of the following behavior)''
 
 
 
A MythTV protocol packet contains two fields, the size and the payload.
 
The first field is the size, encoded as an 8 byte, UTF8 decimal string padded with spaces.  If you are sending an 20 byte payload, the first 8 bytes should be the characters "20" followed by 6 spaces.
 
The second field is the payload, an arbitrary length UTF8 string made up of a list of one or more strings seperated by a the delimeter "[]:[]".
 
 
 
== Backend Commands ==
 
''(This information is from reading the code and packet sniffing.  Do not take this information as a specification, as the developers may not have intended some of the following behavior)''
 
 
 
Backend commands are sent using the above packet format.  The first string in the payload is the command, possibly with whitespace seperated arguments.  There may also be other arguments in successive strings in the list, seperated by the delimiter "[]:[]".  The two types of arguments are not interchangable, each command may require specific whitespace seperated arguments as well as specific list arguments.
 
 
 
Whitespace is spaces, tabs, carriage returns, linefeeds, etc.  Multiple whitespace characters are treated as a single whitespace.
 
 
 
In general, commands and arguments are case sensitive.
 
 
 
When testing your code with the protocol, be warned that all commands except MYTH_PROTO_VERSION, ANN, and DONE will silently fail until a successful ANN command has been received by the backend.  This includes non-existant commands.
 
 
 
For a list of all Myth protocol commands, see [[Myth Protocol Command List]].
 
 
 
Some example MythTV protocol exchanges, taken from a packet sniffing capture of a 0.19 frontend to backend exchange:
 
{| border=1 cellspacing=0 cellpadding=5
 
| Frontend sends
 
| Backend responds with
 
|-
 
| <pre>23      ANN Playback sycamore 0</pre>
 
| <pre>2      OK</pre>
 
|-
 
| <pre>48      QUERY_FILETRANSFER 32[]:[]REQUEST_BLOCK[]:[]2048</pre>
 
| <pre>4      2048</pre>
 
|-
 
| <pre>63      QUERY_FILETRANSFER 32[]:[]SEEK[]:[]0[]:[]0[]:[]0[]:[]0[]:[]2048</pre>
 
| <pre>7      0[]:[]0</pre>
 
|}
 
 
 
[[Category:Developer Documentation]]
 

Latest revision as of 09:55, 6 March 2010