Skip to content

Awesome features overview

Rémi Bèges edited this page Apr 8, 2016 · 3 revisions

We believe the combination of:

is awesome for enabling your next-communication based project with an embedded device.

But why should you believe us ? Here is a non-exhaustive list.

A clean syntax for the embedded protocol

#include "telemetry/Telemetry.hpp"

int main()
{
   Telemetry TM;

   for( ; ; )
   {
       TM.pub("someTopic","Hello, World !");
   }

}

... that talks to a simple command line interface

:> serial com20
Connected to com20 at [9600] bauds.
:> ls
someTopic
:> print someTopic
Hello, World !
:> print someTopic --amount 3
Hello, World !
Hello, World !
Hello, World !

supporting also standard data types

#include "telemetry/Telemetry.hpp"

int main()
{
   Telemetry TM;
   int8_t i;
   uint16_t j; 
   float f;
   for( ; ; )
   {
       i++;    j = i * 10;   f = i / 100.0;
       TM.pub_i8("foo",i);
       TM.pub_u16("bar",j);
       TM.pub_f32("qux",f);
       // also i16, i32, u16, u32, etc...
   }
}

... plotted in real-time from the command line with a single command

Preview of the real-time plots

telemetry also supports sending data arrays using a unique topic-based indexing

#include "telemetry/Telemetry.hpp"

int main()
{
   Telemetry TM;
   float myarray[5] = {0.1, 0.5, -0.45, 0.9, -1.3};
   for( ; ; )
   {
       TM.pub_f32("foo:0",myarray[0]);
       TM.pub_f32("foo:1",myarray[1]);
       TM.pub_f32("foo:2",myarray[2]);
       TM.pub_f32("foo:3",myarray[3]);
       TM.pub_f32("foo:4",myarray[4]);
   }
}

that is also natively understood by the plots that use the index for x axis

Preview of the real-time plots

Telemetry lets you update variables remotely from the PC

#include "telemetry/Telemetry.hpp"

int main()
{
   Telemetry TM;
   int8_t myParameter;
   TM.attach_i8_to("foo", &myParameter); // myParameter will be updated on new int8 data received under "foo" 
   
   for( ; ; )
   {
       TM.update();
   }
}

... where the command line interface allows you to write the value in a single command

:> serial com20
Connected to com20 at [9600] bauds.
:> pub anyTopicwhatever 3 --i8

... or a python script also using a clean and very linear syntax

    from pytelemetry import Pytelemetry
    from pytelemetry.transports.serialtransport import *

    transport = SerialTransport()
    tlm = Pytelemetry(transport)

    transport.connect({'port': 'com20', 'baudrate': 9600})

    tlm.publish('sometopicWhatever',4,'int8')

    transport.disconnect()

and also

  • a ultra-portable library, written in pure C (with C++ bindings for Mbed and Arduino)
  • an extremely well tested library, with unit and integration tests.
  • supporting ARM Mbed and Arduino, which translates into 200+ different boards
  • fully logged raw and undecoded data stream, that will enable later a live-replay of a session inside the CLI
  • use of modern and powerful technologies such as Gradle for build and automation, Appveyor for Continuous Integration and testing

in the future

  • replay / step-by-step / pause a logged session
  • all repositories under continuous integration
  • topics groups using topics-based syntax with slash character foo/bar, foo/qux

Setup

Get started for embedded platforms

Get started for remote debug and remote control

  • Fast data visualization with the command line interface (todo)
  • Fast prototyping remote program control with python (todo)

General knowledge

Troubleshooting

  • Frequently Asked Questions todo

Examples and projects

Clone this wiki locally