Project - MarathonTP

Check if there’s a netmf issue recorded on codeplex, and if not it’s worth logging !

@ Brett -
https://netmf.codeplex.com/workitem/2066

So, after a long time I finally wrote the first draft of the MarathonTP specification protocol. :dance:

Please feel free to visit the project new website to get more informations:

http://marathontp.info

2 Likes

Looks great :smiley: Nice work !!

Any quick start samples ?

Warning: Personal opinion is following.

I don’t like human readable protocols, specially when used on micro controllers.
Usually this means it’s an ASCII (or UTF8) based protocol, which requires formatting and parsing. It also requires more bandwidth.
The downside of a binary protocol - that it is not human readable - can easily be compensated with the correct tools (see Wireshark, …)

Edit: I think machines should talk a machine language to each other. And anything that’s human readable is not a machine language for me.

That does not mead MarathonTP is useless. Just that I would not use it for machine to machine communication.

1 Like

@ Reinhard Ostermeier - what technique and libraries would you recommend for bi directional or machine to machine communication in NETMF?

In case of a single master architecture I often use Modbus (RTU or TCP)

I also have my own TCP base protocol.
Anyone can open a server, where multiple clients can connect to.
A client can send commands to the server, which always is followed by an answer.
But also the server can raise events to all connected clients.
The protocol defines a simple command frame (length, command id, command specific parameters)
The response looks like (length, command id, error code, response specific parameters)
An event is like (length, 0, event id event specific parameters) The 0 allows to decide if it is a event or a command, because command id 0 is not allowed.
All data is binary of course.
Since it uses TCP no checksum or similar is needed.
But if the protocol would be used over serial, it would be easy to extend it by a checksum.
There is a predefined set of commands, but mainly the application defines it’s own command id’s.
I have a NETMF implementation for the server and a windows implementation for server and client. A NETMF implementation for the client would also be easy, but so far I didn’t need it.

@ DanW - At the moment you can visit the MarathonTP codeplex project at : https://marathontp.codeplex.com I will provide better usage sample in near future.

@ jango_jas: Great. Thank you. I will keep an eye on that site.

@ Reinhard Ostermeier The technique you detailed seems to be the defacto for many scenarios particularly in the device world. It provides plenty advantages in some situations and complexity in others. … (I need to investigate this more… thanks for the breakdown)

@ DanW - Well in fact, my protocol uses a lot of bit banging, which is easy and fast to do for µC, but may be not quite comfortable to use for every one.
But I think we’re abusing this thread a little bit.

The MarathonTP project is still active. I’ve just made an application to IANA.org for a dedicated port number for the protocol.

Also, I will soon deliver a preview version of a MarathonTP data server. This software will be useful for anyone playing with the protocol.

Some issues in V1 of the protocol will be corrected by the V1.1 still in testing.