Skip to content
Jason edited this page Mar 24, 2016 · 15 revisions

telemetry is a library, implementing a communication protocol.

In practice, it provides a set of functions to you, the developer, to exchange different type of data between a computer and an embedded board (Arduino for instance).

Why telemetry ?

telemetry fills the gap for several overlapping problems:

  • How can you receive and easily plot remote application data for fast prototyping ?
  • How can you send a command to a remote application very easily ?
  • How can you organize the exchanged data which can be of very different nature inside a single app ?
  • How can you do all of the above, in real-time ?

Principle

Data is exchanged through a point-to-point communication channel (for now, serial ports through wire or bluetooth). To identify each piece of information sent over the channel, telemetry lets you assign a label to it. This is called a topic.

// topic here is 'someTopic'
// Data is unsigned integer with value 123
publish_u8("someTopic",123);

Thus, any communication frame sent by telemetry contains the topic (a string of characters) and the data itself (a number or a message). It also contains extra fields to ensure the frame was not corrupted, etc. You can use the following mental model of the frame.

+--------------+----------+--------------------------+----------------+
| extra fields |  topic   | data (1 byte to 4 bytes) |  extra fields  |
+--------------+----------+--------------------------+----------------+

The channels are uni-directional. You can publish (= write) on topic foo from the PC to the embedded application.

PC                                              Embedded
   foo
   -------------------------------------------> 123

And in the same time you can also publish other values on same topic foo, but this time in the other way around (Embedded->PC), without any form of interference.

PC                                              Embedded
      foo
123   -------------------------------------------> 123
                                           
                                               foo
'Hey' <-------------------------------------------  'Hey' 

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